我想登錄(PHP,MySQL)。我已經登錄,註冊,註銷,home.php。問題是當我登錄家裏什麼都沒有顯示。我想讓兩個不同的用戶登錄,登錄後必須創建一個名爲username的用戶名。用戶登錄mysql php multyple會話,當我登錄我無法看到主頁上
我想擁有多個用戶,他們在登錄時擁有自己的信息表,這是其他用戶看不到的。
我的代碼:
MySQL的
CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` text NOT NULL,
`password` text NOT NULL,
`psalt` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
的login.php
<?php
session_start();
if($_SESSION['user']!=''){
header("Location:home.php");
}
$dbh=new PDO('mysql:dbname=db;host=127.0.0.1', 'username', 'password');
$email=$_POST['mail'];
$password=$_POST['pass'];
if(isset($_POST) && $email!='' && $password!=''){
$sql=$dbh->prepare("SELECT id,password,psalt FROM users WHERE username=?");
$sql->execute(array($email));
while($r=$sql->fetch()){
$p=$r['password'];
$p_salt=$r['psalt'];
$id=$r['id'];
}
$site_salt="subinsblogsalt";
$salted_hash = hash('sha256',$password.$site_salt.$p_salt);
if($p==$salted_hash){
$_SESSION['user']=$id;
header("Location:home.php");
}else{
echo "<h2>Username/Password is Incorrect.</h2>";
}
}
?>
home.php
<html><head></head>
<body>
<?
session_start();
if($_SESSION['user']==''){
header("Location:login.php");
}else{
$dbh=new PDO('mysql:dbname=db;host=127.0.0.1', 'root', 'backstreetboys');
$sql=$dbh->prepare("SELECT * FROM users WHERE id=?");
$sql->execute(array($_SESSION['user']));
while($r=$sql->fetch()){
echo "<center><h2>Hello, ".$r['username']."</h2></center>";
}
}
?>
</body>
</html>
你真的不應該使用密碼哈希自己的鹽和你真的應該使用PHP的[內置函數](http://jayblanchard.net/proper_password_hashing_with_PHP.html)來處理密碼安全性。如果您使用的PHP版本低於5.5,則可以使用'password_hash()'[兼容包](https://github.com/ircmaxell/password_compat)。 –
在使用'sql-> fetch'之前,你可能想調用'$ sql-> get_result'或'store_result',然後使用fetch() –
@ user5871514,代碼顯示'PDO',而不是'mysqli'。現在,這就是爲什麼我無法在PDO的頁面上找到任何有關它的信息... – FirstOne