Witam ,dopiero od nie dawna bawie sie w php i mam taki problem,
chodzi o to ze napisałem formularz w postaci 1 pola tekstowego, oraz ustawiłem go przesyłanie do pliku za pomocą nowego wyrażenia php 5 " file_put_contents ".
I chciałbym zeby mozna było zrobić blokade ze z jednego komputera mozna wysłać 2 formularze na dobe np albo ogólnie , moze byc np z 1 adresu ip.
I nie mam zieloneog pojecia jak to mogłbym uczynić ,licze na pomoc
z góry dziekuje osobą które sie zainteresują.
jezeli musisz zapisywac to do pliku to zapisuj tam przy okazji informacje o uzytkowniku ktory przeslal formularz i przed kazdym kolejnym zapisem sprawdzaj czy juz istnieje wpis tego uzytkownika i jak tak to blokuj wysylanie.
Tylko jaka funkcja odpowiada za wyciaganie IP , i dokladnie gdzie to dodać.
Niżej podałem kod , bede wdzieczny jak ktoś pokaze jak to powinno wygladać i wytłumaczy
Oraz chodziło by mi jeszcze o to ze jak pole jest puste wyswietla "musisz wypełnic pole"
wyswietla to od razu po wejsciu na strone , a mi by chodziło zeby pokazywało sie dopiero jak ktoś pola nie wypełni i kliknie wysłanie.
<?php $skarga= $_POST['tekst']; if(http://www.php.net/empty($skarga)) { http://www.php.net/echo "Musisz wypełnić pole <br />"; } else { $wyslanie = "Podanie jest następujące: $skarga <br /><br /><hr>"; http://www.php.net/echo "Twoje podanie zostało wysłane"; file_put_contents("podanie.html", $wyslanie, FILE_APPEND); } ?>
Co do wypełnienia pola możesz zastosować "required" w formularzu z HTML5, a żeby informacja pokazywała się po wysłaniu formularza, akcje sprawdzania wykonujesz dopiero jak zmienna POST istnieje
Pole istnieje i jest puste:
if (http://www.php.net/isset($_POST['tekst']) && $_POST['tekst'] == '') { // komunikat }
$_SERVER['REMOTE_ADDR']
Kod przerobiłem i elgancko działa
Z uzytkownikiem IP sobie zrobie pózniej bo narazie nie mam czasu , ale wiem o co chodzi.
Wielkie dzięki , jak bede potrzebował pomocy wiem ze moge na was liczyć
Jakby ktoś miał taki sam problem to kod na dole.
<?php $skarga= $_POST['tekst']; if (http://www.php.net/isset($_POST['tekst']) && $_POST['tekst'] == '') { http://www.php.net/echo "Musisz wypełnić pole <br />"; } elseif(http://www.php.net/isset($_POST['tekst'])){ $wyslanie = "Podanie jest następujące: $skarga <br /><br /><hr>"; http://www.php.net/echo "Twoje podanie zostało wysłane"; file_put_contents("podanie.html", $wyslanie, FILE_APPEND); } ?>
$skarga= $_POST['tekst']; if (http://www.php.net/isset($_POST['tekst']) && $_POST['tekst'] == '')
Hmmm , a czemu nie?
Jak definiuje zmienną ponizej , to jak wpisze tekst i przesle to do pliku przechodzi pusta wiadomosc tzn:
Podanie jest nastepujace:
i tyle.
A jak jest tak jak mam to działa dobrze
Bo jak wejdziesz bezpośrednio na stronę ze skryptem (nie przez submit), to wywali błąd, że $_POST nie istnieje
Wchodzę bezposrednio na strone ze skryptem (nie przez submit) i bledu nie wywala.
Wiec zbytnio nie wiem o co chodzi
Pawnie masz wyłączone raportowanie blędów.
Błąd na pewno jest, nie można pobrać wartości zmiennej, która nie jest zainicjowana
Na stronie mi działa bez błedu no i na serwie localhost takze bez błedu , a jak umieszczam zmienną w innym miejscu to albo wywala bład,
albo przesyła pusty formularz.
Pokaze mi ktoś jak to powinno wygladac?
<?php if (http://www.php.net/isset($_POST['tekst']) && $_POST['tekst'] == '') { http://www.php.net/echo "Musisz wypełnić pole <br />"; } elseif(http://www.php.net/isset($_POST['tekst'])){ $skarga= $_POST['tekst']; $wyslanie = "Podanie jest następujące: $skarga <br /><br /><hr>"; http://www.php.net/echo "Twoje podanie zostało wysłane"; file_put_contents("podanie.html", $wyslanie, FILE_APPEND); } ?>
Dzieki
Bede pamietał o tym na przyszłosc , wstawiałem w te miejsce i bład wywalało widocznie jakaś literówke zrobiłem , tak to jest jak sie nie ma wprawy
i jest sie początkującym , ale powoli ogarne
Temat do zamkniecia , i jeszcze raz Dziekuje.
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)