Ankündigung

Einklappen
Keine Ankündigung bisher.

mysql_num_rows()

Einklappen

Neue Werbung 2019

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

  • mysql_num_rows()

    Hallo zusammen

    Ich habe eine Registrierung's Website erstellt. Es sollte ein Fehler Code kommen falls der Username oder die Email schon vorhanden sind, oder bereits in Verwendung sind. Aber jedes mal wenn ich auf den Sign Up Button drücke, öffnet sich zwar die nächste seite aber mit 2 Fehler Codes. Wie kann ich die beheben?

    Hier der Code und der Website Link:
    http://www.regandlogtest.dx.am/

    PHP-Code:
    <? include("./inc/header.inc.php"); ?>
    <?
    if (!isset($_SESSION["user_login"])) {
        echo "";
    }
    else
    {
        echo "<meta http-equiv=\"refresh\" content=\"0; url=home.php\">";    
    }
    ?>
    <?
    $reg = @$_POST['reg'];
    //declaring variables to prevent errors
    $fn = ""; //First Name
    $ln = ""; //Last Name
    $un = ""; //Username
    $em = ""; //Email
    $em2 = ""; //Email 2
    $pswd = ""; //Password
    $pswd2 = ""; // Password 2
    $d = ""; // Sign up Date
    $u_check = ""; // Check if username exists
    //registration form
    $fn = strip_tags(@$_POST['fname']);
    $ln = strip_tags(@$_POST['lname']);
    $un = strip_tags(@$_POST['username']);
    $em = strip_tags(@$_POST['email']);
    $em2 = strip_tags(@$_POST['email2']);
    $pswd = strip_tags(@$_POST['password']);
    $pswd2 = strip_tags(@$_POST['password2']);
    $d = date("Y-m-d"); // Year - Month - Day

    if ($reg) {
    if ($em==$em2) {
    // Check if user already exists
    $u_check = mysql_query("SELECT username FROM users WHERE username='$un'");
    // Count the amount of rows where username = $un
    $check = mysql_num_rows($u_check);
    if ($check == 0) {
    //Check whether Email already exists in the database
    //check all of the fields have been filed in
    if ($fn&&$ln&&$un&&$em&&$em2&&$pswd&&$pswd2) {
    // check that passwords match
    if ($pswd==$pswd2) {
    // check the maximum length of username/first name/last name does not exceed 25 characters
    if (strlen($un)>25||strlen($fn)>25||strlen($ln)>25) {
    echo "The maximum limit for username/first name/last name is 25 characters!";
    }
    else
    {
    // check the maximum length of password does not exceed 25 characters and is not less than 5 characters
    if (strlen($pswd)>30||strlen($pswd)<5) {
    echo "Your password must be between 5 and 30 characters long!";
    }
    else
    {
    //encrypt password and password 2 using md5 before sending to database
    $pswd = md5($pswd);
    $pswd2 = md5($pswd2);
    $query = mysql_query("INSERT INTO users VALUES ('','$un','$fn','$ln','$em','$pswd','$d','0','Write something about yourself.','','','no')");
    die("<h2>Welcome to the test</h2>Login to your account to get started ...");
    }
    }
    }
    else {
    echo "Your passwords don't match!";
    }
    }
    else
    {
    echo "Please fill in all of the fields";
    }
    }
    else
    {
     echo "Sorry, but it looks like someone has already used that email!";
    }
    }
    else
    {
    echo "Username already taken ...";
    }
    }
    else {
    echo "Your E-mails don't match!";
    }
    ?>
    <?
    //Login Script
    if (isset($_POST["user_login"]) && isset($_POST["password_login"])) {
        $user_login = preg_replace('#[^A-Za-z0-9]#i', '', $_POST["user_login"]); // filter everything but numbers and letters
        $password_login = preg_replace('#[^A-Za-z0-9]#i', '', $_POST["password_login"]); // filter everything but numbers and letters
        $md5password_login = md5($password_login);
        $sql = mysql_query("SELECT id FROM users WHERE username='$user_login' AND password='$md5password_login' AND closed='no' LIMIT 1"); // query the person
        //Check for their existance
        $userCount = mysql_num_rows($sql); //Count the number of rows returned
        if ($userCount == 1) {
            while($row = mysql_fetch_array($sql)){ 
                 $id = $row["id"];
        }
             $_SESSION["id"] = $id;
             $_SESSION["user_login"] = $user_login;
             $_SESSION["password_login"] = $password_login;
             exit("<meta http-equiv=\"refresh\" content=\"0\">");
            } else {
            echo 'That information is incorrect, try again';
            exit();
        }
    }
    ?>
    <div style="float: left;">
                <h2>Already a Memeber? Login below ...</h2>
                <form action="index.php" method="post" name="form1" id="form1">
                    <input type="text" size="40" name="user_login" id="user_login" class="auto-clear" title="Username ..." /><p />
                    <input type="text" size="40" name="password_login" id="password_login" value="Password ..." /><p />
                    <input type="submit" name="button" id="button" value="Login to your account">
                </form>
                </div>
               <div style="float: right; width: 240px;">
                <h2>Sign up Below ...</h2>
               <form action="#" method="post">
               <input type="text" size="40" name="fname"  class="auto-clear" title="First Name" value="<? echo $fn; ?>"><p />
               <input type="text" size="40" name="lname" class="auto-clear" title="Last Name" value="<? echo $ln; ?>"><p />
               <input type="text" size="40" name="username" class="auto-clear" title="Username" value="<? echo $un; ?>"><p />
               <input type="text" size="40" name="email" class="auto-clear" title="Email" value="<? echo $em; ?>"><p />
               <input type="text" size="40" name="email2" class="auto-clear" title="Repeat Email" value="<? echo $em2; ?>"><p />
               <input type="password" size="40" name="password" value="Password ..."><p />
               <input type="password" size="40" name="password2" value="Password ..."><p />
               <input type="submit" name="reg" value="Sign Up!">
               </form>
               </div>
    </div>
    </body>
    </html>
    Vielen Dank
    Kebab

  • #2
    aber mit 2 Fehler Codes
    Und die Fehler sagst du uns nicht, weil die Geheim sind?


    Schrecklicher Code. Schmeiß den weg und schreib alles neu.

    Dazu gehört dann (mal das Gröbste):
    * Keine @
    * Die neue Erweiterung mysqli statt mysql
    * SQL-Injection vermeiden
    * vernünftige Variablennamen
    * Kein veraltetes md5. Es gibt viele neuere Hashverfahren
    * Einrückungen
    Windows Server gehören NICHT ins Internet!

    Dildo? Dildo!

    Kommentar


    • #3
      Ohh tut mir leid, der Fehler Code ist:

      Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /srv/disk13/1760713/www/regandlogtest.dx.am/index.php on line 38

      Kommentar


      • #4
        Mysqli statt mysql? , wo steht das?
        Naja, die variablen, hätte man besser wählen können aber versteht man schon.
        Also ich kenne nur md5...

        Kommentar


        • #5
          Da steht der Fehler doch, vermutich übergibts du wegen einer feherhadften query einfalse.. -> Fehlerausgabe!

          Achte mal auf die Punkte die oben schon erwähnt wurden. Der Code ist sehr alt und schlecht, ich würde den an deiner Stelle komplett überarbeiten, der hat viele "Unsauberheiten und Altlasten". Und mysql_ wird bald gar nicht mehr funktionieren. Ja -> #2 halt.

          Schrecklicher Code. Schmeiß den weg und schreib alles neu.
          - http://php.net/manual/en/migration55.deprecated.php

          - http://php.net/manual/de/faq.passwords.php

          - Warum veränderst du User und Passwort o.O

          - etc...
          The string "()()" is not palindrom but the String "())(" is.

          Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
          PHP.de Wissenssammlung | Kein Support per PN

          Kommentar


          • #6
            Zitat von hausl Beitrag anzeigen
            - Warum veränderst du User und Passwort o.O
            Das habe ich mich auch gefragt.
            Wenn jetzt jemand den Nutzernamen "hans_schmidt" wählt, wird daraus "hansschmidt" und er wird sich wundern, warum er sich nicht einloggen kann.

            Ich würde vorher prüfen, ob da verbotene Zeichen drin sind und ggf. nochmal zurückspringen mit entsprechender Fehlermeldung á la "Unerlaubte Zeichen im Benutzernamen" oder so ähnlich.

            Kommentar


            • #7
              Naja

              Ich sehe was ihr meint... Werde ich ändern und beim Registrieren überprüfen.
              Danke

              Kommentar

              Lädt...
              X