【问题标题】:if statements and sessionsif 语句和会话
【发布时间】:2014-04-02 23:17:17
【问题描述】:

无论用户是否登录,我都会尝试相应地更改菜单。它不断出现此错误:

注意:未定义变量:第 3 行 C:\xampp2\htdocs\JobBoard\menu.php 中的 _SESSION 菜单.php

<?php

$useremail = $_SESSION['login_user'];

if($useremail==NULL)
{
 $loggedinout='<div id="menulogin"><a href="register.php">Register</a> | <a href="login.php">Login</a> &nbsp </div>';
 }
 else
 $loggedinout='<div id="menulogin"><a href="logout.php">Logout</a> &nbsp </div>';

echo'
<link rel="stylesheet" type="text/css" href="stylesheets/menu.css" />
<div id="menucontainer">' . $loggedinout . '<div id="menulogo"><img src="images/logo.png" /></div>
<div id="searchmenu"></div>
'
?>

这是我开始会话时的页面 登录.php

<?php
include 'menu.php';
include 'db_connect.php';
session_start();
if($_SERVER["REQUEST_METHOD"] == "POST")
{
// email and password sent from Form 
$myemail=addslashes($_POST['email']); 
$mypassword=addslashes($_POST['password']); 

$sql="SELECT userID FROM users WHERE email='$myemail' and password='$mypassword'";
$result=mysql_query($sql);
$row=mysql_fetch_array($result);
$active=$row['active'];
$count=mysql_num_rows($result);


// If result matched $myemail and $mypassword, table row must be 1 row
if($count==1)
{
session_register("myemail");
$_SESSION['login_user']=$myemail;

header("location: index2.php");
}
else 
{
$error="location: test.php";
}
}
?>

我相信这对某人来说是一件很容易的事情。请帮忙

【问题讨论】:

  • 顺便说一句,addslashes 不是转义 SQL 输入的正确函数。使用mysql_real_escape_string()。另请注意,old mysql_* functions 已弃用,you should move to MySQLi or PDO 已弃用。如果这样做,您还可以选择使用参数化查询,而不是手动转义输入值。

标签: php mysql session


【解决方案1】:

你有include 'menu.php'; 之前 session_start()。 PHP按顺序运行,所以当include发生时,会话还没有开始。

尝试将session_start() 放在文件的最开头:

session_start();
include 'menu.php';
include 'db_connect.php';

【讨论】:

  • 注意:未定义索引:第 2 行 C:\xampp2\htdocs\JobBoard\menu.php 中的 login_user 注意:未定义索引:C:\xampp2\htdocs\JobBoard\login.php 中的活动第 21 行致命错误:在第 28 行调用 C:\xampp2\htdocs\JobBoard\login.php 中未定义的函数 session_register()
  • 现在出现的那些不知道它们的意思
  • @NaivenDhali 好吧,前两个意味着您正在尝试从一个您从未写入过的变量中读取;它们只是通知,而不是错误,但您可以先使用isset() 进行检查。最后一个是因为the session_register() function was removed in PHP 5.4,因为它在几年前被替换为只需将您的值添加到$_SESSION
猜你喜欢
  • 2016-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-16
  • 2016-03-02
  • 2016-02-29
  • 1970-01-01
  • 2014-02-15
相关资源
最近更新 更多