0

所以我有一个项目,它有一个简单的登录系统。有一个“用户”表,其中“用户名”和“密码”用 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()”。

在我单击按钮之前出现此错误。

4

2 回答 2

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()。那么就无所谓了。

于 2013-06-29T17:34:02.450 回答
0

用这个替换 session_start() 行:

if(!isset($_SESSION))
    session_start();
于 2013-06-29T17:36:11.470 回答