Foutje in script.
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.
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
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)
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
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.");
}
?>
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.");
}
?>
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
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."
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 -
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
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.");
}
?>
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.");
}
?>
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>?
Zie de rest van mijn opmerkingen.
Aanvulling: Backtics horen niet in een query.
Aanvulling: Backtics horen niet in een query.
En zie daar het nut van je code netjes inspringen:
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)
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
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!
?>
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:
Gewijzigd op 07/02/2011 17:13:23 door Jelmer -
$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.
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.
Ocirina - op 07/02/2011 17:14:41:
... `gebruiker` moet 'gebruiker' worden.
Echt niet. Gewoon zonder quotes.
Sorry, foutje.
Voor de sql injectie kun je trouwens mysql_real_escape_string gebruiken.
Voor de sql injectie kun je trouwens mysql_real_escape_string gebruiken.
Gewijzigd op 07/02/2011 17:19:28 door Ocirina Ocirina
Allemaal bedankt voor de handige informatie, we komen in de buurt maar zijn er nog lang niet. Hier de script na alle aanpassingen.
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
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
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.");
}
?>
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
Code (php)
1
2
3
2
3
<?php
$check = mysql_query("SELECT * FROM gebruiker WHERE gebruikersnaam = ' ".$_POST['gebruikersnaam']."' AND wachtwoord ='".md5($_POST['wachtwoord'])."'");
?>
$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)
- Bij include hetzelfde als hierboven!
- Waarom nederlands / engels door elkaar?
Gewijzigd op 07/02/2011 17:28:09 door Jasper DS
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?
Op het einde nog een }
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
?
Notice: Undefined index: on line 8
Notice: Undefined variable: PHP_SELF on line 14
?
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.
- 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
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
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.';
}
}
?>
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?
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.
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 -
Wat dien in nu te verwijderen zodat dit script zonder problemen draait.
Opnieuw schrijven en deze keer volgens de regels.
Dient het hele script opnieuw geschreven te worden? En wat klopt er niet volgens de regels
(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']))
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
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
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.';
}
}
?>
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




