myGully.com

myGully.com (https://mygully.com/index.php)
-   Entwicklung & Programmierung (https://mygully.com/forumdisplay.php?f=72)
-   -   Wie bekomme ich diesen PHP Fehler weg??? (https://mygully.com/showthread.php?t=2556069)

Funky StylzZz 23.01.12 13:27

Wie bekomme ich diesen PHP Fehler weg???
 
Hallo Liebe Mygully gemeinde,


Ich habe gerade an einem kleinem "einloggs*****" für einene kurs an meiner schule geschrieben.(er dient daher nur zu anschauunsgzwecken und zb. die sicherheit wird kkomplett vernachlässigt.)

Ih habe diesen Quellcode:


PHP-Code:

<?php
session_start
();
$benutzername $_POST['benutzername'];
$kennwort     $_POST['kennwort'];

echo 
"Test: Benutzername: $benutzername <br />";
echo 
"Test: Kennwort: $kennwort <br />";

if ( 
$benutzername == "Tom" AND "123" == $kennwort )
{
    echo 
"Sie sind eingeloggt.";
}


?>

<form action="einloggen.php" method="post">
Benutzername:<br />
<input type="text" name="benutzername"  />
<br />
Kennwort:<br />
<input type="password" name="kennwort" />
<br />
<input type="submit" value="einloggen" />
</form>

Er ist zwar noch cnith ganz fertig aber der feher der sich mir in den wge stellt hat cnihts damit zu tun das er nciht ferttig ist und zwar wenn ich das ganze jetzt mittels php parsne lassen also ausführe bekomme ich wie im quellcode geschrieben meine textboxen un den submit button aber über dem ganzen stehen 2 Fehler


Fehler:
Code:

Notice: Undefined index: benutzername in C:\xampp\htdocs\Einloggs*****\einloggen.php on line 3

Notice: Undefined index: kennwort in C:\xampp\htdocs\Einloggs*****\einloggen.php on line 4

Wie kann ich das problem beheben denn in einem vbideo wo ich den code her habe benutz er dne selben code und hat keineen fehler???Liegt es an der php version ich weis es leider nciht.


MFG Tom

sysi 23.01.12 18:29

Du überprüfts immer die Post Variable. Wenn du allerdings noch nichts abgeschickt hast so ist diese leer was zu dem von dir beschriebenen Fehler führt.

Pack den PHP teil nach dem Session_start() in ein if(exists($_POST ... und in den Else zweig eine Session variable die du dir bei erfolgreichem einloggen setzt dann bist du erstmal ohne Fehler

Thelvan 23.01.12 20:53

Das er im Video das nicht angezeigt bekommt ist eine PHP Einstellung, das liegt daran, dass diese Variablen noch nicht gesetzt sind, musst du vorher mit ISSET überprüfen.

[Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...]

Vexxer 23.01.12 23:22

Saubere Methode:
Variablen Prüfen bevor du sie verwendest. isset oder if(!empty($variable)).

Unsaubere Methode:
@$benutzername = $_POST['benutzername'];
@$kennwort = $_POST['kennwort'];

Unterdrückt die Fehlerausgabe.

Ansonsten könnte noch sein... bin mir nicht ganz sicher, ist schon ein bisschen her... Debug Level zu hoch gedreht. Solche Fehler kann man glaub ich in der PHP.ini abschalten.

kkhamburg 24.01.12 02:21

Also erstmal ist das kein Fehler sondern "nur" eine Notice, die dich auf eine unsaubere Programmierung aufmerksam macht.

Es gibt grundsätzlich zwei Möglichkeiten, diese Notice los zu werden.

1. Die ebenfalls unsaubere Methode diese durch setzen von @ oder Error-Reporting zu unterdrücken.
Kann man machen, sollte man aber nicht.

2. Wie schon beschrieben das Abfangen der POST-Variablen mit isset, dann kommt auch keine Notice mehr und der Code ist sauber.

$benutzername = (isset($_POST['benutzername'])) ? $_POST['benutzername'] : "";
$kennwort = (isset($_POST['kennwort'])) ? $_POST['benutzername'] : "";

Du kannst das Ganze sogar noch erweitern und direkt abfragen ob die Inhalte dem entsprechen was du zum einloggen haben willst:

$benutzername = (isset($_POST['benutzername']) && $_POST['benutzername'] == "Tom") ? $_POST['benutzername'] : "";

Am Rande sei noch erwähnt das man des sauberen Stils wegen eigentlich immer die Variable mit dem Inhalt vergleicht und nicht umgekehrt.
Und nur davon, das du eine Session startest und einen Benutzernamen und Kennwort abfragst ist man auch noch nicht "eingeloggt", was immer das an dieser Stelle bedeuten mag.

Zum "einloggen" gehört dann schon mindestens ein Parameter, den du in die Session schreibst, denn spätestens wenn du auf eine weitere Seite verzweigst ist das schöne einloggen wieder weg.

BTW. Geht es nur mir so ? Ich finde die grössten Fehler könnte man aus seinem Anfrage-Post ruhig mal rausnehmen, sofern es sich um Buchstaben-Dreher handelt. Du schmierst hier einen Post hin und erwartest daraufhin Hilfe.
Ich will hier gar keine Diskussion zu Rechtschreibung beginnen aber zumindestens Mühe könnte man sich doch geben wenn man Hilfe erwartet.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:50 Uhr.

Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.