2015-07-19 101 views
0

基本上,我一直在用我的PHP代码将我的头发拉出未知的问题。会话没有被保存为ID

CODE(login_config.php):

<?php 
session_start();     //POST VARIABLES 
         $submit = $_POST['login_submit']; 
         $password = $_POST['login_password']; 
         $email = $_POST['login_email']; 



if(isset($submit)){ 
    require 'password_config.php'; 
    require 'connect.php'; 

//PASSWORD VERIFYING 
    $pass_query = "SELECT password FROM users WHERE email='$email'"; 
    $queried = mysql_query($pass_query); 
    while($row = mysql_fetch_array($queried)){ 
    $user_pass = $row['password']; 
    $veri_password = password_verify($password, $user_pass); 
    } 
    if($veri_password != true){$errors[] = '-Account does not exist ';} 
    elseif($veri_password = true){ 

//CHECKING NUM ROWS 
    $sql = "SELECT id, username FROM users WHERE email='$email'"; 
    $entered_user = mysql_query($sql); 
    $num_rows = mysql_num_rows($entered_user); 
    //STORING ID AS SESSION 
    while($row1 = mysql_fetch_array($entered_user)){ 
    //PROBLEM IS HERE 
    $row1['id'] = $id; 
    } 

//ERRS ARRAY ESTABLISHED 
    $errors = array(); 

//FURTHER VERIFYING 
    if(empty($password) || empty($email)) 
    { 
    $errors[] = 'Please do not leave fields empty'; 
    } 
    elseif($num_rows != 1) 
    { 
    $errors[] = '-Account does not exist '; 
    } 
    elseif($num_rows == 1) 
    { 
    $id = $_SESSION['key']; 

     header('Location: profile.php'); 
     exit(); 
     } 
    } 

    } 
?> 

问:为什么是它,当我重定向通过头profile.php(),$ _SESSION [ '钥匙']值为null?我一直在使用var_dump()来证明这一点。我希望我的会话密钥在我的数据库中具有用户ID的值,并且我的代码没有问题。

+0

你正在使用while循环获取密码,你有多少密码wana提取,真的很糟糕的做法 – Shehary

+0

第二次你再次运行循环,并试图加载'id'到'$ id'不可能在全部 – Shehary

+0

为什么我不能将id列值存储在变量$ id中? –

回答

1

第一的线全部$id变量为未定义任何地方。

$row1['id'] = $id;意味着assigning $id value to $row1['id'] 如果要存储用户ID $id那么你应该使用

$id = $row1['id']; 

$id = $_SESSION['key'];同样的错误这意味着assiging $_SESSION['key'] to $id。如果你想在会话中存储$id值:

$_SESSION['key'] = $id; 
0

,据我所看到的,是你正在运行的循环,所以这里获取数据是代码有2个问题,在你的代码,标志着我你在哪里做拧

<?php 
session_start(); 
//POST VARIABLES 
$submit = $_POST['login_submit']; 
$password = $_POST['login_password']; 
$email = $_POST['login_email']; 

if(isset($submit)){ 
    require 'password_config.php'; 
    require 'connect.php'; 

//PASSWORD VERIFYING 
    $pass_query = "SELECT password FROM users WHERE email='$email'"; 
    $queried = mysql_query($pass_query); 
    //while($row = mysql_fetch_array($queried)){ //no need to run loop here 
    $row = mysql_fetch_array($queried); 
    $user_pass = $row['password']; 
    $veri_password = password_verify($password, $user_pass); 
    // } //remove this too 
    if($veri_password != true){$errors[] = '-Account does not exist ';} 
    elseif($veri_password = true){ 

//CHECKING NUM ROWS 
    $sql = "SELECT id, username FROM users WHERE email='$email'"; 
    $entered_user = mysql_query($sql); 
    $num_rows = mysql_num_rows($entered_user); 
    //STORING ID AS SESSION 
    //while($row1 = mysql_fetch_array($entered_user)){//no need to run loop here 
    $row1 = mysql_fetch_array($entered_user); 
    //PROBLEM IS HERE 
    //$row1['id'] = $id; // you can't store values in $id like this 
    $id = $row1['id']; // right way to do 
    } //remove this too 

//ERRS ARRAY ESTABLISHED 
    $errors = array(); 

//FURTHER VERIFYING 
    if(empty($password) || empty($email)) 
    { 
    $errors[] = 'Please do not leave fields empty'; 
    } 
    elseif($num_rows != 1) 
    { 
    $errors[] = '-Account does not exist '; 
    } 
    elseif($num_rows == 1) 
    { 
    $id = $_SESSION['key']; //again wrong you cant load $id into session 
    $_SESSION['key'] = $id; //right way to load $id variable value into session 

     header('Location: profile.php'); 
     exit(); 
     } 
    } 

    } 
?> 
0

始终包括

ini_set("display_errors", "On"); 
ERROR_REPORTING(E_ALL); 

由于前两行代码中的测试时,或进行相应的更改测试环境的php.ini。 这将给你所有可能的帮助/错误报告从php

第二,删除任何空格之前打开Php标签 当使用session_start(); 如果有空格,正如你的代码所暗示的那样,php的行为会不正常。

然后再看看你的代码。 /niels ml