2014-09-01 3 views
-1

Я новичок в PHP, пытаясь понять, почему она выбрасывает эту ошибку, когда я вызываю checkFirst() и checkPass() в html, код ниже - я поставил ** вокруг, где проблема нарастающим:PHP - Неустранимая ошибка: вызов функции undefined

ошибка: Критическая ошибка: Вызов неопределенной функции checkFirst() в C: \ WAMP \ WWW \ форма \ index.php в строке 12

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Form</title> 
    <link rel="stylesheet" href="style.css"> 
</head> 
<body> 
    <form action="index.php" method="post"> 
     <div class="signup_wrap"> 
      <div class="wrap"><label for="first">First Name:</label><input type="text" name="first" value=""></div> 
      **<?php checkFirst($first); ?>** 
      <div class="wrap"><label for="first">Last Name:</label> <input type="text" name="last" value=""></div> 
      <div class="wrap"><label for="first">Password:</label> <input type="text" name="first_password" value=""></div> 
      <div class="wrap"><label for="first">Confirm password:</label><input type="text" name="second_password" value=""></div> 
      **<?php checkPass($password1, $password2);?>** 
      <br> 
      <input type="submit" name="submit" value="Submit"> 

     </div> 

    </form> 
</body> 
</html> 

<?php 

$password1 = ""; 
$first = ""; 

if (isset($_POST['submit'])) { 
    $first = $_POST['first']; 

    $password1 = $_POST['first_password']; 
    $password2 = $_POST['second_password']; 


    function checkFirst($first){ 
     if (empty($first)) { 
       echo "Please enter text"; 
       return false; 
      } 
      return true; 
    } 


    function checkPass($password1, $password2){ 
     if (empty($password2)) { 
       echo "Please enter text"; 
       return false; 
      } 
      if ($password1 == $password2) { 
       echo "Match"; 
       return true; 
      } else { 
       echo "False"; 
       return false; 
      } 
      return true; 
    } 

    function checkAll($first, $password1, $password2){ 
     if (checkPass($password1, $password2) && checkFirst($first)) { 
      header("Location: http://www.trademe.co.nz"); 
      return true; 
     } else { 
      echo "Nope"; 
      return false; 
     } 
    } 

    checkAll($first, $password1, $password2); 


} 

?> 
+4

функция должна быть определена из условия –

+0

Что такое линия 12? – idmean

+0

Поместите функции за пределы IF, иначе вы не сможете получить к ним доступ, если вы не находитесь в этом самом состоянии. –

ответ

2

Вы определяя функции внутри условия if для отправки формы.

if (isset($_POST['submit'])) { 

Таким образом, функции будут иметь доступ только в этом if состоянии. Вы можете поместить функции вне условия.

if (isset($_POST['submit'])) { // start of condition 
    $first = $_POST['first']; 

    $password1 = $_POST['first_password']; 
    $password2 = $_POST['second_password']; 
    ---------------------- 
}  // end of condition 



/* Common Functions */ 

function checkFirst($first){ 
     if (empty($first)) { 
       echo "Please enter text"; 
       return false; 
      } 
      return true; 
    } 
+0

Кроме того, функции доступны только * после того, как определены *, даже пытающиеся получить доступ внутри блока 'if', но прежде чем определение будет проблемой. –

+0

Спасибо, большое спасибо :) – ifusion

+0

@Jenz Хороший ответ ... :) –

0

функция должна быть раньше, если (Исеть ($ _ POST [ 'отправить'])) {

<!DOCTYPE html> 
    <html lang="en"> 
    <head> 
     <meta charset="UTF-8"> 
     <title>Form</title> 
     <link rel="stylesheet" href="style.css"> 
    </head> 
    <body> 
     <form action="index.php" method="post"> 
      <div class="signup_wrap"> 
       <div class="wrap"><label for="first">First Name:</label><input type="text" name="first" value=""></div> 
       **<?php checkFirst($first); ?>** 
       <div class="wrap"><label for="first">Last Name:</label> <input type="text" name="last" value=""></div> 
       <div class="wrap"><label for="first">Password:</label> <input type="text" name="first_password" value=""></div> 
       <div class="wrap"><label for="first">Confirm password:</label><input type="text" name="second_password" value=""></div> 
       **<?php checkPass($password1, $password2);?>** 
       <br> 
       <input type="submit" name="submit" value="Submit"> 

      </div> 

     </form> 
    </body> 
    </html> 

    <?php 

    $password1 = ""; 
    $first = ""; 
     function checkFirst($first){ 
      if (empty($first)) { 
        echo "Please enter text"; 
        return false; 
       } 
       return true; 
     } 
    if (isset($_POST['submit'])) { 
     $first = $_POST['first']; 

     $password1 = $_POST['first_password']; 
     $password2 = $_POST['second_password']; 





     function checkPass($password1, $password2){ 
      if (empty($password2)) { 
        echo "Please enter text"; 
        return false; 
       } 
       if ($password1 == $password2) { 
        echo "Match"; 
        return true; 
       } else { 
        echo "False"; 
        return false; 
       } 
       return true; 
     } 

     function checkAll($first, $password1, $password2){ 
      if (checkPass($password1, $password2) && checkFirst($first)) { 
       header("Location: http://www.trademe.co.nz"); 
       return true; 
      } else { 
       echo "Nope"; 
       return false; 
      } 
     } 

     checkAll($first, $password1, $password2); 


    } 

    ?> 
0

Ваш PHP-код должен быть. Функция должна быть определена из условия if.

<?php 

    $password1 = ""; 
    $first = ""; 

    if (isset($_POST['submit'])) { 
     $first = $_POST['first']; 
     $password1 = $_POST['first_password']; 
     $password2 = $_POST['second_password']; 
     checkAll($first, $password1, $password2); 
    } 
    function checkFirst($first){ 
     if (empty($first)) { 
       echo "Please enter text"; 
       return false; 
      } 
      return true; 
    } 


    function checkPass($password1, $password2){ 
     if (empty($password2)) { 
       echo "Please enter text"; 
       return false; 
      } 
      if ($password1 == $password2) { 
       echo "Match"; 
       return true; 
      } else { 
       echo "False"; 
       return false; 
      } 
      return true; 
    } 
    function checkAll($first, $password1, $password2){ 
     if (checkPass($password1, $password2) && checkFirst($first)) { 
      header("Location: http://www.trademe.co.nz"); 
      return true; 
     } else { 
      echo "Nope"; 
      return false; 
     } 
    } 

?> 
+0

Спасибо, очень благодарен :) – ifusion

0

Update Последняя функция, как этот

function checkAll($first, $password1, $password2){ 
    $chekPass = checkPass($password1, $password2); 
    $chekFirst = checkFirst($first); 
    if ($checkPass && $checkFirst) { 
     header("Location: http://www.trademe.co.nz"); 
     return true; 
    } else { 
     echo "Nope"; 
     return false; 
    } 
} 
0

Поскольку вы определяете функции внутри if блока, они только получить определенные после проверки, что условие, и это правда. Вы пытаетесь вызвать функции перед тестом if, поэтому функции еще не определены.

Обычно вы должны определять функции на верхнем уровне скрипта, а затем их можно использовать из любого места сценария, поскольку они не зависят от состояния.

+0

Спасибо, очень благодарен :) – ifusion

Смежные вопросы