Register_Globals fout met inloggen
Ik heb een login script, maar omdat mijn Register_globals uit staan op de server werkt ons script niet, in iedergeval ik denk dat het daardoor komt. Zouden jullie even naar mijn script kunnen kijken en kunnen zeggen waar het fout gaat?
De fout is dat de session vars niet gevuld of bewaard worden, zouden jullie me opweg kunnen helpen?
Login:
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
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
<?php
$host="";
$username="";
$password="";
$db_name="";
$tbl_name="";
mysql_connect("$host", "$username", "$password")or die("Error 101: Verbinding mislukt!");
mysql_select_db("$db_name")or die("Error 102: verbinding mislukt!");
$naam=$_POST['naam'];
$wachtwoord=$_POST['wachtwoord'];
$recht == 0;
$naam = stripslashes($naam);
$wachtwoord = stripslashes($wachtwoord);
$naam = mysql_real_escape_string($naam);
$wachtwoord = mysql_real_escape_string($wachtwoord);
$sql="SELECT * FROM $tbl_name WHERE Gebruikersnaam='$naam' and Wachtwoord='$wachtwoord' and Recht=0";
$result=mysql_query($sql);
$count=mysql_num_rows($result);
if($count==1)
{
session_start();
session_ID("leerling");
session_register ("naam");
session_register ("recht");
header("location:succesvoltest.php");
}
else
{
echo "Combinatie naam en wachtwoord onbekend!";
header("location:spel.php");
}
?>
$host="";
$username="";
$password="";
$db_name="";
$tbl_name="";
mysql_connect("$host", "$username", "$password")or die("Error 101: Verbinding mislukt!");
mysql_select_db("$db_name")or die("Error 102: verbinding mislukt!");
$naam=$_POST['naam'];
$wachtwoord=$_POST['wachtwoord'];
$recht == 0;
$naam = stripslashes($naam);
$wachtwoord = stripslashes($wachtwoord);
$naam = mysql_real_escape_string($naam);
$wachtwoord = mysql_real_escape_string($wachtwoord);
$sql="SELECT * FROM $tbl_name WHERE Gebruikersnaam='$naam' and Wachtwoord='$wachtwoord' and Recht=0";
$result=mysql_query($sql);
$count=mysql_num_rows($result);
if($count==1)
{
session_start();
session_ID("leerling");
session_register ("naam");
session_register ("recht");
header("location:succesvoltest.php");
}
else
{
echo "Combinatie naam en wachtwoord onbekend!";
header("location:spel.php");
}
?>
Succesvol:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?
session_start();
if(!session_is_registered(myusername)){
header("location:spel.php");
}
?>
session_start();
if(!session_is_registered(myusername)){
header("location:spel.php");
}
?>
<html>
<head>
<title>Rekenen doe je zo! - Team 2 Interactive™</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" type="text/css" href="stijlendoejezo.css" />
</head>
<body>
<div id="content">
<div id="sponge">
</div>
<div id="header">
<div id="subheader">
<a href="index.htm"><img src="img/thumbutton_home.png" alt="home" border="0"></img></a>
<a href="spel.htm"><img src="img/thumbutton_login.png" alt="spel" border="0"></img></a>
<a href="contact.htm"><img src="img/thumbutton_contact.png" alt="contact" border="0"></img></a>
</div>
</div>
<div id="bar">
</div>
<div id="b1">
<a href="index.htm"><img src="img/button_home_1.gif" onmouseover="this.src='img/button_home_2.gif';" onmouseout="this.src='img/button_home_1.gif';" / border="0"></img></a>
</div>
<div id="b2">
<a href="spel.htm"><img src="img/button_spelen_1.gif" onmouseover="this.src='img/button_spelen_2.gif';" onmouseout="this.src='img/button_spelen_1.gif';" / border="0"></img></a>
</div>
<div id="b3">
<a href="contact.htm"><img src="img/button_contact_1.gif" onmouseover="this.src='img/button_contact_2.gif';" onmouseout="this.src='img/button_contact_1.gif';" / border="0"></img></a>
</div>
<div id="textcontent">
<div id="text_leftcolumn">
<h1>Inloggen</h1>
<p> Succesvol ingelogd!
</div>
<div id="text_rightcolumn">
<h1>hallo</h2>
<p>
<a href="destroy.php">Destroy</a>
<br><br>
</p>
</div>
</div>
<div class="bottomhome">
<br>
Team 2 Interactive™
</div>
</div>
</body>
</html>
Bedankt voor jullie hulp!
Gewijzigd op 28/10/2010 16:20:26 door Rover ---
$username="***********";
$password="*******************";
$db_name="******************";
ik zouw maar effe al di info daar weg halen
Zet dit bovenin je script.
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
// rest
?>
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
// rest
?>
Toevoeging op 28/10/2010 16:37:30:
Wat wij nu hebben is dit:
maar omdat $naam en $recht geen inhoud hebben, krijgen we een error.
We hebben het stukje al vervangen door dit:
if($count==1)
{
session_start();
$_SESSION['naam'] = $naam;
$_SESSION['recht'] = $recht;
Klopt dat?
Gewijzigd op 28/10/2010 16:38:17 door Rover ---
Zet die error_reporting op elke pagina bovenin
Paar opmerkingen
// antiek
session_register ("naam");
// antiek en moet dat niet "naam" zijn
if(!session_is_registered(myusername)){
// er wordt geen info gegeven
echo "Welkom <br><br> Recht is ";
// header zal niet werken omdat er info naar de browser is
echo "Combinatie naam en wachtwoord onbekend!";
header("location:spel.php");
Zo is het nu, klopt dit? Zie de post hierboven over wat we hebben aangepast. Bedankt voor je hulp! :-)
Laatste puntje. Ik snap niet precies wat waar naartoe refereert aangaande sessie variabelen. Het stukje echo staat er nu in zoals jij het net post, maar de naam is goed, het recht verschijnt niet.
Bovenin de 'ingelogd' pagina stond dit:
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?
session_start();
if(!session_is_registered(naam)){
header("location:spel.php");
}
$user = $_SESSION['naam'];
$recht = $_SESSION['recht'];
?>
session_start();
if(!session_is_registered(naam)){
header("location:spel.php");
}
$user = $_SESSION['naam'];
$recht = $_SESSION['recht'];
?>
Zonder de onderste verklaringen en met de (nergens anders gebruikte) $user en $recht in de echo geeft naam nog steeds de behorende output.
Daar snap ik dus helemaal niets meer van.. Hoe kan dit? En hoe krijg ik het recht nu ook zichtbaar?
if(!session_is_registered(naam)){
door dit:
if(!isset($_SESSION['naam'])) {
Hoe vul je nu de session met die gegevens?
Gewijzigd op 28/10/2010 17:32:23 door - SanThe -
Gewijzigd op 28/10/2010 18:48:53 door Rover ---
if($count==1)
{
session_start();
$_SESSION['naam'] = $naam;
$_SESSION['recht'] = $recht;
header("location:succesvoltest.php");
}
Wat moet ik dan op de volgende pagina zetten om de data in tekst weer te geven?
nu begint die pagina, die beveiligd moet zijn, als volgt:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?
session_start();
if(!isset($_SESSION['naam']))
{
header("location:spel.php");
}
$user = $_SESSION['naam'];
$recht = $_SESSION['recht'];
?>
session_start();
if(!isset($_SESSION['naam']))
{
header("location:spel.php");
}
$user = $_SESSION['naam'];
$recht = $_SESSION['recht'];
?>
Het stuk dat de variabelen moet printen is ook van jou:
if($count==1)
{
session_start();
$_SESSION['naam'] = $naam;
$_SESSION['recht'] = $recht;
header("location:succesvoltest.php");
}
klopt helemaal niks van. Session_start moet helemaal bovenin de pagina.
De session_start() moet voor all HTML en voordat je waarden toekent aan een sessie. Dat had ik. Ik had m daar staan om pas een sessie te laten starten als je log in gegevens goed waren. Heb het echter aangepast en nu werkt het recht nog steeds niet.
Je hebt error_reporting aanstaan en je krijgt geen melding en je krijgt ook niks te zien? Niet echt logisch.
Hier nogmaals beide scripts:
login.php
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
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
<?php
$host="sql103.byethost12.com";
$username="b12_6433174";
$password="RunTiMe6";
$db_name="b12_6433174_Basisscholen";
$tbl_name="Leerlingen";
mysql_connect("$host", "$username", "$password")or die("Error 101: Verbinding mislukt!");
mysql_select_db("$db_name")or die("Error 102: verbinding mislukt!");
$naam=$_POST['naam'];
$wachtwoord=$_POST['wachtwoord'];
$recht == 0;
$naam = stripslashes($naam);
$wachtwoord = stripslashes($wachtwoord);
$naam = mysql_real_escape_string($naam);
$wachtwoord = mysql_real_escape_string($wachtwoord);
$sql="SELECT * FROM $tbl_name WHERE Gebruikersnaam='$naam' and Wachtwoord='$wachtwoord' and Recht=0";
$result=mysql_query($sql);
$count=mysql_num_rows($result);
if($count==1)
{
$_SESSION['naam'] = $naam;
$_SESSION['recht'] = $recht;
header("location:succesvoltest.php");
}
else
{
echo "Combinatie naam en wachtwoord onbekend!";
session_destroy();
header("location:spel.php");
}
?>
$host="sql103.byethost12.com";
$username="b12_6433174";
$password="RunTiMe6";
$db_name="b12_6433174_Basisscholen";
$tbl_name="Leerlingen";
mysql_connect("$host", "$username", "$password")or die("Error 101: Verbinding mislukt!");
mysql_select_db("$db_name")or die("Error 102: verbinding mislukt!");
$naam=$_POST['naam'];
$wachtwoord=$_POST['wachtwoord'];
$recht == 0;
$naam = stripslashes($naam);
$wachtwoord = stripslashes($wachtwoord);
$naam = mysql_real_escape_string($naam);
$wachtwoord = mysql_real_escape_string($wachtwoord);
$sql="SELECT * FROM $tbl_name WHERE Gebruikersnaam='$naam' and Wachtwoord='$wachtwoord' and Recht=0";
$result=mysql_query($sql);
$count=mysql_num_rows($result);
if($count==1)
{
$_SESSION['naam'] = $naam;
$_SESSION['recht'] = $recht;
header("location:succesvoltest.php");
}
else
{
echo "Combinatie naam en wachtwoord onbekend!";
session_destroy();
header("location:spel.php");
}
?>
succesvoltest.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?
session_start();
if(!isset($_SESSION['naam']))
{
header("location:spel.php");
}
$user = $_SESSION['naam'];
$recht = $_SESSION['recht'];
ini_set('display_errors', 1);
error_reporting(E_ALL);
?>
session_start();
if(!isset($_SESSION['naam']))
{
header("location:spel.php");
}
$user = $_SESSION['naam'];
$recht = $_SESSION['recht'];
ini_set('display_errors', 1);
error_reporting(E_ALL);
?>
Onbelangrijk HTML
Onbelangrijk HTML
En dit gaat niet werken. GEEN output voor headers.
Code (php)
1
2
3
4
5
2
3
4
5
<?php
echo "Combinatie naam en wachtwoord onbekend!";
session_destroy();
header("location:spel.php");
?>
echo "Combinatie naam en wachtwoord onbekend!";
session_destroy();
header("location:spel.php");
?>
Gewijzigd op 28/10/2010 20:24:10 door - SanThe -
Hmm, maar het werkt wel.. De sessie wordt gesloopt als de login niet klopt... Het enige wat niet werkt is dat het recht niet afgedrukt wordt........