我在将会话变量传递到另一个页面时遇到问题。它在本地主机上工作,但不在服务器上工作。我想传递 $_SESSION['user_check'] 来编辑密码注册.php但每当我点击提交时,$_SESSION['user_check'] 都是空的。
这是登录注册.php
<?php
include('db.php');
session_start();
?>
<div id="wrapper">
<div id="wrapper-bg">
<div id="wrapper-bgtop">
<div class="container" id="header">
<div class="container" id="logo">
<h1><a href="indexhomepage.php"></a></h1>
</div>
</div>
<div class="container" id="page">
<div id="loginbox">
<form action="" class="formbox" method="post">
<label>Email Address:</label>
<input class="box1" name="email" type="text">
<label>Password:</label>
<input class="box2" name="password" type="password">
<a class="myButton1" href="forgetpassword.php">Forgot Password</a><br>
<input class="submit5" name="submit" type="submit" value="Login">
<a href="signup.php" id="myButton2">Create Account</a>
</form>
<?php
if (isset($_POST['submit']))
{
$email = ($_POST["email"]);
$password =($_POST["password"]);
$_SESSION['user_check'] = $_POST["email"];
$sql = mysql_query ("SELECT * FROM user WHERE email = '$email' ");
$row = mysql_fetch_array($sql);
$drawemail = $row['email'];
$drawpassword = $row['password'];
if (($drawemail == $email ) && ($drawpassword == $password ))
{
?>
<script>window.location = "../wordsignup.php";</script>;
<?php
}
else
{
echo "wrong password or username";
}
}
?>
</div>
</div>
<div class="container" id="footer-content-bg">
<div id="footer-content">
<ul>
<li class="footer1">
<a href="aboutus.php">About us</a>
</li>
<li>
<a href="termandcon.php">Term and Conditions</a>
</li>
<li>
<a href="privacyadvertising.php">Privacy Advertising</a>
</li>
<li>
<a href="policy.php">Policy</a>
</li>
<li>
<a href="userargeement.php">User Agreement</a>
</li>
</ul><br>
<div id="copyright">
© . All Rights Reserved.
</div>
</div>
</div>
</div>
这是编辑密码注册.php
<?php
include('db.php');
session_start();
$user_check = $_SESSION['user_check'];
?>
<div id="wrapper">
<div id="wrapper-bg">
<div id="wrapper-bgtop">
<div class="container" id="header">
<div class="container" id="logo">
<h1><a href="indexhomepage.php"></a></h1>
</div>
</div>
<div class="container" id="page">
<div id="forgetpassword">
<div style="font-size:20px; color:#000080; font-weight:bold; border-width:1px; border-style:none; width:600px; margin:10px 0px 0px 175px;">
Edit Password
</div>
<div style="font-size:16px;border-style:none; width:560px; margin:20px 0px 10px 175px; font-weight:bold;">
Please enter your old password below and we will send you your password.
</div>
<div id="forgetpasswordbox">
<form class="forgetpassword" method="post">
Please enter your old password<br>
<input class="oldpassword" name="oldpassword" type="password"><br><br>
Please enter your new password<br>
<input class="newpassword" name="newpassword" type="password"><br><br>
Please re-enter new password<br>
<input class="confirmpassword" name="confirmpassword" type="password"><br><br>
<input name="submit" type="submit" value="Send" class="send">
</form>
</div>
</div>
</div>
<div class="container" id="footer-content-bg">
<div id="footer-content">
<ul>
<li class="footer1">
<a href="aboutus.php">About Us</a>
</li>
<li>
<a href="termandcon.php">Term and Conditions</a>
</li>
<li>
<a href="privacyadvertising.php">Privacy Advertising</a>
</li>
<li>
<a href="policy.php">Policy</a>
</li>
<li>
<a href="userargeement.php">User Agreement</a>
</li>
</ul><br>
<div id="copyright">
© . All Rights Reserved.
</div>
</div>
</div>
</div>
</div>
</div>
<?php
if (isset($_POST['submit']))
{
$oldpassword = $_POST['oldpassword'];
$newpassword = $_POST['newpassword'];
$confirmpassword = $_POST['confirmpassword'];
$sql = mysql_query (("SELECT * FROM user WHERE email='user_check' AND password='$oldpassword' "),$conn);
$row = mysql_fetch_array($sql);
$email = $row['email'];
$selectpassword = $row['password'];
if ($oldpassword == "")
{
echo '<script language="javascript">';
echo 'alert("pls enter your oldpassword")';
echo '</script>';
exit;
}
if($newpassword=="")
{
echo '<script language="javascript">';
echo 'alert("pls enter your newpassword")';
echo '</script>';
exit;
}
if($confirmpassword=="")
{
echo '<script language="javascript">';
echo 'alert("pls enter your confrimpassword")';
echo '</script>';
exit;
}
if (($oldpassword) != ($selectpassword))
{
echo '<script language="javascript">';
echo 'alert("No user exists with this password '.$selectpassword.' ")';
echo '</script>';
exit;
}
if ($newpassword == ($confirmpassword))
{
mysql_query("UPDATE user SET password = '".$newpassword."' WHERE email='".$email."'");
$message = "Your password ".$newpassword." and click the link uploadsignup.php to upload your photo";
mail($email, "Change Password", $message);
?>
<script>
alert("Password Successfully change...!!!!'nClick OK to upload photo'nNewpassword will send to your email address");
window.location="uploadsignup.php";
</script>
<?php
}
else
{
echo '<script language="javascript">';
echo 'alert("new password does not match")';
echo '</script>';
}
}
?>
正如您所说,它适用于本地主机而不是特定服务器,您可能在 php.ini
中有不同的设置。查看 http://php.net/manual/en/session.configuration.php
我曾经遇到过几个小时的这个问题。我的会话在本地主机上工作,但没有从一个页面传递到另一个页面。问题是我在会议开始上方的评论。由于某种原因,它不会影响本地主机,但我的服务器只是没有它。
因此,如果有其他人阅读有关此问题的这篇文章,您可以尝试其他方法。
这里有几件事需要纠正:
1)不要在页面中使用样式,使用CSS类和Id而不是样式。我已经编辑了这个问题以删除它们,因为它们妨碍了我们感兴趣的真实代码。
2)不要使用MySQL,它已被弃用,这意味着它不再受支持,不再支持的原因是存在各种缺陷和安全问题,我强烈建议将MySQLi或PDO作为连接到数据库的替代方法。认真地。
3)您的问题是syntx - 我们将从括号开始 - 请参阅:
$email = ($_POST["email"]);
$password =($_POST["password"]);
应该是:
$email = $_POST['email'];
$password =$_POST['password'];
分配变量时,无需将值放在括号中。另请注意,数组值用单引号'
而不是双引号。所以:
$_SESSION['user_check'] = $_POST['email'];
会更好,或者试试这个:
if (!empty($_POST['email'])){
$_SESSION['user_check'] = $_POST['email'];
}
else {
$_SESSION['user_check'] = "No Email value given in form";
}
以替换上述行。
4)您的HTML代码不完整,您的表单在第二个代码块中没有action
值,这些事情可能并不重要,但是由于模棱两可,此代码很容易出错。
5)在editpasswordsignup的顶部.php(session_start后)把这个:
var_dump($_SESSION['user_check']);
并使用第 3 点的上述代码,这应该会给你一个输出。
6) 检查您的 SQL:
$sql = mysql_query (("SELECT * FROM user WHERE email='user_check' AND password='$oldpassword' "),$conn);
您的电子邮件值是一个字符串,而不是一个变量。你这里的SQL也一团糟,这是什么原因?
将上述内容替换为:
$sql = mysql_query("SELECT * FROM user WHERE email='$user_check' AND password='$oldpassword' LIMIT 1");
完成上述所有操作,您的代码即可正常工作。
尝试如下:
<?php session_start();
-----
-----
?>
根据 op 问题和所需的答案,为什么代码在本地主机而不是服务器上工作,Arun 似乎给出了正确的答案。太糟糕了,他被否决了,但这可能是因为他在回答中没有解释任何事情。
我以前遇到过这个问题。解决方案是确保您上方或下方没有空间
<?php
线。我相当确定这就是为什么 Arun 画了线来指示你的其他 php 代码应该立即遵循。
我只是遇到了同样的问题,我到此结束。即使我没有看到session_set_cookie_params()
也许你已经在db.php
上输入了它.由于在会话上使用LOCALHOST
session_set_cookie_params(time()+600,'/','LOCALHOST',false,true);
不起作用,因此如果您使用session_set_cookie_params()
,则必须确保已将LOCALHOST
替换为您的域