PHP致命错误:用C调用未定义功能test_input():\\ \\ WAMP WWW \\ \\

2019-10-19 05:31发布

下面的表格显示了点击提交按钮,如果我们只输入和submit.The错误显示的名称是一个错误

致命错误:调用在C未定义功能test_input():\ WAMP \ WWW \上线11网络\ new9.php

任何人都可以找到下面的代码的问题。

      <?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>";
?>

Answer 1:

将你的函数你的条件的if声明

它应该是这样的......

<?php
// define variables and set to empty values
$name1Err = $email1Err  =  "";
$name1 = $email1 =  "";

// Moved here
function test_input($data)
{
   $data = trim($data);
   $data = stripslashes($data);
   $data = htmlspecialchars($data);
   return $data;
}

if ($_SERVER["REQUEST_METHOD"] == "POST")
{
// .... your remaining code .......... !

从PHP文件...

当一个函数在条件的方式被定义...它的定义必须在调用之前进行处理。

Source



Answer 2:

一般情况下,函数被解析后的第一,因此可以以任何顺序使用。

echo foo();
function foo() {return "bar";}

上述工作正常。

然而,不同于像JavaScript一些语言,PHP允许有条件地定义函数。 你可能会做这样的事情:

if( $something) {
    function foo() {echo "bar";}
}
else {
    function foo() {echo "fish";}
}
foo();

这是一个不好的事情(我个人更喜欢匿名函数,或将在函数内部条件),但它是允许的。

但是,这样做意味着该功能可以不再被抓住。 他们必须被定义才能使用它们。 回到我们的第一个例子:

if( true) {
    echo foo();
    function foo() {return "bar";}
}

这将失败。



Answer 3:

尝试

<form method='post' enctype='multipart/form-data' action='<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>'>

来源: W3Schools的



文章来源: PHP Fatal error: Call to undefined function test_input() in C:\\wamp\\www\\web\\new9.php on line 11