Login doet alleen op Chrome
Ik heb een site gemaakt met een inlog en registreer script. Nu zit ik alleen met een probleem. Op chrome werkt het perfect en heb ik niks te klagen. Maar als ik met dat zelfde account inlog op Internet Explorere dan werkt het niet... Hij maakt alleen mijn ingevulde vakjes leeg en gaat niet naar een andere pagina. Zegt ook niet dat het fout is...
De code:
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
session_start();
// dBase file
include "dbConfig.php";
if ($_GET["op"] == "login")
{
if (!$_POST["username"] || !$_POST["password"])
{
die("You need to provide a username and password.");
}
// Create query
$q = "SELECT * FROM `dbUsers` "
."WHERE `username`='".$_POST["username"]."' "
."AND `password`=PASSWORD('".$_POST["password"]."') "
."LIMIT 1";
// Run query
$r = mysql_query($q);
if ( $obj = @mysql_fetch_object($r) )
{
// Login good, create session variables
$_SESSION["valid_id"] = $obj->id;
$_SESSION["valid_user"] = $_POST["username"];
$_SESSION["valid_time"] = time();
// Redirect to member page
Header("Location: home.php");
}
else
{
// Login not successful
die("Sorry, could not log you in. Wrong login information.");
}
}
else
{
//If all went right the Web form appears and users can log in
}
?>
session_start();
// dBase file
include "dbConfig.php";
if ($_GET["op"] == "login")
{
if (!$_POST["username"] || !$_POST["password"])
{
die("You need to provide a username and password.");
}
// Create query
$q = "SELECT * FROM `dbUsers` "
."WHERE `username`='".$_POST["username"]."' "
."AND `password`=PASSWORD('".$_POST["password"]."') "
."LIMIT 1";
// Run query
$r = mysql_query($q);
if ( $obj = @mysql_fetch_object($r) )
{
// Login good, create session variables
$_SESSION["valid_id"] = $obj->id;
$_SESSION["valid_user"] = $_POST["username"];
$_SESSION["valid_time"] = time();
// Redirect to member page
Header("Location: home.php");
}
else
{
// Login not successful
die("Sorry, could not log you in. Wrong login information.");
}
}
else
{
//If all went right the Web form appears and users can log in
}
?>
Bij je include, Gets, Posts en sessies moet je in elk geval een enkele quote neerzetten (')
"Hij maakt alleen mijn ingevulde vakjes leeg en gaat niet naar een andere pagina." Dus volgens jou wordt er niets naar je server verstuurd. Waarom laat je dan PHP code zien die alleen uitgevoerd wordt als er wel info naar de server verstuurt wordt? Laat ook eens de HTML zien a.u.b.
Die dubbele " doe ik door een andere programmeer taal een beetje automatisch. Ik zal het aanpassen!
Verder heb ik deze code:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<table width="300" height="160" background="plaatjes/login.png" >
<tr>
<td ><div align="center"><b>Vul je gegeven in:</b></div></td>
</tr>
<form action='?op=login' method='post' accept-charset='UTF-8'>
<tr>
<td ><div align="center"><b>Gebruikersnaam:</b></div></td>
<td ><input name="username" type="text" /></td>
</tr>
<tr>
<td><div align="center"><b>Wachtwoord:</b></div></td>
<td><input type='PASSWORD' name="password" type="text" /></td>
</tr>
<tr>
<td><div align="right"><input name="" type="submit" value="login" /></div></td>
</tr>
</form>
</table>
<tr>
<td ><div align="center"><b>Vul je gegeven in:</b></div></td>
</tr>
<form action='?op=login' method='post' accept-charset='UTF-8'>
<tr>
<td ><div align="center"><b>Gebruikersnaam:</b></div></td>
<td ><input name="username" type="text" /></td>
</tr>
<tr>
<td><div align="center"><b>Wachtwoord:</b></div></td>
<td><input type='PASSWORD' name="password" type="text" /></td>
</tr>
<tr>
<td><div align="right"><input name="" type="submit" value="login" /></div></td>
</tr>
</form>
</table>
Groeten,
Dennis
- Waarom een geluidsdemper (@) op mysql_fetch_object()?
- Het inpringen kan nog beter
- Gebruik je wel een php-edittor?
Binnen HTML zijn dubbele quotes weer mooier, enkele quotes worden geaccepteerd, maar je kan door een header (Content-Type: application/xhtml-xml) mee te sturen de browser verplichten heel strict te zijn en dan zullen alleen dubbele quotes geaccepteerd worden.
Je password input bevat twee type attibuten, geen idee waarom je het als text zou willen. Ook snap ik de hoofdletters niet, tegen de browser schreeuwen zal je niet helpen :p
method="POST" is dan wel weer mooier, aangezien je dat met hoofdletters hoort te schrijven.
Verder is een exit; na een location header wel mooi. Verdere executie van het script hoort niet nodig te zijn op dat punt.
PS. de location header hoort een absulute URL te krijgen, sommige browsers ondersteunen relatieve urls wel. Het zou dus kunnen dat ik het fout had en het wel aan de PHP kant ligt en dat IE geen relatieve URLs ondersteund. Anders weet ik het op het moment ook niet.
Gewijzigd op 14/10/2013 11:01:02 door Dos Moonen
Allereerst heel erg bedankt voor alle tips hier heb ik echt weer heel veel aan. En helpt me weer verder bij het leren van PHP en het netjes gebruiken van PHP.
Kan je me iets meer uitleg geven over de relatieve urls? Ik denk dat het hier ergens mis gaat dan?
http://en.wikipedia.org/wiki/HTTP_location#Absolute_URL_example
Erg kort door de bocht: Voor HTTP 1.0 gebruik "Location: http://blablabla". Voor HTTP 1.1 is "Location: /blablabla" ook toegestaan. Geen enkele HTTP versie ondersteund "Location: blablabla". Dat is wat ik heb begrepen in elk geval.
Dat zou dus betekenen dat chrome 'aardiger' doet. Al zou ik het fijn vinden als elke browser de HTTP specificaties ondersteunen en ook niet meer dan dat. En features ook pas vanaf de versie waarin ze toegevoegd zijn. Op die manier heb je geen situaties waarbij het bij A wel werkt, maar bij B niet. Vaandaar dat ik 'aardiger' tussen aanhalingstekens heb gezet.
Erg kort door de bocht: Voor HTTP 1.0 gebruik "Location: http://blablabla". Voor HTTP 1.1 is "Location: /blablabla" ook toegestaan. Geen enkele HTTP versie ondersteund "Location: blablabla". Dat is wat ik heb begrepen in elk geval.
Dat zou dus betekenen dat chrome 'aardiger' doet. Al zou ik het fijn vinden als elke browser de HTTP specificaties ondersteunen en ook niet meer dan dat. En features ook pas vanaf de versie waarin ze toegevoegd zijn. Op die manier heb je geen situaties waarbij het bij A wel werkt, maar bij B niet. Vaandaar dat ik 'aardiger' tussen aanhalingstekens heb gezet.
in dit kleine stukje code word mijn lijst met bestanden weergegeven. Nu zou ik willen dat hij per rij 1 2 3 enzovoort doortelt. Dus die iedere rijd met een ander nummer krijgt. Ik kan alleen niet werken met id want er zijn ook andere boeken die niet moeten...
Hoe laat ik hem per dus steeds 1 erbij weergeven?
Gewijzigd op 14/10/2013 21:39:21 door Dos Moonen
Heel erg bedankt voor de counter en ook voor de site.
Ik moet het alleen allebei nog even testen vanmiddag! Ik snap wel wat je bedoeld over aardiger zijn! Eerst zo een paar hoorcolleges en vakken en dan komt de test!
Groeten,
Dennis
Toevoeging op 15/10/2013 08:59:03:
Ik heb het even getest en het werkt allemaal! Me eerste college even gebruikt om dit te verwerken!
Heel erg bedankt allemaal voor al deze goede hulp!