2017-02-07 11 views
1

私のウェブサイトに新しいアカウントを作成しようとしているユーザーから入力データを受け取るページがあります。私は、ページがリダイレクトされてから入力データをデータベースに送る前に、データの値をチェックしたいと思います。私は、ユーザーがsubmitをクリックしたときに同じページにリダイレクトする検証フォームを作成して値をチェックしましたが、すべての値が正常であれば、入力したパラメータを別のページに入力して入力しますデータベース。 PHPでこれを条件付きで行う方法はありますか?私は入力されたパラメータのいずれかが間違っているかどうかをチェックする単純なブール値で実装しようとしましたが、リダイレクトとともにパラメータを送信する方法はわかりません。条件付きで別のページにリダイレクトし、PHPでPOSTを介してパラメータを送信する

<?php 
// Connection to database 
include_once("createConnection.php"); 

$hasErrors = false; 
$errorFName = $errorLName = $errorEmail = ""; 
$fName = $lName = $email = ""; 

if ($_SERVER["REQUEST_METHOD"] == "POST") { 
    if (empty($_POST["fName"])) { 
    $errorFName = "This field is required."; 
    $hasErrors = true; 
} 
else { 
    $name = validation($_POST["fName"]); 
    //name cannot contain any symbols or numbers 
    if (!preg_match("/^[a-zA-Z ]*$/",$fName)) { 
     $errorFName = "Only letters and white space allowed"; 
     $hasErrors = true; 
    } 
} 

if($hasErrors==false){ 
    **???** 
} 


function validation($input) { 
    $input = trim($input); 
    $input = stripslashes($input); 
    $input = htmlspecialchars($input); 
    return $input; 
} 
?> 

<form class="loginForm" method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> 
    <table class="loginTable"> 
     <tr> 
      <td><label for="newDetail">First Name: </label> 
       <input type="text" class="formBox" value="" id="newDetail" name="fName"> 
       <?php echo $errorFName;?> 
      </td> 
     </tr> 
     <tr> 
      <td><label for="newDetail">Password: </label> 
       <input type="text" class="formBox" value="" id="newDetail" name="pword"> 
      </td> 
     </tr> 
     <tr> 
      <td><button type="submit" class="loginButton" name="submitNew">Submit</button></td> 
     </tr> 

    </table> 
</form> 

ありがとう:ここ

は、フォームのほんの一部で、コードの短縮版です!

答えて

0

セッションに$ _POST変数を格納することができます。

$_SESSION["firstname"] = $_POST["fname"]; 

が続いてその後のセッションとプロセスからの変数をつかむ必要なページ

header("location: welcomepage.php"); 

にリダイレクトし、多分将来の使用のためにデータベースに挿入します。

$firstname = $_SESSION["firstname"]; 
0

あなたは<meta http-equiv="refresh">を手動でリダイレクトすることができます:

echo '<meta http-equiv="refresh" content="0, welcomepage.php?params=params">'; 
0

私はあなたが他のページにパラメータを渡すしたい理由はかなりわからない - 右ここでそれらを処理するためにはるかに容易にqould。あなたが嫌い​​なコードの一般的なメッセージであれば、インクルードされたファイルから関数またはメソッドにデータを渡すことができます。それは別のページからのデータを保存するために本当に必要であれば

しかし、私はcURLを経由してそれらを送信推薦する:

$post   = array(/*put all your variables here*/); 
$params  = http_build_query($post); 
$url   = 'http://your.domain.com/receiver.php'; 
$curl   = curl_init($url); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($curl, CURLOPT_POST, true); 
curl_setopt($curl, CURLOPT_POSTFIELDS, $params); 
$result  = curl_exec($curl); 

この方法で何かを使用すると、受信ページの出力が$resultになってしまいますでしょう、そのデータが保存されたことをユーザーに確認することができます。

NB:あなたが何をしても何をしても、受信ページにGETとして渡さないでください。それは安全ではなく、誰かがこれを行うたびに子犬が死ぬ!

カールの詳細情報:http://php.net/manual/en/book.curl.php

+0

これはお試しいただきありがとうございます。上記のコードは、宛先ページの$ paramsから抽出できる配列としてパラメータを送信していますか? receiver.phpの例: $のfirstName = $のparams [ "fNameを ']; またはPOST経由のように:? $のfirstName = $ _ POST?[ "fNameを"]; – AndrewY

+0

あなたはどれも知っています? – AndrewY

+0

@AndrewY、それは$ _POST配列にありますので、 '$ post = array( 'checked_fName' => $ _ POST ['fName']);'をメインページの 'receiver。 php'で '$ firstName = $ _POST ['checked_fName'];' –

関連する問題