5
21/10/2024 1:46 pm
Topic starter
Write a program that checks if a given password is valid.
Password rules are:
- 6 – 10 characters (inclusive)
- Consists only of letters and digits
- Have at least 2 digits
If a password is valid print “Password is valid”. If it is not valid, for every unfulfilled rule print a message:
- "Password must be between 6 and 10 characters"
- "Password must consist only of letters and digits"
- "Password must have at least 2 digits"
Examples:

Hint: Write a function for each rule.
2 Answers
4
21/10/2024 1:47 pm
Here is my code with functions:
<?php
$password = readline();
$validLength = hasValidLength($password);
$validContent = hasValidContent($password);
$validEnoughDigits = hasEnoughDigits($password);
if (!$validLength) {
echo "Password must be between 6 and 10 characters" . PHP_EOL;
}
if (!$validContent) {
echo "Password must consist only of letters and digits" . PHP_EOL;
}
if (!$validEnoughDigits) {
echo "Password must have at least 2 digits" . PHP_EOL;
}
if (hasValidLength($password) && hasValidContent($password) && hasEnoughDigits($password)) {
echo "Password is valid" . PHP_EOL;
}
//function checking password's length
function hasValidLength(string $pass): bool {
if (strlen($pass) < 6 || strlen($pass) > 10) {
return false;
}
return true;
}
//function checking if the password has only digits and numbers
function hasValidContent(string $pass): bool {
if (!ctype_alnum($pass)) {
return false;
}
return true;
}
//function checking if the password has at least 2 numbers
function hasEnoughDigits(string $pass): bool {
$numberCheck = "";
for ($i = 0; $i < strlen($pass); $i++) {
if (ctype_digit($pass[$i])) {
$numberCheck .= $pass[$i];
}
}
if (strlen($numberCheck) < 2) {
return false;
}
return true;
}
2
21/10/2024 1:48 pm
My solution without functions - only with logic:
<?php
$password = readline();
$valid = true;
//Checking password's length
if (strlen($password) < 6 || strlen($password) > 10) {
echo "Password must be between 6 and 10 characters" . PHP_EOL;
$valid = false;
}
//Checking if the password has only digits and numbers
if (!ctype_alnum($password)) {
echo "Password must consist only of letters and digits" . PHP_EOL;
$valid = false;
}
//Checking if the password has at least 2 numbers
$numberCheck = "";
for ($i = 0; $i < strlen($password); $i++) {
if (ctype_digit($password[$i])) {
$numberCheck .= $password[$i];
}
}
if (strlen($numberCheck) < 2) {
echo "Password must have at least 2 digits" . PHP_EOL;
$valid = false;
}
if ($valid == true) {
echo "Password is valid" . PHP_EOL;
}
I've used: ctype_alnum() and ctype_digit() PHP functions for validation of the password
