- Prüfungen mit isset() sind zumindest guter Stil (und wir machen ja nichts anderes ;)), weil POST-/GET-Felder nicht zwangsläufig gesetzt sein müssen.
PHP:
<?php
error_reporting(-1); // Alle Fehler/Notizen anzeigen, siehe Doku zur Funktion
echo $_GET['test'];
// Notice: Undefined index: test in index.php on line 5
Ich mache oft sowas für jede POST-/GET-Variable, bevor ich mit den Werten arbeite:
PHP:
$_GET['test'] = (isset($_GET['test'])) ? trim($_GET['test']) : '';
(
Ternary-Operator)
Nun ist sichergestellt, dass das Feld bei weiteren Auslese-Versuchen zumindest gefunden wird.
- Der Dateiname bei Includes wird übrigens logischerweise als String erwartet.
Die include- und require-Befehle sind zudem Sprachkonstrukte (so wie echo) und keine Funktionen. Man lässt deshalb die Klammern um den Pfad üblicherweise weg.
- Nach diesem Code (aus #18) hat
$Juli übrigens den Wert
true (
Operator-Rangfolge):
PHP:
if(isset($_POST["Juli"])){
if($Juli = $_POST["Juli"] == "Juli"){
include(Juli.php);
}}
Zudem läge im auf diesen Ausschnitt folgenden Code dasselbe isset()-Problem für $Juli vor, wie oben schon für $_POST['Juli'] beschrieben, da $Juli nur dann gesetzt ist, wenn die äußere Bedingung erfüllt ist. Sinnvoller ist es zum Beispiel so:
PHP:
$juli = (isset($_POST['Juli'])) ? $_POST['Juli'] : '';
if ($juli == 'Juli') {
include 'Juli.php';
}
- Zu PHP_SELF möchte ich noch mal auf Basti93 in #15 hinweisen. Ein leeres action-Attribut (
action="") erfüllt meist denselben Zweck, da es das Formular an die aktive URL schickt.