2016-06-07 4 views
0
<?php 

session_start(); 
include_once 'dbconnect.php'; 

if (isset($_SESSION['user']) != "") { 
    header("Location: home.php"); 
} 
if (isset($_POST['btn-login'])) { 
    $email = mysql_real_escape_string($_POST['email']); 
    $upass = mysql_real_escape_string($_POST['pass']); 
    $res = mysql_query("SELECT * FROM telecomt_user WHERE email='$email'"); 
    $row = mysql_fetch_array($res); 
    if ($row['password'] == md5($upass)) { 
     $_SESSION['user'] = $row['user_id']; 
     header("Location: home.php"); 
    } else { 
     ?> 
     <script>alert('wrong details');</script> 
     <?php 

    } 
} 
?> 

Dies ist mein Code zum Abrufen von Daten aus der Datenbank, um den Benutzer per E-Mail und Passwort anmelden zu lassen. Mein Tabellenname ist "telecom_user".PHP-Code die Fehlerzeile beim Abrufen von Daten für eine Login-Seite

<form method="post"> 
    <table align="center" width="30%" border="0"> 
     <tr> 
      <td><input type="text" name="email" placeholder="Your Email" required /> </td> 
     </tr> 
     <tr> 
      <td><input type="password" name="pass" placeholder="Your Password" required /></td> 
     </tr> 
     <tr> 
      <td><button type="submit" name="btn-login">Sign In</button></td> 
     </tr> 
     <tr> 
      <td><a href="register.php">Sign Up Here</a></td> 
     </tr> 
    </table> 

</form> 

Und das ist meine HTML-Formular-Code. Der Code funktioniert gut in localhost, aber wenn ich es auf meinen Server hochgeladen habe, funktioniert es nicht. Es führt immer diese Zeile:

<script>alert('wrong details');</script> 

Ist es ein Problem in meiner Datenbank? Aber ich benutze den gleichen Namen und Muster wie ich in meinem localhost verwendet habe und auch mein Anmeldeformular funktioniert mit der gleichen Datenbank. Meine Datei "dbconnect.php" ist auch in Ordnung. Was ist das Problem?

+1

mysql_ * Funktionen in PHP sind veraltet 5 und vollständig entfernt in PHP 7. Der Grund dafür die mysql_ ist * Funktionen wurden nicht länger beibehalten, waren veraltet, nur dazu gedacht, mit mysql-Versionen zu arbeiten, die aus dem Leben gerissen und schrecklich unsicher waren. Sie müssen zu einer moderneren MySQL-Schnittstellenbibliothek wechseln. – GordonM

+0

Wenn Sie $ email = $ _ POST ['email'] setzen; und der Pass auch; was du hast ? – bfahmi

+0

was kann ich anstelle von mysql _ * verwenden.Schlagen Sie bitte – M0GLI

Antwort

0

besser machen auf Abfrage nur E-Mail und Passwort

$res=mysql_query("SELECT * FROM telecomt_user WHERE email='$email' AND password='md5($upass)'"); 
$row=mysql_fetch_array($res); 

Jetzt Zustand Login oder nicht

if(count($row)>=1){ 
//login 
}else{ 
// credentials wrong message 
} 
+0

$ res = mysql_query ("SELECT * FROM telecom_user WHERE email = '$ email' UND password = 'md5 ($ upass)'"); $ row = mysql_fetch_array ($ res); if (Anzahl ($ Zeile)> = 1) { $ _SESSION ['Benutzer'] = $ Zeile ['Benutzer_ID']; header ("Standort: home.php"); } else {....} auf diese Weise verwendet jetzt ist es nicht Fehlerzeile zeigt aber nicht protokolliert in. Es bleibt in der gleichen Seite index.php, aber es gehen soll home.php – M0GLI

+0

u tat wenden Sie diese Codes an? – srinivas

+0

ob_start(); Bitte halten Sie diese Tags oben im Dokument. Es wird auf jeden Fall umgeleitet werden. – srinivas

0

statt $ row Überprüfung [ ‚password‘], können Sie versuchen, die Spalte zu geben des Passworts in der Zeichenfolge, z. B. $ row [0] (wenn die Passwortsspalte die erste Spalte ist).

0

Sie sollten mysqli_ * -Funktionen anstelle der veralteten mysql_ * -Funktionen verwenden.

http://php.net/manual/en/book.mysqli.php

+0

Dies ist ein Kommentar, keine Antwort. [Es ist nicht schwer genug zu verdienen, um Kommentare zu machen.] (Http://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-cani-i- do-stattdessen) –

0

Ich glaube, du Bruchstelle in jedem Zustand zu versetzen haben wie

if(your condition){ 
    echo "something";exit; 
}else{ 
    echo "nothing";exit; 
} 
+0

Das ist nicht korrekt. –