o intrebare pentru shoutbox

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
Avatar utilizator
trif
Mesaje:500

o intrebare pentru shoutbox

am acest shoutbox si merge ok dar problema este ca atunci cand scriu un msg il pune dar daca dau f5 sau reload pe pagina imi tine minte ceea ce am scris si imi scrie iara aceelasi msg adica se repeta si de fiecare data este asa.

Cod: Selectaţi tot

<?php
  include("config_shoutbox.php");
    if ($_POST['shoutbox_submit'])  {
      $name = $_POST['shoutbox_name'];
      $ip = $_POST['shoutbox_ip'];
      $message = $_POST['shoutbox_message'];
      $mlen = strlen($message);
      $date = date("F jS Y");
      if ($name == "") { 
        echo "<strong>Atentie: Trebuie sa te autentifici.</strong>"; 
      }
      else if ($message == "") { 
        echo "<strong>Atentie: scrie un mesaj.</strong>"; 
      }
      else if ($mlen > $max_length) { 
        echo "<strong>Atentie!: mesajul este prea lung.</strong>"; 
      }
     else {
      $db = mysql_connect($db_host,$db_user,$db_pass); 
      mysql_select_db($db_name) or die("Cannot connect to database");
      mysql_query("INSERT INTO shoutbox(name,ip,message,date) VALUES('$name','$ip','$message','$date')"); 
      mysql_close($db);
      }
    }
  $db = mysql_connect($db_host,$db_user,$db_pass); 
  mysql_select_db($db_name) or die("Cannot connect to database");
  $query = "SELECT * FROM shoutbox ORDER BY id DESC LIMIT $dmessage"; 
  $result = mysql_query($query);
    echo "<div class=\"shoutbox\">\n";
    echo "<ul>\n";
    while($r=mysql_fetch_array($result)) {
      //Strips unwanted HTML from nickname
      $name = $r['name'];
      $name = strip_tags($name);
      //Strips unwanted HTML from message
      $message = $r['message'];
      $message = strip_tags($message);
	  $date = $r['date'];
      $date = ($date);
      // Transform text to smileys =) 
      $message = str_replace("=(","<img src=\"zambete/sad.gif\" alt=\"=(\"/>", $message);
   ...
      $message = ereg_replace(":roll:","<img src=\" zambete/roll.gif\" alt=\":roll:\"/>", $message);
      echo "<li title=\"Shouted on $r[date]\" style=\"cursor: pointer\"><strong>$name</strong>: $message</li>\n";
    }
      echo "</ul>\n";
      echo "</div>\n";
      mysql_close($db);
?>
cum fac ca dupa fiecare fiecare mesaj scris sa trebuiasa ca sa se scrie iara nu sa imi puna acelasi msg anterior. faza este ca are un if

Cod: Selectaţi tot

if ($name == "") { 
        echo "<strong>Atentie: Trebuie sa te autentifici.</strong>"; 
      }
      else if ($message == "") { 
        echo "<strong>Atentie: scrie un mesaj.</strong>"; 
      }
in care zice aceste lucruri si teoretic tine minte cred nu stiu. va uitati si puteti sa imi ziceti. ms mult, cu stima trif
M-am hotarat!
De ce sa fiu trist?
Oricum nu intereseaza pe nimeni...!
Mai bine sunt fericit si ii enervez pe toti cu fericirea mea!
http://www.cantaricrestine.ro
---> cu stima Trif

MarPlo Mesaje:4343
Nu tine minte mesajul, ci cand se da F5 sau Refresh, se retrimit datele din browser la server.
In acest caz solutia este un cod CAPCHA sau setarea unei sesiuni dupa ce a fost trimis mesajul. In acea sesiune poti inregistra mesajul, daca nu e prea mare, iar la acel if adaugi sa verifice si daca exista sesiunea respectiva si valoarea ei este aceeasi cu mesajul primit, si daca este sa nu mai inregistreze.
Cam asta e teoretic. Daca nu stii cum se fac sesiunile in php, vezi lectia Utilizare sesiuni
In lucru cu sesiuni trebuie sa ai session_start() la inceputul fisierului php.

Subiecte similare