Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Kommentteja vieraskirjakoodiin

thek [20.09.2006 21:10:30]

#

tere, tämä threadi löytyy kuhankin puolelta. Laitan sen tänne koska en kuhassa ongelmaani saanut ratkaistua.

Asiaan: Projektina on vieraskirja joka olisi 'mahd. tietoturvallinen ja spämmi vapaa'. Alla on tuotokseni, johonka haluaisin kommentteja ja vinkkejä.

Mikä menee metsään?
Mikä on ok?
Mitä voisi lisätä?

Kuhan keskustelun aikana ilmeni myös seuraavanlainen kummallisuus.. Koodissa on kohta jossa tsekataan että ip-muuttujassa on jtn. Kuitenkin jotkin spämmibotit saavat viestinsä läpi. Tarkastellessani tietokantaa spämmiviestien ip-kenttä on kuitenkin tyhjä. Mitä siis on väärin? Miten tuo on mahdollista?

Koodit:

lomake

<form action="xxx.php" method="POST">
<input type="hidden" name="form" value="ok">
<input name="name" type="text" class="" value="<?= $_POST["name"] ?>" size="30" maxlength="50">
<input name="homepage" type="text" class="" id="homepage" value="<?= $_POST["homepage"] ?>" size="30" maxlength="50">
<input name="sitename" type="text" class="" value="<?= $_POST["sitename"] ?>" size="30" maxlength="50">
<textarea name="message" cols="40" rows="5" class="" ></textarea>
<input name="word" type="text" class="">
<img src="freecap.php" id="freecap">
<input type="reset" name="reset" class="" value="reset" />
<input name="Submit" type="submit" class="" value="Send Message" />
</form>

..ja xxx.php

<?php
session_start();
include ('connect.php'); //

//muuttujat turvallisesti talteen

$form_ok = $_POST["form"];    // lomakkeessa <input type="hidden" name="form" value="ok">
$name = mysql_real_escape_string(htmlentities(stripslashes($_POST['name'])));  //kirjoittajan nimi
$homepage = mysql_real_escape_string(htmlentities(stripslashes($_POST['homepage']))); //kotisivun osoite
$message = mysql_real_escape_string(htmlentities(stripslashes($_POST['message'])));  // viesti
$sitename = mysql_real_escape_string(htmlentities(stripslashes($_POST['sitename']))); //kotisivun nimi
$date = date("d.m.Y H:i:s");  //pvm
$ip=$_SERVER['REMOTE_ADDR'];   // ip


  if ($form_ok) {
    // tarkistetaan vaaditut tiedot
    if (!$_POST["name"]) {
      $form_ok = false;
     echo "Nimi puuttuu!<br>";
    }
   if (empty($ip)) {
    $form_ok = false;
   }
   if (!$_POST["word"]) {
      $form_ok = false;
     echo "Captchakoodi puuttuu!<br>";
    }
    if (!$_POST["message"]) {
      $form_ok = false;
     echo "Viestikenttä on tyhjä!<br>";
    }
 //Captcha koodin tarkistus
   if($_SESSION['hash_func'](strtolower($_POST['word']))!=$_SESSION['freecap_word_hash']){
      $_SESSION['freecap_word_hash'] = false;
      $form_ok = false;
      echo("Captchakoodi on väärä!<br>");
   }
// onko viestissä ei sallittuja merkkijonoja. Onkohan tämä toteutettu oikein?
   $preg=preg_match("/\ba href\b|\bwww\b|\bhttp\b/i",$message);
   if($preg){
      echo"a href,www,http ei ole sallittuja viestikentässä<br>";
       $form_ok = false;
   }

    if ($form_ok) {  //kaikki ok.

   //lisätään tietokantaan.
   $q="INSERT into guestbook (name,ip,homepage,sitename,message,date)
   VALUES ('$name','$ip','$homepage', '$sitename','$message','$date')";

    $add_ok = mysql_query($q);

     if ($add_ok) {  //tietokantaan lisäys onnistus
     header("Location: http://www.domain.com/lue_vk.php");  //siirrytään lue_vk sivulle
      }
        else {
        echo "Virhe tietojen tallennuksessa tietokantaan, yritä myöh. uudelleen.";  // virhe tallennettaessa kantaa.
       }
    }
  }
?>

Kuhassa oleva keskustelu

edit:linkki kuhaan

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta