1

我刚刚回到 PHP 编程,我似乎无法弄清楚这一点。

我只是想写一个简单的登录屏幕,但我似乎无法将变量传递给我的“登录”函数。

所以这是我在帖子页面上调用的代码......

$Email = $_POST["Email_Address"];
    $Password = $_POST["Password"];

    // check to see if the login is valid
    $ValidLogin = ValidateLogin($Email, $Password, $ErrorMessage);

我之前在一个单独的包含文件中声明了 ValidateLogin,该文件在此代码之前调用。

function ValidateLogin($EmailAddress, $Password, &$ErrorMessage){

    $ErrorMessage = ""; 


} 

当我查看 ValidateLogin 函数中的变量时,它们是空白的?我让这段代码在另一个项目上工作,但不明白为什么它在这里不起作用。

任何帮助,将不胜感激。

4

2 回答 2

2

就个人而言,我不会使用引用变量——因为引用比其他语言少得多。由于这个事实,通过引用参数声明往往会产生丑陋的问题。

在那里我会写这个方法,它返回一个逻辑值和一个错误消息

/**
*
* Checks email-address and password vs. the list of all valid user credentials.
* Returns an array, with two elements
*  [0]  -> TRUE iff. credentials are valid
*  [1]  -> An error-message, which may be posted to the result web-page
*
* @param string $EmailAddress - An email-address
* @param string $Password - A password
* @returns array - array( bool, string )
*/
function ValidateLogin( $EmailAddress, $Password ){

   // Do whatever is possible to verify credentials
   return array( TRUE, 'this is a message' );

}

你会像这样使用这个方法:

$Email = $_POST["Email_Address"];
$Password = $_POST["Password"];

// check to see if the login is valid
list( $ValidLogin, $errorMessage ) = ValidateLogin( $Email, $Password );

请注意,这list()是一种语言结构,用于拆分列表。在此处查找文档

FORM 元素的 POST 方法

请不要,您的表单需要像这样读取才能将值传递$_POST给 PHP:

<form action="theActualScriptname.php" method="post">
   ... form elements ..
</form>

不要忘记:元素的method属性form是必不可少的!

于 2012-09-01T21:17:32.353 回答
0

回到原来的问题,我确实让它工作了。这似乎是一个范围问题,该函数是在一个 Switch 块中声明的,在该块中我包含带有函数声明的文件(在本例中为 ValidateLogin())。该函数在 Switch Block 之外被调用。当我移动函数声明时,它起作用了。

我觉得很奇怪,它无论如何都运行了函数,但只是没有传递参数,它们都是空白的。我使用 Eclipse/XDebug 单步执行代码,我可以看到参数,一旦我单步执行该函数就会消失。

也许有人可以告诉我为什么会这样?为什么它调用函数,但不传递参数。

于 2012-09-02T19:22:50.677 回答