Benutzeranlegen funktioniert nicht

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

  • Benutzeranlegen funktioniert nicht

    Hallo, mein script benutzeranlegen funktioniert nicht.

    wenn ich mich versuche neu zu registrieren, führt er immer die Anweisung

    "Beim Anlegen des neuen Benutzers trat leider ein Fehler auf!"

    Hier der Quelltext:

    <?php
    session_start();
    require("connect.inc.php");
    ?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <title>Neuen Benutzer anlegen</title>
    <link rel="stylesheet" type="text/css" href="style.css">
    </head>
    <body>
    <?php if(!isset($_POST['submit'])) { ?>
    <form action="<?php $PHP_SELF ?>" method="post">
    <table width="400" bgcolor="#000000" border="0" cellpadding="5" cellspacing="1" align="center">
    <tr>
    <td bgcolor="#e7e7e7" align="center" colspan="2">
    <b>Neuen Benutzer anlegen</b>
    </td>
    </tr>
    <tr>
    <td width="170" bgcolor="#e7e7e7">Benutzername</td>
    <td width="230" bgcolor="#ffffff"><input type="text" name="user" class="input"<?php if($_POST['user'] != "") { echo ' value="'.$_POST['user'].'"'; } ?> size="20"></td>
    </tr>
    <tr>
    <td width="170" bgcolor="#e7e7e7">Passwort</td>
    <td width="230" bgcolor="#ffffff"><input type="pass" name="pass" size="20" class="input"></td>
    </tr>
    <tr>
    <td width="170" bgcolor="#e7e7e7">Passwort wiederholen</td>
    <td width="230" bgcolor="#ffffff"><input type="pass" name="pass2" size="20" class="input"></td>
    </tr>
    <tr>
    <td bgcolor="#e7e7e7" align="center" colspan="2">
    <input type="submit" name="submit" value="Benutzer anlegen" class="button">
    </td>
    </tr>
    <tr>
    <td bgcolor="#e7e7e7" align="center" colspan="2">
    <a href="sichere_seite.php">Zurück zur Admin-Seite</a>
    </td>
    </tr>
    </table>
    </form>
    <?php
    }elseif(!isset($_POST['user']) || $_POST['user'] == ""){
    echo '<p align="center">Einen Benutzernamen brauchen wir schon ;-)<br><br><a href="neu.php">Zurück</a></p>';
    }elseif(!isset($_POST['pass']) || $_POST['pass'] == "") {
    echo '<p align="center">Ein Passwort brauchen wir schon ;-)<br><br><a href="neu.php">Zurück</a></p>';
    }elseif($_POST['pass'] != $_POST['pass2']) {
    echo '<form action="neu.php" method="post">';
    echo '<p align="center">Die Passwörter stimmen nicht überein!<br><br>';
    echo '<input type="hidden" name="user" value="'.$_POST['user'].'">';
    echo '<input type="submit" name="zurueck" value="Zurück"></p>';
    echo '</form>';
    }else{
    $query = @mysql_query("SELECT user FROM users WHERE user = '".$_POST['user']."'");
    $result = @mysql_fetch_array($query);
    if($_POST['user'] == $result['user']) {
    echo '<p align="center">Sorry, dieser Benutzername ist leider schon vergeben!<br><br><a href="neu.php">Zurück</a></p>';
    die;
    }else{
    $username = $_POST['user'];
    $pass = md5($_POST['pass']);
    if($insert = @mysql_query("INSERT INTO USERS SET user = '$user', pass = '$pass'")) {
    echo '<p align="center">Der neue Benutzer wurde erfolgreich angelegt!<br><br><a href="sichere_seite.php">Zur Admin-Seite</a></p>';
    }else{
    echo '<p align="center">Beim Anlegen des neuen Benutzers trat leider ein Fehler auf!<br><br><a href="neu.php">Zurück</a></p>';
    }
    }
    }
    ?>
    Zuletzt geändert von bart5621; 04.06.2005, 12:08.

  • #2
    Entferne doch z.B. erstmal die @'s vor deinen mysql_query's und lass dir Fehlerausgaben anzeigen..

    Kommentar


    • #3
      Ok, habe ich gemacht, aber es ist immer noch das selbe Problem.

      Kommentar


      • #4
        1. PHP Tags ([ PHP] ohne Leerzeichen) benutzen, bzw. den bereits geposteten Code in PHP Tags einschließen

        2. mysql_error ist dein Freund

        3. Fehler posten welche angezeigt werden.


        Floriam
        PHP Handbuch - MySQL Handbuch - PHP Einsteiger Tutorial - CSS Referenz - Browserunterstützung von CSS

        Kommentar


        • #5
          Also, dass dir kein Fehler ausgegeben wird halte ich für ein Gerücht...

          Kommentar


          • #6
            Mag ja sein das Fehler ausgegeben werden,
            aber wo und wie kann ich mir sie anzeigen lassen?

            Ich habe kaum Erfahrung mit PHP und versuche das gerade zu lernen.

            Kommentar


            • #7
              Dann schau dir mal http://www.schattenbaum.net/php an
              PHP Handbuch - MySQL Handbuch - PHP Einsteiger Tutorial - CSS Referenz - Browserunterstützung von CSS

              Kommentar


              • #8
                Dann ist das @ bei dir auf jedenfall falsch aufgehoben!
                Les' dir am besten erstmal das hier durch:
                http://www.php-resource.de/forum/sho...threadid=50454

                Kommentar


                • #9
                  Hallo noch mal:

                  Also folgender Fehler wird angezeigt:

                  Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/html/web225/html/neu.php on line 58

                  line 57

                  $query = mysql_query("SELECT user FROM users WHERE user = '".$_POST['username']."'");

                  line 58

                  $result = mysql_fetch_array($query);

                  line 59
                  if($_POST['username'] == $result['user'])
                  Zuletzt geändert von bart5621; 04.06.2005, 13:28.

                  Kommentar


                  • #10
                    Na dann biste doch schon mal einen Schritt weiter. Schau dir deine Query in Zeile 57 an, lass sie dir am besten mal ausgeben, und versuche sie manuell in Phpmyadmin(oder ähnlichem) aus und dann wirste ein grosses Stück weiter sein.

                    Kommentar


                    • #11
                      Übrigens macht diese Query keinen Sinn Vlt. erkennt das MySql

                      Kommentar


                      • #12
                        Ok, ich habe es als SQL-Befehl in MYPHPAdmin eingegeben und bekomme von PHPMYAdmin folgenden Fehler:

                        #1064 - You have an error in your SQL syntax near '$query = mysql_query("SELECT user FROM users WHERE user = '".$_POST['username'].' at line 1

                        Kommentar


                        • #13
                          Original geschrieben von bart5621
                          Ok, ich habe es als SQL-Befehl in MYPHPAdmin eingegeben und bekomme von PHPMYAdmin folgenden Fehler:

                          #1064 - You have an error in your SQL syntax near '$query = mysql_query("SELECT user FROM users WHERE user = '".$_POST['username'].' at line 1
                          Das ist doch jetzt hoffentlich nicht ernst gemeint von dir..? Was soll Phpmyadmin denn mit deinen Variablen anfangen können?? Ersetze deine Variablen mal mit Testwerten und ansonsten lies dir wirklich mal die Artikel bei Schattenbaum durch...
                          EDIT:
                          Streiche das "ansonsten" weg... Mach es so, oder so...

                          Kommentar


                          • #14
                            Geht jetzt mal etwas am Problem vorbei, könnte (sollte) dich aber dennoch interessieren:

                            Du holst einen User(namen) aus der DB, wenn er $_POST['user'] gleicht.
                            Wenn dann $result['user'] == $_POST['user'] ist, gibst du eine Fehlermeldung aus, wenn nicht, fügst den $_POST['user'] in die DB ein.

                            ... durchs Knie in die Brust geschossen, wenn das SELECT überhaupt was liefert, ist $result['user'] == $_POST['user'] immer wahr.
                            PHP-Code:
                            $user mysql_real_escape_string($_POST['user']);
                            $pass mysql_real_escape_string($_POST['pass']);
                            $sql "INSERT INTO users SET user = $user, pass = MD5($pass)";
                            mysql_query($sql) or die(mysql_error());
                            if(
                            mysql_affected_rows() == 1) {
                              echo 
                            'Der neue Benutzer wurde erfolgreich angelegt!';
                            }else{
                              echo 
                            'Benutzername bereits vergeben!';

                            genügt, wenn die Spalte user unique ist - und das sollte sie sein.

                            Kommentar

                            Lädt...
                            X