0

プロフィール写真をアップロードするための小さなアップロード システムがあります。ボタン1つでアラートボックスを表示したい(正常にアップロードされました)。ここに私のphpアップロード機能があります:

function change_profile_image($user_id, $file_temp, $file_extn){
    $file_path = substr(md5(time()), 0, 10) . '.' . $file_extn;
    move_uploaded_file($file_temp, 'images/profile/'.$file_path);
    Thumbnail('images/profile/', $file_path, 'images/thumbs/');
    mysql_query("UPDATE `users` SET `profile` = 'images/profile/" . mysql_real_escape_string($file_path) . "' WHERE `user_id` = " . (int)$user_id);
}

そして、これが私が関数を呼び出す方法です:

if (in_array($file_extn, $allowed) === true) {
                        change_profile_image($session_user_id, $file_temp, $file_extn);
                        header('Location: ' . $current_file);
                        exit();
                    }
4

1 に答える 1

1

これは jQuery の仕事かもしれません。実際、おそらくそうです

しかし、2 番目の (そしてより単純な) オプションは、確認として GET パラメーターを渡すことです。

header("Location: {$current_file}?loaded=ok");

そして、おそらく本文の最後にある「現在のファイル」でそれを確認します。

if (isset($_GET['loaded'])) {
    if ('ok' == $_GET['loaded'])
        $msg = "Loaded OK!";
    else
        $msg = "Oh noes! Error {$_GET['loaded']} while updating picture";
    // Remember, keep $msg without 'quote' "signs", or \"escape\" them properly
    print <<<DISPLAY_ALERT
<script>
    alert('$msg');
</script>
DISPLAY_ALERT;
}

注: 上記のコードは、PHP の " here documents " を使用しています。それらは次のように機能します: 文字列は、<<<SOMESEQUENCEwhere you must not have something afterによって導入されますSOMESEQUENCE。And はのみを含む1 行SOMESEQUENCE;で終了し、余分な空白はどこにもありません。スペースが 1 つでも存在すると、診断が困難な場合がある誤動作が発生します。また、YOUR_SEQUENCEPHP コード内で一意である必要があります。同じ順序で 2 つのヒアドキュメントを作成することはできません (ピンチでは、それらに番号を付けます: SEQUENCE1SEQUENCE2)。

ヒアドキュメント内では、引用符で囲まれていない文字列とキャリッジ リターンを使用できるため、適切なテンプレートを使用できない場合はいつでも HTML スニペットを含める方法として、これが私のお気に入りです。

于 2013-09-05T21:31:52.360 に答える