2016-05-09 4 views
2

ユーザーがパスワードを正常に変更したときにポップアップする「フラッシュ」成功メッセージを作成しようとしています。しかし、それは私がそれをどのようにしたいのかは機能しません。Echo Success Message一度PHP

基本的な考え方は、新しいパスワードを入力すると(データベースに渡される)、「成功したパスワードの更新」ページにエコーされるということです。しかし、一度しかエコーされません(ユーザーが更新すると、エコーされたメッセージは消え、新しいパスワードを送信するまで表示されません)。

私は周りを検索しようとしましたが、私は実際にどのようにしたいのかを実際に動作させるスクリプトを見つけることができないようです。

これは、現在、私のPHP関数です:

function updatePassword($conn, $newpwd, $username){ 
    $newpwd = hash('md5', $newpwd); 
    mysqli_query($conn, "UPDATE users SET password = '$newpwd' WHERE username = '$username'"); 
} 

乾杯。

+0

あなたは本当に[MD5パスワードハッシュ](http://security.stackexchange.com/questions/19906/is-md5-considered-insecure)を使用すべきではなく、PHPの[組み込み関数]を使うべきですhttp://jayblanchard.net/proper_password_hashing_with_PHP.html)を使用してパスワードセキュリティを処理します。ハッシュする前に[パスワードを逃さないでください](http://stackoverflow.com/q/36628418/1011527)、または他のクレンジングメカニズムを使用していることを確認してください。パスワードを変更すると、パスワードが変更され、不要な追加のコーディングが発生します。 –

答えて

2

私はあなたに擬似論理を説明しましょう。

ステップ:

1)パスワードの変更に成功すると、セッション変数に成功メッセージを割り当てます。

$_SESSION['message'] = 'Password changed successfully.';

2)リダイレクト成功]ページで、これをエコー。また

if (isset($_SESSION['message'])) { 
echo $_SESSION['message']; 
unset($_SESSION['message']); 
} 

unset()それは、よう、再度、他の時間は表示されません。

+0

よろしく!魅力的に働いた:) –

2

私は自分自身で最近何かを作成しましたが、コードはおそらくもっと良いかもしれませんが、動作します。あなたはそれを表示したいページshow_flash_message()を使用

function flash_message($message, $type = 'success') { 
    switch($type) { 
    case 'success': 
     $class = "success"; 
     break; 
    case 'info': 
     $class = "info"; 
     break; 
    case 'error': 
     $class = "error"; 
     break; 
    } 

    $_SESSION['flash_message'] = "<p class='flash_message ".$class."'>".$message."</p>"; 
} 

function show_flash_message() { 
    if (isset($_SESSION['flash_message'])) { 
    $message = $_SESSION['flash_message']; 
    unset($_SESSION['flash_message']); 
    return $message; 
    } 
    return NULL; 
} 

。メッセージがない場合、何も表示されません。

あなたはこれを行うことによって、それを呼び出すと思います:

function updatePassword($conn, $newpwd, $username){ 
    $newpwd = hash('md5', $newpwd); 
    mysqli_query($conn, "UPDATE users SET password = '$newpwd' WHERE username = '$username'"); 
flash_message('Successfully changed your password'); 
} 

異なるクラスを使用すると、メッセージの表示を変更したい場合のためのものです。 (間違ったユーザ名/パスワードはエラーです。電子メールは情報/成功などに送信できます)

+0

乾杯!私はこれをテストします! :) –

+0

@Albzi、素敵な答え。私の10倍も良い。 – Pupil