Hij gaat niet na het inloggen verder...
Ik probeer op mijn site in te loggen met sessions. Nu hoeft het niet heel erg beveiligd te zijn maar is het meer even voor het oog. Nu heb ik dit gemaakt en een deel via internet gekregen. Maar na het inloggen stuurt hij me niet door naar mijn admin_home pagina... hij gaat gewoon terug naar de login pagina. De andere beveiligde paginas kan ik nu wel bezoeken. En als ik uitlog kan dit niet meer dus hiermee weet ik dat de sessions en de login wel werk. Maar ik wil dat als hij goed inlogt hij me doorstuurt naar de admin_home
Mijn code is:
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
include("config.php");
session_start();
if($_SERVER["REQUEST_METHOD"] == "POST")
{
// username and password sent from Form
$myusername=mysqli_real_escape_string($db,$_POST['username']);
$mypassword=mysqli_real_escape_string($db,$_POST['password']);
$sql="SELECT id FROM admin WHERE username='$myusername' and passcode='$mypassword'";
$result=mysqli_query($db,$sql);
$row=mysqli_fetch_array($result,MYSQLI_ASSOC);
$active=$row['active'];
$count=mysqli_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row
if($count==1)
{
$_SESSION['login_user']=$myusername;
header("location: admin_home.php");
exit;
}
else
{
$error="Your naam of wachtwoord is niet goed.";
}
}[/code]
kan iemand mij hiermee helpen?
Groeten,
Dennis
include("config.php");
session_start();
if($_SERVER["REQUEST_METHOD"] == "POST")
{
// username and password sent from Form
$myusername=mysqli_real_escape_string($db,$_POST['username']);
$mypassword=mysqli_real_escape_string($db,$_POST['password']);
$sql="SELECT id FROM admin WHERE username='$myusername' and passcode='$mypassword'";
$result=mysqli_query($db,$sql);
$row=mysqli_fetch_array($result,MYSQLI_ASSOC);
$active=$row['active'];
$count=mysqli_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row
if($count==1)
{
$_SESSION['login_user']=$myusername;
header("location: admin_home.php");
exit;
}
else
{
$error="Your naam of wachtwoord is niet goed.";
}
}[/code]
kan iemand mij hiermee helpen?
Groeten,
Dennis
Gewijzigd op 01/02/2015 11:38:31 door Dennis van DUin
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
include("config.php");
session_start();
if($_SERVER["REQUEST_METHOD"] == "POST")
{
// username and password sent from Form
$myusername=mysqli_real_escape_string($db,$_POST['username']);
$mypassword=mysqli_real_escape_string($db,$_POST['password']);
[/code]
Owja en config maakt connectie met mijn database
include("config.php");
session_start();
if($_SERVER["REQUEST_METHOD"] == "POST")
{
// username and password sent from Form
$myusername=mysqli_real_escape_string($db,$_POST['username']);
$mypassword=mysqli_real_escape_string($db,$_POST['password']);
[/code]
Owja en config maakt connectie met mijn database
Gewijzigd op 01/02/2015 11:41:33 door Dennis van DUin
a) hij komt niet in de if() op regel 9 en je wordt dus niet doorgestuurd naar admin_home.php. (Officeel moet location: met een Hoofdletter L geschreven worden volgens mij).
b) Je wordt wel doorgestuurd naar admin_home.php maar op admin_home.php denkt ie dat je niet bent ingelogd en wordt je weer teruggestuurd naar login.php
Eventueel kun je admin_home.php nog voor een stukje met ons delen.
Ik heb beide even gecontroleerd en ik heb het gevoel dat hij helemaal niet in de IF komt. Ik heb Location veranderd naar een hoofdletter L. En ik heb op mijn home pagina de controle weggehaald:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
include('config.php');
session_start();
$user_check=$_SESSION['login_user'];
$ses_sql=mysqli_query($db,"select username from admin where username='$user_check' ");
$row=mysqli_fetch_array($ses_sql,MYSQLI_ASSOC);
$login_session=$row['username'];
if(!isset($login_session))
{
header("Location: admin_login.php");
}
?>
include('config.php');
session_start();
$user_check=$_SESSION['login_user'];
$ses_sql=mysqli_query($db,"select username from admin where username='$user_check' ");
$row=mysqli_fetch_array($ses_sql,MYSQLI_ASSOC);
$login_session=$row['username'];
if(!isset($login_session))
{
header("Location: admin_login.php");
}
?>
Deze heet sleutel.php en ik heb dit boven aan elke pagina die beveiligd is staan door middel van de deze code:
Hoe kan het dat hij de IF niet uitvoert?
Daarnaast: zet in je config.php (tijdelijk) error reporting en het weergeven van fouten aan:
Code (php)
1
2
3
4
2
3
4
<?php
error_reporting(E_ALL);
ini_set('display_errors', 'stdout'); // >= 5.2.4 stderr, stdout, < 5.2.4 bool
?>
error_reporting(E_ALL);
ini_set('display_errors', 'stdout'); // >= 5.2.4 stderr, stdout, < 5.2.4 bool
?>
Ook: gaat mogelijk het verbinden met je database of het uitvoeren van de query mis? Wellicht wil je voor je database een eenvoudige wrapper class gebruiken waarin wat foutafhandeling zit.
EDIT:
Waarom controleer je niet rechtstreeks $_SESSION?
Gewijzigd op 01/02/2015 12:01:19 door Thomas van den Heuvel
Code (php)
1
2
3
2
3
Notice: A session had already been started - ignoring session_start() in /home/haastrechtloop.nl/public_html/admin_logout.php on line 32
Warning: Cannot modify header information - headers already sent by (output started at /home/haastrechtloop.nl/public_html/admin_logout.php:22) in /home/haastrechtloop.nl/public_html/admin_logout.php on line 35
Warning: Cannot modify header information - headers already sent by (output started at /home/haastrechtloop.nl/public_html/admin_logout.php:22) in /home/haastrechtloop.nl/public_html/admin_logout.php on line 35
Toevoeging op 01/02/2015 12:57:17:
De eerste is een notice. Blijkbaar heb je de session_start() functie al eerder aangeroepen. Op zich niet zo een ramp. De tweede is een veel gestelde vraag op dit forum.
Je mag voordat je een header() functie aanroept nog geen enkele output verzonden hebben. Output is onder andere iedere echo, ieder stukje HTML, een witregel, een spatie, een ENTER en ook onzichtbare karakters zoals bijvoorbeeld de null byte. Dit geldt voor je PHP landingspagina maar ook voor alle php bestanden die je included hebt.
$login_session=$row['username'];
En dan kijk je of ie geset is.
if(!isset($login_session))
Ja dus, want dat heb je net zelf gedaan.
Dus de header wordt nooit bereikt.
- SanThe - op 01/02/2015 13:57:22:
Je set de variabele:
$login_session=$row['username'];
En dan kijk je of ie geset is.
if(!isset($login_session))
Ja dus, want dat heb je net zelf gedaan.
Dus de header wordt nooit bereikt.
$login_session=$row['username'];
En dan kijk je of ie geset is.
if(!isset($login_session))
Ja dus, want dat heb je net zelf gedaan.
Dus de header wordt nooit bereikt.
Dit is de logout code en deze werkt helemaal hoor...
Naar het andere ga ik even kijken!
Toevoeging op 01/02/2015 16:33:02:
Frank Nietbelangrijk op 01/02/2015 12:10:37:
wat krijg je wel te zien?
Toevoeging op 01/02/2015 12:57:17:
De eerste is een notice. Blijkbaar heb je de session_start() functie al eerder aangeroepen. Op zich niet zo een ramp. De tweede is een veel gestelde vraag op dit forum.
Je mag voordat je een header() functie aanroept nog geen enkele output verzonden hebben. Output is onder andere iedere echo, ieder stukje HTML, een witregel, een spatie, een ENTER en ook onzichtbare karakters zoals bijvoorbeeld de null byte. Dit geldt voor je PHP landingspagina maar ook voor alle php bestanden die je included hebt.
Toevoeging op 01/02/2015 12:57:17:
De eerste is een notice. Blijkbaar heb je de session_start() functie al eerder aangeroepen. Op zich niet zo een ramp. De tweede is een veel gestelde vraag op dit forum.
Je mag voordat je een header() functie aanroept nog geen enkele output verzonden hebben. Output is onder andere iedere echo, ieder stukje HTML, een witregel, een spatie, een ENTER en ook onzichtbare karakters zoals bijvoorbeeld de null byte. Dit geldt voor je PHP landingspagina maar ook voor alle php bestanden die je included hebt.
Hoe kan ik dit dan oplossen? Ik kan de php code bovenaan de pagina zetten maar dan gebeurd het nog steeds...
Toevoeging op 01/02/2015 16:42:49:
Na het inloggen herlaad hij niet de hele pagina trouwens! Hij gaat tot de Exit... en de rest wordt niet weergegeven...
Het kan ook nog een Byte Order Mark zijn (BOM). Dit is op te lossen door met een goede editor (notepad) de bestanden opnieuw aan te maken en de inhoud te kopieren en te plakken in de nieuwe bestanden.
Bedankt voor je snelle reactie!