下面的表单显示了一个错误,如果我们只输入名称并提交,单击提交按钮。显示的错误是
致命错误:Copyright © 2018 www.wamp.com All Rights Reserved.粤ICP备15044888号-1
下面的代码有没有人能发现问题。
<?php
// define variables and set to empty values
$name1Err = $email1Err = "";
$name1 = $email1 = "";
if ($_SERVER["REQUEST_METHOD"] == "POST")
{
if (empty($_POST["input_1"]))
{$name1Err = "Your name is required. Just the first will do. ";}
else
{$name1 = test_input($_POST["input_1"]);
if (!preg_match("/^[a-zA-Z ]*$/",$name1))
{ $name1Err = "Only letters and white space allowed"; }
}
if (empty($_POST["input_12"]))
{$email1= "";}
else
{$email1 = test_input($_POST["input_12"]);
// check if e-mail address syntax is valid
if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$email1))
{ $emailErr = "Invalid email format"; }
}
function test_input($data)
{
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
}
?>
<form method='post' enctype='multipart/form-data' action=''>
name<input name='input_1' type='text' value='<?php echo $name1;?>' tabindex='1' />
<div class="validation_message"><?php echo $name1Err ?></div>
email<input name='input_12' type='email' value='<?php echo $email1;?>'/><br/>
<textarea name='input_5' tabindex='9' rows='10' cols='50'></textarea>
<input type='submit' value='Submit' tabindex='25' />
</form>
<?php
echo "<h2>Your Input:</h2>";
echo "Name:".$name1;
echo "<br>";
echo "Email:".$email1;
echo "<br>";
?>
4条答案
按热度按时间mfpqipee1#
将函数移出条件
if
语句应该是这样的。。
来自PHP文档...
当一个函数以条件方式定义时…它的定义必须在被调用之前被处理。
Source
x33g5p2x2#
一般来说,函数首先被解析,因此可以以任何顺序使用。
上面的工作很好。
但是,与JavaScript等语言不同,PHP允许您有条件地定义函数。你可以这样做:
这是一件糟糕的事情(我个人更喜欢匿名函数,或者将条件放在函数中),但它是允许的。
但是,这样做意味着不能再抓取功能。必须在使用之前定义它们。回到我们的第一个例子:
这将失败。
k5ifujac3#
尝试
来源:w3schools
hk8txs484#
你需要先定义这个函数,然后你才能使用它,我只是发现了这个,但是当我用javascript做的时候,它工作得很好。