[英]MySQLI PHP Session from database
我正在做一個A Level計算項目,我想使用存儲在數據庫中的studentID創建會話,以便顯示與用戶有關的信息。
我可以使用數據庫中的其他字段來執行此操作,但不能使用StudentID字段(我需要使用該字段,因為它是我用來鏈接要顯示其信息的表的外鍵)。
有人可以查看我所做的事情,看看我做錯了什么嗎? 該代碼可能不是最好的,但是我對所有這些都是新手。
<?php
session_start();
$con = mysqli_connect("localhost","root","","archtenapply");
if (mysqli_connect_errno()) {
echo "MySQLi Connection was not established: " . mysqli_connect_error();
}
if(isset($_POST['login'])){
$email = $_POST['email'];
$pass = md5($_POST['pass']);
$sql= "SELECT studentID FROM loginfo WHERE email ='$email' AND password= '$pass'";
$run_user = mysqli_query($con, $sql);
$check_user = mysqli_num_rows($run_user);
if($check_user>0){
$_SESSION['studentid'] = $row{'studentID'};
header("location: ../pages/hub.php");
}else {
header("location: ../errors/incorrectlogin.php");
}
}
?>
任何幫助深表感謝!
請參閱代碼中的一行代碼,該代碼實際上獲得了您要查詢的行以及數組語法更正(感謝@ Fred-ii-)。
<?php
session_start();
$con = mysqli_connect("localhost","root","","archtenapply");
if (mysqli_connect_errno()) {
echo "MySQLi Connection was not established: " . mysqli_connect_error();
}
if(isset($_POST['login'])){
$email = $_POST['email'];
$pass = md5($_POST['pass']); // ***See note***
$sql= "SELECT studentID FROM loginfo WHERE email ='$email' AND password= '$pass'";
$run_user = mysqli_query($con, $sql);
$check_user = mysqli_num_rows($run_user);
if($check_user>0){
// this get the result of the query as an assoc array into $row
$row = mysqli_fetch_assoc($run_user);
// also fixed array syntax
$_SESSION['studentid'] = $row['studentID'];
header("location: ../pages/hub.php");
}else {
header("location: ../errors/incorrectlogin.php");
}
}
?>
注意
PHP現在有一些更好的哈希密碼方法, 請參見手冊
使用MD5對密碼進行散列不再是一種安全的方法。
建議使用CRYPT_BLOWFISH或PHP 5.5的password_hash()
函數。 對於PHP <5.5,使用password_hash() compatibility pack
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.