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 に答える