2016-04-28 14 views
0

私は、入力されたユーザー名がデータベースに存在するかどうかをチェックするプログラムを実行しています。つまり、最初の条件がif ($result->num_rows > 0) {登録フォームにデータの妥当性確認

<?php 
include('custdb.php'); 
session_start(); 
$f=0; 
//$user=mysqli_real_escape_string($conn,$_POST['username']); 
//$pass=mysqli_real_escape_string($conn,$_POST['password']); 
//$fetch=$conn->query("SELECT * FROM `info` WHERE username='".$uname."' and password='".$pass."'"); 
//$_SESSION['info_username']=$user; 
//header("Location:custprofile.php"); 
echo $uname=$_POST['username']; 
echo "<br>"; 
echo $pass=$_POST['password']; 
$sql = "SELECT * FROM `info` WHERE `email`=".$uname; 
$result = $conn->query($sql); 
echo"done"; 
if ($result->num_rows > 0) { 
    // output data of each row 
    while($row = $result->fetch_assoc()) { 

     if($uname==$row["email"]) 
     { 
      $f=1; 
     } 
     else 
     { 
      $f=0; 
     } 


    //echo '<h4 align="left"><a href="update.php?id='.$pro_id.'&qty='.$qty.'">Update Quantity</a> </h4>'; 
} 
if($f==1) 
{ 
    header("Location:custprofile.php"); 
} 
else 
{ 
    header("Location:custindex.php"); 
} 
} 
else { 
    echo "0 results"; 
} 

?> 
+2

パスワードのセキュリティを処理するには、PHPの[組み込み関数](http://jayblanchard.net/proper_password_hashing_with_PHP.html)を使用してください。 5.5より小さいPHPバージョンを使用している場合、 'password_hash()' [互換パック](https://github.com/ircmaxell/password_compat)を使用することができます。ハッシュする前に[パスワードを逃さないでください](http://stackoverflow.com/q/36628418/1011527)、または他のクレンジングメカニズムを使用していることを確認してください。パスワードを変更すると、パスワードが変更され、不要な追加のコーディングが発生します。 –

+0

あなたは$ _POSTのユーザー名を取得していて、 'email 'と一致しています –

+1

彼らはユーザー名@Vickyの電子メールアドレスを使用しています。 –

答えて

0

sqlクエリに問題があります。 $ unameの前後に引用符がありません。

$sql = "SELECT * FROM `info` WHERE `email`='".$uname."';"; 
+3

なぜOPは "これを試してください"? ***良い答え***は、何が行われたのか、それがなぜOPのためだけでなく、将来の訪問者のためにそうした方法で行われたのかについての説明を常に持っています。 –

+0

OK、私の悪い。 $ unameの前後に引用符がありません。 $ _POST ['username']が何かを取得しているかどうかわからないので、私はOPが "うまくいく"かどうか分からないので "OP"を試してみました:) – D14n4

+0

@JayBlanchardは何を意味しますか?あなたの答えを編集して、コメントに入れて、ここに到着した人々が問題の解決方法を明確に見ることができるようにする必要があるということです。 –

関連する問題