Weiß nicht weiter
Hallo liebe PHPler und die, die es noch werden wollen.
Folgende Bedingungen soll PHP übeprüfen. Zuerst soll das Script prüfen ob, die Anfrage von url_anfrage.php kommt machen wir über PHP-Code:
PHP-Code:
ob die Variable $einverstanden leer ist, wenn sie das ist, wird auf url_leer.php weitergeleitet PHP-Code:
PHP-Code:
|
AW: Weiß nicht weiter
Ähm, doch, es reicht if und else... Genaugenommen würd sogar if reichen...
Aber ein paar Hinweise: Erst mal ist es keine gute Idee, den Referer zu überprüfen. Man kann nämlich abstellen, dass der übertragen wird. Wer das tut, ist damit automatisch ausgesperrt. Prüfe stattdessen lieber mit isset, ob $_POST['einverstanden'] existiert. Übrigens musst du zum Testen auf empty nicht extra noch eine neue Variable erzeugen, du kannst auch direkt $_POST['einverstanden'] prüfen. Jetzt solltest du dir nur noch die Frage stellen, was dieses Problem unter "PHP für Fortgeschrittene und Experten" macht... |
AW: Weiß nicht weiter
@ serp,
wie verschiebe ich den Thread dann zu den Grundlagen? DAnn muss die URLüberprüfung auf dem Server erfolgen über SSI, das kann keiner in seinerm Browser deaktivieren, stimmts? Ich programmiere $einverstanden = $_POST['einverstanden'];, weil es mir übersichtlicher erscheint, in vielen Büchern wird das auch so gemacht, erst Varible erzeugt und dann auf diese zugegriffen. Nur wenn ich viele Variablen erzeugen müsste wie bei Formularen dann nehme ich empty($_POST['einverstanden'];. Denke das der Server nicht viel mehr ausgelastet ist, wenn ich erst eine Variable erzeuge. Wie kann man den Referer abstellen? Würde das dann so machen, jetzt ist es ja einfacher. Wenn Anfrage von url_anfrage.php dann über SSI zu prüfen.php prüfen.php: PHP-Code:
|
AW: Weiß nicht weiter
SSI? Server Sideded Includes? *kopfkratz*
Bei deinem Beispiel, das isset bringt dir in dem Fall nichts mehr. Denn isset() wird immer true zurückliefern, da die Variable $einverstanden erzeugt worden ist. Nur falls $_POST['einverstanden'] nicht existiert, ist sie leer (und du kriegst unter vernünftigem error_reporting ne Warnung). Entsprechend würd ich if(isset($_POST['einverstanden']) && !empty($_POST['einverstanden'])) prüfen. Zitat:
Über die Übersicht kann man sich streiten, ich persönlich finds praktischer, wenn ich auf den ersten Blick sehen kann, ob eine Variable aus dem Formular kommt (-> ich hab aufs POST-Array zugegriffen) oder irgendwas lokales ist, das ich erzeugt hab. Zitat:
|
AW: Weiß nicht weiter
Also vergessen wir SSI.
Wichtig ist jetzt das <input name="einverstanden"> nur einmal vorkommt auf dem ganzen Server. Habe ich so geändert, sprich in den anderen Dateien gibt es kein <input name="einverstanden"> mehr. Nun kann die Überprüfung mittels Referer entfallen. Habe Script so geändert: PHP-Code:
Wo ist der Wurm drin? Hier der HTML code: Code:
<form action="prüfen.php" method="post" name="agbs" onSubmit="return check_radio(this)"> Ich habe eine Seite nennen wir sie mal zuerst.php und dann eine dann.php Auf dann.php soll man nur zugreifen dürfen wenn die Anfrage von zuerst.php kam. Da Referer abstellbar ist, muss es anders gehen. Nuir WIE? |
AW: Weiß nicht weiter
Zitat:
Informationen zum Sessionmechanismus von PHP findest du unter: - http://www.php.net/manual/en/features.sessions.php - http://tut.php-q.net/sessions.html |
AW: Weiß nicht weiter
Super Idee mit den Session, so kann man sicher sein, das erstens die Anfrage, daher kommt wo Sie herkommen soll und nicht von einer Hackerseiter oder was anderem.
Was ist hier der Unterschied? PHP-Code:
empty: Prüft ob Var leer, nicht definiert ist oder den Wert 0 hat, liefert dann True denk nach ... !empty Prüft ob Var nicht leer ist, definiert ist und nicht den Wert 0 hat, dann True isset: überprüft ob Var existiert. Reicht es deshalb nicht aus if ( isset($_POST['einverstanden']) ) zu verwenden, anstatt zusätzlich !empty ?? Ist es überhaupt notwendig Var mit unset zu löschen, nehmen wir an wir haben sämtliche Globale Var bekommen, diese ausgewertet und in DB eingetragen. Sollte man nun die Vars mit unset löschen, oder ist das überflüssig? |
AW: Weiß nicht weiter
Was ist das denn für ein PHP-Buch? empty überprüft, ob eine Variable einen Wert enthält, der als "leer" interpretiert wird. Welche genau das sind, kann auf php.net nachgelesen werden. Bei nicht definierten Variablen wirst du aber eine Warnmeldung kriegen (die der Verfasser des Buches nicht sieht, wenn er die entsprechende Fehlerausgabe nicht aktiviert hat). Natürlich liefert die Methode dann auch true, aber schöner Stil ist das keiner.
isset prüft nur, ob eine Variable existiert oder nicht. Entsprechend sollte den emptys auf jeden Fall mal ein isset vorangehen. Ob du nach dem isset noch ein empty brauchst musst du an Hand deines Scripts entscheiden. Wenn es nur darum geht, ob die Variable gesetzt ist, reicht isset. Wenn zusätzlich noch ein Wert drinstehen soll (es also beispielsweise ausgeschlossen werden soll, dass jemand eine leere Zeichenkette übergibt), ist zusätzlich noch empty interessant. Falls auch Zeichenketten, die nur aus Whitespaces bestehen, ausgefiltert werden sollen, wäre auch empty(trim($var)) nicht verkehrt... ;) Ob du das also brauchst oder nicht musst du selbst wissen, das können wir dir nicht beantworten. Was unset angeht: Was genau willst du damit erreichen? Wenn du ein sehr großes und speicherhungriges Script hast, bringt es unter Umständen schon etwas, mit unset wieder für mehr freien Speicher zu sorgen. Ansonsten sollte der Speicher mit Beendigung des Scripts eh wieder freigegeben werden, von daher... |
AW: Weiß nicht weiter
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 11:03:42 Uhr. |
Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.