2016-10-13 10 views
0

私はこの本当にシンプルなPHPログインスクリプトを作るのに少し助けがありました。それはすべて正常に動作しますが、私はusernameフィールドに自分のメールアドレスを入れています。私はこのコードとそれ以外のファイルの作成を手伝ってくれたので、このコードをどのように変換するのかは分かりません! 私はこの質問や他の人の質問について他のフォーラムを見ようとしましたが、スタックや他のサイトにコメントした回答は私のコードではうまくいかないようです。PHPのログイン許可メールとユーザ名

ありがとうございました!

<?php 
session_start(); 
include_once '../config.php'; 

// var_dump($_POST); 
// exit(); 

$username = mysqli_real_escape_string($con, $_POST['username']); 
$password = mysqli_real_escape_string($con, $_POST['password']); 


$query = "SELECT * FROM users WHERE username = '". $username ."' AND password = '". $password ."'" ; 
$result = mysqli_query($con, $query); 

if (mysqli_num_rows($result) == 1) { 
    $_SESSION['username'] = $username; 
    $row = mysqli_fetch_assoc($result); 
    $_SESSION['username'] = $row['username']; 
    header('Location: ../dashboard/index'); 
} else { 
    header('Location: ../index.php?message=Username address or password is incorrect'); 
} 

?> 
+3

'$クエリ= "(「。$ユーザ名。 "ORメール= '"。$ユーザ名。 " 'ANDパスワード=' WHEREユーザー名=)" ユーザーSELECT * FROM"'。 $ password。 "'"; "少なくとも、私はそれがあなたの尋ねるものだと思います – nogad

+0

なぜセッションを2回設定するのですか?やや冗長だと思う? – Qirel

+0

伝説!大事にしてください、多くの感謝! – leham789

答えて

-1
<?php 
session_start(); 


//Yes it is true 


include_once '../config.php'; 
$username = mysqli_real_escape_string($con, $_POST['username']); 
$password = mysqli_real_escape_string($con, $_POST['password']); 

//prepared approach! 
$query = $con -> prepare("SELECT username FROM users WHERE (username = ? or email = ?) AND password = ? "); 
$query->bind_param('sss',$username,$username,$password); 
$query->execute(); 
$query->store_result(); 
if($query->num_rows>0){ 
    //therefore the USER exists!!!!! 

    //Please dont fetch the same username again because it alreadmatched here. 
    $_SESSION['username'] = $username; 
    header('Location: ../dashboard/index'); 

}else{ 
    header('Location: ../index.php?message=Username address or password is incorrect'); 
} 
関連する問題