Foutje in script.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Sonja van Rooijen

Sonja van Rooijen

07/02/2011 16:37:43
Quote Anchor link
Goedemiddag Luitjes,

Ik ben bezig met een site aan het maken voor me eigen kleine startende onderneming. Deze wil ik waar nodig goed beveiligen ik probeer samen met mijn neefje een inlog script te maken, wel heb ik het registratie scipt al werkende maar we komen hier nog niet echt uit.

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
<?php
ob_start();
include("header.php");



 require("connect.php");
 
 if(!$_GET['act']){
 echo("<form method='POST' action='$PHP_SELF?act=login'>
 Gebruikersnaam: <input type='text' name='gebruikersnaam' /><br />
 wachtwoord: <input type='password' name='wachtwoord' /><br />
 <input type='submit' value='Login!' />
 </form"
);

 
 }
else if($_GET['act'] == "login"){

$check = mysql_query "SELECT * FROM gebruiker WHERE gebruikersnaam = '{$_POST['gebruikersnaam']}' AND wachtwoord = 'md5($_POST['wachtwoord'])'";
if(mysql_num_rowS($check) > 0){

echo("You have been logged in.");
$_SESSION['loggedin'] = "true";
$_SESSION['gebruikersnaam'] = $_POST['gebruikersnaam'];
}
else {

echo("The gebruikersnaam/wachtwoord was not found.");
}


?>

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php    
include("footer.php");
?>




Parse error: syntax error, unexpected '"' in we blijven deze fout krijgen en deze zit in lijn 19. Weet iemand toevallig wat de fout is alvast bedankt x
Gewijzigd op 07/02/2011 16:38:48 door Sonja van Rooijen
 
PHP hulp

PHP hulp

22/12/2024 07:39:41
 
- SanThe -

- SanThe -

07/02/2011 16:49:26
Quote Anchor link
ob_start() kan weg.

Dit is geen nette en juiste controle:
if(!$_GET['act']){

Bij echo geen () gebruiken. Gebruik daar enkele quotes en dubbele vooe de (valid) html.

$vars buiten de quotes houden. Script is lek => SQL-Injection.

Foutafhandeling ontbreekt.

Haakjes missen bij mysql_query().

"true" is een string, bedoel je niet de boolean: true?

Engels/Nederlands door elkaar?
"The gebruikersnaam/wachtwoord was not found."
Gewijzigd op 07/02/2011 16:50:21 door - SanThe -
 
Sonja van Rooijen

Sonja van Rooijen

07/02/2011 17:05:45
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
<?php
include("header.php");
require("connect.php");
 
 if(!$_GET['act']){
 echo"<form method='POST' action='$PHP_SELF?act=login'>
 Gebruikersnaam: <input type='text' name='gebruikersnaam' /><br />
 wachtwoord: <input type='password' name='wachtwoord' /><br />
 <input type='submit' value='Login!' />
 </form"
;

 
 }
else if($_GET['act'] == "login"){

$check = mysql_query("SELECT * FROM `gebruiker` WHERE `gebruikersnaam` = '{$_POST['gebruikersnaam']}' AND `wachtwoord` = 'md5($_POST['wachtwoord'])'");
if(mysql_num_rowS($check) > 0){

echo("You have been logged in.");
$_SESSION['loggedin'] = "true";
$_SESSION['gebruikersnaam'] = $_POST['gebruikersnaam'];
}
else {

echo("The gebruikersnaam/wachtwoord was not found.");
}


?>

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php    
include("footer.php");
?>


Ziet deze er zo beter uit maar ik krijg nu de volgende foutmelding :(

syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING Line 15. ? Hoe lossen we dit probleem op>?
 
- SanThe -

- SanThe -

07/02/2011 17:11:19
Quote Anchor link
Zie de rest van mijn opmerkingen.

Aanvulling: Backtics horen niet in een query.
 
Jelmer -

Jelmer -

07/02/2011 17:11:25
Quote Anchor link
En zie daar het nut van je code netjes inspringen:
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
<?php
include("header.php");
require("connect.php");

if (!$_GET['act'])
{

    echo"<form method='POST' action='$PHP_SELF?act=login'>
    Gebruikersnaam: <input type='text' name='gebruikersnaam' /><br />
    wachtwoord: <input type='password' name='wachtwoord' /><br />
    <input type='submit' value='Login!' />
    </form"
;
}

else if ($_GET['act'] == "login")
{

    $check = mysql_query("SELECT * FROM `gebruiker` WHERE `gebruikersnaam` = '{$_POST['gebruikersnaam']}' AND `wachtwoord` = 'md5($_POST['wachtwoord'])'");
    
    if (mysql_num_rowS($check) > 0)
    {

        echo("You have been logged in.");
        $_SESSION['loggedin'] = "true";
        $_SESSION['gebruikersnaam'] = $_POST['gebruikersnaam'];
    }

    else
    {
        echo("The gebruikersnaam/wachtwoord was not found.");
    }

    
// Haha! Daar mist een haakje!
?>


Trouwens, je kan aan de kleuren hierboven al zien dat je query niet is wat je denkt dat hij is. Zorg er ook eens voor dat deze code wordt uigevoerd aan het begin van je script, dan zie je wat je allemaal fout doet:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
error_reporting(E_ALL);
ini_set('display_errors', true);
?>
Gewijzigd op 07/02/2011 17:13:23 door Jelmer -
 
Ocirina Ocirina

Ocirina Ocirina

07/02/2011 17:14:41
Quote Anchor link
$check = mysql_query("SELECT * FROM `gebruiker` WHERE `gebruikersnaam` = '{$_POST['gebruikersnaam']}' AND `wachtwoord` = 'md5($_POST['wachtwoord'])'");

Je moet geen backticks gebruiken `gebruiker` moet 'gebruiker' worden.
Dit is ook fout, '{$_POST['gebruikersnaam']}' het moet zijn ' " .($_POST['gebruikersnaam']). " '
Ook is je script lek, sql injectie.
 
- SanThe -

- SanThe -

07/02/2011 17:16:36
Quote Anchor link
Ocirina - op 07/02/2011 17:14:41:
... `gebruiker` moet 'gebruiker' worden.


Echt niet. Gewoon zonder quotes.
 
Ocirina Ocirina

Ocirina Ocirina

07/02/2011 17:18:04
Quote Anchor link
Sorry, foutje.
Voor de sql injectie kun je trouwens mysql_real_escape_string gebruiken.
Gewijzigd op 07/02/2011 17:19:28 door Ocirina Ocirina
 
Sonja van Rooijen

Sonja van Rooijen

07/02/2011 17:22:00
Quote Anchor link
Allemaal bedankt voor de handige informatie, we komen in de buurt maar zijn er nog lang niet. Hier de script na alle aanpassingen.

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
error_reporting(E_ALL);
ini_set('display_errors', true);

include("header.php");
require("connect.php");

if (!$_GET['act'])
{

    echo"<form method='POST' action='$PHP_SELF?act=login'>
    Gebruikersnaam: <input type='text' name='gebruikersnaam' /><br />
    wachtwoord: <input type='password' name='wachtwoord' /><br />
    <input type='submit' value='Login!' />
    </form"
;
}

else if ($_GET['act'] == "login")
{

    $check = mysql_query("SELECT * FROM 'gebruiker' WHERE `gebruikersnaam` = ' " .($_POST['gebruikersnaam']). " ' AND `wachtwoord` = 'md5($_POST['wachtwoord'])'");
    
    if (mysql_num_rowS($check) > 0)
    {

        echo("You have been logged in.");
        $_SESSION['loggedin'] = "true";
        $_SESSION['gebruikersnaam'] = $_POST['gebruikersnaam'];
    }

    else
    {
        echo("The gebruikersnaam/wachtwoord was not found.");
    }

    

?>


Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING on line 18.

Iemand enig idee hoe deze fout kan.
Alvast bedankt allemaal XX
 
Jasper DS

Jasper DS

07/02/2011 17:24:29
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$check
= mysql_query("SELECT * FROM gebruiker WHERE gebruikersnaam = ' ".$_POST['gebruikersnaam']."' AND wachtwoord ='".md5($_POST['wachtwoord'])."'");
?>


- Je script is lek -> sql injectie -> gebruik mysql_real_escape_string!
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
# echoën doe je zo:
echo 'ik echo iets';

# en NIET zo:
echo ("Ik echo niet volledig correct");
?>


- Bij include hetzelfde als hierboven!
- Waarom nederlands / engels door elkaar?
Gewijzigd op 07/02/2011 17:28:09 door Jasper DS
 
Sonja van Rooijen

Sonja van Rooijen

07/02/2011 17:28:06
Quote Anchor link
Kijk eens aan zo komen we steeds een stapje verder nu de volgende fout Parse error: syntax error, unexpected $end on line 32. ? ik dacht dat het script gewoon goed afsloot?
 
Jasper DS

Jasper DS

07/02/2011 17:28:33
Quote Anchor link
Op het einde nog een }
 
Sonja van Rooijen

Sonja van Rooijen

07/02/2011 17:32:26
Quote Anchor link
Danku jasper, het script is nu draaiende echter krijg in de volgende 2 fouten nog te zien.

Notice: Undefined index: on line 8

Notice: Undefined variable: PHP_SELF on line 14

?
 
Jasper DS

Jasper DS

07/02/2011 17:34:17
Quote Anchor link
je script kan $PHP_SELF niet vinden op lijn 14, hij kan $_GET['act'] ook niet vinden op lijn 8

- Verder is er ook geen foutafhandeling op je query!
- Heb je al iets aan de slq-injectie gedaan?
- gebruik " voor html en sql en ' voor php -> hoef je nooit te escapen.
Gewijzigd op 07/02/2011 17:36:22 door Jasper DS
 
Sonja van Rooijen

Sonja van Rooijen

07/02/2011 17:37:36
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
error_reporting(E_ALL);
ini_set('display_errors', true);

include("header.php");
require("connect.php");

if (!$_GET['act'])
{

    echo"<form method='POST' action='$PHP_SELF?act=login'>
    Gebruikersnaam: <input type='text' name='gebruikersnaam' /><br />
    wachtwoord: <input type='password' name='wachtwoord' /><br />
    <input type='submit' value='Login!' />
    </form"
;
}

else if ($_GET['act'] == "login")
{

    $check = mysql_query("SELECT * FROM gebruiker WHERE gebruikersnaam = ' ".$_POST['gebruikersnaam']."' AND wachtwoord ='".md5($_POST['wachtwoord'])."'");
    
    if (mysql_num_rowS($check) > 0)
    {

       echo 'you have been logged in.';
        $_SESSION['loggedin'] = "true";
        $_SESSION['gebruikersnaam'] = $_POST['gebruikersnaam'];
    }

    else
    {
        echo 'The gebruikersnaam/wachtwoord was not found.';
    }
    
}

?>


Dit is het script tot nu toe. De query nog niet getest maar deze zou wel naar behoren moeten werken?
 
- Mark -

- Mark -

07/02/2011 17:37:37
Quote Anchor link
De eerste komt omdat $_GET['act'] niet bestaat. Je moet ook controleren met !isset($_GET['act']) en niet !$_GET['act']

Die tweede zal wel $_SERVER['PHP_SELF'] moeten worden inplaats van $PHP_SELF maar gooi dat er maar snel eruit want dat is onveilig "XSS". Gewoon uit typen.
Gewijzigd op 07/02/2011 17:38:18 door - Mark -
 
Sonja van Rooijen

Sonja van Rooijen

07/02/2011 17:38:32
Quote Anchor link
Wat dien in nu te verwijderen zodat dit script zonder problemen draait.
 
Jasper DS

Jasper DS

07/02/2011 17:39:34
Quote Anchor link
Opnieuw schrijven en deze keer volgens de regels.
 
Sonja van Rooijen

Sonja van Rooijen

07/02/2011 17:40:18
Quote Anchor link
Dient het hele script opnieuw geschreven te worden? En wat klopt er niet volgens de regels
 
Kris Peeters

Kris Peeters

07/02/2011 17:40:46
Quote Anchor link
(EDIT: terwijl ik dit schreef, zijn er een aantal posts bijgekomen)
Die PHP_SELF heb je niet nodig.

Gewoon
<form method="post" action="" > ...

Die notice:
Jij vraagt of de waarde van $_GET['act'] false/null is.
php vertelt jou: "merk op: $_GET['act'] bestaat niet".
Aangezien $_GET['act'] niet bestaat, vindt php het wat raar dat je vraagt wat $_GET['act'] is.

Wat je best doet, is lijn 8 vervangen door

if (empty($_GET['act']))
Gewijzigd op 07/02/2011 17:46:31 door Kris Peeters
 
Sonja van Rooijen

Sonja van Rooijen

07/02/2011 17:50:29
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
error_reporting(E_ALL);
ini_set('display_errors', true);

include("header.php");
require("connect.php");

if (empty($_GET['act']))
{

    echo <form method="post" action="login" >
    Gebruikersnaam: <input type='text' name='gebruikersnaam' /><br />
    wachtwoord: <input type='password' name='wachtwoord' /><br />
    <
input type='submit' value='Login!' />
    <
/form";
}
else if ($_GET['act'] == "
login")
{
    $check = mysql_query("
SELECT * FROM gebruiker WHERE gebruikersnaam = ' ".$_POST['gebruikersnaam']."' AND wachtwoord ='".md5($_POST['wachtwoord'])."'");
    
    if (mysql_num_rowS($check) > 0)
    {
       echo 'you have been logged in.';
        $_SESSION['loggedin'] = "
true";
        $_SESSION['gebruikersnaam'] = $_POST['gebruikersnaam'];
    }

    else
    {
        echo 'The gebruikersnaam/wachtwoord was not found.';
    }
    
}

?>


Parse error: syntax error, unexpected '<' on line 10

De fouten blijven maar komen, zou zo blij zijn als dit achter de rug is. Xx
 

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.