Pagina 1 van 1
mySQL : WHERE of LIKE ?
Geplaatst: 17 maa 2003, 14:03
door Pi R²
ik heb een vraagje (weeral

):
Ik ben iets aant maken met een nieuwsysteem met verschillende profielen enzo, en ge moet inloggen met een paswoord.
Tis de bedoeling dat een 5-tal mensen kunnen inloggen, en hun gebruikersnaam en wachtwoord moeten geven.
Maar om de gegeven gebruikersnaam en paswoord te vergelijken met wat in de database staat, had ik aan hetvolgende gedacht:
Code: Selecteer alles
SELECT * FROM ledenlijst WHERE username=wa da ingegeven is
nu ist probleem dat, hoewel de juiste tabel en database bestaat, hij als fout geeft : no such table. Ik vermoed dus dat mijn mySQL syntax verkeerd is, of moet ik beter LIKE gebruiken?
Concreet : hoe haalt ge (het beste) een query op waarvan een bepaald veld exact is wa da gij hebt opgegeven?
Geplaatst: 17 maa 2003, 14:23
door NuKeM
Probeer eens:
Code: Selecteer alles
SELECT username, password FROM ledenlijst WHERE username='wa da ingegeven is'
Let op de ' '.
Een like wil je zeker niet gebruiken om logins te checken

dan kan iemand bvb inloggen (mits hij het paswoord kent) met 'adm' terwijl de echte login 'administrator' is om maar wat te zeggen... niet het toppunt van veiligheid dus.
Als je wat basics wil leren over SQL kan je bvb hier een kijkje nemen:
http://www.w3schools.com/sql/default.asp
Geplaatst: 17 maa 2003, 14:51
door Pi R²
Merci Nukem,
ik dacht wel dat WHERE het beste is, en dat ge met LIKE alleen maar kijkt of er iets is waar het op trekt, maar kwist nie hoe ge het moet schrijven. En das maar nen basiscursus PHP da ik hier liggen heb, over mySQL syntax weinig uitleg.
PS : is dit veilig genoeg als ge dit schrijft :
Code: Selecteer alles
SELECT * FROM ledenlijst WHERE username='ietske' AND paswoord='ook ietske'
en dan zien of er een record gevonden wordt?
Geplaatst: 17 maa 2003, 15:10
door Erik
Pi R²,
volgens mij ga je veel te snel in het "leerproces" MySQL is niet voor php newbies .Je moet niet willen lopen voor je kan stappen want dan ga je vallen.Iedereen moet onderaan de ladder beginnen Pi R² .Dit is geen kritiek maar een goede raad
http://www.hotscripts.com/PHP/Scripts_and_Programs/
en
http://www.hotscripts.com/PHP/Scripts_a ... ublishing/
Geplaatst: 17 maa 2003, 15:29
door NuKeM
Pi R² schreef:Merci Nukem,
ik dacht wel dat WHERE het beste is, en dat ge met LIKE alleen maar kijkt of er iets is waar het op trekt, maar kwist nie hoe ge het moet schrijven. En das maar nen basiscursus PHP da ik hier liggen heb, over mySQL syntax weinig uitleg.
PS : is dit veilig genoeg als ge dit schrijft :
Code: Selecteer alles
SELECT * FROM ledenlijst WHERE username='ietske' AND paswoord='ook ietske'
en dan zien of er een record gevonden wordt?
Ja, je kan ook hetvolgende doen:
Code: Selecteer alles
$sql_login = "SELECT COUNT(*) FROM ledenlijst WHERE username='ietske' AND paswoord='ook ietske'";
$numb_of_counts = mysql_result(mysql_query($sql_login), 0);
if ($numb_of_counts == 1) then
{
/* hier uw code voor als er een juist paswoord is ingegeven, session aanmaken ofzo */
}
else
{
/* hier de code indien er iets niet klopt */
}
Geplaatst: 17 maa 2003, 20:35
door meon
Ik heb ondertussen wel de gewoonte van paswoorden altijd enkel de md5-hash op te slaan. Niet iedereen is er zo zot van dat de eigenaar zomaar de wachtwoorden kan lezen...
Dat inbouwen is vrij eenvoudig, dat kan meteen in uw query:
bij het aanmaken:
Code: Selecteer alles
INSERT INTO table VALUES ('".$_POST['username']."','".md5($_POST['password'])."');";
en bij het opvragen:
Code: Selecteer alles
$sql = "SELECT COUNT(*) FROM table WHERE username='".$_POST['username']."' AND paswoord='".md5($_POST['password']."';";
Wat dan wordt opgeslagen is niet te lezen of terug te halen, maar het resultaat van een md5() is wel altijd hetzelfde, dus kan je mee vergelijken...
Geplaatst: 17 maa 2003, 21:59
door Pi R²
voorwa dient da md5 spullement eigenlijk?
Geplaatst: 17 maa 2003, 22:34
door NuKeM
Pi R² schreef:voorwa dient da md5 spullement eigenlijk?
Dat zet gewoon bvb een paswoord om in een code. Als je in je paswoord één letter veranderd krijg je een andere code, bij hetzelfde paswoord krijg je steeds dezelfde code terug.
Waarom is dit handig? Wel, op deze manier kan je bvb zoals hier is getoond een paswoord opslaan in een db in een 'onleesbare' vorm, zodat indien iemand je db in handen krijgt hij de paswoorden niet terug kan omzetten naar een bruikbare vorm (de vorm die hij kan ingeven om bvb in te loggen).
Als jouw programma nu wil checken of een paswoord correct is gaat hij gewoon de md5 code van beide vergelijken (hij zet het opgegeven paswoord om in md5 code en vergelijkt die code met de opgevraagde code uit de database).
Een veilige manier van werken dus.
Geplaatst: 17 maa 2003, 23:51
door meon
Vergelijk het met versleutelen van een tekst, met het verschil dat dit 1-richtings-verkeer is: je kan versleutelen, maar niet "ontsleutelen". Dat heeft als voordeel dat je nooit het origineel kan te weten komen. Het nadeel is dat je nooit het origineel te weten kan komen. Als je dus iemands wachtwoord wilt ophalen, kan dat niet.
Het idee is dat niemand iets heeft aan het te weten komen van wat er in de database staat, want die md5-hash kan je niet gebruiken om in te loggen...
Geplaatst: 18 maa 2003, 19:41
door Pi R²
Maar het is in mijn geval de bedoeling om zelf een rekord toe te voegen met paswoord en gebruikersnaam via phpmyadmin, en niet via een of ander inschrijfsysteem (slechts een beperkt aantal personen mag ervan gebruik maken). Moet ik dan voor mijzelf een simpel paginake maken dat ge als ge iemand een paswoord wilt geven da der gewoon eerst eens doordraait ofzo?
een beetje extra moeite om toe te voegen, maar ne goeien tip. Kgaan mijn spel direct aanpassen se. Merci meon en nukem
Geplaatst: 18 maa 2003, 20:10
door Pi R²
ha, ik heb het al gevonden, ge kunt als ge nen nieuwe rekord toevoegt, als functie in phpmyadmin meegeven dat da in md5 moet zijn.
Geplaatst: 18 maa 2003, 21:58
door meon
Inderdaad.
Dat is nog een voordeel van md5() - > het resultaat daarvan is op elk systeem hetzelfde, iets dat niet het geval is met crypt().