Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 24 odgovora
  • 10.337 pregleda

Najnovija ↓

register_globals = off 30.04.2002. u 04:17 · pre 298 meseci #1
Posle vishe najava ... da ne kazem upozorenja, u poslednjoj verziji PHPa [4.2.0] od 22. aprila, po defaultu u php.ini-ju stavljeno je:
register_globals = off

Za one sa jeftinijim kartama objashnjenje ... po defaultu vishe nece raditi dodeljivanje vrednosti varijablama na sledeci nachin:
http://www.bla.com/index.php?ovo=ono

...vishe ovako nece varijabli $ovo moci da se dodeli vrednost "ono".
Obrazlozenje je da je to preveliki bezbednosni rizik.
Da neko pogreshno ne shvati, nije ovo potpuno iskljucheno, promeni se ta linija u php.ini-ju na register_globals = on ...i sve je po starom, ali prvo shto ce biti cimanja dok se admin servera namoli na to, pod uslovom da uopshte zeli da to uradi. Druga stvar je ... velika verovatnoca je da ce u neko, pa hmmm ... skorije vreme ovo POTPUNO izbaciti.
I dalje ce biti moguce prosledjivanje varijabli putem forme [get, post ...nije bitno].
Za ischitavanje tih varijabli josh u verziji PHPa 4.1.0 [mislim] stavljene su varijable $_GET, $_POST, $_COOKIE ... sa kojima mogu da se ischitavaju varijable npr na nachin $_GET["varijabla"]. Da ne gushim previshe, dovoljno objashnjenja ima na adresi:
http://www.php.net/release_4_1_0.php
[da znam da je adresa 4.1.0 ali tu je lepo objashnjeno bash u vezi ovoga register_globals]

Kako zaobici ovu kosku kada se zna da ogroman broj php scripti koristi ovakav nachin dodeljivanja vrednosti varijablama? Od najjednostavnijih, pa do najkomplikovanijih [shopovi, e-commerce sajtovi itd]... pa i ovaj forum.

Mislim znam kako zaobici, ne trazim uputsvo, nego je vishe pitanje radi pitanja, poshto ce morati da se menjaju linije i linije koda a i sve postaje komplikovanije. Umesto da se recimo samo na sajt stavi
<a href="link.php?category=igracke">Igracke</a>
, sada ce morati neshto tako bedno kao
<form action="link.php"><input type=submit name=category value="igracke">
... i slichne varijacije na temu. [ova je chini mi se josh i najjednostavnija, a opet je ruzna :(]

Ko ima neka dodatna pitanja ili komentare ... ili jednostavno samo zeli da se rasplache, samo neka raspali ovde.

P.S. Znam koje "security risk" donosi ako je ova opcija ukljuchena [imate chini mi se neshto malo i na ovom linku iznad], ali bez obzira, dobar programer ce znati da prepozna kada ovo register_globals moze da olaksha zivot a da ne ugrozi sigurnost. Zato mislim da je ovo losh potez. Povecali su sigurnost samo na sajtovima sa scriptama koji imaju loshiji coding. Mozda je to nekima bitno, ali mislim da usporava razvoj PHPa.
Re: register_globals = off 30.04.2002. u 04:35 · pre 298 meseci #2
Ma da.... Sta da ti kazem :(

Ja kad sam instalirao php 4.1.3 ( ovaj 4.2.0 jos uvek nisam probao da stavim), i tu je jos register_globals bilo off pa nisam znao zasto mi skoro nista nije radilo :)

Tek sam onda video sta je problem.
Re: register_globals = off 30.04.2002. u 12:00 · pre 298 meseci #3
Citat:
RAZZLEDAZZLER:
<a href="link.php?category=igracke">Igracke</a>
sada ce morati neshto tako bedno kao
<form action="link.php"><input type=submit name=category value="igracke">


Ovo mi bas i nije jasno, zasto mora da se stavi forma (klikom na link se salje GET zahtev tako da ces prenetim podacima pristupati preko $_GET niza).
Prepravke na postojecim sajtovima bi trebalo da budu minimalne, samo na pocetku svake skripte treba za sve da se stavi linija tipa
$ime_promenjlive=$_GET["ime_promenjljive"] <--quick and dirty way

Jeste da ce biti cimanja ali sta ces skoro sam siguran da negde u manualu od PHP 4.0.6 pise da se preporucuje pristup varijablama preko HTTP_GET_VARS i HTTP_POST_VARS nizova.


Potpis
Owl
Re: register_globals = off 30.04.2002. u 14:37 · pre 298 meseci #4
Ja sam kod sebe instalirao Apache 2.0.35, PHP 4.2.0 i ucim se da pisem skripte na novi, sigurniji nacin :) Mogu reci, vise mi se svidja pristup varijablama preko globalnih _GET _POST .. nizova iako ima vise da se kuca.

Kome treba Quick'n'Dirty, najjednostavnije je ovako nesto:
Code:
if ($_GET) { 
    foreach (array_keys($_GET)  as $Var) { 
        $$Var = $_GET["$Var"];
    }
}

Potpis
guru in training
Re: register_globals = off 30.04.2002. u 14:45 · pre 298 meseci #5
Pa preporuchuju oni ovakav nachin rada , da kazem odavno ...

Ali sad mi tek nije jasno.
Kada se na ovaj nachin promeni kod, zar nece onda postojati sve sigurnosne rupe kao i do sada?
Ajd' nek mi neko objasni...najbolje uz neki kratak primer gde se vidi razlika
Re: register_globals = off 30.04.2002. u 14:56 · pre 298 meseci #6
Citat:
RAZZLEDAZZLER:
Umesto da se recimo samo na sajt stavi
<a href="link.php?category=igracke">Igracke</a>
, sada ce morati neshto tako bedno kao
<form action="link.php"><input type=submit name=category value="igracke">

Ne, ne, pogresno si shvatio.
GET metoda ostaje.
Samo promenljive iz GET/POST neces moci vise onako da hvatas.
Jest' da je frka da se srede skripte, ali je tako mnogo bezbednije.
Re: register_globals = off 30.04.2002. u 15:08 · pre 298 meseci #7
Citat:
RAZZLEDAZZLER:
Kada se na ovaj nachin promeni kod, zar nece onda postojati sve sigurnosne rupe kao i do sada?

Sa onim kodom sto je dao FlatLine - sve ostaje isto, jer sve ulazne promenljive ponovo prebacujes u obican oblik --> $promenljiva.
ALI, ako tacno na pocetku skripte definises koje promenljive hoces da stavis u obicnom obliku - onda je mnogo bezbednije sve.
Mada, ja sam ovaj problem do sada resavao tako sto glavne stvari stavljam u jednu veliku funkciju, koja vidi samo one promenljive koje si joj naveo pod GLOBAL.
Re: register_globals = off 01.05.2002. u 03:32 · pre 298 meseci #9
evo i ovde da prospem ono malo mudrosti shto nemam, ... ne bi trebalo na ovaj kod iznad da se navikavate, jer cete opet morati da menjate kod kada potpuno budu izbacili to register_globals [shto potajno najavljuju za neku tamo buducnost]
Re: register_globals = off 26.07.2005. u 13:40 · pre 258 meseci #10
Sluceno sam naisao na ovu temu pa rekoh da odgovor jer ce mozda nekome biti od kotisti.

Znaci ukoliko hocete da ukljucite register_globals na on uradite to ovako


Napravite jedan .htaccess fajl u koji cete upisati "php_flag register_globals on"(bez navodnika) zatim ga postavite na vas server i to je to.
Potpis
www.downloads.co.yu
Najveca arhiva domaceg softwera.
Re: register_globals = off 13.08.2005. u 22:59 · pre 258 meseci #11
Tek pocinjem da ucim PHP i imam dosta veliki problem sa prikazivanjem vrednosti
niza u rezultatu.
PHP kod je sledeci razmisljao sam da upotrebim funciju "import_request_variables()" mozda bi mi ona pomogla ali iskreno da kazem ne znam kako se koristi.
Code:

<select name="Motor[]" multiple>
<option>1.4L</option>
<option>1.6L</option>
<option>1.8L</option>
<option>2.0L</option>
</select>

<?php
echo "<br>Po tipu motora:<br>";
echo $_REQUEST["Motor[0]"];
echo $_REQUEST["Motor[1]"];
echo $_REQUEST["Motor[2]"];
echo $_REQUEST["Motor[3]"];
?>


Verujem da postoji jednostavno resenje ali posto sam ja "guster" molim nekog da mi pomogne.

Hvala!
Re: register_globals = off 14.08.2005. u 10:55 · pre 258 meseci #12
meni ovako radi....

Code:
<form action='#' method='post'>
<select name="Motor[]" multiple>
<option>1.4L</option>
<option>1.6L</option>
<option>1.8L</option>
<option>2.0L</option>
</select>
<br>
<input type=submit value=Submit>
</form>

<?php
echo "<br>Po tipu motora:<br>";

$motorniz = $_POST['Motor'];
$br = count($motorniz);


for ($i = 0; $i < $br; $i++) {
echo $motorniz[$i] . "<br>\n";
}

?>
Potpis
Laravel Srbija.

[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]
Re: register_globals = off 15.08.2005. u 09:40 · pre 258 meseci #13
Ok hvala ti radi i kod mene !


Ako mozes jos da mi objasnis ovaj deo koda
Code:

<select name="Motor[]" multiple>

ovde je ime "Motor[]"
A u PHP kodu imam promenljivu
"$motorniz" koja uzima podatke iz imena "Motor"(bez zagrada).
E to mi je pitanje,
Kako on moze da uzima podatke iz imena "Motor" ako je bez zagrade???
Re: register_globals = off 15.08.2005. u 15:29 · pre 258 meseci #15
upravo tako ;)

cak ni ja nisam znao da treba u formularu da se stavi [] pa mi je prosledjivao jednu vrednost, onda sam iz tvog primera video da ide [] pa sam stavio, i - radi!
Potpis
Laravel Srbija.

[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]
Re: register_globals = off 15.08.2005. u 20:25 · pre 258 meseci #16
Jasno je meni ovo :)
Citat:
echo '<pre>';
print_r ($_POST ['Motor']);
die ('</pre>');


Ali nije mi jasno ovo
Code:

<select name="Motor[]" multiple>

U ovom formularu "Motor[]" ima zagrade.

A u
Code:

$motorniz = $_POST['Motor'];

ovom delu koda deklarisana je promenljiva "$motorniz" koja uzima podatke
iz "$_POST['Motor'],e ja ne kontam kako je ovaj motor bez zagrada??

Kapirate??
Re: register_globals = off 15.08.2005. u 20:35 · pre 258 meseci #17
to samo znaci da ce $_POST['motor'] da bude niz. Znaci
$_POST['motor'] = array("1" => "harley", "2" => "honda");
Re: register_globals = off 15.08.2005. u 22:45 · pre 258 meseci #18
@flylord
Citat:

to samo znaci da ce $_POST['motor'] da bude niz. Znaci
$_POST['motor'] = array("1" => "harley", "2" => "honda");

Jasno je meni savrseno da ce to da bude niz i treba da bude niz.

Samo jednu stvar ne kopcam iako nije mnogo bitna ali eto zanima me

ja u HTML formularu imenujem vrednost kao sto je ova dole "Motor[]" koja treba da mi bude promenljiva sa nizom
Code:

<form action='#' method='post'>
<select name="Motor[]" multiple>
<option>1.4L</option>
<option>1.6L</option>
<option>1.8L</option>
<option>2.0L</option>
</select>


i zatim je deklarsem u php-u kao niz i to izgleda kao ovo dole
Code:

$motorniz = $_POST['Motor']; 
$br = count($motorniz);

for ($i = 0; $i < $br; $i++) {
echo $motorniz[$i] . "<br>\n";


muci me zasto ovde nemaju "$motorniz=$_POST['Motor']" "[]"uglaste zagrade ka u gornjem fomularu "<select name="Motor[]" multiple>",posto ja mislim da "[]" govore php-u da treba tu promenljivu da tretira kao niz.


Znam da sam dosadan ali sta ces,ako mozes ti ili neko drugi da mi objasni.

Hvala !
Re: register_globals = off 15.08.2005. u 22:48 · pre 258 meseci #19
to pitaj one sto prave PHP :) Jednostavno je tako napravljeno, jer je preglednije. Znaci, ako hoces da ti promenjiva iz HTML forme, prenosi vise parametara moras da joj stavis identifikator []. To nije deo imena, to samo oznacava da je ta promenjiva tipa niz a ne varchar...
Re: register_globals = off 16.08.2005. u 08:51 · pre 258 meseci #20
Citat:
pCp:
Jasno je meni ovo :)
Citat:
echo '<pre>';
print_r ($_POST ['Motor']);
die ('</pre>');

Nije ti jasno i tačka. To što razumeš tih par redova koda ne znači da razumeš zbog čega su napisani. Pogledaj malo kontekst...
Citat:
Tako ti u php stigne niz selektovanih motora, a ne samo jedna vrednost.

Proveri...

Dakle, kod ti služi za proveru, da vidiš šta ti prima PHP kad mu se prosledi formular.

I potom - PROVERI - šta se dešava kada u formularu izbrišeš problematične uglaste zagrade, uz isti ovaj kod.

...

Cela priča oko uglastih zagrada nema veze s pehapeom, već s browserom, kao jedini način da multiple svojstvo selekta dobije smisao prilikom prosleđivanjem formulara.
Potpis
BoxUp
interesantna logička igra
Monty Hall paradoks - interaktivni demo
Odgovori
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme