Archiv verlassen und diese Seite im Standarddesign anzeigen : Syntax frage
Erst mal möchte ich sagen das das Tutorial "Wie erstelle ich ein LogIn-Skript?" echt Klasse ist sehr verständlich geschrieben. Ich als Anfänger habe auch zum größten Teil die Syntax verstanden. Nur eine Frage habe ich noch was bedeutet "die" in der 5. Zeile und welche Auswirkung hat das.
01 <?php
02 session_start();
03 if(!session_is_registered('user') || $_SESSION['user'] == "") {
04 header("location:index.php");
05 die;
06 }
07 ?>
Ich bedanke mich jetzt schon für Ihre Antwort.
Benny-one 09-11-2006, 09:38 Wenn du mit header ein location wechsel machst, darf nicht anderes ausgeben werden. Das die() verhindert, dass irgendwelche Ausgaben nach der header location ausgeben werden, in dem das PHP-Script abgebrochen wird.
Benny-one 09-11-2006, 11:24 Original geschrieben von Trashar
btw equal to exit; nö, bei die() kannste noch ne Ausgabe machen die("irgendwas ist schief gegangen"); bei exit geht das nicht. Aber in dem Falle wäre ein die() mit Fehlermeldung sehr schlecht :D
Daher nehme ich grundsätzlich ein exit; bei einem header("location");
so und dann lesen wir nun mal die doku und revidieren unsere aussage :goth:
Benny-one 09-11-2006, 12:29 :confused:
http://de3.php.net/manual/de/function.die.php
http://de3.php.net/manual/de/function.exit.php
*Benny auf die Finger hau*
Les die englische Doku!!!
http://de3.php.net/manual/en/function.exit.php
Benny-one 09-11-2006, 12:32 Tatsache. Aber das war doch nicht schon immer so oder?
Hallo Benny und Trashar
möchte mich bei eurer schnellen Info bedanke. Ich bin jetzt mal wieder schlauer geworten. Diese Info hat mir sehr geholfen die Syntx zu verstehen.
lg eno
Wer nicht fragt der nicht gewinnt!
;)
Wie ist das dann mit der Schreibweise ist die da richtig oder müsste die so aussehen?
01 <?php
02 session_start();
03 if(!session_is_registered('user') || $_SESSION['user'] == "") {
04 header("location:index.php");
05 die();
06 }
07 ?>
Ich meine mit () oder geht das auch ohne, was ist richtig?
Wie selber ausprobiert??? Wie meinst du das? :confused:
na, was passiert denn wenn du die() mal ohne () verwendest? Keine angst, probier es ruhig aus, der Server wird schon nicht abrauchen...
Shurakai 09-11-2006, 23:52 Original geschrieben von Benny-one
Tatsache. Aber das war doch nicht schon immer so oder? Doch, eigentlich schon...
Benny-one 10-11-2006, 10:22 Toll dass die das seit Jahren in der Doku nicht mit reinschreiben...toll dass es wiedermal 2 Funktionen für den selben scheiß gibt...
Original geschrieben von Benny-one
Toll dass die das seit Jahren in der Doku nicht mit reinschreiben...toll dass es wiedermal 2 Funktionen für den selben scheiß gibt... Sind beides keine Funktionen, sondern Sprachkonstrukte!
hi TobiaZ
habs ausprobiert mit und ohne () hatte aber keine veränderung gesehen außer wenn ich was in die () geschrieben habe. für mich war aber die richtige schreibweise mal wichtig oder ist das egal?
Habe noch ne doffe frage was ist den nun ein Sprachkonstrukt? wie muss man das verstehen?
Eigentlich alles Fragen fürs Manual. ;)
hi TobiaZ
warum fragen fürs Manual wenn sie im Zusammenhang mit einem Tut stehen? Da ist es doch naheliegend es auch in dem entsprechenden Forum zu bereden. Wenn ich eine Antwort zu einem Tut suche dann sehe ich ja besimmt auch erst im Forum unter Tutorial nach ob ich dazu was finde. ODER sehe ich das falsch?
nee, ich bezog mich auf die Fragen "ob mit oder ohne klammer" und was "langage constructs" (um einen weiteren suchbegriff in spiel zu bringen) sind. Die sind doch ziemlich allgemein, als dass sie irgendwas mit dem usermanagement-tutorial zu tun hätten. ;)
Ok dann werde ich mich halt mal auf die Suche begeben
jahlives 15-11-2006, 02:32 Es wird häufig der Fehler gemacht Sprachkonstrukte mit Funktionen zu verwechseln. Um das generell zu vermeiden sollte man die Sprachkonstrukte nicht wie Funktionen nutzten. Das heißt bei 'include' zum Beispiel sollte man keine Klammern setzen:
Man dürfte behaupten, dass Funktionen immer einen Rückgabewert haben. Sprachkonstrukte hingegen nicht. Wobei dann bei print resp echo ein Problem entstünde weil echo im Gegensatz zu print keinen Rückgabewert hat, also void.
Gruss
tobi
Original geschrieben von jahlives
Man dürfte behaupten, dass Funktionen immer einen Rückgabewert haben. Sprachkonstrukte hingegen nicht. Wobei dann bei print resp echo ein Problem entstünde weil echo im Gegensatz zu print keinen Rückgabewert hat, also void.
Du meinst genau das gegenteil. Denn Print und echo sind Sprachkonstrukte und dürften nach deiner Definition keinen Rückgabewert haben, was aber bei print sehr wohl der Fall ist, nämlich immer 1.
|