ďťż

{PHP} 3 problemy z shoutboxem. "Odporność" na odświeżenia... i nie tylko.

       

Podstrony


telcocafe

Witam.
Mam pewien problem z własnym shouboxem, a dokładniej 3...

1) Wygląda to tak, że najpierw mam formularz z polem AUTOR i TREŚĆ i przyciskiem DODAJ.
Gdy Nacisnę przycisk dodaj, wiadomość zostaje dodana, ale, gdy strona zostanie odświeżona
wiadomomość jest duplikowana - co zrobić aby shout był na to odporny ? ( ochrona anty
floo-coś_tam... ? )

2) Gdyjestem np. na stronie index.php?site=linki i wyśwle się wiadomość, zostaje załadowana strona
index.php. Co zrobić aby pozostawao na stronie index.php?site=linki ?

3) Co zrobić, żeby po naciśnięciu przycisku dodaj, pola AUTOR i TREŚĆ się resetowały ? ( ich zawartość
została wymazana, ale post został by dodany ).
Użytkownik Sith edytował ten post 12 listopad 2006, 11:16


Zapokaż kod

1. Po dodaniu danych do bazy, czyść tablicę POST (tak pewnie wysyłasz dane) + jakiś warunek, żeby nie dodawać pustych wpisów.
2. to wysyłaj dane do index.php?site=linki, a nie do index.php
3. skrypt js powinien wystarczyć, chociaż jeżeli przeładowywujesz stronę i wpisy w inputach zostają, to raczej sam je tam wpisujesz...

@KUTAR:
to jest kod:
<?php if (isset($_POST['autor'])) { //dostosowujemy wszystkie pola $_POST['autor']=konwertuj($_POST['autor']); $_POST['tresc']=konwertuj($_POST['tresc']); //kontrolujemy poprawno¶ć $blad=''; if (strlen($_POST['tresc'])<10 || strlen($_POST['tresc'])>1024) $blad='Wiadomo¶ć ma niepoprawn± długo¶ć !'; if (strlen($_POST['autor'])<3) $blad='¬le wprowadzono informacje o autorze !'; if ($blad!='') info($blad,'blad'); else { //dodajemy do tabeli mysql_query('INSERT INTO shoutbox SET tresc ="'.$_POST['tresc'].'", autor= "'.$_POST['autor'].'", data_dodania="'.time().'"') or die(mysql_error()); //info('Twój post został dodany.','ok'); } } else { $_POST['autor']=''; $_POST['wiadomosc']=''; } ?> <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST"> <input type="hidden" name="includes" value="includes/shoutbox" /> <table border="0"> <tr><td>Autor:</td></tr> <tr><td><input size="22" type="text" name="autor" value="<?php echo $_POST['autor']; ?>" /></td></tr> <tr><td>Wiadomo¶ć:</td></tr> <tr><td><textarea cols="24" rows="4" name="tresc"><?php echo $_POST['tresc']; ?></textarea></td></tr> <tr><td><input type="submit" value="Dodaj" /></td></tr> </table> </form> <table style="width:100%;height:100px;border:1px solid #000000; overflow:scroll;"> <tr> <td> <p style='padding-left:4px;'>POSTY</p> <hr style="margin-top: -10px;" /> <hr style="margin-top: -5px;" /> <?php $query='SELECT * FROM shoutbox ORDER BY data_dodania DESC LIMIT 10'; $result = mysql_query ($query); while ($row = mysql_fetch_array($result)) { $zamien[':)'] = '<img src="images/shoutbox/smile.gif" alt="" />'; $zamien[':('] = '<img src="images/shoutbox/sad.gif" alt="" />'; $zamien[':D'] = '<img src="images/shoutbox/grin.gif" alt="" />'; $zamien[':|'] = '<img src="images/shoutbox/frown.gif" alt="" />'; $zamien[':/'] = '<img src="images/shoutbox/frown.gif" alt="" />'; $zamien[':P'] = '<img src="images/shoutbox/pfft.gif" alt="" />'; $zamien[';)'] = '<img src="images/shoutbox/wink.gif" alt="" />'; $zamien[':wow'] = '<img src="images/shoutbox/shock.gif" alt="" />'; $shoutbox = (string)$row['tresc']; $shoutbox = str_replace(array_keys($zamien), array_values($zamien), $shoutbox); echo('<span class=\'shoutboxname\'><img src=\'images/shoutbox/bullet.gif\' alt=\'\'> <a class=\'link\' href=\'profile.php?lookup=1\' class=\'side\'>'.$row['autor'].'</a></span> <br>'); echo('<span class=\'shoutboxdate\'>( '.date("d.m.Y H:i:s",$row['data_dodania']).' )</span><br>'); //echo('<span class=\'shoutbox\'>'.$row['tresc'].'</span>< br>'); echo('<span class=\'shoutbox\'>'.$shoutbox.'</span><br>'); echo('<br /><hr />'); } ?> </td> </tr> </table> <script LANGUAGE='Javascript' TYPE='TEXT/Javascript'> var win=null; function NewWindow(mypage,myname,w,h,pos,infocus){ if(pos=="random"){myleft=(screen.width)?Math.floor(Math.random()*(screen.width-w)):100;mytop=(screen. height)?Math.floor(Math.random()*((screen.height-h)-75)):100;} if(pos=="center"){myleft=(screen.width)?(screen.width-w)/2:100;mytop=(screen.height)?(screen. height-h)/2:100;} else if((pos!='center' && pos!="random") || pos==null){myleft=0;mytop=20} settings="width=" + w + ",height=" + h + ",top=" + mytop + ",left=" + myleft + ",scrollbars=no,location=no,directories=no,status=no,menubar=no,toolbar=no,resizable=no";win=window. open(mypage,myname,settings); win.focus();} </script> [ <a class='link' href="java script:NewWindow('includes/shoutbox_smiley.php','popup','400','500',' custom','front');">Emotikony</a> ]



1. Po dodaniu danych do bazy, czyść tablicę POST (tak pewnie wysyłasz dane) + jakiś warunek, żeby nie dodawać pustych wpisów.

To może nie wystarczyć, bo po odświeżeniu przeglądarka wysyła ponownie formularz POST. Najlepiej przed zapisaniem do bazy nowych danych sprawdź czy identyczne dane nie są już w bazie, tzn autor, treść...


Najlepiej przed zapisaniem do bazy nowych danych sprawdź czy identyczne dane nie są już w bazie, tzn autor, treść...

eee.... ale jak to zrobić ?

@kutar:
fajna stopka... :)

Prze zapisaniem danych do bazy:
$wynik=mysql_query('select * from shoutbox where tresc ="'.$_POST['tresc'].'" and autor= "'.$_POST['autor'].'") or die(mysql_error()); if(mysql_num_rows($wynik)==0) { TUTAJ NORMALNY ZAPIS }

nie rozumiem troche... :/

Prosze na tacy:
Nie testowałem czy działa, ale jak nie zrobilem literówki to powinno działac
<?php if (isset($_POST['autor'])) { //dostosowujemy wszystkie pola $_POST['autor']=konwertuj($_POST['autor']); $_POST['tresc']=konwertuj($_POST['tresc']); //kontrolujemy poprawno¶ć $blad=''; if (strlen($_POST['tresc'])<10 || strlen($_POST['tresc'])>1024) $blad='Wiadomo¶ć ma niepoprawn± długo¶ć !'; if (strlen($_POST['autor'])<3) $blad='¬le wprowadzono informacje o autorze !'; if ($blad!='') info($blad,'blad'); else { //dodajemy do tabeli $wynik=mysql_query('select * from shoutbox where tresc ="'.$_POST['tresc'].'" and autor= "'.$_POST['autor'].'") or die(mysql_error()); if(mysql_num_rows($wynik)==0) { mysql_query('INSERT INTO shoutbox SET tresc ="'.$_POST['tresc'].'", autor= "'.$_POST['autor'].'", data_dodania="'.time().'"') or die(mysql_error()); //info('Twój post został dodany.','ok'); } else echo 'Już zapisano wcześniej ten post.'; } } else { $_POST['autor']=''; $_POST['wiadomosc']=''; } ?> <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST"> <input type="hidden" name="includes" value="includes/shoutbox" /> <table border="0"> <tr><td>Autor:</td></tr> <tr><td><input size="22" type="text" name="autor" value="<?php echo $_POST['autor']; ?>" /></td></tr> <tr><td>Wiadomo¶ć:</td></tr> <tr><td><textarea cols="24" rows="4" name="tresc"><?php echo $_POST['tresc']; ?></textarea></td></tr> <tr><td><input type="submit" value="Dodaj" /></td></tr> </table> </form> <table style="width:100%;height:100px;border:1px solid #000000; overflow:scroll;"> <tr> <td> <p style='padding-left:4px;'>POSTY</p> <hr style="margin-top: -10px;" /> <hr style="margin-top: -5px;" /> <?php $query='SELECT * FROM shoutbox ORDER BY data_dodania DESC LIMIT 10'; $result = mysql_query ($query); while ($row = mysql_fetch_array($result)) { $zamien[':)'] = '<img src="images/shoutbox/smile.gif" alt="" />'; $zamien[':('] = '<img src="images/shoutbox/sad.gif" alt="" />'; $zamien[':D'] = '<img src="images/shoutbox/grin.gif" alt="" />'; $zamien[':|'] = '<img src="images/shoutbox/frown.gif" alt="" />'; $zamien[':/'] = '<img src="images/shoutbox/frown.gif" alt="" />'; $zamien[':P'] = '<img src="images/shoutbox/pfft.gif" alt="" />'; $zamien[';)'] = '<img src="images/shoutbox/wink.gif" alt="" />'; $zamien[':wow'] = '<img src="images/shoutbox/shock.gif" alt="" />'; $shoutbox = (string)$row['tresc']; $shoutbox = str_replace(array_keys($zamien), array_values($zamien), $shoutbox); echo('<span class=\'shoutboxname\'><img src=\'images/shoutbox/bullet.gif\' alt=\'\'> <a class=\'link\' href=\'profile.php?lookup=1\' class=\'side\'>'.$row['autor'].'</a></span> <br>'); echo('<span class=\'shoutboxdate\'>( '.date("d.m.Y H:i:s",$row['data_dodania']).' )</span><br>'); //echo('<span class=\'shoutbox\'>'.$row['tresc'].'</span>< br>'); echo('<span class=\'shoutbox\'>'.$shoutbox.'</span><br>'); echo('<br /><hr />'); } ?> </td> </tr> </table> <script LANGUAGE='Javascript' TYPE='TEXT/Javascript'> var win=null; function NewWindow(mypage,myname,w,h,pos,infocus){ if(pos=="random"){myleft=(screen.width)?Math.floor(Math.random()*(screen.width-w)):100;mytop=(screen. height)?Math.floor(Math.random()*((screen.height-h)-75)):100;} if(pos=="center"){myleft=(screen.width)?(screen.width-w)/2:100;mytop=(screen.height)?(screen. height-h)/2:100;} else if((pos!='center' && pos!="random") || pos==null){myleft=0;mytop=20} settings="width=" + w + ",height=" + h + ",top=" + mytop + ",left=" + myleft + & quot;,scrollbars=no,location=no,directories=no,status=no,menubar=no,toolbar=no,r esizable=no";win=window.open(mypage,myname,settings); win.focus();} </script> [ <a class='link' href="java script:NewWindow('includes/shoutbox_smiley.php','popup','400','500',' custom','front');">Emotikony</a> ]

Heh... dzięki, chociaż wcale o to nie prosiłem.
Wystarczyło powiedzieć gdzie co dać :)

thanks

a co do literówek... zapomniałeś zamknąć jednego apostrofa.

<<<TEMAT ZAMKNIĘTY*>>>

*podaruje sobie czyszczenie formularza... ( jakby cos to PW )

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.