2015-06-12 12 views
6

EDYCJA: działa teraz, dzięki ludziom.
Stworzyłem prosty system logowania z php, po utworzeniu kilku użytkowników MySQL. Ale kiedy próbuję się zalogować, wprowadzam całkowicie pustą stronę, bez względu na to, co wprowadzam. Oto mój html ...Prosty system logowania z php

<body> 
    <div class="mainbox"> 
     <h3 align="center">Log In</h3> 
     <hr> 
     <form role="form" class="form-horizontal" method="POST" action="connectivity.php"> 
     <div class="form-group"> 
      <label for="Username">Username:</label> 
      <input type="text" class="form-control" name="username" size="40" placeholder="Enter Username"> 
     </div> 
     <div class="form-group"> 
      <label for="pwd">Password:</label> 
      <input type="password" class="form-control" name="pass" size="40" placeholder="Enter Password"> 
     </div> 
     <button id="Submit" type="submit" name="submit" class="btn btn-default">Submit</button> 
     </form> 
    </div> 
</body> 

i oto connectivity.php ...

<?php 
define('DB_HOST', 'localhost'); 
define('DB_NAME', 'simplelogin'); 
define('DB_USER','root'); 
define('DB_PASSWORD',''); 

$con=mysql_connect(DB_HOST,DB_USER,DB_PASSWORD) or die("Failed to connect to MySQL: " . mysql_error()); 
$db=mysql_select_db(DB_NAME,$con) or die("Failed to connect to MySQL: " . mysql_error()); 

function SignIn() 
{ 
    session_start(); 
    if(!empty($_POST['username'])) 
    { 
     $query = mysql_query("SELECT * FROM UserName where userName = '$_POST[username]' AND pass = '$_POST[pass]'") or die(mysql_error()); 
     $row = mysql_fetch_array($query) or die(mysql_error()); 
     if(!empty($row['userName']) AND !empty($row['pass'])) 
     { 
      $_SESSION['userName'] = $row['pass']; 
      echo "Successful login to user profile page!"; 
     } 
     else 
     { 
      echo "Sorry, You have either entered a wrong Username or a wrong password. Please retry"; 
     } 
    } 
}  
if(isset($_POST['submit'])) 
{ 
    SignIn(); 
} 
?> 

Funkcja nie jest wykonywany, co mam zrobić?

+2

dokonać logowania błędów i nie używać metody GET do logowania. Zamiast tego użyj metody POST. Unikaj funkcji mysql_ *. – Deep

+0

Czy mogę wiedzieć, dlaczego powinienem używać POST? Wciąż uczę się php ... @DeepKakkar – Anjunadeep

+1

Wygląda na to, że przechowujesz hasła w bazie danych w postaci zwykłego tekstu. Powinieneś zostać zamknięty w więzieniu. ; p Przynajmniej użyj MD5. –

Odpowiedz

10

Najpierw, należy zawsze używać metody POST dla funkcji logowania litość. POST Metoda jest bezpieczna niż metoda GET. POST nie udostępnia informacji za pośrednictwem adresu URL. Aby uzyskać więcej informacji, aby uzyskać wiedzę, różnica między GET i POST przejdź do Link.

Po drugie, należy unikać metod . Aby uzyskać informacje, przejdź do SO LInk.

trzecie, Aby przesłać formularz, którego używasz <button tag i bez JS dla postaci złożyć na jego kliknij zdarzenie Więc twoja postać nie podda. również nie zdefiniował swojego typu jako submit jak `type =" submit ". Lepiej użyć typu danych do przesłania, aby przesłać formularz.

czwarte, dostajesz dane formularza za pomocą metody POST oraz w formie używasz metody GET więc plik akcja nie jest w stanie uzyskać dane ze względu na metody konfliktu więc zmienić sposób w tagu jako method="post".

Piąta, Sesję należy rozpocząć na górze strony.

Po szóste:, Lepiej sprawdzić poprawność formularza za pomocą sprawdzania po stronie klienta, a następnie po walidacji po stronie serwera również należy zastosować.

Teraz, w kodzie:

  • zmian <form> atrybut tag jako method="post".
  • Użyj formularza <input type="submit" name="submit" value="Submit" />, aby przesłać formularz. plik akcji otrzyma dane z formularza, używając nazwy elementów, a brakuje tego w input type="submit" name="submit"
  • Usuń funkcje mysql_* z kodu i użyj mysqli_* do połączenia z bazą danych i dalszego wykorzystania.
+1

Najpierw potrzebowałem tego pierwszego i drugiego. Bardzo dziękuję, bardzo pomocne linki mate – Anjunadeep

+0

zredagowaną odpowiedź z dodatkowymi informacjami. mile widziane. zawsze gotowy do pomocy innym @ Anjunadeep – Deep

4

Twój formularz ma metodę GET, ale twoja łączność oczekuje POST. Zmień metodę w swoim formularzu na POST i powinno być lepiej.

Również nie masz atrybutu nazwy na przycisku przesyłania. Jeśli opublikujesz formularz, będzie szukał atrybutów nazwy, a nie identyfikatora. Więc nigdy nie wejdzie teraz w twoją funkcję.

+0

O mój Boże, co za głupi błąd. Dzięki, działa teraz – Anjunadeep

3

trzeba także

<input id="Submit" type="submit" name="submit" class="btn btn-default">Submit</button> 
4

Należy określić, jak nazwę przycisku 'submit' .. Spróbuj zastąpić kod przycisku jak postępować,

<button id="Submit" name="submit" type="submit" class="btn btn-default">Submit</button> 

To zadziała jak twój exceptation. . :-)

+0

To robi, bardzo dziękuję :-) – Anjunadeep

Powiązane problemy