Citat:
Ursprungligen postat av
bosscs2
Vill jämföra två teckensträngar i ett if statement men får det inte att funka.
Raden det gäller är:
Kod:
(strcmp($password[$_counter],$lösenord) == 0 and strcmp($userID[$_counter],$användarnamn) == 0)
vad är det för fel?
Kod:
<?php
$namnARRAY;
$lösenordARRAY;
$presentationARRAY;
if($_SERVER['REQUEST_METHOD'] === 'POST'){
$användarnamn = $_POST['name'];
$lösenord = $_POST['pwd'];
$userID=array('abc','def','ghi');
$password=array('volvo','bmw','opel');
$rows=count($password);
for($_counter = 0; $_counter < $rows; $_counter++) {
if(strcmp($password[$_counter],$lösenord) == 0 and strcmp($userID[$_counter],$användarnamn) == 0){
echo 'you are logged in';
echo '<br/>';
} else {
echo 'iteration '.$_counter . '<br>';
}
};
}
?>
Kör alltid med
strict testing vid strcmp:
Kod:
(strcmp($password[$_counter],$lösenord) === 0 and strcmp($userID[$_counter],$användarnamn) === 0)
Kan det ha löst ditt problem? Dvs, istället för
== 0 så använder du strict
=== 0, samt istället för
and så bör du använda
&&, lite pro tips!
Dessutom hade jag hellre kört så här, så slipper du overheaden med att räkna arrayn, och behöva hålla koll på vilken som är vad:
Kod:
<php
if($_SERVER['REQUEST_METHOD'] === 'POST'){
$users = ['abc' => 'volvo', 'def' => 'bmw', 'ghi' => 'opel'];
$username = isset($_POST['name']) ? $_POST['name'] : '';
$password = isset($_POST['pwd']) ? $_POST['pwd'] : '';
foreach($users as $user => $pswd){
if($username === $user && $password === $pswd){
echo 'Yay! I was logged in.'; break;
}
}
}
?>
Eller helt enkelt bara:
Kod:
<php
if($_SERVER['REQUEST_METHOD'] === 'POST'){
$users = ['abc' => 'volvo', 'def' => 'bmw', 'ghi' => 'opel'];
$username = isset($_POST['name']) ? $_POST['name'] : '';
$password = isset($_POST['pwd']) ? $_POST['pwd'] : '';
if(isset($users[$username]) && $password === $users[$username]){
echo 'Yay! I was logged in.';
}
else{
echo 'Wrong username or password';
}
}
?>
Har ej testat koden ovan då jag just nu sitter via mobilen. 😊