PHP returning an error message and false
16,863
Solution 1
Why not just check if it's true
, and handle from there.
$login = check_login('user', 'pass');
if($login === true)
loginUser(); //login was successful, finalize or whatever
else
echo $login; //error message
Solution 2
Another method you could use is to set an error message inside the class and call a function to fetch it later.
class exampleClass {
private $error_message = '';
function exampleFunction($argument) {
if($argument == 'lemons') {
return true;
} else {
$this->error_message = 'Argument was not lemons.';
return false;
}
}
function getErrorMessage() {
return $this->error_message;
}
}
$example_session = new exampleClass();
if( ! $example_session->exampleFunction('apples') )
echo $example_session->getErrorMessage();
Solution 3
I know this is kinda an old post, but, it gets a lot of reviews. So let me just add another answer to the great answers here.
One solution would be to pass a variable by reference like PHP style. Example
Pseudo code:
The function
//Notice the '&' before the variable name.
function check_login($user, $pass, &$message) {
if(!isset($user) || $user == '') {
$message["status"] = false; //fail
$message["message"] ='Please enter a valid username';
}
elseif(!isset($pass) || $pass == '') {
$message["status"] = false; //fail
$message["message"]= 'Please enter a valid password';
}
elseif (isset($pass) || $pass != ''){
$message["status"] = true; //success
$message["message"]= 'Username and password are valid';
return true;
}
return false;//you can return from within the if condition if you wish
}
The Call:
/* $message variable will be assigned and populated in the function check_login() */
if(check_login($uname, $pword, $message = []) === true )
{
//Do your stuff here
//@message array is avaialble
echo message["message"];
}
else
{
//means false
echo message["message"];
}
Solution 4
Why not try throwing an exception
function check_login($user, $pass) {
if (empty($user)) {
throw new InvalidArgumentException('Please enter a valid username');
}
if (empty($pass)) {
throw new InvalidArgumentException('Please enter a valid password');
}
return true
}
// snip
try {
check_login($userValue, $passValue);
} catch (Exception $e) {
// an error occurred
echo $e->getMessage();
}
![madhushankarox](https://i.stack.imgur.com/Gibls.jpg?s=256&g=1)
Author by
madhushankarox
Updated on June 14, 2022Comments
-
madhushankarox about 2 years
I have a very simple PHP function to check log-in
function check_login($user, $pass) { if(!isset($user) || $user == '') { return 'Please enter a valid username'; } else if(!isset($pass) || $pass == '') { return 'Please enter a valid password'; } else { return 'true'; } }
How can I return an error message and false same time and return true instead of 'true' as a string. Like,
function check_login($user, $pass) { if(!isset($user) || $user == '') { return 'Please enter a valid username' //return false; } else if(!isset($pass) || $pass == '') { return 'Please enter a valid password' //return false; } else { return true; } }
So I can check like
if(check_login($uname, $pword)){
instead of checking likeif(check_login($uname, $pword)=='true'){
:)