PHP会话在本地主机上工作,但在实际服务器上不工作
我无法将会话变量传递到另一页。它在本地主机上工作,但在服务器上不工作。我想将$\u会话['user\u check']传递给editpasswordsignup.php,但每当我单击submit时,$\u会话['user\u check']都是空的 这是loginsignup.phpPHP会话在本地主机上工作,但在实际服务器上不工作,php,html,Php,Html,我无法将会话变量传递到另一页。它在本地主机上工作,但在服务器上不工作。我想将$\u会话['user\u check']传递给editpasswordsignup.php,但每当我单击submit时,$\u会话['user\u check']都是空的 这是loginsignup.php <?php include('db.php'); session_start(); ?> <div id="wrapper"> <div id="wrapper-bg">
<?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
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 session_start();
-----
-----
?>
正如您所说,它在本地主机上工作,而不是在特定的服务器上,您可能在php.ini
中有不同的设置。检查一下这里有几件事需要纠正:
1) 不要在页面中使用样式,使用CSS类和Id而不是样式。我已经编辑了这个问题,删除了它们,因为它们妨碍了我们感兴趣的真实代码
2) 不要使用MySQL,它已被弃用这意味着它不再受支持,不再受支持的原因是存在各种缺陷和安全问题,我强烈建议使用MySQL或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的顶部(会话启动后)放置以下内容:
var_dump($_会话['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");
完成以上所有内容,您的代码将正常工作。根据op问题和所需答案,为什么代码在本地主机而不是服务器上工作,Arun给出了正确答案。
可惜他被否决了,但这可能是因为他没有在回答中解释任何事情
我以前遇到过这个问题。
解决方案是确保你没有空间在上面或下面
<?php
我也遇到了同样的问题,就在这里结束了。即使我没有看到session\u set\u cookie\u params()
也许你已经在db.php
上输入了它。因为在session\u set\u cookie\u参数上使用了LOCALHOST
(time()+600,“/”,“LOCALHOST”,false,true)代码>会话不起作用,因此如果您使用会话设置\u cookie\u params()
您必须确保已将本地主机
替换为您的域我曾经遇到过几个小时的此问题。我的会话在localhost上工作,但没有在页面之间传递。问题是我在会议开始前的评论。出于某种原因,它并没有影响localhost,但我的服务器并没有
因此,如果有其他人阅读这篇文章时有这个问题,您可以尝试其他方法。不要破坏“db.php”中的会话?尝试回显重定向脚本,而不是关闭php并再次打开它。类似于:if(($drawMail==$email)和($drawpassword==$password)){echo'window.location=“../editpasswordsignup.php”;}
这里的问题都是用户生成的。你似乎从不同的地方复制/粘贴了很多不同的代码-例如,一些SQL是mysql,另一些SQL是伪对象导向的。谢谢你的回复。我还是一样尝试。请帮忙解决这个问题。我真的需要一个会话通过这是一个非常简短的回答,本质上只是一个小的代码转储。请解释为什么您认为这会解决问题。阅读操作代码时,会出现各种用户错误,而不是会话设置问题。我同意,但当相同的代码在本地主机上工作时,我认为问题可能在其他地方……是的,公平点。OP提供的信息表明存在会话配置问题,但OP显示的代码清楚地显示了大量语法错误。您能否详细说明一下,也许可以给出一个有问题代码的示例,以及您到底做了什么来修复它?我删除了会话_start()上方的注释,之后效果很好。