PHP:将数据发送到另一个php文件

时间:2015-12-10 15:42:29

标签: php forms

我有一个php表单需要从contact_form.php向user_input.php发送信息到另一个页面,而不会失去验证功能。

以下表格:

<form action="user_input.php" method="post">
<table style="width:35%">
<tr>
<td><p>Name:</td><td><input type="text" name="name" value="<?php echo $_SESSION["name"];?>"><span class="error"> * <?php echo $_SESSION["nameErr"];?></span></p></td></tr>
<td><p>Email:</td><td> <input type="text" name="email" value="<?php echo $_SESSION["email"];?>"><span class="error"> * <?php echo $_SESSION["emailErr"];?></span></p></td></tr>
<td><p>Address:</td><td> <input type="text" name="address" value="<?php echo $_SESSION["address"];?>"><span class="optional"> Optional</span></p></td></tr>
<td><p>Phone: </td><td><input type="tel" name="phone" value="<?php echo $_SESSION["phone"];?>"><span class="error"> * <?php echo $_SESSION["phoneErr"];?></span></p></td><tr>
<td><p>Message: </td><td><textarea name="message" rows="5" cols="40"><?php echo $_SESSION["message"];?></textarea><span class="error"> * <?php echo $_SESSION["messageErr"];?></span></p></td></tr>

这是验证部分:

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

if(empty($_POST["email"])) {
    $_SESSION["emailErr"] = "Email required";
} else {
    $_SESSION["email"] = input($_POST["email"]);
    // check if email is valid
    if(!filter_var($_SESSION["email"], FILTER_VALIDATE_EMAIL)) {
        $_SESSION["emailErr"] = "Invalid email";
    }
} 

if(empty($_POST["phone"])) {
    $_SESSION["phoneErr"] = "Phone number required";
} else {
    $_SESSION["phone"] = input($_POST["phone"]);
    if(!preg_match("/^[0-9]/", $_SESSION["phone"]) || strlen($_SESSION["phone"]) > 20) {
        $_SESSION["phoneErr"] = "Invalid phone number";
    }
}
if (empty($_POST["message"])) {
    $_SESSION["messageErr"] = "Message required";
} else {
    $_SESSION["message"] = input($_POST["message"]);
    }
  }
function input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}

我做错了什么似乎当我在user_input.php上发送数据时,数据验证部分消失了。我想在user_input.php上有一个按钮,将用户重定向到表单。

2 个答案:

答案 0 :(得分:0)

在user_input.php中,如果会话中的数据可用,则将接收的数据推送到会话中并以contact_form.php预填充形式。其他选项是将常用的validatiin部分放入两个文件中包含的单独文件中。或者只使用Sensiolabs的Silex

答案 1 :(得分:0)

联系表格

<?php session_start();?>
<form action="user_input2.php" method="post">
<table style="width:35%">
<tr>
<td><p>Name:</td><td><input type="text" name="name" value="<?php echo $_SESSION["name"];?>"><span class="error"> * <?php echo $_SESSION["nameErr"];?></span></p></td></tr>
<td><p>Email:</td><td> <input type="text" name="email" value="<?php echo $_SESSION["email"];?>"><span class="error"> * <?php echo $_SESSION["emailErr"];?></span></p></td></tr>
<td><p>Address:</td><td> <input type="text" name="address" value="<?php echo $_SESSION["address"];?>"><span class="optional"> Optional</span></p></td></tr>
<td><p>Phone: </td><td><input type="tel" name="phone" value="<?php echo $_SESSION["phone"];?>"><span class="error"> * <?php echo $_SESSION["phoneErr"];?></span></p></td><tr>
<td><p>Message: </td><td><textarea name="message" rows="5" cols="40"><?php echo $_SESSION["message"];?></textarea><span class="error"> * <?php echo $_SESSION["messageErr"];?></span></p></td></tr></p>
<td><input type="submit" name="btn" value="Submit"></td>
</table>
</form>

<强> USER_INPUT2.PHP

<?php

if($_SERVER["REQUEST_METHOD"] == "POST") {
    echo "skdjksjd";
if(empty($_POST["name"])) {
    $_SESSION["nameErr"] = "Name required";
} else {
    $_SESSION["name"] = input($_POST["name"]);
}

if(empty($_POST["email"])) {
    $_SESSION["emailErr"] = "Email required";
} else {
    $_SESSION["email"] = input($_POST["email"]);
    // check if email is valid
    if(!filter_var($_SESSION["email"], FILTER_VALIDATE_EMAIL)) {
        $_SESSION["emailErr"] = "Invalid email";
    }
} 

if(empty($_POST["phone"])) {
    $_SESSION["phoneErr"] = "Phone number required";
} else {
    $_SESSION["phone"] = input($_POST["phone"]);
    if(!preg_match("/^[0-9]/", $_SESSION["phone"]) || strlen($_SESSION["phone"]) > 20) {
        $_SESSION["phoneErr"] = "Invalid phone number";
    }
}
if (empty($_POST["message"])) {
    $_SESSION["messageErr"] = "Message required";
} else {
    $_SESSION["message"] = input($_POST["message"]);
    }
  }

function input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
?>
<a href="img.php">get to back</a>