Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 会话不返回变量_Php_Mysql_Session_Login - Fatal编程技术网

Php 会话不返回变量

Php 会话不返回变量,php,mysql,session,login,Php,Mysql,Session,Login,我对php相当陌生,并试图用这些信息来重塑自己。我目前有一个登录脚本,在我设置变量之前运行良好-它检查用户/密码良好,但当它重定向到echosession.php时,$_会话['username'];变量不回显。另外-检查用户是否登录,也可以注销 include 'db_connect.php'; include 'functions.php'; session_start(); //user tabls $tbl_name="users"; // username and password

我对php相当陌生,并试图用这些信息来重塑自己。我目前有一个登录脚本,在我设置变量之前运行良好-它检查用户/密码良好,但当它重定向到echosession.php时,$_会话['username'];变量不回显。另外-检查用户是否登录,也可以注销

include 'db_connect.php';
include 'functions.php';
session_start();
//user tabls
 $tbl_name="users";

// username and password sent from form 
$myusername=$_POST['username']; 
$mypassword=$_POST['password']; 

// To protect MySQL injection (more detail about MySQL injection)
$myusername = stripslashes($myusername);
$mypassword = md5($mypassword);
$myusername = $mysqli->real_escape_string($myusername);
$log_sql="SELECT * FROM $tbl_name WHERE email='$myusername' and password='$mypassword'";
$log_result=$mysqli->query($log_sql);

  // Mysql_num_row is counting table row
  $log_count=$log_result->num_rows;

// If result matched $myusername and $mypassword, table row must be 1 row
if($log_count==1){

// Register $myusername, $mypassword and redirect to file "login_success.php"

// Set username session variable
$_SESSION['username'] = $myusername;


header("location:echosession.php");
}
else {
echo "Wrong Username or Password";
}
如果我尝试按如下方式加载echosession.php:

session_start();
print("hi");
echo $_SESSION["username"];
var_dump($_SESSION);
页面只是空的。

首先

session_start(); //always in first line.  Before include/require functions.
第二。您可以为非Cookies用户添加会话id

if (session cookie exists == true)
   header('location:echosession.php');
else
   header('location:echosession.php?'.session_name().'='.session_id());
您100%确定$myusername不是空的吗

核对一下

var_dump($myusername); die(); //in first script before add to session
我想知道为什么在第二个脚本中没有输出。看起来您的会话问题和错误报告已关闭

在脚本开始时插入

<?PHP 
ini_set( 'display_errors', 'On' ); 
error_reporting( E_ALL ); 
?>

在会话开始之前是否有任何html;在echosession.php中,首先在条件代码之前向$\u会话['username']添加一个默认值“error\u log print\u r$\u SESSION,true;”的内容是什么@Niall,很好的一点,应该在回显任何内容之前调用session_start,因此我建议将它放在代码的开头。@Niall,不,没有HTML,session_start是先调用的。session不需要第一条语句才能工作。从PHP手册:要使用基于cookie的会话,必须在将任何内容输出到浏览器之前调用session_start。。。。它没有像你说的那样在任何包含/要求之前说。此外,如果他不想在代码中执行某些东西之前启动会话,比如自定义会话处理程序,该怎么办?