Login script werkt alleen in chrome

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Niels Peeren

Niels Peeren

15/09/2012 15:14:57
Quote Anchor link
Beste lezers

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?
 
PHP hulp

PHP hulp

29/03/2024 06:23:55
 
Victor -

Victor -

15/09/2012 15:16:30
Quote Anchor link
heb je misschien iets van relevante code? Anders kunnen we natuurlijk niks voor je bekijken.
 
Niels Peeren

Niels Peeren

15/09/2012 15:27:17
Quote Anchor link
het login form wat je moet invullen is dit script.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?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>

en waar het naar toe linkt is :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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();

?>
 
Victor -

Victor -

15/09/2012 15:57:01
Quote Anchor link
Zo zou die moeten werken:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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');
    }
}


?>
Gewijzigd op 15/09/2012 16:07:50 door Victor -
 
Obelix Idefix

Obelix Idefix

15/09/2012 15:59:58
Quote Anchor link
Plaats code aub tussen [.code] [./code] tags (zonder .)

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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
error_reporting(E_ALL);
ini_set('display_errors',1);
?>
Gewijzigd op 15/09/2012 16:00:41 door Obelix Idefix
 
Niels Peeren

Niels Peeren

15/09/2012 16:09:01
Quote Anchor link
heel erg bedankt voor de reacties.

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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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>


Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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');
    }
}


?>


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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
if($row['aantal'] == 1) {
        $_SESSION['Username'] = $_POST['Username'];
        
        header('Location: ../index.php?p=profile');
    }


ik heb er even een else bij gezet

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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";
}


en "hier gaat het fout" is dus ook het bericht wat hij weergeeft.
 
Obelix Idefix

Obelix Idefix

15/09/2012 17:43:47
Quote Anchor link
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.
 
Niels Peeren

Niels Peeren

15/09/2012 17:47:45
Quote Anchor link
heb heel even gekeken met wat echo's en ik heb het opgelost :) zat iets mis met het doorsturen
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.