Reputation: 6839
I have a script to register a user or check if there are any errors with the users info like non matching passwords or if user already exists etc.
When I am printing the error message for if a user name is already taken, the value of $errorMessage is always 0 and I am not sure why:
<?php
//get user name and passwords
$errorMessage = "Error: ";
$successMessage;
if ($p1 == ""){
$errorMessage = $errorMessage + "You left your password blank. ";
echo $errorMessage;
$fail = $fail + 1;
}
if ($p2 == ""){
$errorMessage = $errorMessage + "You did not type your password in a second time. ";
$fail = $fail + 1;
echo $errorMessage;
}
//hash passwords
$hash1 = sha1($p1);
$hash2 = sha1($p2);
$fail = 0;
//check if user name is taken
if($hash1 != $hash2){
$fail = $fail + 1;
$errorMessage = $errorMessage + "Your passwords do not match. ";
echo $errorMessage;
}
if ($numRows > 0){
$errorMessage = $errorMessage + "That User name is already taken, please try another username. ";
$fail = $fail + 1;
echo $errorMessage;
}
if ($userName == ""){
$errorMessage = $errorMessage + "You left your username blank. ";
$fail = $fail + 1;
echo $errorMessage;
}
if ($email == ""){
$errorMessage = $errorMessage + "You left your email blank. ";
$fail = $fail + 1;
echo $errorMessage;
}
//do not register user if fails
if( $fail > 0){
//print fail message JSON
$successMessage = "fail";
}
//register user
else{
//add user to database
//print json
$d = array('status' => "$successMessage" , 'error' => "$errorMessage" );
$jsonCode = json_encode($d);
header('Content-Type: application/json');
echo $jsonCode;
?>
Upvotes: 0
Views: 72
Reputation: 157
You are not concatenating correctly. In PHP you use .. to concatenate. I fixed the code for you:
<?php
//get user name and passwords
$errorMessage = "Error: ";
$successMessage;
if ($p1 == ""){
$errorMessage = $errorMessage."You left your password blank. ";
echo $errorMessage;
$fail = $fail + 1;
}
if ($p2 == ""){
$errorMessage = $errorMessage."You did not type your password in a second time. ";
$fail = $fail + 1;
echo $errorMessage;
}
//hash passwords
$hash1 = sha1($p1);
$hash2 = sha1($p2);
$fail = 0;
//check if user name is taken
if($hash1 != $hash2){
$fail = $fail + 1;
$errorMessage = $errorMessage."Your passwords do not match. ";
echo $errorMessage;
}
if ($numRows > 0){
$errorMessage = $errorMessage."That User name is already taken, please try another username. ";
$fail = $fail + 1;
echo $errorMessage;
}
if ($userName == ""){
$errorMessage = $errorMessage."You left your username blank. ";
$fail = $fail + 1;
echo $errorMessage;
}
if ($email == ""){
$errorMessage = $errorMessage."You left your email blank. ";
$fail = $fail + 1;
echo $errorMessage;
}
//do not register user if fails
if( $fail > 0){
//print fail message JSON
$successMessage = "fail";
}
//register user
else{
//add user to database
//print json
$d = array('status' => "$successMessage" , 'error' => "$errorMessage" );
$jsonCode = json_encode($d);
header('Content-Type: application/json');
echo $jsonCode;
?>
Upvotes: 0
Reputation: 482
You have to concatenate the string like so:
$errorMessage = $errorMessage . "You left your password blank. ";
Upvotes: 0
Reputation: 190976
PHP's concat operator is the period or dot (.
) not plus (+
).
Upvotes: 7