2013-07-01 93 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顯示爲用戶的錯誤消息。