我刚刚再次回到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函数中的变量时,它们是空白的吗?我有这个代码在另一个项目上工作,但不明白为什么它不在这里工作。
任何帮助都将不胜感激。
答案 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逐步完成了代码,我可以看到参数,一旦我进入函数就消失了。
也许有人可以告诉我为什么会这样?为什么调用函数,但不传递参数。