2009-01-08 127 views
4

我在页面上有一个表单,用户有输入来编辑一个XML文件,表单的动作是将它发送到一个单独的PHP脚本,在脚本发出提交后进行编辑。脚本将写入成功或失败,无论哪种方式,我都会通过标题将它重定向回表单页面。是否有简单的方法将确认或失败消息传回给表单页面?我可以在网址中完成,但我宁愿保持整洁。PHP在页面之间传递消息

回答

16

我已经看到它完成(以及我个人使用)的方式只是会话。

// process something 
if($success) { 
    flash_message('success','Did whatever successfully.'); 
} else { 
    flash_message('error','Oops, something went wrong.'); 
} 
header('Location: whatever.php'); 

然后在其他地方,在你的库或函数的文件或什么:

function flash_message($type, $message) { 
    // start session if not started 
    $_SESSION['message'] = array('type' => $type, 'message' => $message); 
} 
视图/页

然后,你可以这样做:

if(isset($_SESSION['message'])) { 
    printf("<div class='message %s'>%s</div>", $_SESSION['message']['type'], 
    $_SESSION['message']['message']); 
    unset($_SESSION['message']); 
} 

这是很基本的,但你可以从那里扩展它,如果你想多个消息等。底线是我相信会议是最好的。

2

我更喜欢将表单处理代码和表单显示代码放在同一页面中。如果你真的想将它分开,你可以将代码移动到不同的文件中,并从表单文件中包含该文件,但是从客户端它看起来像是同一个PHP文件。

然后,始终提交到表单并在显示表单之前在顶部进行错误检查。如果有消息显示,您只需再次显示表单,并显示消息以及用户的数据,以便他们可以解决问题。他们可以再次提交,您可以再次检查错误。如果他们成功提交,您可以将它们重定向到其他地方,或者仅显示“成功”消息。