PHP会话在本地主机上工作,但不在实际服务器上
我无法将会话变量传递到另一个页面。它在localhost上工作,但不在服务器上。我想通过$ _SESSION ['user_check']来编辑passwords.ignup.php,但每当我点击提交,$ _SESSION ['user_check']是空的。PHP会话在本地主机上工作,但不在实际服务器上
这是loginsignup.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>
这是editpasswordsignup.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 session_start();
-----
-----
?>
感谢您的回复。我尝试它仍然是一样的。请帮助解决这个问题。我真的需要一个会话通过 – user3379528 2015-03-13 08:21:44
这是一个非常简短的答案,本质上只是一个小代码转储。请解释你为什么认为这将解决问题。 – 2015-03-13 11:15:07
正如你说这是w ^在本地主机上而不是在特定的服务器上执行操作,您可能在php.ini
中有不同的设置。退房http://php.net/manual/en/session.configuration.php
有一些需要加以纠正这里几件事情:
1)不要在页面中,使用CSS类使用样式和编号的,而不是风格。我已经编辑了问题,因为他们在真正的代码中,我们感兴趣的方式去消除这些。
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);
您的email值是一个字符串,而不是一个变量。你这里的SQL也是一团糟,这是什么原因?
替换上面:
$sql = mysql_query("SELECT * FROM user WHERE email='$user_check' AND password='$oldpassword' LIMIT 1");
完成上述所有的和你的代码将工作。
根据op问题和答案需要为什么代码在本地主机而不是服务器上工作正确答案似乎由Arun。 他被拒绝投票了,但这可能是因为他没有在他的回答中解释任何事情。
我以前遇到过这个问题。 解决的办法是要确保你没有高于或低于
<?php
线空间。 我相当肯定这就是为什么Arun画出线条来表明你的其他PHP代码应该立即遵循。
不要在'db.php'中销毁会话吗? – 2015-03-13 08:14:33
尝试将重定向脚本回显出来,而不是关闭PHP并再次打开它。像这样:'if(($ drawemail == $ email)&&($ drawpassword == $ password)) { echo''; }' – Eda190 2015-03-13 08:30:18
这里的问题都是用户生成的。您似乎从不同的地方复制/粘贴了大量不同的代码 - 例如,某些SQL是mysql,而其他SQL是伪面向对象的。 – Martin 2015-03-13 09:44:39