Hallo allemaal. Ik ben voor het eerst begonnen met PHP en MySQL (zoals tachtigduizend anderen) en ik wilde graag weten of ik een beetje goed bezig ben.
Ik heb een gastenboek en wil dus een paar dingen voorkomen:
- SQL injecties
- HTML abuse
- Lege berichten (of juist te grote)
Nu heb ik zo hier er daar het internet afgesprokkeld en heb ik zo een scriptje op kunnen stellen die dit (naar mijn idee dus) goed doet. Dit is het deel van mijn script:
// controleren of naam en bericht niet leeg zijn
if ($name == "" or $message == "")
{
echo "One or more required fields were found blank. Please go back and try again.";
$_SESSION['randomnr2'] = "cleaned";
exit;
}
// grootte van bericht controleren
$charlimit = 500;
if (strlen($_POST['message']) >= $charlimit)
{
echo "We're sorry, but the maximum number of characters allowed is 500. Please shorten your message and try again. Thank you";
$_SESSION['randomnr2'] = "cleaned";
exit;
}
// html tags verwijderen
$name = strip_tags($name);
$message = strip_tags($message);
// sql injection voorkomen
$name = mysql_real_escape_string($name);
$message = mysql_real_escape_string($message);
Is dit goed? Is dit veilig? Ik hoop dat er iemand is die mij kan helpen.
gaat over een captcha script wat ik gebruik (voor het geval je je dus afvraagt wat het in godsnaam betekend :P ). Het zorgt ervoor dat gebruikers altijd opnieuw een nieuwe code moeten invoeren in het geval dat ze dus een error krijgen en terug gaan om het opnieuw te proberen..
[/ignore] tags.
Met de functie [php]empty[/php] kan je kijken of iets leeg is of niet.
Voor de rest heb ik geen aanmerkingen op je code die je gebruikt
Dat gaat je gegarandeerd een notice opleveren wanneer er geen bericht verzonden is...
@PHP Newbie,
Niet als er een veld bestaat die message heet, dan is $_POST['message'] gewoon leeg maar hij bestaat wel degelijk en kan de functie trim gewoon zijn werk doen ( ookal doet hij niks bij een lege string ), en leverd het geen notice op.