2013-07-01 136 views
0

我正在创建一个简单的联系表单,并且表单正在通过jQuery加上客户端验证以及用PHP验证服务器端验证,以防用户在其浏览器上禁用Javascript。PHP表单验证。不在同一页

虽然有许多源代码示例在那里,可以处理,并用单页显示,我还没有看到许多他们分为:form.php的validator.php,例如做这样的任务。

我有大多用HTML编写的用于标记的形式 与将要接收/显示从validator.php检索到的错误或成功消息一些PHP码本form.php的文件。现在,我遇到的问题是将这两者联系起来,以便他们彼此交谈而不抱怨。

“形式” 的属性已经行动分配给validator.phpvalidator.php内我具备的功能之一,如下所示:

if (isset($error)) { 
    $msg = "<p>Please enter valid information.</p>"; 
    require ("form.php"); 
} 

而且,在form.php的我声明require ("validator.php");并使用这个$ msg变量从validator.php来显示消息,但浏览器抱怨$ msg是未定义的,即使验证已经它的运行并定义了字符串。

从外观上看,我认为这两个php文件没有正确链接。 任何人都有解决方案的想法?

+0

将form.php中的表单动作设置为validator.php,或者您必须使用ajax。 – Naeem

+1

如果你已经在一个函数中声明了你的$ msg变量,那么它在该函数之外是不可用的。你可以把它声明为全局的,然后就可以使用了。但是,链接页面的方式看起来可能会变得很麻烦。你可能会更好地创建一些$ _SESSION变量来处理这个问题。 – 2013-07-01 05:43:17

+0

你是否需要validator.php中的form.php,然后在form.php中需要validator.php?它似乎是一个循环,因为** naivists **说 – vladkras

回答

0

问题的使用会话变量从视图(form.php的),如

<?php if (isset($_SESSION['msg'])) echo $_SESSION['msg']; session_unset(); ?> 

解决其中msg变量被用于错误/成功将要打印的内部形式 ,我必须宣布session_start();上这两个视图(form.php)和控制器(validator.php)在最上面。

在验证功能的一个内部控制器(validator.php)我做了以下

$msg = "<p>Email Successfully Sent!</p>"; 
$_SESSION['msg'] = $msg; 
header('Location: index.php'); 
exit; 

对于我的目的,它并不需要任何的includerequirerequire_once将它们连接。

P.S. form.php替换我的实际文件结构中的index.php。

1

require实际上和将“validator.php”复制到“form.php”文件中一样,所以这应该不成问题。变量在包含文件中与其“父母”共享相同的范围。 但是,在“form.php”中包含“validator.php”并不是一个好主意,然后从代码中调用require("form.php") - 它将是一个infine循环!

P.S.而且,如果您使用require,则不能称其为“不在同一页面上”。它是相同的页面,它是用户的相同URL。这是两个不同的文件,这是真的。

1

您不能使用require validator.php,然后将您的页面指向validator.php。 一旦你需要一个页面,该页面被包含在当前页面中,并且可以被用作页面的一部分。把它看作是复制粘贴validator.php的代码,你已经使用了require('validator.php')。因此,只需在form.php中设置action=""并相应地进行验证。

也更好使用require_once('validator.php')

1

是的,这两个文件之间的链接存在问题。

当您收到一个错误运行: -

if (isset($error)) { 
    $msg = "<p>Please enter valid information.</p>"; 
    require ("form.php"); 
} 

此代码驻留在validator.php,当你在它加载form.php的,它再次加载在它validator.php再次重置$ msg变量,因为它没有发布到它。

一种解决方案可以是: -

使用form.php的从用户那里得到输入。将输出发布到validator.php,验证输入并重定向到带有$ msg集合的页面form.php,该集合将通过form.php显示为用户的错误消息。