Submit Button Keine Reaktion

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

  • Submit Button Keine Reaktion

    Hallo zusammen

    Vorne hinweg, beschäftige ich mich mit PHP und Datenbanken erst seit ein paar Wochen. Gestern habe ich angefangen eine Login/Registration Website zu erstellen(Link ist unten). Das Registrieren klappt wunderbar, der User wird in der Datenbank abgespeichert, ebenso kommen auch die Fehler Meldungen. Beim Login funktioniert das aber nicht. Eigentlich sollte ja eine Abfrage zur Datenbank kommen und nachher auf die Home.php weiter gehen. Aber sobald ich auf den Login Button drücke kommt: 404 die Seite kann nicht gefunden werden. Auch wenn ich die Login Daten nicht ausgefüllt habe, kommt gar nichts.

    An was liegt das? Muss ich den Button noch irgendwie verlinken?
    Hier der Link zur Website:
    Mixture
    Der Code:
    PHP-Code:
    <? include("./inc/header.inc.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 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')");
          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($login) {
      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
        $password_login_md5 = md5($password_login);
        $sql = mysql_query("SELECT id FROM users WHERE username='$user_login' AND password='$password_login_md5' 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["user_login"] = $user_login;
          header("location: index.php");
             exit();
            } else {
            echo "That information is incorrect, try again";
            exit();
        }
    }
    }

    ?>
      <div style="width: 800px; margin: 0px auto 0px auto;">
        <table>
          <tr>
            <td width="60%" valign="top">
                <h2>Already a Memeber? Login below ...</h2>
                <form action="index.php" method="POST">
                    <input type="text" name="user_login" size="25" placeholder="Username" /><p />
                    <input type="text" size="25" name="password_login" placeholder="Password"/><p />
                    <input type="submit" name="login" value="Login">
                </form>
        </td>
        <td width="40%" valign="top">
                <h2>Sign up Below ...</h2>
               <form action="index.php" method="POST">
               <input type="text" size="25" name="fname"  class="auto-clear" placeholder="First Name" value="<? echo $fn; ?>"><p />
               <input type="text" size="25" name="lname" class="auto-clear" placeholder="Last Name" value="<? echo $ln; ?>"><p />
               <input type="text" size="25" name="username" class="auto-clear" placeholder="Username" value="<? echo $un; ?>"><p />
               <input type="text" size="25" name="email" class="auto-clear" placeholder="Email" value="<? echo $em; ?>"><p />
               <input type="text" size="25" name="email2" class="auto-clear" placeholder="Repeat Email" value="<? echo $em2; ?>"><p />
               <input type="text" size="25" name="password" placeholder="Password"><p />
               <input type="text" size="25" name="password2" placeholder="Password (again)" ><p />
               <input type="submit" name="reg" value="Sign-Up">
               </form>
               </div>
    </div>
    </body>
    </html>

  • #2
    1. Du hältst das EVA-Prinzip nicht ein. Datenbankabfragen zählen zur Verarbeitung und sollten nicht mit der HTML-Ausgabe vermischt werden.

    2. Wozu die ganzen Aufrufe von strip_tags()?

    3. Die mysql_* Funktionen sind veraltet und sollten nicht mehr verwendet werden. Nimm stattdessen mysqli oder PDO.

    4. Warum lässt du beim Passwort nur Ziffern und Buchstaben zu? Ein sicheres Passwort sollte zumindest ein Sonderzeichen enthalten.

    5. Werte, die du in SQL-Abfragen einfügst, solltest du immer escapen oder gleich Prepared Statements verwenden.

    6. HTML-Tabellen sollten nicht fürs Layout missbraucht, sondern nur für die Ausgabe von tabellarischen Daten verwendet werden.

    7. Dein HTML-Code ist kaputt. Überprüfe ihn mal mit dem W3C-Validator und korrigiere alle bemängelten Fehler.

    8. Statt <? sollte <?php verwendet werden, da <? nur mit aktiviertem short_open_tag funktioniert, und das nicht vorausgesetzt werden kann.

    9. MD5 ist veraltet und unsicher. Verwende einen aktuellen SHA-Algorithmus und außerdem einen Salt-Wert.

    10. Rück deinen Code sauber ein. Es ist nicht ersichtlich, welche schließende Klammer zu welcher öffnenden gehört.

    11. Wenn der Code scheinbar nichts tut, mach Debug-Ausgaben. Also zB. gib Variablen an markanten Stellen aus. Aktiviere außerdem das Error-Reporting in der PHP-Konfiguration und schau regelmäßig ins Fehler-Log von PHP und Webserver.

    Kommentar


    • #3
      Nimm das @ vor den ganzen $_POST`s raus, wer Fehler und warnings unterdrückt, kann nicht sehen, wo es hakt.
      error_reporting(-1); also an!

      Kommentar


      • #4
        Nützt leider nichts...

        Klappt auch ohne die "@" nicht. Aber das komische finde ich das, dass Registrieren funktioniert und das Login nicht. Sobald ich auf den Login Button
        drücke kommt 404.

        An was liegt das? Kann mir ansonsten jemand ein gutes Login/Reg Tutorial empfehlen.

        Kommentar


        • #5
          Zitat von Kebab Beitrag anzeigen
          An was liegt das?
          Wie wärs, wenn du einfach auf die Hinweise eingehst, die ich dir gegeben habe?

          Kommentar


          • #6
            Ohh

            Habe vergessen zurück zuschreiben, habe fast alle deine Punkte zu Herzen genommen ausser das mysqli bei der Connect.ini weil eine Fehler Meldungen gekommen ist. Und die Nummer 1 und die 9 auch nicht. Die 10 mache ich noch.

            Aber da beim Registrierung Button alles funktioniert, vermute ich das es sowieso nicht an dem liegt, trotzdem vielen Dank.

            Kommentar


            • #7
              Dass das nicht funktioniert, liegt vor allem daran, dass dein HTML-Code so dermaßen fehlerhaft ist …
              • Ausgabe einer PHP-Fehlermeldung vor dem Doctype
              • Das form-Element des Suchformulars wird nicht geschlossen, es ist offen bis zum schließenden </body>-Tag und </html>-Tag. (Durch diesen Fehler kommt der Browser durcheinander, und denkt beide Eingabefelder und der Submit-Button deines vermeintlichen Login-Formulars gehörten auch noch zum Suchformular – und deshalb wird bei Klick auf „Login“ das ganze an search.php abgeschickt, und diese Adresse gibt einfach nur einen 404-Fehler, vermutlich weil es search.php nicht gibt auf deinem Server.)
              • nach diesen beiden Tags, wo das Dokument eigentlich schon zuende sein müsste, kommt dann erst mal die Your E-mails don't match! Fehlermeldung …
              • … und danach geht es mit div, table etc. weiter – obwohl das Dokument eigentlich schon längst von dir beendet wurde.


              Schau dir mal über „Quelltext anzeigen“ in deinem Browser an, was für einen Quark du da verzapft hast!

              … und dann strukturiere deine Seite mal halbwegs ordentlich. Ja, der von h3ll angesprochene Punkt #1 trägt dazu schon ein wesentliches bei – wenn du den umsetzt, dann werden Fehlermeldungen nämlich nicht mehr einfach so irgendwo rausgefeuert, sondern erst mal gesammelt, und dann nachdem die Verarbeitung der Eingabedaten durch ist, geordnet im body des Dokumentes ausgegeben.

              Und dann validierst du deine Seite mal: http://validator.w3.org/ Erst wenn dir dort keine groben Fehler mehr angezeigt werden, dann macht die weitere Fehlersuche (sofern dann noch nötig) Sinn.
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar


              • #8
                Vielen Dank

                Vielen Dank

                Ich habe komplett vergessen die search.php auf den Server zuladen. Habe ich jetzt einfach umgangen und eine Action names search geschrieben.

                Kommentar


                • #9
                  Noch ein kleines Problem

                  Ich habe jetzt nur noch ein kleines Problem, das bei der Line 97 in dem index.php
                  liegt. Fehlercode: "Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /srv/disk13/1760713/www/regandlogtest.dx.am/index.php on line 97
                  That information is incorrect, try again"

                  Soweit ich das verstehe, kann die Anzahl der dort eingetragenen Reihen nicht gefunden werden obwohl ich dort 8 Spalten habe.
                  ¨
                  An was liegt das?

                  PHP-Code:

                  <?php include("./inc/header.inc.php"); ?>
                  <?php
                  $reg 
                  = @$_POST['reg'];
                  $login = @$_POST['login'];
                  //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
                  error_reporting(-1);
                  //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 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')");
                        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 
                  "Username already taken ...";
                    }
                  }
                  else 
                    { 
                      echo 
                  "Your E-mails don't match!";
                    }
                  }

                  ?>
                  <?php

                  //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
                      
                  $password_login_md5 md5($password_login);
                      
                  $sql mysql_query("SELECT id FROM users WHERE username='$user_login' AND password='$password_login_md5' 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"];
                               
                  //$user_login = $row["username"];
                               //$password_login = $row["password"];
                      
                  }
                           
                  $_SESSION["user_login"] = $user_login;
                        
                  header("./index.php");
                           exit();
                          } 
                      else {
                            echo 
                  "That information is incorrect, try again";
                          exit();
                      }
                  }


                  ?>
                    <div style="width: 800px; margin: 0px auto 0px auto;">
                      <table>
                        <tr>
                          <td width="60%" valign="top">
                              <h2>Already a Memeber? Login below ...</h2>
                              <form action="index.php" method="POST">
                                  <input type="text" name="user_login" size="25" placeholder="Username" /><p />
                                  <input type="text" size="25" name="password_login" placeholder="Password"/><p />
                                  <input type="submit" name="login" value="Login">
                              </form>
                      </td>
                      <td width="40%" valign="top">
                              <h2>Sign up Below ...</h2>
                             <form action="index.php" method="POST">
                             <input type="text" size="25" name="fname"  class="auto-clear" placeholder="First Name" value="<? echo $fn; ?>"><p />
                             <input type="text" size="25" name="lname" class="auto-clear" placeholder="Last Name" value="<? echo $ln; ?>"><p />
                             <input type="text" size="25" name="username" class="auto-clear" placeholder="Username" value="<? echo $un; ?>"><p />
                             <input type="text" size="25" name="email" class="auto-clear" placeholder="Email" value="<? echo $em; ?>"><p />
                             <input type="text" size="25" name="email2" class="auto-clear" placeholder="Repeat Email" value="<? echo $em2; ?>"><p />
                             <input type="text" size="25" name="password" placeholder="Password"><p />
                             <input type="text" size="25" name="password2" placeholder="Password (again)" ><p />
                             <input type="submit" name="reg" value="Sign-Up">
                             </form>
                             </div>
                  </div>
                  </body>
                  </html>

                  Kommentar


                  • #10
                    Zitat von Kebab Beitrag anzeigen
                    An was liegt das?
                    Daran, dass deine Query fehlerhaft war und deshalb von der Datenbank nicht ausgeführt werden konnte.

                    Als frag die Datenbank, was der Fehler war.
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar


                    • #11
                      Geht leider nicht

                      Da ich leider nur eine gratis Website kann ich nicht auf Error und Debug Codes zugreifen. Gibt es noch eine andere Möglichkeit?

                      Kommentar


                      • #12
                        PHP: mysql_error - Manual

                        Kommentar


                        • #13
                          Da ich mich leider erst seit ein paar Wochen mit PHP beschäftige komme ich da nicht draus. Also habe ich:
                          HTML-Code:
                          string mysql_error ([ resource $link_identifier = NULL ] )
                          diesen Code bei meinen Variablen reingeschrieben. Kommt aber nur eine Fehler Meldung:
                          HTML-Code:
                          Parse error: syntax error, unexpected 'mysql_error' (T_STRING) in /srv/disk13/1760713/www/regandlogtest.dx.am/index.php on line 13
                          Darum denke ich das ich es nicht am richtigen Ort rein geschrieben habe. Wo muss ich das hinschreiben?

                          Kommentar


                          • #14
                            Das ist eine Funktion, und die wird aufgerufen wie jede andere Funktion auch …

                            Aber wenn dir selbst solche Basics fehlen, dann solltest du vielleicht erst mal ein Grundlagen-Tutorial durcharbeiten.
                            I don't believe in rebirth. Actually, I never did in my whole lives.

                            Kommentar


                            • #15
                              Okay

                              HTML-Code:
                              function test()
                              {
                                   Hier rein kommt also der Code, aber wohin sollte ich am besten die Funktion tun?
                              }

                              Kommentar

                              Lädt...
                              X