Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Isset nie reaguje tak jakby, shoutbox
Glukozamina
post
Post #1





Grupa: Zarejestrowani
Postów: 58
Pomógł: 0
Dołączył: 27.04.2008

Ostrzeżenie: (0%)
-----


Witam. Stworzyłem sobie takiego małego mojego shoutboxa i się zastanawiam dlaczego po kliknieciu dodaj nadal sie wykonuje... tzn. dodaje nowe wpisy mimo iż ma polecenie aby tego nie robił gdy pole tresc jest puste. 2. Jak zrobić, żeby podczas odswieżania nie dodawał sie za każdym razem ten wpis ? 3. Jak zrobić ,że gdy klikne na np. pole nick to nazwa tego pola(napis nick) mi zniknie automatycznie z formularza ?

  1. <form method="GET" action="index.php">
  2. <input type="text" name="nick" value="nick" size="20">
  3. <input type="text" name="tresc" size="40">
  4. <input type="submit" value="Dodaj">
  5. </form>
  6.  
  7.  
  8. <?php
  9.  
  10. function dodawanie($id, $nick, $tresc, $time, $ip){
  11.  
  12. /*sprawdzenie poprawości przekazanych danych*/
  13.  
  14.  
  15. if($tresc == ''){
  16. echo("Brak danych. Proszę wypełnić pole: Treść.");
  17. return;
  18. }
  19.  
  20. }
  21. if($id == '') $id = 'NULL';
  22.  
  23. $time=(date("H:i:s"));
  24. $ip=($_SERVER['REMOTE_ADDR']);
  25. $nick=($_GET['nick']);
  26. $tresc=($_GET['tresc']);
  27.  
  28.  
  29.  
  30. /*Nawiązanie połączenia z bazą*/
  31.  
  32. if (!$db_lnk = @mysql_connect("x", "x", ":)")){
  33. echo('Wystąpił błąd podczas próby połączenia z serwerem MySQL...<BR>');
  34. return;
  35. }
  36.  
  37. if(!@mysql_select_db('x')){
  38. echo('Wystąpił błąd podczas wyboru bazy danych: biblioteka<BR>');
  39. return;
  40. }
  41.  
  42. /*Utworzenie i wykonanie zapytania*/
  43.  
  44. $query = "INSERT INTO shoutbox VALUES(";
  45. $query .= "'$id', '$nick', '$tresc', '$time', '$ip'";
  46. $query .= ")";
  47.  
  48.  
  49.  
  50. if(!mysql_query($query, $db_lnk)){
  51. echo 'Wystąpił błąd: zapytanie zostało odrzucone...<br />Zapytanie: <pre>' . $query . '</pre>Odpowiedź MySQL: <pre>' . mysql_error( $db_lnk ) . '</pre>';
  52. return;
  53. }
  54.  
  55.  
  56.  
  57. /*Pobranie informacji o liczbie wstawionych wierszy*/
  58.  
  59. $rowsNo = mysql_affected_rows($db_lnk);
  60.  
  61. echo("Dziękuje za pozostawioną wiadomość . <br>");
  62. echo("Liczba dodanych rekordów: $rowsNo<br>");
  63.  
  64.  
  65. /*Zamknięcie połączenia z bazą*/
  66.  
  67. if(!@mysql_close()){
  68. echo('Wystąpił błąd podczas zamykania połączenia z serwerem MySQL...<br>');
  69. }
  70.  
  71. if(isSet($_GET['tresc'])){ /*<--------------------------- tutaj. to jest dorbze ?*/
  72. dodawanie($_GET['$id'], $_GET['$nick'], $_GET['tresc'], $_GET['$time'], $_GET['$ip']);
  73. }
  74. else{
  75. echo("Niepoprawne dane! Wypełnij wszystkie pola.");
  76. }
  77.  
  78.  
  79. ?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
kapuch
post
Post #2





Grupa: Zarejestrowani
Postów: 389
Pomógł: 69
Dołączył: 26.04.2010
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Nie patrzylem w kod z racji poznej godz. ale moim zdaniem ani warunek !empty, ani isset nie pomoze, gdy odswiezamy strone, dlatego ze w adresie te zmienne nadal sa ustawione.
Mam trzy rozwiazania:
1. Ustawiasz ciasteczko podczas dodawania wpisu, ktore zablokuje na jakis czas danego uzytkownika
2. Sprawdzasz czy dany wpis juz nie istnieje, tzn czy nie jest dokladnie taki sam, jak wczesniejsze (zle rozwiazanie, bo bedzie blokowac krotkie wpisy typu "ok", "tak", ktore moze dodac kilka uzytkownikow).
3. Moim zdaniem najlepsze rozwiazanie, to po dodaniu wpisu albo przekierowujesz klienta do $_SERVER['http_referer'] (chociaz ta zmienna jest 'wadliwa', wiec mozna ja "podrobic" sesjami), albo na strone glowna - wtedy w linku nie bedzie ustawionych zmiennych (IMG:style_emoticons/default/winksmiley.jpg)
BTW. Uzywaj do tego POSTa a nie GETa.

Ten post edytował kapuch 22.07.2010, 00:26:10
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 10.10.2025 - 22:29