2016-04-01 10 views
2

PHP'ye yeniyim, giriş formu ve ana sayfası oluşturdum. Aynısını takip ettim, derslerde söylendi, ama doğru kimlik bilgilerini vermeme rağmen hatayı 'yanlış detaylar' olarak almaya devam ediyorum.PHP - Giriş formu

// giriş sayfası

**Login.php** 

     <?php 
     session_start(); 
     include_once 'database1.php'; 

     if(isset($_SESSION['user'])!="") 
     { 
     header("Location: index1.php"); 
     } 
     if(isset($_POST['login'])) 
     { 
     $email = mysql_real_escape_string($_POST['email']); 
     $pass = mysql_real_escape_string($_POST['password']); 
     $result=mysql_query("SELECT * FROM users WHERE email='$email'"); 
     $row=mysql_fetch_array($result); 
     if($row['password']==md5($pass)) 
     { 
      $_SESSION['user'] = $row['number']; 
      header("Location: index1.php"); 
      ?> 
     <script> alert ('haii'); </script> 
     <?php 
     } 
     else 
     { 
      ?> 
       <script>alert('wrong details');</script> 
       <?php 
     } 

     } 
     ?> 
     <html> 


    <body> 


      <form method="post" > 
     <label><center>EMAIL</center> <input type="text" name="email" placeholder="Your Email" required /> </label> </br> 

     <label>PASSWORD <input type="password" name="password" placeholder="Your Password" required /></label> </br> 


    <button type="submit" name="login">login</button> </br> 
    </br> 

    </form>  

    </html> 

// dizin sayfası

**index1.php** 

<?php 
session_start(); 
include_once 'database1.php'; 

if(!isset($_SESSION['user'])) 
{ 
header("Location: login.php"); 
} 
$result=mysql_query("SELECT * FROM users WHERE number=".$_SESSION['user']); 
$userRow=mysql_fetch_array($result); 
?> 
<html> 
<body> 
<p> welcome </p> 

</body> 
</html> 
+3

, bu http://www.codingcage.com/2015/04/php-login-and-registration-script-with.html – cmorrissey

+0

olduğu gibi bir şey deneyin veritabanı içeriğini, dev bir ortam olarak paylaşabilirsiniz? –

+0

"if (isset ($ _ SESSION ['user'])! =" ") Satırı iki farklı kaynaktan kod kopyalayıp yapıştırılmış gibi görünüyor. Eğer (isset ($ _ SESSION ['user'])) 'olmalıdır, ancak 'if (! Empty ($ _ SESSION [' user ']))' – kainaw

cevap

0
session_start(); 
include_once 'database1.php'; 
if(isset($_SESSION['user'])!="") { 
    header("Location: index1.php"); 
} 
if(isset($_POST['login'])){ 
    $email = mysql_real_escape_string($_POST['email']); 
    $pass = mysql_real_escape_string($_POST['password']); 
    $result=mysql_query("SELECT * FROM users WHERE email='$email'"); 
    $row=mysql_fetch_array($result); 
    if($row['password']==md5($pass)) { 
     $_SESSION['user'] = $row['number']; 
     echo "<script>alert('logged in');</script>" 
     header("Location: index1.php"); 

    } 
    else { 
    echo "<script>alert('wrong credentials');</script>" 
    } 
}  
1

Tipik md5 dize 32 karakter var.

echo md5(77); // Result: 28dd2c7955ce926456240b2ff0100bde 

Fakat sizin durumunuzda, veritabanı 20 karakterden oluşan kesilmiş md5 dizesi döndürür.

28dd2c7955ce92645624 

Sorun, DB parolanızın alan uzunluğunun yalnızca 20 karakter olmasıdır. Lütfen tablonuzu değiştirin ve şifre alanı uzunluğunu 32 karaktere ayarlayın, böylece tam ve doğru md5 dizesini tutabilirsiniz.

Eğer güvenli olmadığını Bunu yapmak için eski bir öğretici kullanıyorsunuz
+0

şimdi erişebiliyorum .. yardımın için minnettarım. – krishna

+0

Bu harika. Cevabı doğru cevap olarak işaretlerseniz minnettar olurum. –

+0

uzun zaman önce yaptım .. ama ben dün kendisine katıldım, bu yüzden bunu işaretlemek için toplam 15 itibar kazanmamı istiyor ... teşekkür ederim. – krishna