PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PHP GOTO anweisung ?


S3Ri0US
04.02.2007, 12:19:25
Hallo. ich wollte fragen ob es in PHP eine GOTO funktion gibt. Ich wollte das so umsetzten:


if($forum=="Admins-Only" && ($isMod=="0" OR $isAdmin=="0")) {
echo "<br><br><b>Sorry du kannst keine Beiträge im Admins-Only lesen ! </b><br><br>";
goto 'noneadmin';
}


und dann in der abfrage ganz unten noneadmin: ende der Funktion...

xabbuh
04.02.2007, 12:29:26
Nein, bislang gibt es in PHP kein GOTO (wird wohl in PHP 6 eingeführt). Vermutlich ist das hier auch eher unnötig. Aber dafür müssten wir die vollständige Funktion kennen.

|Coding
04.02.2007, 12:46:42
ich halte ein goto-statement für überflüssig. der dabei entstehende "spaghetti-code" würde nur die durchschaubarkeit von php-scripts verkrüppeln. das hin und her gehüpfe geht einem ja schon bei basic ähnlichen sprachen auf den sender.

feuervogel
04.02.2007, 13:14:57
YOU'RE ALL DIJKSTRA-BRAINWASHED PEOPLE!!!

so. du kannst jedes goto-konstrukt durch ein äquivalents while-konstrukt ersetzen. versprochen.

Blade1965
08.02.2007, 09:13:50
Hallo. ich wollte fragen ob es in PHP eine GOTO funktion gibt. Ich wollte das so umsetzten:


if($forum=="Admins-Only" && ($isMod=="0" OR $isAdmin=="0")) {
echo "<br><br><b>Sorry du kannst keine Beiträge im Admins-Only lesen ! </b><br><br>";
goto 'noneadmin';
}


und dann in der abfrage ganz unten noneadmin: ende der Funktion...

mach doch einfach ne weiterleitung an ein anderes Script mit
header("LOCATION");

oder:

if($forum=="Admins-Only" && ($isMod=="0" OR $isAdmin=="0")) {
die('Sorry du kannst keine Beiträge im Admins-Only lesen !);
}

rambi
08.02.2007, 16:58:44
mach doch einfach ne weiterleitung an ein anderes Script mit
header("LOCATION");

<provokant>
Die Verwendung von Locationheadern, auf die eigene Domain, zeugt von einem voll
kaputtem Programmkonzept! Bestenfalls, ein dirty Hack, um Lücken im Konzept zu
stopfen!
</provokant>

Toadie
08.02.2007, 20:01:11
Warum brauchst Du den das "GOTO" genau?

Willst Du auf oder abwärts im script springen?

Falls Du abwärts springen willst, kannst Du beispielsweise eine If Abfrage starten, die prüft, ob Du "admin" bist und so den unzugänglichen code quasi "ausklammern".

if($isAdmin!="0") {
echo "<br><br><b>Hallo Admin hier kommt Dein Code! </b><br><br>";
} else {
echo "<br><br><b>Hallo Nicht-Admin. Du bist hier nicht erwünscht und daher kommt hier Dein Code! </b><br><br>";
}

Aufwärts springen wäre auch überhaupt nicht zu empfehlen... Falls das erforderlich sein sollte, wäre eine Funktion angebracht.

sysop
09.02.2007, 01:39:21
<provokant>
Die Verwendung von Locationheadern, auf die eigene Domain, zeugt von einem voll
kaputtem Programmkonzept! Bestenfalls, ein dirty Hack, um Lücken im Konzept zu
stopfen!
</provokant>

son quatsch, sorry.....

rambi
09.02.2007, 02:37:40
son quatsch, sorry.....
Argument freier Hirnriss...

----------------
Aber ich bin mal nicht so, und gebe dir eine Chance!
OK, evtl. liege ich ja falsch....
Aber, sage mir bitte, warum, oder wofür, eine solche Weiterleitung notwendig sein sollte...

meikel (†)
09.02.2007, 03:05:25
OK, evtl. liege ich ja falsch....
Nein, liegst Du nicht. Der Location Header auf den eigenen Host macht bestenfalls dann Sinn, wenn POST Daten verworfen werden sollen, damit der POST Request nervöser F5-User nicht mehrfach erfolgen kann, oder um einen korrekten Logout zu ermöglichen.

Der Rest ist meist konzeptionsloser Pippifax.
Aber, sage mir bitte, warum, oder wofür, eine solche Weiterleitung notwendig sein sollte...
Der Location Header auf den eigenen Host ist genaugenommen ein "HTTP-GOTO".
Sozusagen ein Spaghetti-HTTP, bei dem ganz wild durch die Scripte "gehüpft" wird... <ggg>
Und für die schweren Fälle, bei denen in der Session der Fallback für User mit Keksallergie vergessen wird, gibt es dann die diversen Foren zum ausheulen.

rambi
09.02.2007, 03:28:18
Ja, so ist es wohl.....

Die F5 Leute kann man locker abfangen!
Einen Zufallswert in einem hidden-field und in Session ablegen und abgleichen,
damit ist jeder Doppelpost abgewendet.

Das Logout-Problem ist mit dem "Das EVA Prinzip" auch ausräumbar..
Keksallergie
Nagut, dagegen ist kein Kraut gewachsen..
Aber die haben bei ebay und ihrer Hausbank auch verloren...

meikel (†)
09.02.2007, 07:05:55
Das Logout-Problem ist mit dem "Das EVA Prinzip" auch ausräumbar.Eva Prinzip? Doch nich das von Frau Herrmann...? <hihi>

Ein Problem ist das eigentlich nicht:
# index.php
# dies und das
session_start();
if (isset($_GET['mode']) AND $_GET['mode'] == 'logout')
{
$_SESSION = array();
session_write_close();
@session_start();
session_regenerate_id(true);
$_GET['mode'] = 'start';
}
usw();

Geht auch ohne HTTP-GOTO. <g>
Hat nur den Schönheitsfehler, daß in der Adreßzeile eben noch .../index.php?mode=logout steht. Aber auch dann geht es, wenn man zum Logout ein POST Formular nimmt.