Hejsa alle udviklere..
Jeg har siddet og lavet en gæstebog og prøver på at gøre, så man blandt andet ikke kan poste tomme indlæg og har til det formål både brugt Javascript og PHP.
Javascript koden bruger jeg, når folk trykker submit og PHP koden bruger jeg på den siden, hvor data bliver sat i databasen. Den kontrollerer at mine input felter ikke er tomme og alligevel, så er der nogen der poster uden at indsætte tegn.
Javascript koden:
<script>
function checkform()
{
if (document.form.navn.value=='')
{
alert("Du mangler at udfylde dit navn");
return false;
}
if (document.form.email.value=='')
{
alert("Du mangler at skrive en emailadresse");
return false;
}
if (document.form.overskrift.value=='')
{
alert("Du mangler at skrive en overskrift");
return false;
}
if (document.form.besked.value=='')
{
alert("Du mangler at skrive en besked");
return false;
}
return true;
}
</script>
PHP koden:
<?
$ipblockforesp = mysql_query("SELECT * FROM tabel WHERE blockip = '".$ip."' AND serverhost = '".$host."'") or die(mysql_error());
$ipblockrows = mysql_num_rows($ipblockforesp);
if($ipblockrows == 0) {
if(isset($_POST['submit'])){
$full_name = TagwallSec($_POST['full_name']);
$email = stripslashes($_POST['email']);
$overskrift = TagwallSec($_POST['overskrift']);
$besked = TagwallSec($_POST['besked']);
if(!eregi("^[[:alnum:]][a-z0-9_.-]*@[a-z0-9.-]+\\.[a-z]{2,4}$", $email = $_POST['email'])) { // Tjekker om emailen er gyldig
$succes = 1;
echo "<p>Emailen indeholder ulovlige tegn. Du må lige prøve igen.</p>";
include('html/tagwall.html');
} else {
if((!$full_name) || (!$overskrift) || (!$besked)){
if(!$full_name) {
echo "<p />Du mangler at skrive dit navn.<br />";
}
if(!$overskrift) {
echo "<p />Du mangler at skrive en overskrift.<br />";
}
if(!$besked) {
echo "<p />Du mangler at skrive en besked.<br />";
}
$succes = 1;
include('html/tagwall.html');
} else {
$testforesp = mysql_query("SELECT COUNT(*) AS antal FROM vocal_tagwall WHERE
ip = '".$ip."' AND date_add(time,interval 5 MINUTE) > NOW() ORDER BY
tagwallid DESC LIMIT 0,1") or die(mysql_error());
if (!mysql_result($testforesp,0)) {
$tagwall = mysql_query("INSERT INTO vocal_tagwall (navn, email, overskrift, time, ip, serverhost, text)
VALUES ('$full_name','$email','$overskrift',NOW(),'$ip','$host','$besked')") or die(mysql_error());
};
if(!$tagwall){
$succes = 1;
echo '<p>Der skal gå 5 minutter mellem hvert indlæg. Så prøv igen lidt senere eller kontakt webmasteren.</p>';
include('html/tagwall.html');
} else {
$succes = 0;
echo "<p>Tak for dit indlæg. Din IP: <b>" .$ip. "</b > er blevet registreret til brug i tilfælde af misbrug.</p>";
include('html/tagwall.html');
};
}
}
}
} else {
echo "<p>Din IP er Blockeret på grund af misbrug af denne sides gæstebog. Hvis du mener dette er en fejl, så er du velkommen til at kontakte os på blockip(a)artinmotion.dk.</p>";
};
?>
Function TagwallSec:
Bruges til at fjerne blandt andet html tags. PHP på min webserver har "magic_quotes_gpc On",
"magic_quotes_runtime Off" & "magic_quotes_sybase Off", men jeg bruger den nedenstående function, så jeg kan poste brugerens input igen uden HTML kode, hvis der er fejl i deres input. Men når jeg kigger på mine input i databasen, så har ' & " ikke nogen slashes..?
function TagwallSec($escapechars) {
$tomme = stripslashes($escapechars);
$tags = strip_tags($tomme);
$fyldte = addslashes($tags);
return $fyldte;
};
Er der nogen, der har forslag til hvordan man kan gøre gæstebogen mere sikker? Her tænker jeg blandt andet på SQL injections, tomme indlæg og angreb generelt.
Hvor godt er Captcha? Og vil det hjælpe på sikkerheden i forhold til programmer, som indsætter data automatisk..?
I kan se eksempel på gæstebogen på:
Min gæstebogHåber virkelig der er nogen, der kan hjælpe, da jeg har kæmpet med det et par dage nu..
Med venlig hilsen
Sol