Gebruikersnaam van loginsysteem onhoofdletter gevoelig maken (Opgelost)
Pietje - 15/10/2011 19:59 (laatste wijziging 16/10/2011 12:08)
Lid
Kan iemand mij helpen?
$username = clean($_POST[username]);
$password = md5($_POST[password]);
$date = date('Y-m-d');
$time = date('H:i:s');
$sql = mysql_query("select * from usr_users where username = '$username' and password = '$password'");
$check = mysql_num_rows($sql);
if($check!=1)
{
echo 'Kijk je alles even na?';
echo '<meta http-equiv="refresh" content="1;url=index.php" />';
$success = 'Failed';
if($content[loginlog]==1)
$sqllog = mysql_query("insert into usr_logs(user, ip, time, date, success) values('$username', '$ip', '$time', '$date', '$success')");
}
$username = clean( $_POST [ username] ) ;
$password = md5 ( $_POST [ password
] ) ; $sql = mysql_query ( "select * from usr_users where username = '$username ' and password = '$password '" ) ;
if ( $check != 1 )
{
echo 'Kijk je alles even na?' ; echo '<meta http-equiv="refresh" content="1;url=index.php" />' ; $success = 'Failed' ;
if ( $content [ loginlog] == 1 )
$sqllog = mysql_query ( "insert into usr_logs(user, ip, time, date, success) values('$username ', '$ip ', '$time ', '$date ', '$success ')" ) ; }
11 antwoorden
Gesponsorde links
WouterJ - 15/10/2011 20:02
HTML gevorderde
Gebruik PHP.net: strtolower . Zo zet je de string naar kleine letters en dan maken de hoofdletters niks meer uit.
Bedankt door: Pietje
Pietje - 15/10/2011 20:03 (laatste wijziging 16/10/2011 12:09)
Lid
Bedankt voor je snelle reactie! Alleen, ik weet niet hoe ik dat in mijn script moet bouwen.
Een error bij dit:
$username = strtolower(clean($_POST[username]));
$password = md5($_POST[password]);
$date = date('Y-m-d');
$time = date('H:i:s');
$sql = strtolower(mysql_query("select * from usr_users where username = '$username'")) and mysql_query("select * from usr_users where password = '$password'");
$check = mysql_num_rows($sql);
$password = md5 ( $_POST [ password
] ) ;
Citaat:
Warning: strtolower() expects parameter 1 to be string, resource given in /home/code/domains/website/public_html/bestand.php on line 60
Warning: mysql_num_rows() expects parameter 1 to be resource, null given in /home/code/domains/website/public_html/bestand.php on line 61
EDIT: Ik snap wel dat er niets van klopt...
WouterJ - 15/10/2011 20:42
HTML gevorderde
Een mysql_query returnd (geeft terug) een resource. Hiermee kun je niks, deze data moet je eerst fetchen en dan kan je ze gebruiken.
Voor fetchen heb je vele methodes, maar ik raad je PHP.net: mysql_fetch_assoc aan.
Vervolgens kun je deze data gaan gebruiken. Een uitgebreide uitleg heb ik eerder deze week hier geplaatst: http://www.sitemasters.be/forum/2/39794/1#id253478
vinTage - 15/10/2011 20:45
Nieuw lid
Select is gewoon case insensitive
Pietje - 15/10/2011 20:52 (laatste wijziging 16/10/2011 12:12)
Lid
Mijn gehele script:
if($login==login)
{
$username = clean($_POST[username]);
$password = md5($_POST[password]);
$date = date('Y-m-d');
$time = date('H:i:s');
$sql = mysql_query("select * from usr_users where username = '$username' and password = '$password'");
$check = mysql_num_rows($sql);
if($check!=1)
{
echo 'Kijk je alles even na?';
echo '<meta http-equiv="refresh" content="1;url=index.php" />';
$success = 'Failed';
if($content[loginlog]==1)
$sqllog = mysql_query("insert into usr_logs(user, ip, time, date, success) values('$username', '$ip', '$time', '$date', '$success')");
}
else
{
$user = mysql_fetch_array($sql);
$_SESSION[usr_name] = $user[username];
$_SESSION[usr_level] = $user[level];
$_SESSION[usr_ip] = $ip;
if($_SESSION[usr_level]==1)
{
$success = 'Success';
echo 'Je bent ingelogd als '. $username .'!'."\n";
echo '<meta http-equiv="refresh" content="1;url=me.php" />'."\n";
}
else
{
$success = 'Failed';
echo 'Je hebt te weinig rechten.'."\n";
echo '<meta http-equiv="refresh" content="1;url=index.php" />'."\n";
session_unset();
session_destroy();
}
}
if($content[loginlog]==1)
$sqllog = mysql_query("insert into usr_logs(user, ip, time, date, success) values('$username', '$ip', '$time', '$date', '$success')");
}
if($login==logout)
{
session_unset();
session_destroy();
echo 'Succesvol uitgelogd!'."\n";
}
if ( $login == login)
{
$username = clean( $_POST [ username] ) ;
$password = md5 ( $_POST [ password
] ) ; $sql = mysql_query ( "select * from usr_users where username = '$username ' and password = '$password '" ) ;
if ( $check != 1 )
{
echo 'Kijk je alles even na?' ; echo '<meta http-equiv="refresh" content="1;url=index.php" />' ; $success = 'Failed' ;
if ( $content [ loginlog] == 1 )
$sqllog = mysql_query ( "insert into usr_logs(user, ip, time, date, success) values('$username ', '$ip ', '$time ', '$date ', '$success ')" ) ; }
else
{
$_SESSION [ usr_name] = $user [ username] ;
$_SESSION [ usr_level] = $user [ level] ;
$_SESSION [ usr_ip] = $ip ;
if ( $_SESSION [ usr_level] == 1 )
{
$success = 'Success' ;
echo 'Je bent ingelogd als ' . $username . '!' . "\n " ; echo '<meta http-equiv="refresh" content="1;url=me.php" />' . "\n " ; }
else
{
$success = 'Failed' ;
echo 'Je hebt te weinig rechten.' . "\n " ; echo '<meta http-equiv="refresh" content="1;url=index.php" />' . "\n " ; }
}
if ( $content [ loginlog] == 1 )
$sqllog = mysql_query ( "insert into usr_logs(user, ip, time, date, success) values('$username ', '$ip ', '$time ', '$date ', '$success ')" ) ; }
if ( $login == logout)
{
echo 'Succesvol uitgelogd!' . "\n " ; }
Ik snap er nog steeds niets van, ik ben niet zo'n pro in mysql en php
kilian - 15/10/2011 23:11
Lid
Je gebruikt geen ' tekentjes bij je indexen van je $_POST array's. Misschien dat dat er wel iets mee te maken heeft.
Vervang eens $_POST[eenindex] door $_POST['eenindex'], misschien dat dat wel werkt?
Deze opmerking telt trouwens ook voor $_SESSION, $_COOKIE, $content en alle andere array's die je gebruikt.
Mocht dat niet werken, dan kan volgende tip misschien nog van pas komen.
Als je vermoed dat hetgeen je terugkrijgt van je query dat je met mysql_query oproept moet je die query eens in een echo zetten, dan kan je de query, zoals deze aan de database wordt doorgegeven, inclusief de ingevulde variabelen bekijken evn eventueel uitvoeren in phpMyAdmin, om te controleren dat daar al niets mis mee is.
Vb:
mysql_query("select * from usr_users where username = '$username' and password = '$password'");
mysql_query ( "select * from usr_users where username = '$username ' and password = '$password '" ) ;
Als je nu hiervan nu het onderstaande maakt:
echo "select * from usr_users where username = '$username' and password = '$password'";
echo "select * from usr_users where username = '$username ' and password = '$password '" ;
WouterJ - 16/10/2011 09:13
HTML gevorderde
@pietje:
- MySQL heeft standaard hoofdletters schrijf dus de queries zo: SELECT iets, nogwat FROM tabel WHERE iets = 'nogwat'
- Haal variabele uit de quotes:
$naam = 'Wouter';
echo 'hallo'.$naam;
- Zorg ook voor een goede foutafhandeling. Voorbeeld: snipplr.com/view/45252/goede-foutafhandeling-mysql/
- Verder gewoon even lezen wat ik in mijn vorige bericht heb gezegd en het voorbeeld doorkijken, dan kom je er wel uit.
Pietje - 16/10/2011 09:30 (laatste wijziging 16/10/2011 12:13)
Lid
Zoiets kan ik ook doen denk ik, toch?
$username = $_POST('username');
$sql = [i]mysql_query("select * from usr_users where username");[/i]
if($username = $sql)
{
echo '//TEKST';
}
else
{
echo '//TEKST';
}
$username = $_POST ( 'username' ) ;
$sql = [ i
] mysql_query ( "select * from usr_users where username" ) ; [ / i
] if ( $username = $sql )
{
}
else
{
}
Hmmm... Klopt dat schuingedrukte zinnetje? Ik zal het is testen...
Iemand interresse in een bb systeem toevallig? Ik heb er pas eentje gemaakt.
EDIT: Ik heb nu geen errors ofzo, maar ik krijg steeds de melding 'kijk je alles even na?'.
WouterJ - 16/10/2011 13:44
HTML gevorderde
@Pietje, het lijkt erop alsof je beter gewoon bij de basis van PHP kunt beginnen. De fouten:
Regel 1) $_POST superglobals is een soort array de () moeten [] zijn
Regel 2) Kijk eens naar de tips die ik vanochtend heb gegeven en pas die eens aan.
Regel 3) De if statement zal altijd true opleveren, omdat je altijd de waarde van $username kan veranderen. Ik denk dat je == bedoelt (kijk ook eens naar PHP.net: language.operators )
Verder moet je nog steeds de gegevens fetchen.
Pietje - 16/10/2011 13:49 (laatste wijziging 16/10/2011 13:58)
Lid
Ik heb de code inderdaad even snel en met fouten gemaakt, zal nog eens nakijken...
Lukt niet :L, laat maar anders...
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.