2013-06-29 43 views
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()」。

這個錯誤出現在我點擊按鈕之前。

回答

0

你已經開始了一個會話?嘗試下$nova_password

編輯刪除session_start();:做這個

$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()。那沒關係。與此

+0

是的,我刪除了其工作。它沒有工作,因爲我有一個文件,檢查會話是否在頂部啓動,因爲該頁面受到登錄用戶的保護。更改密碼後,我可以做會話銷燬並重定向到登錄表單嗎?我想我不能用戶頭,因爲已經打印回聲。 – user2535046

+0

看看我的編輯 – Yxvasznalskje

+1

我會簡單地使用回聲,然後會話銷燬。因爲在有人試圖訪問受保護的頁面之後,它會發送到登錄頁面,因爲會話已被銷燬:) – user2535046

0

替代的session_start()行:

if(!isset($_SESSION)) 
    session_start();