2017-02-22 4 views
0

フォームindex.php myProfile.phpに渡す3つの入力フィールド(名前、姓、生年月日)があり、ユーザーは続行できません3つのフィールドがすべて完了していない場合は、次のmyProfile.php。 すべての入力フィールドが有効であると判断されたら、どのように変数を次のページに送ることができますか?現在(index.phpを)私は、すべての入力フィールドが有効であることを判断することができますが、私はmyProfile.phpに沿っ有効な変数を別のページに渡す(PHP)

変数の変数を渡す方法がわからないと入力取り扱い:

<?php 

$nameErr = $surnameErr = $dobErr = ""; 
$name = $surname = $dob = ""; 

if ($_SERVER["REQUEST_METHOD"] == "POST") { 
    if (empty($_POST["name"])) { 
    $nameErr = "Name is required"; 
    } else { 
    $name = test_input($_POST["name"]); 
    } 

    if (empty($_POST["surname"])) { 
    $surnameErr = "Surname is required"; 
    } else { 
    $surname = test_input($_POST["surname"]); 
    } 

    if (empty($_POST["dob"])) { 
    $dobErr = "Date of Birth is required"; 
    } else { 
    $dob = test_input($_POST["dob"]); 
    } 
} 

function test_input($data) { 
    $data = trim($data); 
    $data = stripslashes($data); 
    $data = htmlspecialchars($data); 
    return $data; 
} 
?> 

の作成をフォーム(index.phpを):

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> 

Name: <input type="text" name="name"> 
<span class="error">* <?php echo $nameErr;?></span> 
<br><br> 
Surname: 
<input type="text" name="surname"> 
<span class="error">* <?php echo $surnameErr;?></span> 
<br><br> 
Date of Birth: 
<input type="date" name="dob"> 
<span class="error">*<?php echo $dobErr;?></span> 
<br><br> 

<input type="submit" name="submit" value="Submit"> 

</form> 

私の問題はmyProfile.phpに私の名前、姓と生年月日を送信するために、私はしかし、入力の検証のために、action="myProfile.php"になるように、フォームのアクションを必要とするということです行われるのはaction="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?> "である必要があります。

myProfile.php:入力検証が行われ、すべての入力が有効である場合は、次のコードを使用するためにmyProfile.phpに沿って変数を渡すことができ

<?php 
    $name = $_POST['name']; 
    $surname = $_POST['surname']; 
    $dob = $_POST['dob']; 
    echo "<h2>Your Input:</h2>"; 
    echo "My name is " . $name . " " . $surname . ". I am " . date_diff(date_create($dob), date_create('today'))->y . " years old."; 
?> 
+0

をチェックします。クライアント側の検証にセッション – Sarcoma

+0

変更でこれをそれらを格納することができますし、 –

+0

@LelioFaietaクライアント側valを行っていることができますハザードや他の卑劣な人たちによってスキップされる可能性があります。 –

答えて

0

あなたはすべきですこれを行うにはPHP's session functionalityを使用できるようにしてください。セッションはPHPに固有のものではありませんが、PHPには特定の訪問者に関するデータを簡単に管理できる機能があります。これは、HTTPがステートレスプロトコルであるため、扱いにくいことがあります。 index.phpの中

あなたはデータがあなたがでsession_startを呼び出し、スーパーグローバル$ _SESSION変数を使用してセッションに保存することができます有効であることを確認しました後:私のプロフィールでは、

if ($data_is_valid) // you'll have to figure out yourself whether data is valid or not 
{ 
    session_start(); // you must call this before using $_SESSION 
    $_SESSION["valid_data"] = array(
     "name" => $name, 
     "surname" => $surname, 
     "dob" => $dob 
    ); 

    // redirect the user to the other page 
    header("location: myProfile.php"); 
    // always remember to exit after redirecting or code may continue to execute 
    exit; 
} 

その後.PHP、あなたはでsession_startを呼び出し、有効なデータ

session_start(); 
if (!array_key_exists("valid_data", $_SESSION)) { 
    die("No valid data found!"); // you might want to redirect back to the first page or something? 
} 
$data = $_SESSION["valid_data"]; 
if (!is_array($data)) { 
    die("Data found is not an array!"); 
} 


// otherwise, data was found...you can keep going! 
// you might get errors here if you didn't set these properly on the the previous page 
$name = $data['name']; 
$surname = $data['surname']; 
$dob = $data['dob']; 
echo "<h2>Your Input:</h2>"; 
echo "My name is " . $name . " " . $surname . ". I am " . date_diff(date_create($dob), date_create('today'))->y . " years old."; 
+0

私はあなたのコードを私の中に取り入れようとしましたが、ひどく間違っています。私はまだPHPには全く新しいです。あなたが私の元のコードに私が与えたコードをどこに挿入するかを親切に教えてください。 – user3437351

関連する問題