变量未传递给Function

时间:2012-09-01 21:08:28

标签: php variables

我刚刚再次回到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函数中的变量时,它们是空白的吗?我有这个代码在另一个项目上工作,但不明白为什么它不在这里工作。

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:2)

就个人而言,我不会使用by-reference变量 - ,因为by-reference远远少于其他语言。由于这个事实,by-reference参数声明往往会导致丑陋的问题。

我会写这个方法,返回逻辑值和错误信息

/**
*
* 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()是一种语言结构,它会拆分列表。找到documentation here

FORM元素的POST方法

请注意,您的表单需要像这样读取以将值$_POST传递给PHP:

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

不要忘记:method元素的form属性至关重要!

答案 1 :(得分:0)

回到最初的问题,我确实让它运转了。看起来这是一个范围问题,该函数在Switch块中声明,其中包含具有函数声明的文件(在本例中为ValidateLogin())。该功能在Switch Block之外被调用。当我移动函数声明时它起作用了。

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

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

相关问题