java foutje simpel inlog script
Hoi ik heb het simpel inlogscriptje volgens de tutorial hier op phphulp gebruikt: http://www.phphulp.nl/php/tutorials/8/155/
Dat werkt met wat kleine aanpassingen prima. echter heb ik nu een gek probleempje en kom er niet achter wat nu de fout is.
Na het invullen van gebruikersnaam en password wordt op de pagina login_2.php gechecked of de gebruike en het ww kloppen. Zo niet krijgt men een melding. In onderstaand script wordt er dan eenregel tekst getoond met een link naar de pagina terug (java script).
Dit werkte eerst prima maar door wellicht iets te veel weggehaald te hebben in het script nu dus niet meer. De $text wordt wel getoond maar niet de java link terug?
Wie ziet de fout. Thanks. Is dit script overigens bij gebruik door slechts een enkele admin gebruiker veilig genoeg? Of moet er nog wat verbeterd worden? Ik heb de zelfde opzet aangehouden als in de tutto:
inlog pagina
verwerk de inlog in inlog_2.php
beveiliging op de beveiligde pagina
uitlog pagina
mysql db met wachtwoorden
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
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
<?php
ob_start();
?>
<?php session_start();?>
<?php
ini_set ('display_errors', 1);
error_reporting (E_ALL);
?>
<?php
if(!empty($_POST)){
include("connect.php");
$query = "SELECT * FROM users WHERE email='" . $_POST["email"] ."' AND wachtwoord='". $_POST["wachtwoord"] . "'";
$result = mysql_query($query);
if(mysql_num_rows($result) > 0){
$user = $_POST["email"];
$wachtwoord = $_POST["wachtwoord"];
$_SESSION['user'] = $user;
$_SESSION['wachtwoord'] = $wachtwoord;
header("Location: admin_cms.php");
exit();
}
else {
// hier gaat denk ik iets fout?
$text = "U hebt geen goede combinatie van emailadres en wachtwoord gebruikt! <A onclick='javascript: window.back();'>Ga terug</A>";
die($text);
} }
else{
//pagina verkeerd aangeroepen
header("Location: login.php");
}?>
<?php
ob_end_flush();
?>
ob_start();
?>
<?php session_start();?>
<?php
ini_set ('display_errors', 1);
error_reporting (E_ALL);
?>
<?php
if(!empty($_POST)){
include("connect.php");
$query = "SELECT * FROM users WHERE email='" . $_POST["email"] ."' AND wachtwoord='". $_POST["wachtwoord"] . "'";
$result = mysql_query($query);
if(mysql_num_rows($result) > 0){
$user = $_POST["email"];
$wachtwoord = $_POST["wachtwoord"];
$_SESSION['user'] = $user;
$_SESSION['wachtwoord'] = $wachtwoord;
header("Location: admin_cms.php");
exit();
}
else {
// hier gaat denk ik iets fout?
$text = "U hebt geen goede combinatie van emailadres en wachtwoord gebruikt! <A onclick='javascript: window.back();'>Ga terug</A>";
die($text);
} }
else{
//pagina verkeerd aangeroepen
header("Location: login.php");
}?>
<?php
ob_end_flush();
?>
Gewijzigd op 01/01/1970 01:00:00 door Mrhocoma
Die link staat gewoon in de tekst, dus raar dat het niet getoond wordt. Wel in de broncode?
U hebt geen goede combinatie van emailadres en wachtwoord gebruikt! <A onclick='javascript: window.back();'>Ga terug</A>
Heb nog even gechecked in een andere browser (opera) dan IE werkt het wel? in IE7 dus niet...
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<a href="#" onclick="history.go(-1)">Ga naar vorige pagina</a>
<?php
// of deze:
?>
<form> <input type="button" value="Ga naar vorige pagina" onclick="history.back()" /> </form>
<?php
// of deze:
?>
<form> <input type="button" value="Ga naar vorige pagina" onclick="history.back()" /> </form>
Ik denk dat je twee methoden door elkaa rhebt gehaald, een formulier link en een normale link. Een aanklikbare link doet namelijk niets zonder een href.
Succes!
PS: Java != Javascript!
@mrhocoma:
Heb je ondertussen al wat vorderingen gemaakt?
Bedankt voor je input met de eerste optie werkt het, wel moest ik de " vervangen voor ' anders werkte hety niet.
dus in mijn script staat het er nu zo in:
Code (php)
1
$text = "U hebt geen goede combinatie van gebruikersnaam en wachtwoord gebruikt! <a href='#' onclick='history.go(-1)' >Ga terug naar de inlog pagina</a>
het werkt nu prima.
@Tikkes. Kan ik makkelijker stukjes code weghalen en toevoegen zonder dat ik per ongelijk de rest van code verpruts. Snap wel dat het niet nodig is maar aangezien ik een en ander tussen html plaats werkt het voor mij overzichtelijker.
De wachtwoorden in bovenstaand script zijn in nu de dbase met md5 opgeslagen. Hoe kan ik dat in bovenstaand script inpassen?
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
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
<?php
ob_start();
session_start();
ini_set ('display_errors', 1);
error_reporting (E_ALL);
if(!empty($_POST)){
include("connect.php");
$user = $_POST["email"];
$wachtwoord = md5($_POST["wachtwoord"]);
$query = "SELECT * FROM users WHERE email='" . $user ."' AND wachtwoord='". $wachtwoord . "'";
$result = mysql_query($query);
if(mysql_num_rows($result) > 0){
$_SESSION['user'] = $user;
$_SESSION['wachtwoord'] = $wachtwoord;
header("Location: admin_cms.php");
exit();
}
else
{
$text = "U hebt geen goede combinatie van gebruikersnaam en wachtwoord gebruikt! <a href='#' onclick='history.go(-1)' >Ga terug naar de inlog pagina</a>";
die($text);
}
}
else
{
header("Location: login.php");
}
ob_end_flush();
?>
ob_start();
session_start();
ini_set ('display_errors', 1);
error_reporting (E_ALL);
if(!empty($_POST)){
include("connect.php");
$user = $_POST["email"];
$wachtwoord = md5($_POST["wachtwoord"]);
$query = "SELECT * FROM users WHERE email='" . $user ."' AND wachtwoord='". $wachtwoord . "'";
$result = mysql_query($query);
if(mysql_num_rows($result) > 0){
$_SESSION['user'] = $user;
$_SESSION['wachtwoord'] = $wachtwoord;
header("Location: admin_cms.php");
exit();
}
else
{
$text = "U hebt geen goede combinatie van gebruikersnaam en wachtwoord gebruikt! <a href='#' onclick='history.go(-1)' >Ga terug naar de inlog pagina</a>";
die($text);
}
}
else
{
header("Location: login.php");
}
ob_end_flush();
?>
Gewijzigd op 01/01/1970 01:00:00 door Kevin Tuns
@Kevin
Het werkt nog niet helaas. Krijg nu de melding naam en wachtwoord niet goed
mrhocoma, wat ik heb aangepast is dus dat hij het wachtwoord controleerd met een md5 variant van wat er ingevuld is.
Gewijzigd op 01/01/1970 01:00:00 door - SanThe -
@SanThe wat kan er beter?
Tikkes schreef op 14.12.2008 09:19:
mrhocoma: waarom open en sluit je zoveel keer de php tags?
PS: Java != Javascript!
PS: Java != Javascript!
Je bedoeld wrs "PS: Java !== JavaScript" XD
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
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
<?php
ob_start();
session_start();
ini_set ('display_errors', 1);
error_reporting (E_ALL);
if(!empty($_POST)){
include("connect.php");
$user = $_POST["email"];
$wachtwoord = md5($_POST["wachtwoord"]);
echo ''.$wachtwoord'<br /><br />';
$query = "SELECT * FROM users WHERE email='" . $user ."' AND wachtwoord='". $wachtwoord . "'";
$result = mysql_query($query);
if(mysql_num_rows($result) > 0){
$_SESSION['user'] = $user;
$_SESSION['wachtwoord'] = $wachtwoord;
header("Location: admin_cms.php");
exit();
}
else
{
$text = "U hebt geen goede combinatie van gebruikersnaam en wachtwoord gebruikt! <a href='#' onclick='history.go(-1)' >Ga terug naar de inlog pagina</a>";
die($text);
}
}
else
{
header("Location: login.php");
}
ob_end_flush();
?>
ob_start();
session_start();
ini_set ('display_errors', 1);
error_reporting (E_ALL);
if(!empty($_POST)){
include("connect.php");
$user = $_POST["email"];
$wachtwoord = md5($_POST["wachtwoord"]);
echo ''.$wachtwoord'<br /><br />';
$query = "SELECT * FROM users WHERE email='" . $user ."' AND wachtwoord='". $wachtwoord . "'";
$result = mysql_query($query);
if(mysql_num_rows($result) > 0){
$_SESSION['user'] = $user;
$_SESSION['wachtwoord'] = $wachtwoord;
header("Location: admin_cms.php");
exit();
}
else
{
$text = "U hebt geen goede combinatie van gebruikersnaam en wachtwoord gebruikt! <a href='#' onclick='history.go(-1)' >Ga terug naar de inlog pagina</a>";
die($text);
}
}
else
{
header("Location: login.php");
}
ob_end_flush();
?>
draai de code nu eens en vergelijk de uitkomst eens met wat er in de database staat.
Heb de code geprobeerd maar krijg nu een witte lege pagina te zien. Hoe bedoel je de uitkomst vergelijken (die zie ik toch niet?).
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
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
<?php
ob_start();
session_start();
ini_set ('display_errors', 1);
error_reporting (E_ALL);
if(!empty($_POST)){
include("connect.php");
$user = $_POST["email"];
$wachtwoord = md5($_POST["wachtwoord"]);
echo ''.$wachtwoord.'<br /><br />';
$query = "SELECT * FROM users WHERE email='" . $user ."' AND wachtwoord='". $wachtwoord . "'";
$result = mysql_query($query);
if(mysql_num_rows($result) > 0){
$_SESSION['user'] = $user;
$_SESSION['wachtwoord'] = $wachtwoord;
header("Location: admin_cms.php");
exit();
}
else
{
$text = "U hebt geen goede combinatie van gebruikersnaam en wachtwoord gebruikt! <a href='#' onclick='history.go(-1)' >Ga terug naar de inlog pagina</a>";
die($text);
}
}
else
{
header("Location: login.php");
}
ob_end_flush();
?>
ob_start();
session_start();
ini_set ('display_errors', 1);
error_reporting (E_ALL);
if(!empty($_POST)){
include("connect.php");
$user = $_POST["email"];
$wachtwoord = md5($_POST["wachtwoord"]);
echo ''.$wachtwoord.'<br /><br />';
$query = "SELECT * FROM users WHERE email='" . $user ."' AND wachtwoord='". $wachtwoord . "'";
$result = mysql_query($query);
if(mysql_num_rows($result) > 0){
$_SESSION['user'] = $user;
$_SESSION['wachtwoord'] = $wachtwoord;
header("Location: admin_cms.php");
exit();
}
else
{
$text = "U hebt geen goede combinatie van gebruikersnaam en wachtwoord gebruikt! <a href='#' onclick='history.go(-1)' >Ga terug naar de inlog pagina</a>";
die($text);
}
}
else
{
header("Location: login.php");
}
ob_end_flush();
?>
ik wil tevens wel benadrukken dat deze code niet veilig is en ook zeker niet gebruikt zal moeten worden in de praktijk
Geef dan gewoon de correcte code.
En waarom nou weer ''. aan het begin van een echo.
De waarde van de post email in de variabele user kopieren. Hetzelfde met de variabele wachtwoord.
En een geheel onnodige variabele aanmaken genaamd text die je alleen met de die mee geeft... ???
Natuurlijk geen gebruikers gegevens mee geven in de session. Gewoon het user id, en hash code die ook wordt opgeslagen in de database. Hierdoor wordt het ook onmogelijk om op 2 plekken tegelijk ingelogd te zijn, omdat er maar 1 hash code is.
de code uit het script: 55b5761037b8c0d230b8fa02d81f8814
over de veiligheid van de code:
Is het dan niet handiger om iets beters te maken van dit script? Nu ben ik wel leuk bezig maar als het niet veilig is heb ik of een ander er niet veel aan? Zoals ik helemaal aan het begin aangegeven heb, heb ik dit opgebouwd aan de hand van de tutorial. Die is dan wellicht aan vervanging toe (delete)?
Heb inmiddels dit script in een site ingebouwd, jammer als nu alles weer helemaal opnieuw moet. :|
En wat is er niet veilig dan?