Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Formularz z jednym tokenem
Forum PHP.pl > Forum > Przedszkole
vonpiotr
Witam wszystkich ,

Proszę o pomoc jak wykonać akcję w formularzu który może być wysłany tylko po wpisaniu odpowiedniego kodu, kod ustalamy w innym systemie który później będzie połączony.

Przykład :

<input name="1" type="text" id="1" />
<input name="2" type="text" id="2" />
<input name="1" type="password" id="1" />

WYŚLIJ


hasło my ustalamy w pliku : skrypt.php , tam też dzieje się cała akcja wysyłania ...

Mieliśmy na początku Tokena graficznego ale się nie sprawdził, za dużo spamu, nie było automatów, ale ludzie wpisywali dziwne reklamy, chcemy się od tego uchronić udostępniając tylko wybranym klientom hasło.




worek
if($_POST['password'] == "haslo"){
echo "<input type=\"submit\" name=\"submit\" value=\"wyślij\" />";
}
vonpiotr
ok, mam coś takiego ale to nie działa :

  1. <?
  2.  
  3. $nick= $_POST['nick'];
  4. $wpis= $_POST['wpis'];
  5. $haslo= $_POST['haslo'];
  6.  
  7.  
  8. if (empty($haslo) )
  9.  
  10. {
  11. echo "WYPEŁNIJ POLA FORMULARZA!";
  12. }
  13.  
  14. else {............
  15.  



Chcę aby zmienna $haslo reagowała tylko na podane przeze mnie hasło.

Dodałem przed if : $_POST['haslo'] == "haslo" ale nie działa ... próbowałem też : if (empty($haslo == "haslo" ) )


gargamel
Dziwne rzeczy tu piszecie... id="1" , id="2", id="1"... empty($haslo == "haslo" )...

Powiedz w jaki sposób chcesz dawać to hasło umożliwiające wysłanie formularza? Na zasadzie : macie takie a takie hasło i je wpisujcie je przy wysyłaniu formularza ... czy ma to być zautomatyzowane?

Generalnie to w pliku skrypt.php powinieneś mieć coś pokroju:
  1. if($_POST['haslo']=='haslo_ktore_trzeba_wpisac'){
  2. //kod który się wykona jeśli hasło się zgadza
  3. }
aeaeae
Cytat(vonpiotr @ 1.06.2011, 15:11:59 ) *
Proszę o pomoc jak wykonać akcję w formularzu który może być wysłany tylko po wpisaniu odpowiedniego kodu, kod ustalamy w innym systemie który później będzie połączony.


Formularz jest wysyłany zawsze. Tak jest skonstruowany html. Można się przed tym zabezpieczyć dodając do niego JavaScript, który po stronie klienta będzie sprawdzał poprawność, ale to nie jest rozwiązanie jeśli chodzi o złośliwe wysyłanie.

Jeśli chodzi o hasło podawane klientom, to wystarczy zrobić dodatkowe pole password, w którym to hasło będzie wpisywane. Skrypt będzie sprawdzał poprawność i akceptował tylko te formularze z dobrym hasłem, więc w czym problem?

  1. $pass=$_POST['password'];
  2. if($pass=='poprawne_haslo')
  3. {
  4. //tutaj obsługa danych formularza
  5. }
sadistic_son
Cytat(worek @ 1.06.2011, 15:53:28 ) *
if($_POST['password'] == "haslo"){
echo "<input type=\"submit\" name=\"submit\" value=\"wyślij\" />";
}
Taaaa, bo wysłać formularz nie mając przycisku jest baaardzo trudno.... Chłopie to zabezpieczenie to żadne zabezpieczenie.

Nie bardzo rozumiem z czym masz problem. To powinno wyglądać mniej więcej tak:
  1. if(isset($_POST['przycisk_wyslij'])){
  2. if(isset($_POST['haslo']){
  3. if($_POST['haslo']=='twoje_haslo'){
  4. if(isset($_POST['pole1']) && isset($_POST['pole2']) /* itd. */ ){
  5. echo'wszystko ok, mozna dzialac';
  6. }else{echo'nie wypelniono wszystkich pol';}
  7. }else{echo'podane haslo jest niepoprawne';}
  8. }else{echo'wpisz haslo';}
  9. }
vonpiotr
To się zamieszałem, żadne sposób nie działa tak jak powinien. Poniżej wklejam cały kod :


  1. <?php
  2.  
  3.  
  4. ini_set('display_errors','1');
  5.  
  6. ?>
  7.  
  8. <?
  9.  
  10. $nick= $_POST['nick'];
  11. $wpis= $_POST['wpis'];
  12. $haslo= $_POST['haslo'];
  13.  
  14. if (empty($nick) && empty($wpis) && empty($haslo) )
  15. {
  16. echo "WYPEŁNIJ POLA FORMULARZA!";
  17. }
  18.  
  19. else {
  20.  
  21. $zapis= fopen("dane.txt", "a");
  22. fwrite($zapis, "<b>Dodał:</b> <p>".$nick."</p> <b>Wpis:</b> <p>".$wpis."</p><br><hr width=100% />");
  23. fclose($zapis);
  24. }
  25. ?>



Chcę zrobić tak że tylko poprawnie wpisane hasło spowoduje zapis do pliki dane.txt
Hasło ustalam ja.


drPayton
Przeca w poście @sadistic_son'a masz dokładnie i wyraźnie napisane co i jak dry.gif
shikamaru88
Ewentualnie jak nie chcesz wysyłać formularza bez poprawnego hasła możesz zablokować formularz w js'ie. I ajaxowo sprawdzać poprawność hasła. Dopiero jak uzyskasz poprawność możesz wysłać pełny formularz. Ale takie rozwiązanie jest jak dla mnie przerostem formy nad treścią, tylko że rozwiązuje twój problem. Jeśli z wykorzystaniem tylko PHP to rozwiązania masz wyżej. Jak zwalidujesz wszystkie pola formularz możesz zapisać do pliku to co chcesz.
erix
Cytat
Nie bardzo rozumiem z czym masz problem. To powinno wyglądać mniej więcej tak:

Taka dygresja: w tym kodzie aż prosi się o użycie wyjątków...
vonpiotr
Wykorzystanie JS było by ciekawe , nie trzeba wtedy przeładowywać strony, ale JS można sprawdzić i ktoś pozna hasło, w PHP nie ma podglądu skyptu. Ale jak to napisać w JS ? sprawdzę jak to działa.
cronik
15. if (empty($nick) && empty($wpis) && empty($haslo) )
16. {
17. echo "WYPEŁNIJ POLA FORMULARZA!";
18. }
19.
20. else {

czyli żeby wykonane było polecenie z linii 17. musi być pusty $nick ORAZ pusty $wpis ORAZ puste $hasło?

może tak:
if (empty($nick) || empty($wpis) || empty($haslo) )
sadistic_son
Widzę, że jesteś wyjątkowo oporny na przyswajanie podanych jak na talerzu rozwiązań swojego problemu. W takim razie masz tu przeróbkę swojego kodu:
  1. */linijka 15 */ if (empty($nick) || empty($wpis) || empty($haslo) || $haslo!='twoje haslo')
To jest gotowe rozwiązanie. Jeśli to Ci nadal nie będzie działać to porzuć w cholerę php bo nie pasujecie do siebie.
vonpiotr
No pewnie że gotowe smile.gif działa jak talala, dziękuję wszystkim za pomoc.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.