我有一个小型上传系统来上传个人资料图片。 我想显示一个带有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();
}
答案 0 :(得分:1)
这可能是jQuery的工作。实际上,它可能是。
但是一个可能接近的第二个(也更简单)选项可能是传递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”。它们的工作方式如下:<<<SOMESEQUENCE
引入字符串,必须>> SOMESEQUENCE
之后的任何内容。并且仅由仅包含SOMESEQUENCE;
的单行终止,并且在任何地方都没有额外的空格。即使是单个空间的存在也会导致有时难以诊断的故障。此外,YOUR_SEQUENCE
在PHP代码中必须是唯一的。你不能有两个具有相同序列的heredocs(在紧要关头,给它们编号:SEQUENCE1
,SEQUENCE2
)。
在heredoc中,你可以使用不带引号的字符串和回车符,所以当我无法使用正确的模板时,这是我最喜欢的包含HTML片段的方法。