Jump to content
php.lv forumi

$_GET in if taisa jokus


martins256

Recommended Posts

Kā var būt tā, ka es padodu mainīgo ar linka paliidziibu un kad saliidzinu šo mainīgo ar jebko, tas ir vienāds?

<?
$a = $_GET['a'];
if ($a = 'asd') {
echo "asd";
}
?>

links: test.php rezultāts: Notice: Undefined index: a in C:\web\www\tests.php on line 2 un asd

links: test.php?a=1 rezultāts: asd

links: test.php?a=asd rezultāts: asd

 

Šitāda laikam ir mana PHP versija: 05 Sep 2005, PHP 5.0.5

Link to comment
Share on other sites

jābūt == nevis =

 

Tavā gadijumā tu vienkārši piešķir $a mainīgajam vērtību 'asd'. Tā kā šī darbībā tiek izpildīta veiksmīgi, tad tiek atgriezts TRUE. Tādat echo "ASD"; izpildīsies jebkurā gadijumā.

Edited by andrisp
Link to comment
Share on other sites

Tā kā šī darbībā tiek izpildīta veiksmīgi, tad tiek atgriezts TRUE.

Nepareizi. Nevis darbība tiek izpildīta veiksmīgi, bet gan operācijas rezultāts ("asd") tiek interpretēts kā booleans. Un jebkurš netukšs strings ir true, tāpēc arī izpildās tas ifs. Ja strings, ko piešķir, būtu tukšs, tad gan ifs nekad neizpildītos (jo ""==false).

Link to comment
Share on other sites

$a = $_GET['a'];

šī vietā ieteiktu lietot šo

if(isset($_GET['a']))$a = $_GET['a']; else $a = '';

tad tev pazudīs tā pirmā Notice par nedefinēto indeksu a, ja tas nebūs padots caur linku.

Link to comment
Share on other sites

×
×
  • Create New...