De jag menar var att jag skrev ett script för en inlämningsuppgift!
Fick den godkänd men med kommentarer om att
Sedan så förstår jag inte varför du "plockar ut" värdena ur $_POST. Skriptet blir mer lättläst och "säkrare" om man alltid använder sig av de globala variablerna."
Men då började jag fundera nu, globala variablar, handlar inte de om man vill ha variablar i funktioner globala eller icke globala, dvs lokala!
Sedan så förstår jag inte varför du "plockar ut" värdena ur $_POST. Skriptet blir mer lättläst och "säkrare" om man alltid använder sig av de globala variablerna.
Misstänker att du gör något sådant här
$id = $_POST['id'];
Det är väl det han ifrågasätter. Varför lagra om värdet i $id när du redan har värdet i $_POST['id']
Jag lägger nästan alltid $_POST-värden i nya variabler. När en besökare skickar ett formulär och jag måste visa ett felmeddelande för att denne glömt fylla i ett fält, då vill jag inte tvinga dem att fylla i hela formuläret från början igen. Därför ser det ofta ut ungefär såhär i toppen av mina formulärsidor.
De värden som ligger i $_POST är tveklöst från det postade formuläret. Om du slentrianmässigt sätter du om alla POST, GET, SESSION och COOKIES till samma namn utanför de respektive arrayerna i dina skript, kan en krock uppstå. Om du gör detta i olika skript (via include) eller om skriptet är långt, kan då otrevliga saker hända.
Ett snabbt, förenklat och knasigt exempel som dock illustrerar vad jag menar är följande:
Antag att alla sidor kollar inloggning genom en inkluderad fil som gör följande:
$inne = $_SESSION["inne"]; //Får värdet 0 för icke inloggad tex.
Senare i skriptet:
$inne = $_POST["inne"]; //Får värdet 7 tex.
Senare igen:
if ($inne) {
print $lösenord;
}
Ingen höjdare direkt!!
Om du däremot skrev:
if (isSet($_SESSION["inne"]) && $_SESSION["inne"] == 1) {
print $lösenord;
}
så kan inget otrevligt hända.
-----
En annan skillnad är att POST, GET, SESSION och COOKIES är superglobala och syns även i funktioner, medan globala variabler som du definierar inte syns i funktioner med default.
$inne = $_SESSION["inne"];
//returnerar alltid 0
function sloppy() {
return $inne;
}
//Funkar
function works() {
global $inne;
return $inne;
}
//Funkar
function in() {
return $_SESSION["inne"];
}
hmm, jag tycker också att det blir snyggare kod om man slänger in post-variabler i nya variabler som man sedan kan använda i sina sql-frågor osv. Blir mycket mer lättläst. Att det skulle kräva märkbart mer laddningstid tror jag inte på.
för att förhindra slumpkrockar så kan man ju sätta $p_namn för postvariabel, $g_namn för get, $c_namn för cookie och $s_namn för session osv.
$p_namn eller kanske $pNamn är mer lättläst än $_POST['namn'] och dessutom färre tecken man behöver skriva (fnuttarna och klamrarna behöver ju öven dubbelgrepp för att knappas in :P ). Vill man sedan lägga på en funktion på $_POST['namn'] så behöver man bara ändra det första gången.
Jag tycker att det verkar mycket vettigt. Har jag missat nåt?
Jag kan av egen erfarenhet säga att det blir mycket lättare när man kommer tillbaka till gamla skript efter ett halvår eller så, att följa skriptet och förstå om man använt $_POST['variabel'] och liknande i sin kod istället för omskrivna variabler.
Därför inte sagt att det inte finns tillfällen då det kan vara lämpligt att lägga över i andra variabler.
Ett skäl till att läroböcker skriver så KAN vara att det gör skripten lättare att anpassa för folk som sitter med äldre versioner av PHP. Då är det bara tilldelningsdelen som ska ändras, medan annars är det problem i hela skriptet. Min bok har någon småknasighet (kommer inte ihåg vad) där de speciellt säger att de gör på ett sämre sätt med tanke på folk med äldre PHP-versioner.
Ett skäl till att läroböcker skriver så KAN vara att det gör skripten lättare att anpassa för folk som sitter med äldre versioner av PHP. Då är det bara tilldelningsdelen som ska ändras, medan annars är det problem i hela skriptet. Min bok har någon småknasighet (kommer inte ihåg vad) där de speciellt säger att de gör på ett sämre sätt med tanke på folk med äldre PHP-versioner.
Gudarsskymning.
Är boken för PHP 5, så räknar jag med att folk använder PHP 5 :OO
269 ms totalt · 3 externa anrop · v20260731065814-full.767b4345