0
Help solve the following error in my signup.php file
<?php if(count(errors) > 0): ?> <div class="alert alert-danger"> <?php foreach($errors as $error): ?> <li><?php echo $error; ?></li> <?php endforeach; ?> </div> <?php endif; ?> <?php if(count(errors) > 0): ?> THIS IS THE LINE WITH THE ERROR These two errors are evident on my registration form Warning: Use of undefined constant errors - assumed 'errors' (this will throw an Error in a future version of PHP) in C:\xampp\htdocs\USER-VERIFICATION\signup.php Warning: count(): Parameter must be an array or an object that implements Countable in C:\xampp\htdocs\USER-VERIFICATION\signup.php on this line Kindly help
12 Réponses
+ 1
Hello Evans,
Variables in PHP are written with $ prefix, and <errors> on that line is missing that symbol. So PHP thought you passed a constant, instead of a variable (an array to be specific).
Try to change `errors` to `$errors` and run the code again.
+ 1
Thanks Ipang I appreciate your kind support. It really worked but I have another error in the following:
if ($password !== $passwordConf) {
$errors['password'] = "The two password do not match";
}
if ($password !== $passwordConf) ON THIS LINE!!
It shows the two errors below
Notice: Undefined variable: password in C:\xampp\htdocs\USER-VERIFICATION\controllers\authController.php
Notice: Undefined variable: passwordConf in C:\xampp\htdocs\USER-VERIFICATION\controllers\authController.php
+ 1
simply put??
My intention is to compare password and password confirm so that if they don,t match an error msg "passwords do not match "is shown to the user as they try to register. This is //validation.
// validation
if (empty($username)) {
$errors['username'] = "Username required";
}
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$errors['email'] = "Email address is invalid";
}
if (empty($email)) {
$errors['email'] = "Email required";
}
if (empty($password)) {
$errors['password'] = "Password required";
}
if ($password !== $passwordConf) {
$errors['password'] = "The two password do not match";
}
+ 1
Simply put = in simple way
(Edit)
Evans,
I understand your intention by comparing $password to $passwordConf. But the problem here is, PHP doesn't recognize $password or $passwordConf. So I suggest you to track your code, where $password and $passwordConf are initialized. Start searching for $password and $passwordConf from beginning of validation code block upwards.
It will be better if you can save a copy of that troubling file in SoloLearn and share the code link. Partial code like this doesn't help much trying to isolate the problem.
+ 1
ok let me share to you the link
https://code.sololearn.com/w58SM1kGX7f9 for the authController.php
https://code.sololearn.com/wYIQW9plcHIM for the signup.php
+ 1
Thanks for the changes I'll send you the rectified code once I have made the changes.
+ 1
I really appreciate your kind support, It has finally worked. Thanks a lot Ipang.
I really feel so humbled for your support
0
Evans,
The warning message clearly stated that neither <$password> nor <$passwordConf> was defined. Solution is to make sure those variables are properly initiaialized.
0
how do you initialize them properly please??
0
Variable initialization means you assign a value for the variable.
The warning for <$password> and <$passwordConf> came because PHP don't see any such variable. Next thing it sees is that you try to use those variable names in a comparison (using `if` statement). You can't compare things that do not exist, simply put.
0
Evans,
Have you solved the problem yet buddy?
I have read your codes. Thanks for elaborating with the codes, it helps to understand better where the problem lies by now 👍
Analysis:
* FILE: signup.php
It might be okay to remove line 1 and line 55. Unnecessary PHP code block start at line 1, and block end at line 55.
* FILE: authController.php
Line 10-14:
Variables have underscore in their names ($_username, $_email, $_password, $_passwordConf).
The validation block (Line 16-30) checks for and uses different variable names (that do not exist - uninitialized)
Line 35:
Second argument for `bind_param` refers to $email. It should refer to $_email.
Line 45:
$password does not exist. Use $_password instead
Line 51:
Some arguments for `bind_param` refer to non existing variable names => $username, $email, $password.
Line 57:
Use of non existing variable $username.
Line 58:
Use of non existing variable $email.
P.S. Use consistent style for variable naming convention 👍
0
No problem Evans, I'm glad if it helps 👌