【发布时间】:2015-07-18 22:26:35
【问题描述】:
当使用$_SESSION 函数时,它不会抓取会话变量。我没有在屏幕上弹出任何错误,但是当我检查服务器错误日志时,我得到了一个
未定义的索引
当我添加 print_r($_SESSION);到我的代码顶部,但仍然在 php 标记内,页面上的所有 html 都消失了
$id = $_GET["id"];
$sql = "SELECT * FROM personalads WHERE id='$id' LIMIT 1";
$query = mysqli_query($db_conx, $sql);
$row = mysqli_fetch_array($query, MYSQLI_NUM);
$u = $row[1];
$age = $row[2];
$university = $row[3];
$headline = $row[4];
$message = $row[5];
$img = $row[6];
$picture = "";
if($img != NULL){
$picture = '<img class="adpicture" src="user/'.$u.'/'.$img.'">';
}
和
$PM = '<div class="adrespond">';
$PM .= '<form onclick="return false;" name="pmForm" id="pmForm" method="post">';
$PM .= '<br><center>Send a message to the poster</center><br>';
$PM .= '<textarea name="pmTextArea" id="pmTextArea" rows="4" cols="30"></textarea>';
$PM .= '<input name="pm_sender_id" id="pm_sender_id" type="hidden" value="'.$_SESSION["userid"].'" />';
$PM .= '<input name="pm_sender_name" id="pm_sender_name" type="hidden" value="'.$_SESSION["username"].'" />';
$PM .= '<input name="pm_rec_name" id="pm_rec_name" type="hidden" value="'.$u.'" />';
$PM .= '<span id="PMStatus" style="color:#F00;"></span><br />';
$PM .= ' <center><button name="pmSubmit" id="pmSubmit" onclick="sendPM()" >Send Message</button></center>';
$PM .= '<span id="status"></span>';
$PM .= '</div>';
当我添加 print_r($_SESSION) 和 print_r($_GET)(第二个数组来自 $_GET) 我网页上的 html 消失时,该函数的输出是
Array ( [userid] => 1 [username] => jbird [password] => ********
[mysex] => male [lookingfor] => female [university] => Brock ) Array ( [id] => 14 )
网页上没有打印错误,但是当我检查错误日志时,我看到了这个
[18-Jul-2015 23:40:47 Europe/Berlin] PHP Notice: Undefined index: id in C:\xampp\htdocs\Website\adcontent.php on line 7
[18-Jul-2015 23:40:47 Europe/Berlin] PHP Notice: Undefined index: userid in C:\xampp\htdocs\Website\adcontent.php on line 26
[18-Jul-2015 23:40:47 Europe/Berlin] PHP Notice: Undefined index: username in C:\xampp\htdocs\Website\adcontent.php on line 27
第 7 行是 $id = $_GET["id"];第 26 行和第 27 行是我使用 $_SESSION 函数的地方,我使用的是 xampp apache 服务器,任何人都知道这里发生了什么,它真的开始让我失望了。谢谢
所有的 adcontent.php
<?php
include_once("check_login_status.php");
print_r($_SESSION);
print_r($_GET);
?>
<?php
$id = $_GET["id"];
$sql = "SELECT * FROM personalads WHERE id='$id' LIMIT 1";
$query = mysqli_query($db_conx, $sql);
$row = mysqli_fetch_array($query, MYSQLI_NUM);
$u = $row[1];
$age = $row[2];
$university = $row[3];
$headline = $row[4];
$message = $row[5];
$img = $row[6];
$picture = "";
if($img != NULL){
$picture = '<img class="adpicture" src="user/'.$u.'/'.$img.'">';
}
$PM = '<div class="adrespond">';
$PM .= '<form onclick="return false;" name="pmForm" id="pmForm" method="post">';
$PM .= '<br><center>Send a message to the poster</center><br>';
$PM .= '<textarea name="pmTextArea" id="pmTextArea" rows="4" cols="30"></textarea>';
$PM .= '<input name="pm_sender_id" id="pm_sender_id" type="hidden" value="'.$_SESSION["userid"].'" />';
$PM .= '<input name="pm_sender_name" id="pm_sender_name" type="hidden" value="'.$_SESSION["username"].'" />';
$PM .= '<input name="pm_rec_name" id="pm_rec_name" type="hidden" value="'.$u.'" />';
$PM .= '<span id="PMStatus" style="color:#F00;"></span><br />';
$PM .= ' <center><button name="pmSubmit" id="pmSubmit" onclick="sendPM()" >Send Message</button></center>';
$PM .= '<span id="status"></span>';
$PM .= '</div>';
// PHP FOR SENDING PRIVATE MESSAGES
if(isset($_POST["sendername"])){
$pmTA = mysqli_real_escape_string($db_conx, $_POST['pmTextArea']);
$sname = preg_replace('#[^a-z0-9 ]#i', '', $_POST['sendername']);
$rname = preg_replace('#[^a-z0-9 ]#i', '', $_POST['recName']);
$number = "1";
$sql = "INSERT INTO privatemessages (to_user, from_user, time_sent, message) VALUES ('$rname','$sname',now(),'$pmTA')";
header("location: personalspage.php");
$query = mysqli_query($db_conx, $sql) or die("Its not working");
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Untitled Document</title>
<link href="style.css" rel="stylesheet" type="text/css">
<script src="jquery-2.1.4.js" type="text/javascript"></script>
<script src="main.js"></script>
<script src="ajax.js"></script>
<script type="text/javascript">
function sendPM() {
var pmTextArea = _("pmTextArea").value;
var sendername = _("pm_sender_name").value;
var recName = _("pm_rec_name").value;
var status = _("status");
if (pmTextArea == "") {
status.innerHTML("Please type in your message.");
} else {
var ajax = ajaxObj("POST", "adcontent.php?id=<?php echo $id; ?>");
window.location = "adcontent.php?id=<?php echo $id; ?>";
}
ajax.send("pmTextArea="+pmTextArea+"&sendername="+sendername+"&recName="+recName);
}
</script>
</head>
<body>
<?php include_once("template_pageTop.php"); ?>
<div>
<div class="adcontent">
<div class="adcontentpicture">
<?php echo $picture; ?>
</div>
<div class="adcontenttext">
<b>Age:</b><?php echo $age; ?><br><br>
<?php echo $university; ?> University <br><br>
<?php echo $headline; ?><br><hr>
<?php echo $message; ?><br><br><br><br><br><br><br><br>
<hr><?php //echo $PM; ?>
<div class="adrespond">
<form onclick="return false;" name="pmForm" id="pmForm" method="post">
<br><center>Send a message to the poster</center><br>
<textarea name="pmTextArea" id="pmTextArea" rows="4" cols="30"></textarea>
<input name="pm_sender_id" id="pm_sender_id" type="hidden" value="'.$_SESSION['userid'].'" />
<input name="pm_sender_name" id="pm_sender_name" type="hidden" value="'.$_SESSION['username'].'" />
<input name="pm_rec_name" id="pm_rec_name" type="hidden" value="'.$u.'" />
<span id="PMStatus" style="color:#F00;"></span><br />
<center><button name="pmSubmit" id="pmSubmit" onclick="sendPM()" >Send Message</button></center>
<span id="status"></span>
</div>
</div>
</div>
</body>
</html>
登录时设置会话变量
【问题讨论】:
-
你的意思是你把一些值放入 $_SESSION 变量并且值消失了吗?
-
错误消息说明了解决问题所需的一切。在执行时,未定义索引。在您提供给我们的 sn-p(s) 中,您实际上从未定义过它们。如果您在代码中的其他位置执行此操作,请提供相关的代码部分。此外,您正尝试在 PHP 代码中检索 GET 变量,但通过
method="post"提交表单。 -
@Ondřej Šotek 没有值,但是当我使用 $_SESSION 函数检索它时,我得到一个未定义的索引错误
-
@FoxRider 查看代码 sn-p,其中我显示了 print_r($_SESSION) 和 print_r($_GET) 输出的内容,第一个数组来自会话函数,第二个数组来自 get 函数,值在那里,但函数没有正确检索它们
-
你提供了输出,但不是你放的地方,我们不知道
print_r前后发生了什么。这使我们无法复制它。
标签: php html apache xampp session-variables