未定义的变量:函数参数(PHP)

时间:2015-04-08 13:55:45

标签: php function post undefined function-parameter

我是PHP的新手,如果没有定义用户名和密码,我的PHP表单验证有问题会返回此错误。

注意:未定义的变量:第64行的D:\ hpsp \ controller \ loginvalidation.inc.php中的用户名

我使用2个函数(usernameValidation& passwordValidation)来检查$ _POST输入是否正确但我不知道我必须放置正确的脚本是什么以及在哪里,谢谢你提前。

<?php
session_start();
require_once('../model/pdo.inc.php');
// function for checking the username validation (not empty & Regex)
function usernameValidation($username) // Username as parameter
{
if ( !empty($_POST['username']) )
{
    $username = strtolower(htmlspecialchars($_POST['username'])); // username will be tranform to lowercase before regex matching

    if ( preg_match('#^[a-z0-9\.]{5,20}$#', $username) ) //  5 <= username lenght <= 20 in lowercase character to be valid
    {
        return true; // return true when the username is valid
    }
    else
    {
        echo "Invalid username, please re-try" ;
    }
}
else
{
    echo "Enter your username";
}
}

// function for checking the password validation (not empty & Regex)
function passwordValidation($password) // Password as parameter
{
if ( !empty($_POST['password']) )
{
    $password = htmlspecialchars($_POST['password']) ; // Protect the password

    if ( preg_match('#^[a-zA-Z0-9\.-_@$()]{6,10}$#', $password) ) // 6 <= password length <= 10 character to be valid
    {
        return true; // return true when password is valid
    }
    else 
    {
        echo "Invalid password, please re-try";   
    }
}
else
{

    echo "Enter your password";    
}
}


if ( usernameValidation($username) == true AND passwordValidation($password) == true )
{
// PDO Query (SELECT ...)
}

5 个答案:

答案 0 :(得分:0)

定义你的函数withow参数

function usernameValidation(){ ... }

并将其命名为

if ( usernameValidation() == true AND passwordValidation() == true )

答案 1 :(得分:0)

<?php
 session_start();
require_once('../model/pdo.inc.php');
// function for checking the username validation (not empty & Regex)
function usernameValidation($username) // Username as parameter
{
if ( !empty($_POST['username']) )
{
$username = strtolower(htmlspecialchars($_POST['username'])); // username will be tranform to lowercase before regex matching

if ( preg_match('#^[a-z0-9\.]{5,20}$#', $username) ) //  5 <= username lenght <= 20 in lowercase character to be valid
{
    return true; // return true when the username is valid
}
else
{
    echo "Invalid username, please re-try" ;
}
}
else
{
echo "Enter your username";
}
}

// function for checking the password validation (not empty & Regex)
function passwordValidation($password) // Password as parameter
{
if ( !empty($_POST['password']) )
{
$password = htmlspecialchars($_POST['password']) ; // Protect the password

if ( preg_match('#^[a-zA-Z0-9\.-_@$()]{6,10}$#', $password) ) // 6 <= password length <= 10 character to be valid
{
    return true; // return true when password is valid
}
else 
{
    echo "Invalid password, please re-try";   
}
}
 else
{

echo "Enter your password";    
}
}

$username = $_POST['username'];
$password = $_POST['password'];

if ( usernameValidation($username) == true AND   passwordValidation($password) == true )
{
 // PDO Query (SELECT ...)
}

答案 2 :(得分:0)

将您的最后一个if条件更改为以下代码:

if ( usernameValidation($_POST['username']) == true AND passwordValidation($_POST['password']) == true )
{

}

在您的函数中,只使用变量$username$password而不是(!)$_POST['username']$_POST['password']

答案 3 :(得分:0)

我会做这样的事情(注意你永远不想用电子邮件和密码回显个别邮件,以阻止黑客获取有关哪些是正确的信息:

session_start();
require_once('../model/pdo.inc.php');

//username and password will contain the posted resulte or FALSE
$username = usernameValidation();
$password = passwordValidation();
if (!$username OR !$password) {
    echo 'Invalid username or password!';
    die;
}
// PDO Query (SELECT ...)

// function for checking the username validation (not empty & Regex)
function usernameValidation() { // Username as parameter
    if (!empty($_POST['username'])) {
        $username = strtolower(htmlspecialchars($_POST['username'])); // username will be tranform to lowercase before regex matching

        if (preg_match('#^[a-z0-9\.]{5,20}$#', $username)) { //  5 <= username lenght <= 20 in lowercase character to be valid
            return $username; // return true when the username is valid
        }
    }
    return FALSE;
}

// function for checking the password validation (not empty & Regex)
function passwordValidation() { // Password as parameter
    if (!empty($_POST['password'])) {
        $password = htmlspecialchars($_POST['password']); // Protect the password

        if (preg_match('#^[a-zA-Z0-9\.-_@$()]{6,10}$#', $password)) { // 6 <= password length <= 10 character to be valid
            return $password; // return true when password is valid
        }
    }
    return FALSE;
}

答案 4 :(得分:0)

你被定义为$ username和$ password,它是$ _POST [&#39;用户名&#39;]和$ _POST [&#39;密码&#39;]。而你也可以在没有参数的情况下进行功能通过做出这些改变,你的问题就会解决。