[php & mysql]blokowanie

Języki, których efekty są wykonywane po stronie serwera. PHP, ASP czy CGI w połączeniu z bazami danych SQL dają niezwykłe możliwości budowy i zarządzania stron WWW. Tu zadajemy pytania oraz demonstrujemy kod, z którym mamy problem.
Stef@n
Nowy
Nowy
Posty: 40
Rejestracja: sob lut 15, 2003 12:33 pm
Lokalizacja: Nowy Targ
Kontakt:

[php & mysql]blokowanie

Post autor: Stef@n »

Witam
mam skrypt ktory dodaje komentarze pod newsami i problemem jest w tym ze jak odswieze strone to dodaje go ponownie itd. Chce zeby poprostu po odswiezeniu nie dodawało ale nie metoda get bo chce tworzyc nowego pliku

[php]
<?
if ($co == 'Dodaj_komentarz') { // dodawanie rekordu
if ($tresc && $user) {
$query = "INSERT INTO komentarze (id, idnews, data, ip, przegladarka,";
$query .= "tresc, user) VALUES ('', '$_GET[id]', now(), '$REMOTE_ADDR', '$HTTP_USER_AGENT', '$tresc', '$user');";
$wynik = mysql_query ($query);

echo mysql_error(); //jak bedzie jakis blad w dodawaniu do MySQL to pokaze go
}
}




print " <form method=post><INPUT TYPE=hidden NAME=co VALUE=Dodaj_komentarz><table border=0 cellpadding=0 cellspacing=7 width=100%>
<tr>
<td>
<table align=center border=0 cellpadding=0 cellspacing=3 width=60%>
<tr>
<td>
<p><span><b>Tresc Komentarza:</b><span></p>
</td>
</tr>
<tr>
<td>
<p><textarea name=tresc id=tresc rows=9 cols=25></textarea></p>
</td>
</tr>
<tr>
<td>
<p><b>Nick:</b><br><input type=text name=user id=user size=15></p>
</td>
</tr>
<tr>
<td>
<input type=submit name=co value=Dodaj_komentarz>
<input type=reset value=Czyść_formularz>
</td>
</tr>
</table>
</td>
</tr>
</table></form>";

?>
[/php]
masterix
Przelotem
Przelotem
Posty: 220
Rejestracja: wt wrz 07, 2004 6:44 pm
Kontakt:

Re: [php & mysql]blokowanie

Post autor: masterix »

Może za pomocą cookie? Ustawić i sprawdzać czy było dodawane. Cookie ustawić np na 30 min
szyszek
Posty: 12
Rejestracja: pn wrz 06, 2004 11:08 am
Lokalizacja: Gdańsk

Re: [php & mysql]blokowanie

Post autor: szyszek »

sprubuj
[php]<?php
if ($tresc!= "0" && $user!="0")
?>[/php]
nie jestem pewny ale NULL != "0" tzn jesli masz puste pole to nie znaczy ze jego wartosc wynosi "0"
Stef@n
Nowy
Nowy
Posty: 40
Rejestracja: sob lut 15, 2003 12:33 pm
Lokalizacja: Nowy Targ
Kontakt:

Re: [php & mysql]blokowanie

Post autor: Stef@n »

nie nie zrozumiałes mnie poprostu jak odswieze strone to rekordy sie dodaja!

masterix wiesz nigdy nie bawiłem sie jeszcze cookies :/
Mógłbys mi wytłumaczyc i pomuc?
masterix
Przelotem
Przelotem
Posty: 220
Rejestracja: wt wrz 07, 2004 6:44 pm
Kontakt:

Re: [php & mysql]blokowanie

Post autor: masterix »

Ciasteczka ustawiasz za pomocą funkcji setcookie() o jej składni przeczytać możesz w manualu PHP. Wytłumaczę jej wykorzystywanie jedynie krótko.[php]<?php
setcookie ("nazwa","wartosc",time()+60*30);
?>[/php]
Nazwa - mówi chyba samo za siebie. Wartość - przypisz np 1 (z algebry Bool'a prawda). Funkcja time() pobiera aktualny czas i do niej dodajesz liczbę sekund ile ciasteczko ma istniec - 60*30 to 30 min. I chodzi to że przed dodaniem wpisu do bazy sprawdzasz czy ciasteczko istnieje i ma wartość 1. Jeśli znasz tablicę superglobalną $_COOKIE to nie będzie z tym problemu. Jeśli warunek zachodzi to pokazujesz komunikat w stylu "Nie spamuj" czy jak tam chcesz. W przeciwnym wypadku dodajesz rekord do bazy i ustawiasz ciasteczko.

pozdrawiam
Grzegorz Winiarski
Nowy
Nowy
Posty: 147
Rejestracja: pt lut 27, 2004 10:36 pm
Lokalizacja: Kraków

Re: [php & mysql]blokowanie

Post autor: Grzegorz Winiarski »

Ja bym rozwiązał to inaczej pod
[php]<?php
$wynik = mysql_query ($query);
?>[/php]
dodałbym jedną linjke
[php]<?php
header("Location: $adres_twojej_strony");
?>[/php]
Powinno dzialac, jeżeli wczesniej nie wyslales zadnych danych do przegladarki
masterix
Przelotem
Przelotem
Posty: 220
Rejestracja: wt wrz 07, 2004 6:44 pm
Kontakt:

Re: [php & mysql]blokowanie

Post autor: masterix »

A jak wysłał to wystarczy zaraz po <?php dać:[php]<?php
ob_start();
?>[/php]
I po problemie :wink:
Stef@n
Nowy
Nowy
Posty: 40
Rejestracja: sob lut 15, 2003 12:33 pm
Lokalizacja: Nowy Targ
Kontakt:

Re: [php & mysql]blokowanie

Post autor: Stef@n »

masterix pisze:A jak wysłał to wystarczy zaraz po <?php dać:[php]<?php
ob_start();
?>[/php]
I po problemie :wink:
Niestety zadna z tych opcji nie działa
masterix
Przelotem
Przelotem
Posty: 220
Rejestracja: wt wrz 07, 2004 6:44 pm
Kontakt:

Re: [php & mysql]blokowanie

Post autor: masterix »

Stef@n pisze:
masterix pisze:A jak wysłał to wystarczy zaraz po <?php dać:[php]<?php
ob_start();
?>[/php]
I po problemie :wink:
Niestety zadna z tych opcji nie działa
Nie wiem czy mnie dobrze zrozumiałeś:[php]<?php
ob_start();
//jakies instrukcje
header("Location: adres.php");
ob_end_flush();
?>[/php]
A mówiąc nie działa to co masz na myśli?
ODPOWIEDZ