hallo allemaal,

ik heb dit voorbeeld overgetypt uit het boek 'leer jezelf makkelijk php' voor zover ik zie heb ik geen fouten overgetypt.

alleen krijg ik volgende error

Notice: Undefined variable: knop in...

ik vind de if en else ook raar opgebouwd, zo met laatste regels waar een } tussen php tags staat, is dit eigenlijk wel goed ?

uiteindelijk is mijn bedoeling om een waarde die ik invul in een inputveld toe te voegen aan de database. misschien heeft er iemand een beter script hiervoor ?

mvg, en hier mijn code


<html>
<head>
<title>Invoegen</title>
</head>
<body>
<?php
ini_set('display_errors', 'On'); //display error = on
error_reporting(E_ALL); //display all errors
?> 
<?php
if ($knop && $voornaam)
{
	$connect = mysql_connect("localhost", "mijn_gebruikersnaam", "mijn_passwoord") or die("kan niet verbinden: " . mysql_error());
	mysql_select_db ("mijn_db", $connect); //database name
	$sql = "INSERT INTO Klant (Voornaam) VALUES ('$voornaam')";
	if(!mysql_query($sql))
	{
		echo "helaas toevoegen van de $voornaam is mislukt!";
	}
	else
	{
		echo "Prima, de $voornaam is toegevoegd";
	}
	mysql_close($connect);
}
else
{
	?>
    <form method="post" action="<?php echo $PHP_SELF ?>">
    Voeg woord toe: <br>
    toevoegen: <input type="text" name="voornaam"><br>
    <input type="submit" name="knop" value="toevoegen">
    </form>
    <?php
    }
	?>
</body>
</html>
Notice is geen fout maar een mededeling. Notice treden op als je een lege variabele gebruikt.
Voorbeeld:
<?php
echo $iets; // notice omdat ie leeg is

$iets = 'blabla';
echo $iets; // blabla (geen notice omdat ie niet leeg is)

if(isset($iets)) echo $iets; // Geen notice, ook al is ie leeg.
?>

En dat op regel 34,35,36 kan wel hoor. Je kan je form in php zetten, dan is 't niet nodig om php te sluiten en later weer te openen.

Haal variabelen wel buiten quotes. Voorbeeld:
<?php
//GOED:
echo 'Ik ben '.$naam;
echo 'Ik ben '.$jaar.' oud';

//FOUT:
echo 'Ik ben $naam';
echo 'Ik ben $jaar oud';
?>

$PHP_SELF is trouwens ook niet goed. Gebruik dan $_SERVER['PHP_SELF']
Maar deze functie is sowieso niet betrouwbaar omdat deze kan worden aangepast door de bezoeker.

if ($knop && $voornaam) is ook niet goed.
Om te controleren of iets is gepost doe je zo:
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
echo 'Er is gepost';
}
?>
En de variabelen die zijn gepost lees je dan zo uit: $_POST['voornaam']

Misschien tijd voor een nieuw boek...
Probeer dit eens
[code]
<?php
if(isset($_POST['knop'])
{
$voornaam = $_POST['voornaam'];

$connect = mysql_connect("localhost","user","wachtwoord") or die("kan niet verbinden: ". mysql_error());
mysql_select_db("mijn_db", $connect);
$sql = "INSERt INTO klant (voornaam) VALUES ('".$voornaam."')";
Hier de reset van je foutafhandeling
}
else
{
hier je form
}
?>
thomas schreef op 12.11.2009 20:10
Probeer dit eens

<?php
if(isset($_POST['knop']) // Ook nog een haakje vergeten
{
   $voornaam = $_POST['voornaam'];

}
?>

Niet
<?php
if(isset($_POST['knop'])) // FOUT
{
echo 'Geen idee wat er is gebeurd';
{
?>
Maar
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST') // GOED
{
echo 'Er is gepost';
}
?>
dank u wel allemaal, het is gelukt !!

thnx !!
Bovenstaande scriptjes zijn allen lek => SQL-Injection.
SanThe schreef op 12.11.2009 21:42
Bovenstaande scriptjes zijn allen lek => SQL-Injection.


hey,

ik heb even op wiki gezocht wat SQL-Injection is, volgens de uitleg komt het er op neer dat een bezoeker/hacker door bepaalde tekens in te voegen info uit de database kan opvragen/aanpassen/verwijderen..

nu is mijn vraag, hoe kan ik dit voorkomen ?
[php]mysql_real_escape_string[/php]().

Reageren