Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Formularz z jednym tokenem
vonpiotr
post 1.06.2011, 14:11:59
Post #1





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 28.11.2006

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


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.




Go to the top of the page
+Quote Post
worek
post 1.06.2011, 14:53:28
Post #2





Grupa: Zarejestrowani
Postów: 82
Pomógł: 3
Dołączył: 26.04.2011

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


if($_POST['password'] == "haslo"){
echo "<input type=\"submit\" name=\"submit\" value=\"wyślij\" />";
}
Go to the top of the page
+Quote Post
vonpiotr
post 9.06.2011, 18:09:49
Post #3





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 28.11.2006

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


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" ) )




Ten post edytował vonpiotr 9.06.2011, 18:11:26
Go to the top of the page
+Quote Post
gargamel
post 9.06.2011, 18:22:09
Post #4





Grupa: Zarejestrowani
Postów: 278
Pomógł: 35
Dołączył: 25.06.2010

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


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. }
Go to the top of the page
+Quote Post
aeaeae
post 9.06.2011, 19:02:08
Post #5





Grupa: Zarejestrowani
Postów: 117
Pomógł: 23
Dołączył: 5.03.2011

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


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. }


Ten post edytował aeaeae 9.06.2011, 19:03:48
Go to the top of the page
+Quote Post
sadistic_son
post 10.06.2011, 00:01:35
Post #6





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

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


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. }


Ten post edytował sadistic_son 10.06.2011, 00:01:53


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
vonpiotr
post 13.06.2011, 14:08:03
Post #7





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 28.11.2006

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


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.


Go to the top of the page
+Quote Post
drPayton
post 13.06.2011, 14:18:19
Post #8





Grupa: Zarejestrowani
Postów: 890
Pomógł: 65
Dołączył: 13.11.2005
Skąd: Olsztyn

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


Przeca w poście @sadistic_son'a masz dokładnie i wyraźnie napisane co i jak dry.gif
Go to the top of the page
+Quote Post
shikamaru88
post 13.06.2011, 14:27:10
Post #9





Grupa: Zarejestrowani
Postów: 24
Pomógł: 8
Dołączył: 12.06.2011
Skąd: Częstochowa

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


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.


--------------------
Null jest pusty lub nie jest obiektem - IE 6
Go to the top of the page
+Quote Post
erix
post 13.06.2011, 14:40:15
Post #10





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




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...


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
vonpiotr
post 13.06.2011, 14:57:18
Post #11





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 28.11.2006

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


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.
Go to the top of the page
+Quote Post
cronik
post 13.06.2011, 15:20:50
Post #12





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 24.01.2011

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


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) )
Go to the top of the page
+Quote Post
sadistic_son
post 13.06.2011, 15:21:38
Post #13





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

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


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.


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
vonpiotr
post 13.06.2011, 16:38:23
Post #14





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 28.11.2006

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


No pewnie że gotowe smile.gif działa jak talala, dziękuję wszystkim za pomoc.
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 16.07.2025 - 03:00