Forum » Server-Side scripting » Wachtwoord
Berichten: 2103
avatar
Offline Stuur privebericht
Geachte leden,

Ik ben bezig met het profiel wijzigen gedeelte voor me spel.
Nu wil ik dat spelers een absoluut veilig wachtwoord instellen.

Nu ben ik op het gedeelte dat het stukje PHP moet controleren of er nummers en letters in zitten.

- ctype_alnum
- ctype_digit
- ctype_alpha

De controle ziet er als volgt uit, dit is het relevante stukje code.

Code | Selecteer Alles
minimaliseren
1
2
3
4
5
6
7
8
<?PHP
//$newpw klopt die heb ik bovenin het script namelijk.

elseif (!ctype_alnum($newpw) AND !ctype_digit($newpw) AND !ctype_alpha($newpw))
{
    echo 
"Make sure your new password containing both numbers and letters.<hr>";
}
?>


Heeft iemand enig idee wat er precies fout aan is, ik heb al rondgevraagd en gezocht maar komen er niet helemaal uit.

Alvast bedankt

mvg,
superior
22-10-2010 22:20
Dit topic is 256 keer bekeken door 48 verschillende leden
Reacties op: "Wachtwoord"
1 | 2 Volgende pagina
WAN\'T TO LEARN SOMETHING
Berichten: 1564
avatar
Offline Stuur privébericht
AND vervangen door &&
22-10-2010 22:26
Berichten: 2103
avatar
Offline Stuur privébericht
Maakt geen verschil, blijft het gedeelte gewoon negeren..
22-10-2010 22:29
WAN\'T TO LEARN SOMETHING
Berichten: 1564
avatar
Offline Stuur privébericht
vanuitgaande dat je error_reporting aan hebt staan:

Misschien om !ctype_prefix($newpw) ook haakjes zetten
22-10-2010 22:34
Berichten: 2103
avatar
Offline Stuur privébericht
Uiteraard staat me error_reporting gewoon aan voor debuggen.

Kan alleen niks over ctype_prefix vinden, kan je uitleg erover geven?
22-10-2010 22:37
Berichten: 2123
avatar
Offline Stuur privébericht
In je if statement staat nu feitelijk:

Als het nieuwe wachtwoord NIET bestaat uit alleen maar letters en cijfers EN NIET bestaat uit alleen maar cijfers EN NIET bestaat uit alleen maar letters DAN is het niet goed.

Dat is iets heel anders dan een wachtwoord dat zowel letters en cijfers moet bevatten. Het volgende if-statement lus zal dat valideren:

Code | Selecteer Alles
minimaliseren
1
2
3
if(!ctype_digit($pass) && !ctype_digit($pass) && ctype_alnum($pass)) {
  echo 
'Dit wachtwoord bestaat uit letters en cijfers, met minimaal één letter, en minimaal één cijfer.';
}


Echter, dat is heel wat anders dan een goed wachtwoord. Een goed wachtwoord is minstens 8 tekens lang, bevat letters (hoofdletters en kleine letters), cijfers en vreemde tekens.
22-10-2010 22:46
Berichten: 2103
avatar
Offline Stuur privébericht
@Killingdevil
Verrassing, onderin wordt gecontroleerd of hij 9 tekens is
En daar komt nog eens bij dat het door een SALT gaat, dus dan zal hij wel veilig zijn opgeslagen.
Maar waarom een if statement als ik bovenin al een if heb?

De bedoeling is dat de user een wachtwoord zoals bijvoorbeeld: a1B2c3D maakt.
Ben ik nou gigantisch fout bezig, of snap ik je uitleg gewoon niet helemaal?

Even de hele code erbij gepakt, behalve gevoelige informatie.

Code | Selecteer Alles
minimaliseren
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?PHP
if ($user['password'] != password($oldpw$salt))
{
    echo 
"The old password is incorrect.<hr>";
}
elseif (
$newpw != $repeatpw)
{
    echo 
"The new passwords don't match.<hr>";
}
elseif (!
ctype_alnum($newpw) && !ctype_digit($newpw) && !ctype_alpha($newpw))
{
    echo 
"Make sure your new password containing both numbers and letters.<hr>";
}
elseif (
trim(strlen($newpw)) < 9)
{
    echo 
"Please make sure your new password is at least 9 characters long.<hr>";
}
else {
    
    
//De rest staat hieronder.
}
?>
22-10-2010 22:51
Berichten: 2123
avatar
Offline Stuur privébericht
Zet mijn if statement er maar eens in plaats van de if statement die je al in je startpost geeft. Test het dan nogmaals, dan denk ik wel dat je me snapt.
22-10-2010 22:58
Berichten: 2103
avatar
Offline Stuur privébericht
@Killingdevil
Het werkt nog steeds niet, als ik wachtwoord "oooooooooo" doe dan gaat hij gewoon door met de wijziging.

De bedoeling is dat hij moet aangeven dat er letters en cijfers in moeten zitten..
22-10-2010 23:01
Berichten: 2123
avatar
Offline Stuur privébericht
Foutje van mij kant:

Code | Selecteer Alles
minimaliseren
1
2
3
if(!ctype_digit($pass) && !ctype_alpha($pass) && ctype_alnum($pass)) {
  echo 
'Dit wachtwoord bestaat uit letters en cijfers, met minimaal één letter, en minimaal één cijfer.';
}


Had twee keer ctype_digit in plaats van ctype_digit en ctype_alpha. Handig!
22-10-2010 23:04
Berichten: 2103
avatar
Offline Stuur privébericht
En zelfs dat werkt niet

Snap er helemaal niks van, de server heeft in php.ini de ctype wel geactiveerd dus daar legt het niet aan..
22-10-2010 23:06
Reageer op: "Wachtwoord"
1 | 2 Volgende pagina
Je kan niet reageren omdat je niet bent ingelogd. Inloggen of Aanmelden