所以我有一个项目,它有一个简单的登录系统。有一个“用户”表,其中“用户名”和“密码”与SHA1一起使用。
我有一个简单的表单,它将更改登录帐户的密码。但它无法正常工作。这是我得到的:
<?php
include('connect.php');
if(isset($_POST['change']))
{
$nova_password = $_POST["nova_password"];
session_start();
$utilizador = $_SESSION['username'];
if (empty($nova_password)) {
$nopassword = '<span class="error">Insira uma nova password!</span></br>';
echo $nopassword;
}
if(!empty($nova_password))
{
$query = mysql_query("update users set password=SHA1('$nova_password') where username='$utilizador'");
$sucesso = '<span class="yes">Password Alterada com Sucesso!</span>';
echo $sucesso;
}
} //END IF
?>
当我转到该页面时,它说:“会话已经开始 - 忽略session_start()”。
单击按钮之前会出现此错误。
答案 0 :(得分:0)
您已经开始了会话?尝试删除session_start();
$nova_password
编辑:执行此操作
$query = mysql_query("update users set password=SHA1('$nova_password') where username='$utilizador'");
// Destroy session and send them to login form
session_destroy();
header("Location: http://yourdomain.com/login.php");
exit();
但如果您想先回复一条消息,可以使用header( "refresh:seconds;url=wherever.php" );
。但是确保没有发送标题。否则你可以使用<meta http-equiv="refresh" content="seconds;url=url">
或者你可以打开输出缓冲ob_start()
。然后没关系。
答案 1 :(得分:0)
用此代替session_start()行:
if(!isset($_SESSION))
session_start();