我正在做一個鏈接在一起的不同PHP腳本的登錄表單。我已經在這裏發佈了其中的一個腳本,並更正了其中的一些錯誤。我已經嘗試了幾個小時,以使這些工作,但它沒有發生。我得到的錯誤在PHP中未定義的函數錯誤,但不明白爲什麼?
Fatal error: Call to undefined function validate() in C:\Program Files\Abyss Web Server\htdocs\login_action.php on line 21
好了,我看着「登錄Tools.php」我已經做了一些修正它。該功能似乎被正確定義。我正在從PHP新手書中複製這段代碼 - 在Easy Steps中。我也查看了其他腳本Login Action.php,但是看不到任何錯誤。
我會先告訴你「Login action.php」。我知道你們中的一些人不會喜歡這本書使用的方法,但我只是從書中複製,所以我不會選擇腳本的輸入方式。
<?php
if ($_SERVER[ 'REQUEST_METHOD' ] == 'POST')
{
require ('../connect_db.php') ;
require ('login_tools.php') ;
list ($check , $data) =
validate ($dbc , $_POST[ 'email' ] , $_POST[ 'pass' ]) ;
if ($check)
{
session_start() ;
$_SESSION[ 'user_id' ] = $data[ 'user_id' ] ;
$_SESSION[ 'first_name' ] = $data[ 'first_name' ] ;
$_SESSION[ 'last_name' ] = $data[ 'last_name' ] ;
load ('home.php') ;
}
else { $errors = $data ; }
mysqli_close($dbc) ;
}
?>
所以上面的腳本使用了下面腳本中定義的函數。我已經通過這兩個,甚至糾正錯誤,但無法找到爲什麼函數是未定義的?
<?php
function load($page = 'login.php')
{
$url = 'http://' . $_SERVER[ 'HTTP_HOST' ] .
dirname($_SERVER[ 'PHP_SELF' ]) ;
$url = rtrim($url , '^\\') ;
$url .= '/' . $page ;
header("Location: $url") ;
return;
function validate($dbc , $email = '' , $pwd = '')
{
$errors = array() ;
if (empty($email))
{ $errors[] = 'Enter your email address.' ; }
else
{ $e = mysqli_real_escape_string($dbc, trim($email)) ; }
if (empty($pwd))
{ $errors[] = 'Enter your password.' ; }
else
{ $p = mysqli_real_escape_string($dbc, trim($pwd)) ; }
if (empty($errors))
{
$q = "SELECT user_id, first_name, last_name,
FROM users
WHERE email = '$e'
AND pass = SHA1('$p') " ;
$r = mysqli_query ($dbc , $q) ;
if (mysqli_num_rows($r) == 1)
{
$row = mysqli_fetch_array ($r , MYSQLI_ASSOC) ;
return array(true , $row) ;
}
else
{ $errors[] = 'Email address and password not found.' ; }
}
return array(false , $errors) ; }
}
?>
我希望我不是在這裏做一些簡單的錯誤,但我只在這裏發表的東西時,我已經使用的碼檢查,並從我使用這本書再次手動和再次檢查代碼。任何人都知道我在做什麼錯了?
嗨,你會這麼好心地解釋函數的load()在這個崗位是如何工作之間
}
?我遇到了同樣的腳本,但似乎並沒有讓我的頭腦發生什麼 – RickTicky