Loginscript werkt niet
Pagina: « vorige 1 2 3 4 5 volgende »
Tussen encoden en decoden zit een wereld van verschil....
@Jeroen, de beste methode is dit:
Simpel uitgelegd kijkt deze if statement of er POST variabele zijn verzonden, is dat zo dan kunnen we er met 99% zekerheid zeggen dat er een formulier verzonden is (tenzij je de pagina aanroept met AJAX, maar daar ga ik niet van uit).
als hij zegt ik heb een slot op de deur gezet maar deze gaat niet open, en ik zeg als je het slot open wilt krijgen moet je de sleutel gebruiken OFTEWEL HOE HIJ DE MD5 moet gebruiken
hoef ik er toch niet ook bij te zeggen dat hij een alarm moet installeren een rotweiler in zijn achtertuin moet zetten en de hele ME voor zijn deur?
Toevoeging op 07/02/2012 22:26:53:
@reshadd, misschien als tip?! Haha
en als je ziet dat hij nog php aan het leren is dan hoef je niet een gebouw voor hem neer te gaan zetten voor dat je hem de blauwdrukken hebt laten zien, ik bedoel als iemand een script net in elkaar zet en daar hulp om vraagt ga je toch niet zeiken dat zijn beveiliging niet goed is? WTF dacht dat het een HULP forum was? voor kritiek geven kan je naar http://www.phphulp.nl/php/forum/site-reviews/27/
Gewijzigd op 07/02/2012 22:34:41 door Reshad F
Natuurlijk wel. De juiste manier moet vanaf het begin aangeleerd worden, des te makkelijker is het. Als je het later doet is het lastiger je manier van programmeren te veranderen.
@jeroen, opzich is die manier niet heel fout. Het is met oude browsers (denk aan IE) helaas zo dat er soms geen waarde voor de submit button wordt meegestuurd als je er niet op klikt, als je een form met enter submit bijv. Om dat te voorkomen is de if die ik gaf beter.
Ik heb net het beginners fouten tutorial doorgenomen en mijn script aangepast. Nu heb ik het onderstaande. Klopt het zo of zitten er nog fouten in??
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
require("config.php");
if( $_SERVER['REQUEST_METHOD'] === 'POST' )
{
$res = mysql_query("SELECT username,password FROM project2_members WHERE username = '" . mysql_real_escape_string( $_POST['username']) . "' AND password = '". mysql_real_escape_string (md5 ($_POST['password'])) . "'");
$count = mysql_num_rows($res);
if($count==0){
echo("The username/password was not found.");
} if($count==1){
//The user had the correct login details
echo("You have been logged in.");
$_SESSION['loggedin'] = "true";
$_SESSION['username'] = $_POST['username'];
}}
else{
echo("<form method='POST'>
Username: <input type='text' name='username' /><br />
Password: <input type='password' name='password' /><br />
<input type='submit' value='Login!' />
</form");
}
?>
require("config.php");
if( $_SERVER['REQUEST_METHOD'] === 'POST' )
{
$res = mysql_query("SELECT username,password FROM project2_members WHERE username = '" . mysql_real_escape_string( $_POST['username']) . "' AND password = '". mysql_real_escape_string (md5 ($_POST['password'])) . "'");
$count = mysql_num_rows($res);
if($count==0){
echo("The username/password was not found.");
} if($count==1){
//The user had the correct login details
echo("You have been logged in.");
$_SESSION['loggedin'] = "true";
$_SESSION['username'] = $_POST['username'];
}}
else{
echo("<form method='POST'>
Username: <input type='text' name='username' /><br />
Password: <input type='password' name='password' /><br />
<input type='submit' value='Login!' />
</form");
}
?>
krijg je foutmeldingen als je het gebruiikt?
gewoon een regel van maken
Nog even een vraagje, hoe werkt het met sessions e.d. om te controleren of iemand is ingelogd??? in mijn script staat
$_SESSION['loggedin'] = "true";
$_SESSION['username'] = $_POST['username'];
maar dat heb ik zo standaard van internet geplukt..
optie 1
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
session_start();
if(!session_is_registered(myusername)){
echo header("location: login.php");
}
?>
session_start();
if(!session_is_registered(myusername)){
echo header("location: login.php");
}
?>
wat hij hier doet is kijken of je ingelogd bent session_start() moet overigens wel bovenaan je pagina staan eigenlijk deze hele code dus echt boven alles en als je bijv direct naar desbetreffende pagina gaat kom je in login.php
tweede optie zou zijn
dit boven aan je pagina
en dit helemaal onderaan
Code (php)
ik weet niet of het goed beveiligd is of niet maar het werkt goed, over de beveiliging hiervan moet iemand anders maar kijken hoe het goed beveiligd moet worden :p
Toevoeging op 08/02/2012 15:35:17:
bij de tweede manier zit je hele html pagina dus tussen de 2 php codes
Ik wacht reactie's van de rest even af of dit veilig is
Overigens raad ik je het gebruik van gebruikersnaam als unieke key af, gebruik liever een ID.
Regel 14 hoeft niet tussen quotes trouwens, het is een boolean: true of false.
Wat bedoel je met filteren??? Van het session verhaal snap ik weinig. Regel 14+15 heb ik niet zelf gemaakt maar zo van internet gehaald snap alleen niet hoe ik dit moet toepassen. heb je hier een voorbeeld/turtorial over?
Zet boven aan je pagina:
Code (php)
Die session is voor iedereen uniek, dus je hoeft niet op de naam te controleren
Gewijzigd op 08/02/2012 15:47:27 door Jeroen VD
Login.php:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
require("config.php");
if( $_SERVER['REQUEST_METHOD'] === 'POST' )
{
$res = mysql_query("SELECT username,password FROM project2_members WHERE username = '" . mysql_real_escape_string( $_POST['username']) . "' AND password = '". mysql_real_escape_string (md5 ($_POST['password'])) . "'");
if(mysql_num_rows($res) == 0){
echo("The username/password was not found.");
} if(mysql_num_rows($res) == 1){
//The user had the correct login details
echo("You have been logged in, je word doorgestuurd....");
$_SESSION['loggedin'] = true ;
$_SESSION['username'] = $_POST['username'];
?>
require("config.php");
if( $_SERVER['REQUEST_METHOD'] === 'POST' )
{
$res = mysql_query("SELECT username,password FROM project2_members WHERE username = '" . mysql_real_escape_string( $_POST['username']) . "' AND password = '". mysql_real_escape_string (md5 ($_POST['password'])) . "'");
if(mysql_num_rows($res) == 0){
echo("The username/password was not found.");
} if(mysql_num_rows($res) == 1){
//The user had the correct login details
echo("You have been logged in, je word doorgestuurd....");
$_SESSION['loggedin'] = true ;
$_SESSION['username'] = $_POST['username'];
?>
Code (php)
pagina.php:
Code (php)
Echter, als je nu inlogd word je doorgestuurd naar pagina.php en vanuitdaar weer terug naar login.php en krijg je weer het login script te zien..
Edit: probleem opgelost, even session_start() boven in gezet
Gewijzigd op 08/02/2012 15:57:48 door Matthijs Vos
- Functies horen niet met een hoofdletter
- Inspringen na een if-statement
- Die * zucht *
- ik kan sowieso niet inspringen als ik snel reageer?
- die klinkt toch veel leuker dan exit? naar mijn weten maakt het geen verschil