Login script werkt alleen in chrome
ik heb momenteel een geheel werkend login en register script maar zodra ik probeer in te loggen via een andere browser dan chrome blijft het beeld wit zodra ik op login klik. terwijl ik bij chrome ingelogd wordt en geredirect naar de homepage.
ik test dit trouwens op localhost.
enig idee waarom dit zo is?
heb je misschien iets van relevante code? Anders kunnen we natuurlijk niks voor je bekijken.
<fieldset>
<legend>Log In</legend>
</br>
<form name="login" action="phpfiles/login.php" method="POST">
<ul>
<li> <label for="Username">Username</label>
<input type="text" name="Username" id="Username" size="30" />
</li>
<li> <label for="Password">Password</label>
<input type="Password" name="Password" id="Password" size="30" />
</li>
<li><label for="submit"></label>
<button type="submit" id="submit">Log In</button> </li>
<ul>
</form>
</fieldset>
</br>
<fieldset>
<legend> Register </legend>
</br>
Dont have an account yet? Click here to register now!
<a href="index.php?p=register"> Register Here </a>
</fieldset>
en waar het naar toe linkt 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
36
37
38
39
40
41
42
43
44
45
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
<?php
ob_start();
include('mysql.php');
$tbl_name="accounts"; // Table name
// Define $Username and $Password
$Username=$_POST['Username'];
$Password=$_POST['Password'];
if($Username == ""){
header("location: ../index.php");
}else{
// To protect MySQL injection
$Username = stripslashes($Username);
$Password = stripslashes($Password);
$Username = mysql_real_escape_string($Username);
$Password = mysql_real_escape_string($Password);
$sql="SELECT * FROM $tbl_name WHERE Username='$Username' and Password='$Password'";
$result=mysql_query($sql);
// Mysql_num_row is counting table row
$count=mysql_num_rows($result);
// If result matched $Username and $Password, table row must be 1 row
if($count==1){
session_start();
// Register $Username, $Password and redirect to file "login_success.php"
$_SESSION['Username'] = $Username;
//Maak sessie
//echo $_SESSION['Username'];
header("location: ../index.php?p=profile");
// Echo de sessie naam
echo $_SESSION['Username'];
}
}
ob_end_flush();
?>
ob_start();
include('mysql.php');
$tbl_name="accounts"; // Table name
// Define $Username and $Password
$Username=$_POST['Username'];
$Password=$_POST['Password'];
if($Username == ""){
header("location: ../index.php");
}else{
// To protect MySQL injection
$Username = stripslashes($Username);
$Password = stripslashes($Password);
$Username = mysql_real_escape_string($Username);
$Password = mysql_real_escape_string($Password);
$sql="SELECT * FROM $tbl_name WHERE Username='$Username' and Password='$Password'";
$result=mysql_query($sql);
// Mysql_num_row is counting table row
$count=mysql_num_rows($result);
// If result matched $Username and $Password, table row must be 1 row
if($count==1){
session_start();
// Register $Username, $Password and redirect to file "login_success.php"
$_SESSION['Username'] = $Username;
//Maak sessie
//echo $_SESSION['Username'];
header("location: ../index.php?p=profile");
// Echo de sessie naam
echo $_SESSION['Username'];
}
}
ob_end_flush();
?>
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
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
<?php
session_start(); // Wanneer je met sessies werkt, zet dit dan altijd helemaal boven aan je pagina!
if($_SERVER['REQUEST_METHOD'] == 'POST') { // Is er een formulier ingevuld?
include('mysql.php'); // Ik neem aan dat je hier ook al een verbinding maakt met MySQL?
$tbl_name = 'accounts';
if($_POST['Username'] == '') {
header('Location: ../index.php'); // Er is geen gebruikersnaam ingevuld, redirect naar startpagina
exit;
}
$result = mysql_query("SELECT COUTN(id) AS aantal FROM ". $tbl_name ." WHERE Username='". mysql_real_escape_string($_POST['Username']) ."' and Password='". mysql_real_escape_string($_POST['Password']) ."'");
if(!$result) {
echo 'Er is een fout opgetreden! Ahhhh!';
}
$row = mysql_fetch_assoc($result);
if(!$row) {
echo 'Er is een fout opgetreden! Ahhhh!';
}
if($row['aantal'] == 1) {
$_SESSION['Username'] = $_POST['Username'];
header('Location: ../index.php?p=profile');
}
}
?>
session_start(); // Wanneer je met sessies werkt, zet dit dan altijd helemaal boven aan je pagina!
if($_SERVER['REQUEST_METHOD'] == 'POST') { // Is er een formulier ingevuld?
include('mysql.php'); // Ik neem aan dat je hier ook al een verbinding maakt met MySQL?
$tbl_name = 'accounts';
if($_POST['Username'] == '') {
header('Location: ../index.php'); // Er is geen gebruikersnaam ingevuld, redirect naar startpagina
exit;
}
$result = mysql_query("SELECT COUTN(id) AS aantal FROM ". $tbl_name ." WHERE Username='". mysql_real_escape_string($_POST['Username']) ."' and Password='". mysql_real_escape_string($_POST['Password']) ."'");
if(!$result) {
echo 'Er is een fout opgetreden! Ahhhh!';
}
$row = mysql_fetch_assoc($result);
if(!$row) {
echo 'Er is een fout opgetreden! Ahhhh!';
}
if($row['aantal'] == 1) {
$_SESSION['Username'] = $_POST['Username'];
header('Location: ../index.php?p=profile');
}
}
?>
Gewijzigd op 15/09/2012 16:07:50 door Victor -
Even wat opmerkingen over je script:
Waarom ob_start / ob_end_flush? Als je goed script, heb je dat niet nodig.
Je kopieert twee variabelen op regel 10 en 11. 1) waar controleer je of ze bestaan? 2) waarom kopiëren; je weet dan niet meer waar ze vandaan komen (externe input is per definitie onveilig en iets om rekening mee te houden).
Waarom regel 19 t/m 22? Beschermen tegen mysql injection kun je prima (en hoort ook) in je query.
Advies is doorgaans om variabelen buiten quotes te houden.
Selecteer wat je wilt aan velden en niet met *
Afgaande op bovenstaande heb je je het wachtwoord ongecodeerd opgeslagen in je database. Niet wenselijk.
Waar is je foutafhandeling? Je gaat er van uit dat de query altijd lukt.
Waar is de else als $count !=1 is? Een melding lijkt me wel zo netjes naar je bezoeker.
Na een header wordt doorgaans exit() geadviseerd; je script hoeft immers niet verder. Het plaatsen van een echo na een header lijkt me zinloos.
Ik ga er van uit dat je op een andere plek (in index.php) zaken hebt geregeld als <html>, doctype, <head> en <body>.
Zet error-reporting eens aan, op het hoogste niveau:
Gewijzigd op 15/09/2012 16:00:41 door Obelix Idefix
ik ben momenteel bezig met het werkend maken van de scripts in alle browsers en het staat nog niet online dus ik ga de meldingen er bij zetten voor de gebruiker zodra alles werkt. en het hernieuwde scripts heb ik uitgeprobeert maar het werkt nog steeds niet in andere browsers als chrome
Toevoeging op 15/09/2012 16:12:31:
ik heb trouwens dat nieuwe script (na het hernieuwde) uitgeprobeerd en als ik dan inlog zegt hij :
Er is een fout opgetreden! Ahhhh!
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\template\phpfiles\login.php on line 21
Er is een fout opgetreden! Ahhhh!
Toevoeging op 15/09/2012 16:41:03:
ik heb het even tussen code tags gezet om het duidelijker te maken.
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
if(isset($_SESSION['Username'])){
header("location: index.php");
}
?>
<fieldset>
<legend>Log In</legend>
</br>
<form name="login" action="phpfiles/login.php" method="POST">
<ul>
<li> <label for="Username">Username</label>
<input type="text" name="Username" id="Username" size="30" />
</li>
<li> <label for="Password">Password</label>
<input type="Password" name="Password" id="Password" size="30" />
</li>
<li><label for="submit"></label>
<button type="submit" id="submit">Log In</button> </li>
<ul>
</form>
</fieldset>
</br>
<fieldset>
<legend> Register </legend>
</br>
Dont have an account yet? Click here to register now!
<a href="index.php?p=register"> Register Here </a>
</fieldset>
if(isset($_SESSION['Username'])){
header("location: index.php");
}
?>
<fieldset>
<legend>Log In</legend>
</br>
<form name="login" action="phpfiles/login.php" method="POST">
<ul>
<li> <label for="Username">Username</label>
<input type="text" name="Username" id="Username" size="30" />
</li>
<li> <label for="Password">Password</label>
<input type="Password" name="Password" id="Password" size="30" />
</li>
<li><label for="submit"></label>
<button type="submit" id="submit">Log In</button> </li>
<ul>
</form>
</fieldset>
</br>
<fieldset>
<legend> Register </legend>
</br>
Dont have an account yet? Click here to register now!
<a href="index.php?p=register"> Register Here </a>
</fieldset>
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
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
<?php
session_start(); // Wanneer je met sessies werkt, zet dit dan altijd helemaal boven aan je pagina!
if($_SERVER['REQUEST_METHOD'] == 'POST') { // Is er een formulier ingevuld?
include('mysql.php'); // Ik neem aan dat je hier ook al een verbinding maakt met MySQL?
$tbl_name = 'accounts';
if($_POST['Username'] == '') {
header('Location: ../index.php'); // Er is geen gebruikersnaam ingevuld, redirect naar startpagina
exit;
}
$result = mysql_query("SELECT COUTN(id) AS aantal FROM ". $tbl_name ." WHERE Username='". mysql_real_escape_string($_POST['Username']) ."' and Password='". mysql_real_escape_string($_POST['Password']) ."'");
if(!$result) {
echo 'Er is een fout opgetreden! Ahhhh!';
}
$row = mysql_fetch_assoc($result);
if(!$row) {
echo 'Er is een fout opgetreden! Ahhhh!';
}
if($row['aantal'] == 1) {
$_SESSION['Username'] = $_POST['Username'];
header('Location: ../index.php?p=profile');
}
}
?>
session_start(); // Wanneer je met sessies werkt, zet dit dan altijd helemaal boven aan je pagina!
if($_SERVER['REQUEST_METHOD'] == 'POST') { // Is er een formulier ingevuld?
include('mysql.php'); // Ik neem aan dat je hier ook al een verbinding maakt met MySQL?
$tbl_name = 'accounts';
if($_POST['Username'] == '') {
header('Location: ../index.php'); // Er is geen gebruikersnaam ingevuld, redirect naar startpagina
exit;
}
$result = mysql_query("SELECT COUTN(id) AS aantal FROM ". $tbl_name ." WHERE Username='". mysql_real_escape_string($_POST['Username']) ."' and Password='". mysql_real_escape_string($_POST['Password']) ."'");
if(!$result) {
echo 'Er is een fout opgetreden! Ahhhh!';
}
$row = mysql_fetch_assoc($result);
if(!$row) {
echo 'Er is een fout opgetreden! Ahhhh!';
}
if($row['aantal'] == 1) {
$_SESSION['Username'] = $_POST['Username'];
header('Location: ../index.php?p=profile');
}
}
?>
dit is wat ik nu heb staan en nog doet hij het niet. om in te loggen geeft hij nu in chrome ook de error :
Er is een fout opgetreden! Ahhhh!
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\template\phpfiles\login.php on line 21
Er is een fout opgetreden! Ahhhh!
en in de andere browsers doet hij het nu wel , alvast bedankt daar voor :)
Toevoeging op 15/09/2012 17:04:09:
oh , heb van COUTN ff COUNT gemaakt en hij doet het nu in chrome maar hij blijft steken in de andere browsers bij :
Code (php)
1
2
3
4
5
2
3
4
5
if($row['aantal'] == 1) {
$_SESSION['Username'] = $_POST['Username'];
header('Location: ../index.php?p=profile');
}
$_SESSION['Username'] = $_POST['Username'];
header('Location: ../index.php?p=profile');
}
ik heb er even een else bij gezet
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
if($row['aantal'] == 1) {
$_SESSION['Username'] = $_POST['Username'];
header('Location: ../index.php?p=profile');
}else{
echo "hier gaat het fout";
}
$_SESSION['Username'] = $_POST['Username'];
header('Location: ../index.php?p=profile');
}else{
echo "hier gaat het fout";
}
en "hier gaat het fout" is dus ook het bericht wat hij weergeeft.
Debuggen: plaats eens een echo om te kijken wat er in je query staat (klopt dat met wat je verwacht?). En wat er in $row['aantal'] zit.
heb heel even gekeken met wat echo's en ik heb het opgelost :) zat iets mis met het doorsturen