Witte pagina na aanmelden
Ik ben sinds een paar dagen weer met php scripten begonnen, dit sinds een lange tijd
Nu loop ik tegen het probleem aan dat ik een witte pagina krijg als ik de juiste login informatie invoer (indien ik de foute info invoer, dan krijg ik wel een (van login fout etc)
Mijn hoofd pagina, inc het login form
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
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
<?php
if($_GET["cms"] == 'login'){
print '
<table width="300" border="0" align="center" cellpadding="0" cellspacing="1" >
<tr>
<form class="login" name="login" method="post" action="admin/checklogin.php">
<td>
<table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
<tr>
</br>
</tr>
<tr>
<td width="78">Username</td>
<td width="6">:</td>
<td width="294"><input name="myusername" type="text" id="myusername"></td>
</tr>
<tr>
<td>Password</td>
<td>:</td>
<td><input name="mypassword" type="password" id="mypassword"></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td><input type="submit" name="Submit" value="Login"></td>
</tr>
</table>
</td>
</form>
</tr>
</table>
';
}elseif($_GET["cms"] == 'register'){
print '
<center><p style="color:red;font-family:arial">Dit is nog niet actief</p></center>
';
}
?>
if($_GET["cms"] == 'login'){
print '
<table width="300" border="0" align="center" cellpadding="0" cellspacing="1" >
<tr>
<form class="login" name="login" method="post" action="admin/checklogin.php">
<td>
<table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
<tr>
</br>
</tr>
<tr>
<td width="78">Username</td>
<td width="6">:</td>
<td width="294"><input name="myusername" type="text" id="myusername"></td>
</tr>
<tr>
<td>Password</td>
<td>:</td>
<td><input name="mypassword" type="password" id="mypassword"></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td><input type="submit" name="Submit" value="Login"></td>
</tr>
</table>
</td>
</form>
</tr>
</table>
';
}elseif($_GET["cms"] == 'register'){
print '
<center><p style="color:red;font-family:arial">Dit is nog niet actief</p></center>
';
}
?>
En het checklogin script
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
include 'config/database.php';
$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);
$sql="SELECT * FROM Users WHERE Username='$myusername' and Password='$mypassword'";
$result=mysql_query($sql);
$count=mysql_num_rows($result);
if($count==1){
session_start();
$_SESSION['login']=1;
session_register("myusername");
}else {
echo "Wrong Username or Password";
}
?>
include 'config/database.php';
$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);
$sql="SELECT * FROM Users WHERE Username='$myusername' and Password='$mypassword'";
$result=mysql_query($sql);
$count=mysql_num_rows($result);
if($count==1){
session_start();
$_SESSION['login']=1;
session_register("myusername");
}else {
echo "Wrong Username or Password";
}
?>
Database.php
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
mysql_connect("localhost", "root", "Beta192")or die("cannot connect");
mysql_select_db("flex")or die("cannot select DB");
?>
mysql_connect("localhost", "root", "Beta192")or die("cannot connect");
mysql_select_db("flex")or die("cannot select DB");
?>
Al het overige commentaal over de code wil ik ook graag horen ;)
Waar controleer je of een formulier verzonden is?
(if($_SERVER['REQUEST_METHOD'] == "POST" )
Waar controleer je of de beide $_POST-variabelen bestaan?
Waarom kopieer je beide $_POST-waarden?
Waarom laat je bewerkingen los op het wachtwoord? Vreemde tekens daarin horen juist, om het een moeilijk wachtwoord te laten zijn.
Een wachtwoord sla je nooit! ongecodeerd op in de database (bcrypt bv).
Door de encrypte is ook gelijk de noodzaak om mysql_real_escape_string te gebruiken niet meer aanwezig.
Gebruik mysql_real_escape_string in je query; daar is het nodig.
Waar is de foutafhandeling van je query?
mysql komt te vervallen. Stap over op mysqli of OOP.
session_start: geadviseerd wordt om dat helemaal boven aan het script te zetten.
session_register: Warning
This function has been DEPRECATED as of PHP 5.3.0 and REMOVED as of PHP 5.4.0.
Als je juist inlogt, gebeurt er in het script verder ook niets meer. Je kent een waarde toe aan een sessie en dat is het. Wat verwacht je dan te zien?
inline opmaak/css is niet echt meer van deze tijd.
Een formulier wordt doorgaans niet meer als tabel opgemaakt; tabellen zijn voor het tonen van data-overzichten.
Zet error-reporting eens aan.
De codering zet ik er normaal expres later in zodat ik niet elke keer een ww naar hash moet omzetten.
Heb de code geupdate.
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
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
<?php
error_reporting(-1);
ini_set('display_errors', 'On');
if(!$_SERVER['REQUEST_METHOD'] == "POST" ){
print 'het formulier werd niet verzonden';
}else{
include 'config/database.php';
$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];
$mypassword = md5($mypassword);
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);
$sql="SELECT * FROM Users WHERE Username='$myusername' and Password='$mypassword'";
$result=mysql_query($sql);
$count=mysql_num_rows($result);
if($count==1){
session_start();
$_SESSION['login']=1;
session_register("myusername");
session_register("mypassword");
}else {
echo "Wrong Username or Password";
}
}
?>
error_reporting(-1);
ini_set('display_errors', 'On');
if(!$_SERVER['REQUEST_METHOD'] == "POST" ){
print 'het formulier werd niet verzonden';
}else{
include 'config/database.php';
$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];
$mypassword = md5($mypassword);
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);
$sql="SELECT * FROM Users WHERE Username='$myusername' and Password='$mypassword'";
$result=mysql_query($sql);
$count=mysql_num_rows($result);
if($count==1){
session_start();
$_SESSION['login']=1;
session_register("myusername");
session_register("mypassword");
}else {
echo "Wrong Username or Password";
}
}
?>
Foutmeldingen:
Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /var/www/html/PUREFLEX/admin/config/database.php on line 3
Notice: Undefined index: myusername in /var/www/html/PUREFLEX/admin/checklogin.php on line 10
Notice: Undefined index: mypassword in /var/www/html/PUREFLEX/admin/checklogin.php on line 11
Wrong Username or Password
Obelix en Idefix op 25/06/2014 22:04:06:
Waar controleer je of de beide $_POST-variabelen bestaan?
Hetzelfde geldt voor de $_GET variabelen.
Wat Obelix bedoelt is dat deze variabelen enkel bestaan als ze ook meegegeven/meegepost worden.
bij http://mysite.nl/index.php?cms=login zal de $_GET['cms'] wel bestaan maar bij http://mysite.nl/index.php dus niet. Dat moet je dus testen voordat je zo een variabele gaat gebruiken.
De foutmeldingen lijken mij duidelijk:
mysql komt te vervallen
myusername en mypassword bestaan niet als variabelen.
Ik zou zelf ook je inlog formulier en de checklogin samenvoegen in één pagina. Immers wil je bij formulieren dat de gebruikers op het formulier terug blijven komen zolang de gegevens niet goed ingevuld zijn. Pas als alle velden goed ingevuld zijn ga je dan de gegevens verwerken waarna je een redirect doet.