java foutje simpel inlog script

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Mrhocoma

mrhocoma

12/12/2008 17:11:00
Quote Anchor link
edit: sorry in verkeerde categorie geplaatst! :|
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)
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
<?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();
?>
Gewijzigd op 01/01/1970 01:00:00 door Mrhocoma
 
PHP hulp

PHP hulp

21/11/2024 22:44:17
 
Niek Weevers

Niek Weevers

13/12/2008 16:17:00
Quote Anchor link
Die link staat gewoon in de tekst, dus raar dat het niet getoond wordt. Wel in de broncode?
 
Mrhocoma

mrhocoma

13/12/2008 23:46:00
Quote Anchor link
Zo staat het in de brontekst:

U hebt geen goede combinatie van emailadres en wachtwoord gebruikt! <A onclick='javascript: window.back();'>Ga terug</A>
 
Mrhocoma

mrhocoma

13/12/2008 23:55:00
Quote Anchor link
Heb nog even gechecked in een andere browser (opera) dan IE werkt het wel? in IE7 dus niet...
 
Justin S

Justin S

14/12/2008 03:45:00
Quote Anchor link
Probeer deze eens

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


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!
 
Tikkes C

Tikkes C

14/12/2008 09:19:00
Quote Anchor link
mrhocoma: waarom open en sluit je zoveel keer de php tags?

PS: Java != Javascript!
 
Justin S

Justin S

14/12/2008 14:44:00
Quote Anchor link
Ik denk omdat er ook miss stukjes code tussenzitten ofzo, tenminste zo had ik dat aangenomen :P.

@mrhocoma:
Heb je ondertussen al wat vorderingen gemaakt?
 
Mrhocoma

mrhocoma

14/12/2008 15:15:00
Quote Anchor link
@justin
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)
PHP script in nieuw venster Selecteer het PHP script
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.
 
Mrhocoma

mrhocoma

23/12/2008 13:46:00
Quote Anchor link
De wachtwoorden in bovenstaand script zijn in nu de dbase met md5 opgeslagen. Hoe kan ik dat in bovenstaand script inpassen?
 
Dennis Mertens

Dennis Mertens

23/12/2008 13:48:00
Quote Anchor link
Waar ben je toch mee bezog?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
?>

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php session_start();?>

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
ini_set ('display_errors', 1);
error_reporting (E_ALL);
?>

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php

Edit
Bij de controle ook md5 gebruiken :)
Gewijzigd op 01/01/1970 01:00:00 door Dennis Mertens
 
Kevin Tuns

Kevin Tuns

23/12/2008 13:54:00
Quote Anchor link
ietsjes duidelijker gemaakt:

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
<?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();
?>
Gewijzigd op 01/01/1970 01:00:00 door Kevin Tuns
 
Mrhocoma

mrhocoma

23/12/2008 14:46:00
Quote Anchor link
@Dennis Vraag ik mezelf ook wel eens af :) Maar het staat er zo omdat ik het script in een pagina gebruik en de betreffende items zover ik egrrep altijd als eerste op de pagina dienen te staan.

@Kevin
Het werkt nog niet helaas. Krijg nu de melding naam en wachtwoord niet goed
 
Kevin Tuns

Kevin Tuns

23/12/2008 14:56:00
Quote Anchor link
mrhocoma, wat ik heb aangepast is dus dat hij het wachtwoord controleerd met een md5 variant van wat er ingevuld is.
 
- SanThe -

- SanThe -

23/12/2008 14:56:00
Quote Anchor link
Even een opmerking tussendoor: In bovenstaande scripts zit geen foutafhandeling en het is niet veilig.
Gewijzigd op 01/01/1970 01:00:00 door - SanThe -
 
Mrhocoma

mrhocoma

23/12/2008 15:04:00
Quote Anchor link
@Kevin maar die is nooit gelijk aan het met md5 opgeslagen wachtwoord in de database?

@SanThe wat kan er beter?
 
Wouter De Schuyter

Wouter De Schuyter

23/12/2008 15:10:00
Quote Anchor link
Tikkes schreef op 14.12.2008 09:19:
mrhocoma: waarom open en sluit je zoveel keer de php tags?

PS: Java != Javascript!

Je bedoeld wrs "PS: Java !== JavaScript" XD
 
Kevin Tuns

Kevin Tuns

23/12/2008 15:14:00
Quote Anchor link
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
<?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();
?>


draai de code nu eens en vergelijk de uitkomst eens met wat er in de database staat.
 
Mrhocoma

mrhocoma

23/12/2008 16:03:00
Quote Anchor link
Heb de code geprobeerd maar krijg nu een witte lege pagina te zien. Hoe bedoel je de uitkomst vergelijken (die zie ik toch niet?).
 
Kevin Tuns

Kevin Tuns

23/12/2008 16:04:00
Quote Anchor link
zal denk ik een foutje aan mijn kant zijn:

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
<?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();
?>


ik wil tevens wel benadrukken dat deze code niet veilig is en ook zeker niet gebruikt zal moeten worden in de praktijk
 
Dennis Mertens

Dennis Mertens

23/12/2008 16:14:00
Quote Anchor link
Waarom geef je het dan als het niet gebruikt moet worden?

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.
 
Mrhocoma

mrhocoma

23/12/2008 16:19:00
Quote Anchor link
mijn db code:55b5761037b8c0d230b8
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?
 

Pagina: 1 2 volgende »



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.