Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Registrierungs Script-undefinierte Variable Problem

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Registrierungs Script-undefinierte Variable Problem

    Hallo!
    Ich bastel (kopiere) gerade an einem Registrierungs Script für meine Homepage. Das Problem ist nur das es immer die Meldung gibt das die Variable für "user" in Linie 12 (if ($user == '' ....) undefiniert ist. Leider bin ich noch PHP Anfänger und bekomme das Problem deshalb nicht gelöst.
    Hier erstmal der PHP Code:
    PHP-Code:
    <?php
    error_reporting
    (E_ALL);
    function 
    register ($user$password1$password2$email)
    {
    include(
    connect.php);
    $abfrage1 mysql_query("SELECT Nickname FROM users");
    while (
    $row mysql_fetch-objekt($abfrage1))
    if (
    $row->Nickname==$user) {
    echo 
    "Dieser Benutzername ist schon vergeben!";
    }
    }
    if (
    $user == '' || $password1 == '' || $password2 == '' || $email == '') {
    echo 
    "Sie müssen alle Felder ausfüllen um sich registrieren zu können!";
    }
    else
    if (
    $password1!=$password2) {
    echo 
    "Die Passwörter sind nicht identisch!";
    }
    else {
    $anfuegen=mysql_query("INSERT INTO users (Nickname, Kennwort, Mail) VALUES ('$user', '$password1', '$email')");
    echo 
    "Sie wurden erfolgreich registriert und können sich nun einloggen!";
    }
    ?>

    <h1>Registrieren</h1>
    <form method="POST" action="<?php $PHP_SELF ?>">
    <table cellspacing="1" cellpadding="2" border="0">
    <tr>
    <td><font size="2">Nickname:</font></td>
    <td><font size="2"><input type="text" name="user" value=""></font></td>
    </tr>
    <tr>
    <td><font size="2">Passwort:</font></td>
    <td><font size="2"><input type="password" name="password1" value=""></font></td>
    </tr>
    <tr>
    <td><font size="2">Passwort wiederholen:</font></td>
    <td><font size="2"><input type="password" name="password2" value=""></font></td>
    </tr>
    <tr>
    <td><font size="2">E-Mail Adresse:</font></td>
    <td><font size="2"><input type="text" name="email" value=""></font></td>
    </tr>
    <tr>
    <td colspan="2" align="center"><input type="submit" value="Registrieren"></td>
    </tr>
    </table>
    </form>
    Also falls jemand den Fehler sieht bitte melden

    Vielen Dank schonmal im Voraus!!!

    PS: Andere Fehler die euch in diesem script auffallen auch gerne ansprechen, bin wie gesagt Anfänger.

  • #2
    register_globals ist dein Freund.

    Kommentar


    • #3
      Hi,

      PHP-Code:
      include(connect.php); 
      in Anführungszeichen setzen:
      PHP-Code:
      include('connect.php');
      //oder
      include 'connect.php'
      und dies hier
      Code:
      while ($row = mysql_fetch-objekt($abfrage1))
      ist wohl auch nicht so ganz korrekt.

      Diese Abfrage:
      PHP-Code:
      if ($user == '' || $password1 == '' || $password2 == '' || $email == '') { 
      liegt außerhalb der Funktion.

      EDIT:
      Zitat von JEGO
      register_globals ist dein Freund.
      das natürlich auch, hatte das Formular gar nicht beachtet.

      Du rufst die Funktion "register" im übrigen nie auf, wenn ich nicht irre!

      Kommentar


      • #4
        um es einfacher zusagen, Kopieren reicht nicht aus. Verstehen wäre besser. Da sind ziehmlich viele Fehler drin.

        Kommentar


        • #5
          Vielen Dank für den Tipp mir register_globals!!!

          Aber eine Frage wär da noch?

          Ich weiß nicht was daran falsch ist:
          PHP-Code:
          while ($row mysql_fetch-objekt($abfrage1)) 
          Bin leider Anfänger, lerne aber schnell

          Danke

          Kommentar


          • #6
            bitte das manual befragen

            PHP: mysql_fetch_object - Manual

            und funktionsnamen vergleichen

            Kommentar


            • #7
              Upps ->dummer Fehler

              Ok jetzt noch die letzte Frage und ich hör auf zu nerven.

              Was meintest du damit das die Abfrage: if ($user == ''.....) außerhalb der Funktion liegt???

              Kapier das irgendwie nicht!

              Wär supernett wenn du mir das noch sagen könntest.

              Danke im Voraus!
              Grüße Ike.

              Kommentar


              • #8
                Und vor allem: Fehlermeldungen einschalten!

                Den falschen Namen hättest Du doch als Meldung kriegen müssen.
                Schreib error_reporting(E_ALL); oben in Dein Script und schau Dir an, was so alles ausgegeben wird.

                Kommentar


                • #9
                  Würdest du deinen Code mal vernünftig einrücken dann wüsstest du was er meint. Ganz einfach die Abfrage wird nicht innerhalb des Funktionsblocks abgearbeitet.

                  PHP-Code:
                  function FunktionsName()
                  {
                       
                  //deine abfrage wird nicht hier drin abgearbeitet
                  }//ende des funktionsblockes 

                  Kommentar


                  • #10
                    Danke erstmal für die tolle Hilfe!!!

                    Aber der Code funktioniert immer noch nicht!
                    Und nichtmal einen Fehler zeigt der mir an

                    PHP-Code:
                    <?php
                    error_reporting
                    (E_ALL);
                    function 
                    register ($user$password1$password2$email)
                    {
                    include(
                    'connect.php');
                    $abfrage1 mysql_query("SELECT Nickname FROM users");
                    while (
                    $row mysql_fetch_objekt($abfrage1))
                    if (
                    $row->Nickname==$_POST[user])
                    {echo 
                    "Dieser Benutzername ist schon vergeben!";}
                    if (
                    $_POST['user'] == '' || $_POST['password1'] == '' || $_POST['password2'] == '' || $_POST['email'] == '')
                    {echo 
                    "Sie müssen alle Felder ausfüllen um sich registrieren zu können!";}
                    else
                    if (
                    $_POST['password1']!=$_POST['password2'])
                    {echo 
                    "Die Passwörter sind nicht identisch!";}
                    else {
                    $anfuegen=mysql_query("INSERT INTO users (Nickname, Kennwort, Mail) VALUES ('$_POST[user]', '$_POST[password1]', '$_POST[email]')");
                    echo 
                    "Sie wurden erfolgreich registriert und können sich nun einloggen!";
                    }}
                    ?> //Ich vermute das bis hier irgendwo der Fehler ist.

                    <h1>Registrieren</h1>
                    <form method="POST" action="<?php $PHP_SELF ?>">
                    <table cellspacing="1" cellpadding="2" border="0">
                    <tr>
                    <td><font size="2">Nickname:</font></td>
                    <td><font size="2"><input type="text" name="user" value=""></font></td>
                    </tr>
                    <tr>
                    <td><font size="2">Passwort:</font></td>
                    <td><font size="2"><input type="password" name="password1" value=""></font></td>
                    </tr>
                    <tr>
                    <td><font size="2">Passwort wiederholen:</font></td>
                    <td><font size="2"><input type="password" name="password2" value=""></font></td>
                    </tr>
                    <tr>
                    <td><font size="2">E-Mail Adresse:</font></td>
                    <td><font size="2"><input type="text" name="email" value=""></font></td>
                    </tr>
                    <tr>
                    <td colspan="2" align="center"><input type="submit" value="Registrieren"></td>
                    </tr>
                    </table>
                    </form>
                    Ich bitte euch nochmal den Code durchzuschauen und den Fehler zu finden, denn ich stehe nähmlich total auf dem Schlauch.
                    Vielen, Vielen Dank für eure tolle hilfsbereitschaft!

                    Kommentar


                    • #11
                      Mann Mann Mann!

                      Der Hinweis, das Zeugs mal ordentlich einzurücken war für Dich. Nicht für Deinen Nachbarn.

                      Die Funktion wird nirgends aufgerufen. Andernfalls würde Dir auffallen, dass die Funktion mysql_fetch_objekt nicht existiert.

                      Die Konstruktion, innerhalb der While-Schleife abzufragen, ob der Benutzer schon existiert wird garantiert gegen die Wand knallen.
                      Da wird dann bei jedem existierenden Nutzer eine Meldung ausgegeben und danach wird gar nicht beachtet, ob einer gefunden wurde oder nicht.

                      Ohne Einrückung kann man aber sowieso nicht erkennen, was das für ein Stunt sein soll.

                      Beim Eintragen der Werte aus $_POST darfst Du auch mal mysql_real_escape_string() ansehen.

                      Kommentar


                      • #12
                        Danke für eure Hilfe!

                        Hab mich nochmal reingehängt und es geschafft
                        Von daher hat sich die Sache erledigt.

                        Kommentar


                        • #13
                          Dann den Thread bitte noch als [Erledigt] markieren. Danke!

                          Kommentar

                          Lädt...
                          X