Неопределенная переменная: параметр функции (PHP)

Я новичок в PHP, и у меня есть проблема с проверкой формы php, которая возвращает эту ошибку, если имя пользователя и пароль не определены.

Примечание: неопределенная переменная: имя пользователя в D: \ hpsp \ controller \ loginvalidation.inc.php в строке 64

Я использую 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 ...)
}

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;
}
0

Другие решения

Определите ваши функции с аргументами

function usernameValidation(){ ... }

и назовите это

if ( usernameValidation() == true AND passwordValidation() == true )
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 ...)
}
0

Измените свое последнее условие if на код ниже:

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

}

В ваших функциях используйте только переменные $username а также $password и не(!) $_POST['username'] а также $_POST['password']

0

вы определили $ username и $ password, это $ _POST [‘username’] и $ _POST [‘password’]. И вы также можете сделать функцию без параметра. сделав эти изменения, ваша проблема будет решена.

0
По вопросам рекламы [email protected]