Inlog Systeem
ik probeer een login systeem te maken voor mijn website. Maar om de een of andere reden werkt de volgende code niet
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
25
26
27
28
29
30
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
if(isset($_GET['action']) && ($_GET['action'] == "login")){
$Profile_Name = $_POST['Profile_Name'];
$Profile_Password = $_POST['Profile_Password'];
echo $Profile_Name;
echo "<br/>";
echo $Profile_Password;
echo "<br/>";
$Query_Login = mysql_query("SELECT Profile_Name FROM DB_Profiles WHERE Profile_Name ='$Profile_Name'", $connection);
$Data_Login = mysql_fetch_array($Query_Login);
echo $Data_Login['Profile_Name'];
echo "<br/>";
if(mysql_num_rows($Data_Login) < 1){
die( 'Login is not valid!' );
}else{
// login is geldig
$_SESSION['Profile_Name'] = $Profile_Name;
$_SESSION['Profile_Password'] = $Profile_Password;
header( 'administrator.php' );
}
}
?>
if(isset($_GET['action']) && ($_GET['action'] == "login")){
$Profile_Name = $_POST['Profile_Name'];
$Profile_Password = $_POST['Profile_Password'];
echo $Profile_Name;
echo "<br/>";
echo $Profile_Password;
echo "<br/>";
$Query_Login = mysql_query("SELECT Profile_Name FROM DB_Profiles WHERE Profile_Name ='$Profile_Name'", $connection);
$Data_Login = mysql_fetch_array($Query_Login);
echo $Data_Login['Profile_Name'];
echo "<br/>";
if(mysql_num_rows($Data_Login) < 1){
die( 'Login is not valid!' );
}else{
// login is geldig
$_SESSION['Profile_Name'] = $Profile_Name;
$_SESSION['Profile_Password'] = $Profile_Password;
header( 'administrator.php' );
}
}
?>
mysql_num_rows lijkt niet te werken, de rest van de code voert hij allemaal prima uit, en ik krijg ook steeds een echo terug. Maar op dat punt geeft hij altijd Login is not valid...
Alvast bedankt!
Gewijzigd op 06/09/2010 16:23:51 door Stefan Weck
Gebruik deze, dit moet werken.
Verder wat tips:
- Let op SQL Injection. Je bent erg jijik wat fout doe ga je toch ook niet dood.
- Wat is het nut achter variabelen overnemen:
$Profile_Name = $_POST['Profile_Name'];
- Variabelen buiten quotes. We kunnen het niet vaak genoeg zeggen ;-)
Wat moet die header doen?
En: Als je de username weet kom je hier altijd in, want je checkt niet op password?
En: lees eens iets over variabelen buiten quotes, etc.
Als je dit stuk code netjes hebt gemaakt en het fatsoenlijk kan lezen kun je misschien ook beslissen wat er fout gaat.
Foutmelding?
Er zijn zoveel topic over hoe je een inlog systeem maakt, Niels & ik hebben beide laatst in 1 topic allebei een inlog systeem gemaakt gebruik de search ;).
Aar anoniem op 06/09/2010 16:30:58:
if(mysql_num_rows($Query_Login) < 1){
Gebruik deze, dit moet werken.
Verder wat tips:
- Let op SQL Injection. Je bent erg jijik wat fout doe ga je toch ook niet dood.
- Wat is het nut achter variabelen overnemen:
$Profile_Name = $_POST['Profile_Name'];
- Variabelen buiten quotes. We kunnen het niet vaak genoeg zeggen ;-)
Gebruik deze, dit moet werken.
Verder wat tips:
- Let op SQL Injection. Je bent erg jijik wat fout doe ga je toch ook niet dood.
- Wat is het nut achter variabelen overnemen:
$Profile_Name = $_POST['Profile_Name'];
- Variabelen buiten quotes. We kunnen het niet vaak genoeg zeggen ;-)
Nou ik ben sinds een maandje of 2 echt met PHP bezig, en heb het merendeels mezelf aangeleerd. Daarom wil ik niet hier van de site een login script pakken en die gebruiken, want dan zal het wel werken. Ik wil echt zelf begrijpen hoe en wat.
En - Wat is het nut achter variabelen overnemen:
$Profile_Name = $_POST['Profile_Name'];
Dat is toch beter om te doen? Ipv telkens $_POST neer te zetten?
En hebben jullie dan een goede link/tutorial hier om m'n scripts wat veiliger te maken?
Heb ook erg last van spambots :(
Alvast hartelijk bedankt!
Stefan Weck op 06/09/2010 19:15:35:
Nou ik ben sinds een maandje of 2 echt met PHP bezig, en heb het merendeels mezelf aangeleerd. Daarom wil ik niet hier van de site een login script pakken en die gebruiken, want dan zal het wel werken. Ik wil echt zelf begrijpen hoe en wat.
En - Wat is het nut achter variabelen overnemen:
$Profile_Name = $_POST['Profile_Name'];
Dat is toch beter om te doen? Ipv telkens $_POST neer te zetten?
Aar anoniem op 06/09/2010 16:30:58:
if(mysql_num_rows($Query_Login) < 1){
Gebruik deze, dit moet werken.
Verder wat tips:
- Let op SQL Injection. Je bent erg jijik wat fout doe ga je toch ook niet dood.
- Wat is het nut achter variabelen overnemen:
$Profile_Name = $_POST['Profile_Name'];
- Variabelen buiten quotes. We kunnen het niet vaak genoeg zeggen ;-)
Gebruik deze, dit moet werken.
Verder wat tips:
- Let op SQL Injection. Je bent erg jijik wat fout doe ga je toch ook niet dood.
- Wat is het nut achter variabelen overnemen:
$Profile_Name = $_POST['Profile_Name'];
- Variabelen buiten quotes. We kunnen het niet vaak genoeg zeggen ;-)
Nou ik ben sinds een maandje of 2 echt met PHP bezig, en heb het merendeels mezelf aangeleerd. Daarom wil ik niet hier van de site een login script pakken en die gebruiken, want dan zal het wel werken. Ik wil echt zelf begrijpen hoe en wat.
En - Wat is het nut achter variabelen overnemen:
$Profile_Name = $_POST['Profile_Name'];
Dat is toch beter om te doen? Ipv telkens $_POST neer te zetten?
Nee, code wasting.
Code (php)
Quote:
En hebben jullie dan een goede link/tutorial hier om m'n scripts wat veiliger te maken?
Heb ook erg last van spambots :(
Alvast hartelijk bedankt!
Heb ook erg last van spambots :(
Alvast hartelijk bedankt!
http://php.net/manual/en/function.mysql-real-escape-string.php
http://php.net/manual/en/function.htmlentities.php
Succes!
Hoort dat bij de dalando release? :)
Ik kreeg pas geleden de tip akismet.
Voor de rest wel even kijken naar de linkjes die dalando geeft, want die zijn belangrijk.
Verder snap ik het volgende niet. Om het formulier te controleren gebruik je:
En voor de rest ga je verder op $_POST?
Controleren of de pagina zichzelf heeft aangeroepen doen we zo:
Ook kan je nog achter de 'POST' dit plaatsen
Je snapt wel, alle formulier variablen.
Succes, als je vragen hebt, schroom je niet om het hier te vragen:)
Gewijzigd op 06/09/2010 21:03:46 door Niels K
session_start() moet er toch ook bij?
ik heb alleen 1 probleem,
Hoe schrijf ik dit stukje dan goed?
Code (php)
1
2
2
WHERE Profile_Name =$_POST['Profile_Name']
AND Profile_Password =$_POST['Profile_Password']"
AND Profile_Password =$_POST['Profile_Password']"
Ik heb geen idee hoe ik de Post variables correct daar kan neerzetten.
En bedankt voor iedereen die geholpen heeft tot nu toe!
$profileName = $_POST['Profile_Name'];
$profilePass = $_POST['Profile_Password'];
Das al beetje netter scripten :)
Gewijzigd op 06/09/2010 22:23:53 door Elio vp
Elio vp op 06/09/2010 22:12:48:
maak van die post variables eerst en vooral al eens een gewone variable
$profileName = $_POST['Profile_Name'];
$profilePass = $_POST['Profile_Password'];
Das al beetje netter scripten :)
$profileName = $_POST['Profile_Name'];
$profilePass = $_POST['Profile_Password'];
Das al beetje netter scripten :)
Hahah, dat had ik dus eerst. Maar volgens Dalando De Zuil is dat Code Wasting.
Zo zie je maar weer dat iedereen het anders doet.
Ach ik doe dat altijd.. vind het veel netter en overzichtelijker..
Mja ieder zo zijn manier :-)
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
25
26
27
28
29
30
31
32
33
34
35
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?php require_once("connection.php"); ?>
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST' && isset( $_POST['Profile_Name'], $_POST['Profile_Password']) {
$Profile_Name = $_POST['Profile_Name'];
$Profile_Password = $_POST['Profile_Password'];
$Query_Login = mysql_query("SELECT Profile_Name
FROM DB_Profiles
WHERE Profile_Name ='$Profile_Name'
AND Profile_Password ='$Profile_Password'",
mysql_real_escape_string($Profile_Name),
mysql_real_escape_string($Profile_Password),
$connection);
if(mysql_num_rows($Query_Login) < 1){
die( 'Login is not valid!' );
}else{
// login is geldig
$_SESSION['Profile_Name'] = $Profile_Name;
$_SESSION['Profile_Password'] = $Profile_Password;
header( 'administrator.php' );
}
}else{
die( 'Er zit een fout in de Variabelen of de Request method!' );
}
?>
<?php
// 5. Sluit database connectie
mysql_close($connection);
?>
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST' && isset( $_POST['Profile_Name'], $_POST['Profile_Password']) {
$Profile_Name = $_POST['Profile_Name'];
$Profile_Password = $_POST['Profile_Password'];
$Query_Login = mysql_query("SELECT Profile_Name
FROM DB_Profiles
WHERE Profile_Name ='$Profile_Name'
AND Profile_Password ='$Profile_Password'",
mysql_real_escape_string($Profile_Name),
mysql_real_escape_string($Profile_Password),
$connection);
if(mysql_num_rows($Query_Login) < 1){
die( 'Login is not valid!' );
}else{
// login is geldig
$_SESSION['Profile_Name'] = $Profile_Name;
$_SESSION['Profile_Password'] = $Profile_Password;
header( 'administrator.php' );
}
}else{
die( 'Er zit een fout in de Variabelen of de Request method!' );
}
?>
<?php
// 5. Sluit database connectie
mysql_close($connection);
?>
Oke, ik hoop dat ik zo alles heb begrepen en juist gedaan.
Maar ik krijg nog steeds een witte pagina..
Geen foutmelding of enige broncode.
Wat is er nou weer fout?
Alvast bedankt, Stefan
Gewijzigd op 06/09/2010 22:32:53 door Stefan Weck
Elio vp op 06/09/2010 22:12:48:
maak van die post variables eerst en vooral al eens een gewone variable
$profileName = $_POST['Profile_Name'];
$profilePass = $_POST['Profile_Password'];
Das al beetje netter scripten :)
$profileName = $_POST['Profile_Name'];
$profilePass = $_POST['Profile_Password'];
Das al beetje netter scripten :)
Kijk, en dat is nou geheugen verspillen op de server. Je hebt toch $_POST['Profile_Name']? Waarom zou je uberhaupt deze in: $profileName dubbel willen plaatsen? is $_POST al lastig te onthouden soms?
Zeg nu zelf, dit is totaal onzinnig....
Gewijzigd op 07/09/2010 09:05:16 door - Ariën -
Inderdaad, en zo overzichtelijk is dat ook niet want je code wordt zo steeds langer..
bedoel je niet iets als
header("Location: ./administrator.php");
?