Undefinierter Benutzername

  • PHP

Es gibt 15 Antworten in diesem Thema. Der letzte Beitrag () ist von Patrick1993.

    Undefinierter Benutzername

    Hallo Leute,
    Ich bin am verzweifeln.
    Ich habe mir ein Script mit PHP geschrieben womit ich mich vorerst einloggen will.
    Soweit sogut, wenn ich jetzt auf die "Geheim" Seite weitergeleitet werde wird alles so angezeigt wie ich es will jedoch gibt es eine Fehlermeldung.

    Fehlermeldung:

    Notice: Undefined index: username in /var/www/vhosts/funkspiel-bos-funk.de/subdomains/test/httpdocs/verwaltung/verwaltung.php on line 5

    Daraus entnehme ich das kein Username Definiert ist. Und genau daran bin ich am verzweifeln.

    Login.php
    Spoiler anzeigen

    PHP-Quellcode

    1. <?php
    2. session_start();
    3. ?>
    4. <?php
    5. include('config.php');
    6. mysql_real_escape_string($username = $_POST["username"]);
    7. mysql_real_escape_string($passwort = $_POST["password"]);
    8. $abfrage = "SELECT Benutzername, Passwort FROM login WHERE Benutzername LIKE '$username' LIMIT 1";
    9. $ergebnis = mysql_query($abfrage);
    10. $row = mysql_fetch_object($ergebnis);
    11. if($row->Passwort == $passwort)
    12. {
    13. $_SESSION["username"] = $username;
    14. echo "Login erfolgreich. <br> <a href=\"verwaltung.php\">Weiter</a>";
    15. }
    16. else
    17. {
    18. echo "Benutzername und/oder Passwort waren falsch. <a href=\"index.html\">Login</a>";
    19. }
    20. ?>
    21. <html>
    22. <head>
    23. <link rel="stylesheet" type="text/css" href="style.css" />
    24. </head>
    25. <body>
    26. <div id=erfolgreich></div>
    27. </body>
    28. <hr>
    29. <center><footer> Copyright &copy; by Patrick</footer></center>
    30. </html>



    "Hauptseite":
    Spoiler anzeigen

    PHP-Quellcode

    1. <?php
    2. session_start();
    3. ?>
    4. <html>
    5. <head>
    6. <Title>Startseite</Title>
    7. <link rel="stylesheet" type="text/css" href="./css/style.css" />
    8. </head>
    9. <body background="./css/design.png">
    10. <div id="header">
    11. </div>
    12. <div id="user">
    13. <td>
    14. <tr>
    15. <?php
    16. include('config.php');
    17. $username = $_POST["username"];
    18. $passwort = $_POST["password"];
    19. $abfrage = "SELECT Benutzername, Passwort FROM login WHERE Benutzername LIKE '$username' LIMIT 1";
    20. $ergebnis = mysql_query($abfrage);
    21. $row = mysql_fetch_object($ergebnis);
    22. if($row->Passwort == $passwort)
    23. {
    24. $_SESSION["username"] = $username;
    25. echo "Login erfolgreich. Sie werden weitergeleitet";
    26. echo '<meta http-equiv="refresh" content="2; URL=http://test.funkspiel-bos-funk.de/verwaltung/verwaltung.php">';
    27. }
    28. else
    29. {
    30. echo "Benutzername und/oder Passwort waren falsch.";
    31. echo '<meta http-equiv="refresh" content="2; URL=http://test.funkspiel-bos-funk.de/verwaltung/">';
    32. }
    33. ?>
    34. </tr>
    35. </td>
    36. </table>
    37. </div>
    38. <div id="statistik">
    39. <p>Hier kommt die Statistik hin</p>
    40. </div>
    41. </body>
    42. </html>


    Ich weiss der Code ist nicht gerade der brüller

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „nikeee13“ ()

    Hatte anscheinent die falsche seite erwischt beim posten.

    Hier die verwaltung.php

    Spoiler anzeigen

    PHP-Quellcode

    1. <?php
    2. error_reporting(E_ALL);
    3. include ('config.php');
    4. include("module/mod.php");
    5. $seite = $_GET['username'];
    6. $user = $_SESSION['username'];
    7. ?>
    8. <html>
    9. <title>Verwaltung</title>
    10. <head>
    11. <style>
    12. #menu{
    13. margin-left:500px;
    14. margin-top:5px;
    15. </style>
    16. <!--- JavaScripte --->
    17. </head>
    18. <body>
    19. <hr>
    20. <div id="menu">
    21. <a href="verwaltung.php?username=index">Startseite</a>
    22. <a href="verwaltung.php?username=autos">Fahrzeuge</a>
    23. <a href="verwaltung.php?username=tank">Tankinhalt</a>
    24. <a href="verwaltung.php?username=trupp">Trupps</a>
    25. <a href="verwaltung.php?username=logout">Ausloggen</a>
    26. </div>
    27. <hr>
    28. <div id="index">
    29. <?php
    30. if ($seite == "index" OR $seite == ""){
    31. echo "Wilkommen auf der Startseite";
    32. }
    33. ?>
    34. <?php
    35. if ($seite == "autos"){
    36. get_modul("cars");
    37. }
    38. ?>
    39. <?php
    40. if ($seite == "tank"){
    41. echo "Hier siehst du deinen Tankinhalt der Fahrzeuge";
    42. }
    43. ?>
    44. <?php
    45. if ($seite == "trupp"){
    46. echo "Hier sind alle deine Trupps";
    47. }
    48. ?>
    49. <?php
    50. if ($seite == "logout"){
    51. session_destroy();
    52. echo"<center><p id='text'>Du wurdest ausgelogt</p></center>";
    53. echo '<meta http-equiv="refresh" content="2; URL=http://test.funkspiel-bos-funk.de/verwaltung/">';
    54. }
    55. ?>
    56. </div>
    57. </body>
    58. </html>


    md5 werde ich noch einbasteln habs vergessen reinzuschreiben

    Ist klar, dass du eine Fehlermeldung von wegen "username" sei undefiniert bekommst. Das $_GET-Array enthält alle Parameter, die über die URL an das Skript übergeben wurden. Beispiel:

    Quellcode

    1. http://example.com/index.php?ichBinEinParameter=ichBinEinWert&ichBinNochEinParameter=ichBinNochEinWert

    Beim Aufruf der verwaltung.php-Datei in deinem Code wird jedoch kein Parameter übergeben.
    Demzufolge ist das entsprechende $_GET-Array natürlich leer und du bekommst beim Versuch, auf ein nicht-existentes Element zuzugreifen, eine Fehlermeldung.

    Außerdem:
    Bevor du überhaupt weiter machst, escape bitte unbedingt die GET- und POST-Parameter. Wenn du diese einfach unverändert in ein MySQL-Query einfügst, kann jeder beliebige Benutzer deines Scripts seinen eigenen MySQL-Code ausführen.
    Was ist denn bitteschön dieses hier??

    PHP-Quellcode

    1. mysql_real_escape_string($username = $_POST["username"]);
    2. mysql_real_escape_string($passwort = $_POST["password"]);


    Wie verwendest du Funktionen in VB??

    VB.NET-Quellcode

    1. Public Function Addiere(Value As Integer) As Integer
    2. Return Value + 2
    3. End function
    4. Dim zahl As integer
    5. Addiere(zahl = 1)


    irgendwie nicht oder??
    @haiyyu:
    Escapen werde ich noch machen hab ich vergessen

    @Dodo:
    Zu deiner ersten Frage:
    mir wurde immer gesagt ich solle MySQL-Injections achten und das dann so machen.

    Zu deiner Frage 2:
    Wenn ich die richtig verstanden habe.
    Funktionen wenn ich dir in VB schreibe rufe ich die wenn nichts gerechnet werden muss wie eine Sub sprich

    VB.NET-Quellcode

    1. Funkstionsname()

    auf.

    Es sei denn ich hab die frage falsch verstanden

    ja ja SQL Injection ist schon richtig, aber den Funktionsaufruf nicht, wie rufst du in VB eine Funktion auf die etwas zurück gibt?? Und wenn du weißt wie das funktioniert, wieso machst du es nicht in PHP genauso? Da sind funktionen genauso zu verwenden.

    Ansonsten PHP ist eine unsaubere Sprache, man KÖNNTE alle Variablen Deklarieren, aber es geht zum teil auch ohne, gerade bei assoziiven Arrays nervt es wenn man erst auf die Existens des Keys prüfen muss.
    Deswegen sind in der Regel auch Noitices (Warnungen) ausgeschaltet.

    Einfach dies in der php.ini setzten oder im PHP Script

    PHP-Quellcode

    1. error_reporting(E_ALL ^ E_NOTICE);


    Nun werden dir Parsing Fehler noch ausgegeben, aber keine Warnungen mehr weil das Script i.d.R. auch so läuft.
    Falls du die Lösung deines hauptsächlichen Problems noch nicht aus meinem ersten Post entnehmen konntest: Du musst den GET-Parameter an die Seite übergeben (i.e. an die URL selbier hängen), auf die du weiterleitest.
    @Dodo:
    Das mit dem escape_string war verkehrtrum falls du darauf hinaus wolltest habs aber nun behoben.

    @haiyyu:
    Sowas hatte ich aus deinem POST vermutet jedoch liegt dort mein hänger da ich das ja dann sozusagen direkt in dem Loginscript machen müsste wenn mich nicht alles täuscht

    Ja. Was ich mich jedoch frage, ist, welches der beiden oben von dir geposteten Skripte eigentlich für den Login zuständig ist? Ich sehe da zwei separate Codes, die beide anscheinend einen User einloggen.
    @haiyyu:
    Login ist dieser:

    PHP-Quellcode

    1. <?php
    2. session_start();
    3. ?>
    4. <?php
    5. include('config.php');
    6. $username = mysql_real_escape_string($_POST["username"]);
    7. $passwort = mysql_real_escape_string($_POST["password"]);
    8. $abfrage = "SELECT Benutzername, Passwort FROM login WHERE Benutzername LIKE '$username' LIMIT 1";
    9. $ergebnis = mysql_query($abfrage);
    10. $row = mysql_fetch_object($ergebnis);
    11. if($row->Passwort == $passwort)
    12. {
    13. $_SESSION["username"] = $username;
    14. echo "Login erfolgreich. <br> <a href=\"verwaltung.php\">Weiter</a>";
    15. }
    16. else
    17. {
    18. echo "Benutzername und/oder Passwort waren falsch. <a href=\"index.html\">Login</a>";
    19. }
    20. ?>
    21. <html>
    22. <head>
    23. <link rel="stylesheet" type="text/css" href="style.css" />
    24. </head>
    25. <body>
    26. <div id=erfolgreich></div>
    27. </body>
    28. <hr>
    29. <center><footer> Copyright &copy; by Patrick</footer></center>
    30. </html>


    Der leitet weiter auf:
    Spoiler anzeigen

    PHP-Quellcode

    1. <?php
    2. error_reporting(E_ALL);
    3. include ('config.php');
    4. include("module/mod.php");
    5. $seite = $_GET['username'];
    6. $user = $_SESSION['username'];
    7. ?>
    8. <html>
    9. <title>Verwaltung</title>
    10. <head>
    11. <style>
    12. #menu{
    13. margin-left:500px;
    14. margin-top:5px;
    15. </style>
    16. <!--- JavaScripte --->
    17. </head>
    18. <body>
    19. <hr>
    20. <div id="menu">
    21. <a href="verwaltung.php?username=index">Startseite</a>
    22. <a href="verwaltung.php?username=autos">Fahrzeuge</a>
    23. <a href="verwaltung.php?username=tank">Tankinhalt</a>
    24. <a href="verwaltung.php?username=trupp">Trupps</a>
    25. <a href="verwaltung.php?username=logout">Ausloggen</a>
    26. </div>
    27. <hr>
    28. <div id="index">
    29. <?php
    30. if ($seite == "index" OR $seite == ""){
    31. echo "Wilkommen auf der Startseite";
    32. }
    33. ?>
    34. <?php
    35. if ($seite == "autos"){
    36. get_modul("cars");
    37. }
    38. ?>
    39. <?php
    40. if ($seite == "tank"){
    41. echo "Hier siehst du deinen Tankinhalt der Fahrzeuge";
    42. }
    43. ?>
    44. <?php
    45. if ($seite == "trupp"){
    46. echo "Hier sind alle deine Trupps";
    47. }
    48. ?>
    49. <?php
    50. if ($seite == "logout"){
    51. session_destroy();
    52. echo"<center><p id='text'>Du wurdest ausgelogt</p></center>";
    53. echo '<meta http-equiv="refresh" content="2; URL=http://test.funkspiel-bos-funk.de/verwaltung/">';
    54. }
    55. ?>
    56. </div>
    57. </body>
    58. </html>

    Hab den Usernamen per GET übergeben bekommen.

    Problem gelöst