2016-08-16 148 views
0

我正在设置登录/注销,并且正在尝试将用户ID号发送到网站中的其他页面,以便我可以在需要时操作数据库。当用户登录时将会话变量设置为user_id

我使用查询匹配的电子邮件/密码和登录用户(注:这不是完整的代码,而不是问题,我相符的电子邮件和密码)

$find= mysqli_query("SELECT * FROM users WHERE email='$ema' and password="$pw"); 

然后我取一个数组然后开始一个会话,然后我在网页上进一步查看页面。

if(mysql_num_rows($find) == 1){ 
    $row = mysql_fetch_array($result, MYSQL_BOTH); 
    $id= $row ['id']; 
    session_start(); 
    $_SESSION['Login']= $id; 
// Redirect - I use JS to send users to next page 
} 
else { 
    echo '<script type="text/javascript">'; 
    echo 'alert("Invalid Username or Password");'; 
    echo 'history.back();'; 
    echo '</script>'; 
} 
mysql_close($link); 

在其他网页,我有检查的会议,如果他们还没有登录用户重定向代码下面是代码:

<?php 
session_start(); 
if(!isset($_SESSION['Register'])){ 
    if(!isset($_SESSION['Login'])){ 
    header("location:../notLoggedIn.php"); 
} 
} 
$get_id = $_SESSION['Register']; 
$get_id = $_SESSION['Login']; 
?> 

然后,当我检查什么在id变量从此登录页面传递:

$profile = mysql_query("SELECT * FROM profiles WHERE id= $id"); 
    var_export($id); 

我得到一个空值。出了什么问题?

+0

放的session_start();在标题上。 – Noman

+0

首先检查您是否从您的数据库获取记录。看看它在'mysql_num_rows($ find)'里面。 –

+0

@MahaDev我正在记录。我检查了整个阵列。 – tdrsam

回答

0

您必须检查是否会话未启动,然后使用session_start();

if (session_status() == PHP_SESSION_NONE) {//php >5.4 
    session_start(); 
} 

,并使用$_SESSION['Login']代替$id

$profile = mysql_query("SELECT * FROM profiles WHERE id=".$_SESSION['Login']); 
0

多的失误我都看到了。

1)首先修改您的查询:

$find= mysqli_query("SELECT * FROM users WHERE email='$ema' and password='$pw'); 

2)文件的顶部开始第二届。

3)mysqli_close($link);代替mysql_close($link);

4)在最后检查,如果会话设置正确。

if(isset($_SESSION['Login'])) { 
$get_id = $_SESSION['Login']; 
$profile = mysql_query("SELECT * FROM profiles WHERE id= $id"); 
var_export($id); 
} 
0

嗨请注意以下几点

1)开始在页面的顶部session_start(之前任何echowhite space)。

2)我没有看到你的$_SESSION['Register']。您设置了

3)你传入session variable不简单variable所以用这个

$profile = mysql_query("SELECT * FROM profiles WHERE id = $_SESSION['Login']"); 
    var_export($_SESSION['Login']); 

由于$idnull这里总是