loginscript user_id in header
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<?php
require_once 'scripts/connect.php';
require_once 'scripts/app_config.php';
if (!session_is_registered('user_id') || !session_is_registered('username'))
{
// user is not logged in.
if (isset($_POST['cmdlogin']))
{
// retrieve the username and password sent from login form
// First we remove all HTML-tags and PHP-tags, then we create a md5-hash
// This step will make sure the script is not vurnable to sql injections.
$u = strip_tags($_POST['username']);
$p = strip_tags($_POST['password']);
//Now let us look for the user in the database.
$query = sprintf("SELECT user_id, username FROM users WHERE username = '$u' AND password = '$p' LIMIT 1;",
mysql_real_escape_string($u), mysql_real_escape_string($p));
$result = mysql_query($query);
// If the database returns a 0 as result we know the login information is incorrect.
// If the database returns a 1 as result we know the login was correct and we proceed.
// If the database returns a result > 1 there are multple users
// with the same username and password, so the login will fail.
if (mysql_num_rows($result) != 1)
{
// invalid login information
echo "Wrong username or password!";
//show the loginform again.
include "index.php";
} else {
// Login was successfull
$row = mysql_fetch_array($result);
// Save the user ID for use later
$_SESSION['user_id'] = $row['user_id'];
// Save the username for use later
$_SESSION['username'] = $u;
// Now we show the user
header("Location:show_user.php");
}
} else {
// User is not logged in and has not pressed the login button
// so we show him the loginform
include "signup.php";
}
} else {
// The user is already loggedin, so we show the user
include "show_user.php";
}
?>
require_once 'scripts/connect.php';
require_once 'scripts/app_config.php';
if (!session_is_registered('user_id') || !session_is_registered('username'))
{
// user is not logged in.
if (isset($_POST['cmdlogin']))
{
// retrieve the username and password sent from login form
// First we remove all HTML-tags and PHP-tags, then we create a md5-hash
// This step will make sure the script is not vurnable to sql injections.
$u = strip_tags($_POST['username']);
$p = strip_tags($_POST['password']);
//Now let us look for the user in the database.
$query = sprintf("SELECT user_id, username FROM users WHERE username = '$u' AND password = '$p' LIMIT 1;",
mysql_real_escape_string($u), mysql_real_escape_string($p));
$result = mysql_query($query);
// If the database returns a 0 as result we know the login information is incorrect.
// If the database returns a 1 as result we know the login was correct and we proceed.
// If the database returns a result > 1 there are multple users
// with the same username and password, so the login will fail.
if (mysql_num_rows($result) != 1)
{
// invalid login information
echo "Wrong username or password!";
//show the loginform again.
include "index.php";
} else {
// Login was successfull
$row = mysql_fetch_array($result);
// Save the user ID for use later
$_SESSION['user_id'] = $row['user_id'];
// Save the username for use later
$_SESSION['username'] = $u;
// Now we show the user
header("Location:show_user.php");
}
} else {
// User is not logged in and has not pressed the login button
// so we show him the loginform
include "signup.php";
}
} else {
// The user is already loggedin, so we show the user
include "show_user.php";
}
?>
session_is_registered()
De MySQL-functies.
Gebruik tegenwoordig netjes isset() in te controleren of een sessie bestaat, en gebruik de MySQLi-functies.
Ook foutafhandeling op je queries is zeker aan te raden.
Ook hoef je geen usernames op te slaan in een sessie. Alleen het ID is al voldoende om je te identificeren.
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<?php
require_once 'scripts/connect.php';
require_once 'scripts/app_config.php';
if (!session_is_registered('user_id') || !session_is_registered('username'))
{
// user is not logged in.
if (isset($_POST['cmdlogin']))
{
// retrieve the username and password sent from login form
// First we remove all HTML-tags and PHP-tags, then we create a md5-hash
// This step will make sure the script is not vurnable to sql injections.
$u = strip_tags($_POST['username']);
$p = strip_tags($_POST['password']);
//Now let us look for the user in the database.
$query = sprintf("SELECT user_id, username FROM users WHERE username = '$u' AND password = '$p' LIMIT 1;",
mysql_real_escape_string($u), mysql_real_escape_string($p));
$result = mysql_query($query);
// If the database returns a 0 as result we know the login information is incorrect.
// If the database returns a 1 as result we know the login was correct and we proceed.
// If the database returns a result > 1 there are multple users
// with the same username and password, so the login will fail.
if (mysql_num_rows($result) != 1)
{
// invalid login information
echo "Wrong username or password!";
//show the loginform again.
include "index.php";
} else {
// Login was successfull
$row = mysql_fetch_array($result);
// Save the user ID for use later
$_SESSION['user_id'] = $row['user_id'];
// Save the username for use later
$_SESSION['username'] = $u;
// Now we show the user
header("Location: http://163.158.253.94/cms/show_user.php?user_id=" . mysql_insert_id());
}
} else {
// User is not logged in and has not pressed the login button
// so we show him the loginform
include "signup.php";
}
} else {
// The user is already loggedin, so we show the user
include "show_user.php";
}
?>
require_once 'scripts/connect.php';
require_once 'scripts/app_config.php';
if (!session_is_registered('user_id') || !session_is_registered('username'))
{
// user is not logged in.
if (isset($_POST['cmdlogin']))
{
// retrieve the username and password sent from login form
// First we remove all HTML-tags and PHP-tags, then we create a md5-hash
// This step will make sure the script is not vurnable to sql injections.
$u = strip_tags($_POST['username']);
$p = strip_tags($_POST['password']);
//Now let us look for the user in the database.
$query = sprintf("SELECT user_id, username FROM users WHERE username = '$u' AND password = '$p' LIMIT 1;",
mysql_real_escape_string($u), mysql_real_escape_string($p));
$result = mysql_query($query);
// If the database returns a 0 as result we know the login information is incorrect.
// If the database returns a 1 as result we know the login was correct and we proceed.
// If the database returns a result > 1 there are multple users
// with the same username and password, so the login will fail.
if (mysql_num_rows($result) != 1)
{
// invalid login information
echo "Wrong username or password!";
//show the loginform again.
include "index.php";
} else {
// Login was successfull
$row = mysql_fetch_array($result);
// Save the user ID for use later
$_SESSION['user_id'] = $row['user_id'];
// Save the username for use later
$_SESSION['username'] = $u;
// Now we show the user
header("Location: http://163.158.253.94/cms/show_user.php?user_id=" . mysql_insert_id());
}
} else {
// User is not logged in and has not pressed the login button
// so we show him the loginform
include "signup.php";
}
} else {
// The user is already loggedin, so we show the user
include "show_user.php";
}
?>
Verder lijkt het mij beter om de boel eerst eens goed te herschrijven.
- Ariën - op 06/01/2016 15:26:36:
Je gebruikt een hoop oude functies:
session_is_registered()
De MySQL-functies.
Gebruik tegenwoordig netjes isset() in te controleren of een sessie bestaat, en gebruik de MySQLi-functies.
Ook foutafhandeling op je queries is zeker aan te raden.
Ook hoef je geen usernames op te slaan in een sessie. Alleen het ID is al voldoende om je te identificeren.
session_is_registered()
De MySQL-functies.
Gebruik tegenwoordig netjes isset() in te controleren of een sessie bestaat, en gebruik de MySQLi-functies.
Ook foutafhandeling op je queries is zeker aan te raden.
Ook hoef je geen usernames op te slaan in een sessie. Alleen het ID is al voldoende om je te identificeren.
Denk je dat dit de problemen veroorzaakt ?
Toevoeging op 06/01/2016 15:35:43:
- Ariën - op 06/01/2016 15:30:24:
Waarom gebruik je mysql_insert_id(). Je insert namelijk niks?
Verder lijkt het mij beter om de boel eerst eens goed te herschrijven.
Verder lijkt het mij beter om de boel eerst eens goed te herschrijven.
Het was voor mij gewoon proberen ik ben een beginner met php, het moest een simpel inlog script worden xD weet jij toevallig een goeie how to voor inlog scripts ?
Opzich is er weinig mis met de workflow van je inlogscript. Hoewel ik wel encryptie mis en je verouderde functies gebruikt.
Gewijzigd op 06/01/2016 15:37:34 door - Ariën -
Ik heb thuis een qnap web server staan die niet meer wil updaten dat zou daar dan mee te maken hebben... weet jij een goeie how to met de nieuwste php technieken voor een inlog script ?
Zoals ik al zei is de workflow hetzelfde.
- Je moet de MySQLi-functies toepassen, zoals beschreven staat in dit artikel: http://phptuts.nl/view/26/. Voornamelijk is het eigenlijk het vervangen van de connectie, een 'i' toevoegen en een paar parameters toevoegen die naar de connectie verwijzen.
- De session_is_registered() functie schrappen, en hiervoor een isset() gebruiken om je $_SEESION's mee te controleren.
- En natuurlijk je wachtwoord encrypten met password_hash en password_verify
Als ik het bovenstaande script bekijk is dit de landingspagina wanneer een gebruiker inlogt? Ik zou deze dan profile.php ofzo noemen, show_user.php klinkt meer als een publieke pagina waar je profielen kunt beijken.
- Ariën - op 06/01/2016 15:47:24:
Je kan ook XAMPP downloaden, zodat je op je eigen PC een lokale webserver heb. Dan heb je meteen een recente PHP 5.6 draaien.
Zoals ik al zei is de workflow hetzelfde.
- Je moet de MySQLi-functies toepassen, zoals beschreven staat in dit artikel: http://phptuts.nl/view/26/. Voornamelijk is het eigenlijk het vervangen van de connectie, een 'i' toevoegen en een paar parameters toevoegen die naar de connectie verwijzen.
- De session_is_registered() functie schrappen, en hiervoor een isset() gebruiken om je $_SEESION's mee te controleren.
- En natuurlijk je wachtwoord encrypten met password_hash en password_verify
Zoals ik al zei is de workflow hetzelfde.
- Je moet de MySQLi-functies toepassen, zoals beschreven staat in dit artikel: http://phptuts.nl/view/26/. Voornamelijk is het eigenlijk het vervangen van de connectie, een 'i' toevoegen en een paar parameters toevoegen die naar de connectie verwijzen.
- De session_is_registered() functie schrappen, en hiervoor een isset() gebruiken om je $_SEESION's mee te controleren.
- En natuurlijk je wachtwoord encrypten met password_hash en password_verify
Als ik deze MySQLi-functies toepas werkt alles dan wel gewoon nog op een webserver met een oudere php versie ?
Toevoeging op 06/01/2016 16:25:03:
Thomas van den Heuvel op 06/01/2016 15:58:09:
Indien het doel van show_user.php het tonen van informatie van de ingelogde gebruiker is, hoef je dit user id niet mee te geven via de URL, maar deze kun je gewoon uit de sessie vissen.
Als ik het bovenstaande script bekijk is dit de landingspagina wanneer een gebruiker inlogt? Ik zou deze dan profile.php ofzo noemen, show_user.php klinkt meer als een publieke pagina waar je profielen kunt beijken.
Als ik het bovenstaande script bekijk is dit de landingspagina wanneer een gebruiker inlogt? Ik zou deze dan profile.php ofzo noemen, show_user.php klinkt meer als een publieke pagina waar je profielen kunt beijken.
ja dat is indd de bedoelding ! ik ga dit ook gelijk veranderen. ben weer een stapje verder :D thanks !
Gewijzigd op 06/01/2016 16:35:08 door - Ariën -
oke mooizo, ik ben nu gelijk even met de qnap helpdesk bezig en update van de firmware is nu wel gelukt hoop alleen dat alle instellingen behouden zijn. Ik heb gelukkig wel een stuk of 3 back ups van me website en de instellingen dus dat gaat wel goed komen Het opnieuw opstarten daarin tegen kan een klein half uur in beslag nemen. Ik kom hier straks op terug. Gelukkig ben ik nu wel in staat om de nieuwe php versie te installeren !! :D.
Welke PHP-versie heb je nu dan?
Gewijzigd op 06/01/2016 18:02:57 door - Ariën -
Gewijzigd op 06/01/2016 18:19:58 door domi oconnor
Ik leer van het boek php mysql the missing manual 2nd edition, en daar wordt helaas niet gewerkt met MySQLi functies.
Vooral als ze het ook nog hebben over session_is_registered() geeft het mij geen goed gevoel voor de recente en aanstaande PHP-versies.
Op phptuts.nl staan recente tutorials over MySQLi. Kijk daar eens naar.
Dat is best erg slecht, want MySQLi bestaat al zo'n 12 jaar..
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<?php
require_once 'scripts/connect.php';
require_once 'scripts/app_config.php';
error_reporting(E_ALL);
ini_set('display_errors',1);
if (!session_is_registered('user_id') || !session_is_registered('username'))
{
// user is not logged in.
if (isset($_POST['cmdlogin']))
{
// retrieve the username and password sent from login form
// First we remove all HTML-tags and PHP-tags, then we create a md5-hash
// This step will make sure the script is not vurnable to sql injections.
$u = strip_tags($_POST['username']);
$p = strip_tags($_POST['password']);
//Now let us look for the user in the database.
$query = sprintf("SELECT user_id FROM users WHERE username = '$u' AND password = '$p' LIMIT 1;",
mysql_real_escape_string($u), mysql_real_escape_string($p));
$result = mysql_query($query);
// If the database returns a 0 as result we know the login information is incorrect.
// If the database returns a 1 as result we know the login was correct and we proceed.
// If the database returns a result > 1 there are multple users
// with the same username and password, so the login will fail.
if (mysql_num_rows($result) != 1)
{
// invalid login information
echo "Wrong username or password!";
//show the loginform again.
include "index.php";
} else {
// Login was successfull
$row = mysql_fetch_array($result);
// Save the user ID for use later
$_SESSION['user_id'] = $row['user_id'];
// Save the username for use later
$_SESSION['username'] = $u;
// Now we show the user
header("Location:profile.php");
}
} else {
// User is not logged in and has not pressed the login button
// so we show him the loginform
include "index.php";
}
} else {
// The user is already loggedin, so we show the user
include "profile.php";
}
?>
require_once 'scripts/connect.php';
require_once 'scripts/app_config.php';
error_reporting(E_ALL);
ini_set('display_errors',1);
if (!session_is_registered('user_id') || !session_is_registered('username'))
{
// user is not logged in.
if (isset($_POST['cmdlogin']))
{
// retrieve the username and password sent from login form
// First we remove all HTML-tags and PHP-tags, then we create a md5-hash
// This step will make sure the script is not vurnable to sql injections.
$u = strip_tags($_POST['username']);
$p = strip_tags($_POST['password']);
//Now let us look for the user in the database.
$query = sprintf("SELECT user_id FROM users WHERE username = '$u' AND password = '$p' LIMIT 1;",
mysql_real_escape_string($u), mysql_real_escape_string($p));
$result = mysql_query($query);
// If the database returns a 0 as result we know the login information is incorrect.
// If the database returns a 1 as result we know the login was correct and we proceed.
// If the database returns a result > 1 there are multple users
// with the same username and password, so the login will fail.
if (mysql_num_rows($result) != 1)
{
// invalid login information
echo "Wrong username or password!";
//show the loginform again.
include "index.php";
} else {
// Login was successfull
$row = mysql_fetch_array($result);
// Save the user ID for use later
$_SESSION['user_id'] = $row['user_id'];
// Save the username for use later
$_SESSION['username'] = $u;
// Now we show the user
header("Location:profile.php");
}
} else {
// User is not logged in and has not pressed the login button
// so we show him the loginform
include "index.php";
}
} else {
// The user is already loggedin, so we show the user
include "profile.php";
}
?>
Toevoeging op 06/01/2016 19:26:39:
PHP Maarten op 06/01/2016 19:16:44:
Dat is best erg slecht, want MySQLi bestaat al zo'n 12 jaar..
hahaha dan ben ik wel blij dat ik de gratis pdf versie heb gedownload in plaats van 40 euro uitgeven voor iets dat een klein beetje out dated is...
isset om $_SESSION['user_id'] en $_SESSION['username'] te controleren.
De functie session_is_registered() bestaat niet meer. Gebruik Wat ik erg vind is dat het een boek uit 2013 is, en zo achterhaald is. Zo wordt het gebruik van $_REQUEST zelfs aangeraden zo te zien, en worden joins op de verkeerde manier uitgelegd. Fijn boek, gewoon weg ermee. Verbazingwekkend dat dit een O'Reilly boek is.