Php表单验证和post正在工作,但不在一起?
为了正常工作,我的表单需要设置为首先检查验证,然后在验证通过时发布数据。这很好,但我不确定如何在表单操作中将验证代码与post代码结合起来。示例:如果操作为:Php表单验证和post正在工作,但不在一起?,php,forms,validation,post,Php,Forms,Validation,Post,为了正常工作,我的表单需要设置为首先检查验证,然后在验证通过时发布数据。这很好,但我不确定如何在表单操作中将验证代码与post代码结合起来。示例:如果操作为:action=“”>则表单将正确验证,但不会发送到任何地方!如果我将表单操作更改为action=“contact engine.php”>,则表单已发布,但未经验证!考虑到这一点,我需要将验证和contact-engine.php(一旦通过验证)结合到操作中,问题是我根本不知道如何做?我真的是一个学习php的人,这对我来说很复杂!任何帮助都
action=“”>
则表单将正确验证,但不会发送到任何地方!如果我将表单操作更改为action=“contact engine.php”>
,则表单已发布,但未经验证!考虑到这一点,我需要将验证和contact-engine.php(一旦通过验证)结合到操作中,问题是我根本不知道如何做?我真的是一个学习php的人,这对我来说很复杂!任何帮助都是非常感谢的,从现在起我已经为此工作了几天!(注意:两个页面都是.php)完整代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Help!</title>
<style type="text/css">
.error {color: #FF0000;}
</style>
</head>
<body>
<?php
// define variables and set to empty values
$nameErr = $emailErr = "";
$name = $email = "";
if ($_SERVER["REQUEST_METHOD"] == "POST")
{
//Name
if (empty($_POST["name"]))
{$nameErr = "Name is required";}
else
{
$name = test_input($_POST["name"]);
if (!preg_match("/^[a-zA-Z ]*$/",$name))
{
$nameErr = "Only letters and white space allowed";
}}
//Email
if (empty($_POST["email"]))
{$emailErr = "Email is required";}
else
{
$email = test_input($_POST["email"]);
if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$email))
{
$emailErr = "Invalid email format";
}}
}
function test_input($data)
{
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
?>
<form method="post" id="form" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
<p><span class="error">* required field.</span></p><br />
<div class="contact-font" style=" margin-top: 20px;">
<span class="asterix">* </span>Name:<br />
<input type="text" name="name" class="border" size="25" value="<?php if(isset($_POST['name'])) {echo $_POST['name']; } ?>">
<span class="error"><?php echo $nameErr;?></span>
</div>
<div class="contact-font" style=" margin-top: 20px;">
<span class="asterix">* </span>Email: (please double check enty)<br />
<input type="text" name="email" class="border" size="25" value="<?php if(isset($_POST['email'])) {echo $_POST['email']; } ?>"><span class="error">
<?php echo $emailErr;?></span>
</div>
<div>
<input type="submit" value="Send" id="submit">
</div>
</form>
</body>
</html>
And below is the contact-engine code:
<html>
<head>
<title>Contact Engine</title>
</head>
<body>
<br />Name:<?php echo htmlspecialchars($_POST['name']); ?><br />
<br />Email:<?php echo htmlspecialchars($_POST['email']); ?><br />
</body>
</html>
救命啊!
.错误{color:#FF0000;}
你可以试试这个。下面是一个简单的代码,通过它您可以实现:
//sample index.php file
<?php
include 'submitted.php';
?>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<form action="<?php echo $_SERVER['PHP_SELF']?>" method="POST">
<input type="text" name="foo" />
<input type="submit" value="submit">
</form>
</body>
</html>
对于测试,它只是检查长度是否超过5。如果不是,则错误消息将显示在页面所在的同一页面上
您也可以自己测试。您不需要将操作=”“>
提交到同一页面。方法是将表单数据发送到您的contact-engine.php
文件并在那里执行验证。您好Butterfruit,但是如果验证是在contact-engine.php页面上完成的,那么如果有错误,它们如何显示在初始页面上?是否无法通过添加一条if语句来编辑操作,该语句说明验证是否良好,然后将表单发送到contact-engine.php?感谢您的帮助:)在发送表单Hello Andrei之前,您必须使用javascript进行验证,我想这是可以的,因为这里没有数据库连接,所以javascript验证会更好更快,因为它不必去服务器。我会看看这个方法,希望它更容易。我从w3schools获得了很多上面的代码,他们只带我去验证!太好了,我现在有了一张我什么都做不了的表格!谢谢您的帮助。@Margate检查答案。好的,我已将foo更改为我的电子邮件地址,并将其发送给我:)我确信我现在正在正确的轨道上解决我的问题。我将在这里使用您的代码并将其添加到我的表单中。经过3天的尝试,我打算放弃,试着用jQuery实现它。因为你的帮助,我确信我现在能解决这个问题:)非常感谢你,谢谢你的时间和帮助。当我擅长php时,我会帮助别人。是的,你总是可以让它变得越来越好。祝你一切顺利:)
//sample submitted.php
<?php
if(isset($_POST['foo']))
{
if(strlen($_POST['foo']) < 5){
echo "String length too small";
}
else
{
echo $_POST['foo'];
}
}
?>