Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][HTML]formularz do uploadu + token
Forum PHP.pl > Forum > Przedszkole
aleo
Witam
Mam formularz do wysyłania plików na serwer

  1. <?php
  2. <form action="upload.php" method="POST" enctype="multipart/form-data">
  3. <INPUT TYPE="file" NAME="plik"><BR>
  4. <INPUT TYPE="submit" VALUE="Przesłanie pliku">
  5. </FORM>
  6. ?>


Jak dołonczyć do niego token ?
decha-design
Jak rozumiesz token? Chodzi Ci o Captche?

Musisz napisać sam generowanie obrazka i porównać go po przesłaniu formularza z tym kodem co znajduje się w sesji lub skorzystać z któregoś z gotowych rozwiązań ...

http://www.phpclasses.org/ / http://recaptcha.net/

Polecam reCaptcha bo się jeszcze przysłużysz społeczeństwu =))
aleo
ok
w podreczniku php znalazłem taki kodzik
plik pic.php
  1. <?
  2. $slowa=file('hasla.txt');
  3.  
  4. if(isset($_GET['id']))
  5. $nr=$_GET['id'];
  6. else $nr=rand(0,count($slowa)-1);
  7.  
  8. $slowo=$slowa[$nr];
  9. $wysokosc=20;
  10. $szerokosc=60;
  11.  
  12.  
  13. $pic=ImageCreate($szerokosc,$wysokosc);
  14. $bialy=ImageColorAllocate($pic,255,255,255);
  15. $czarny=ImageColorAllocate($pic,0,0,0);
  16. $szary=ImageColorAllocate($pic,150,150,150);
  17.  
  18. ImageFill($pic,1,1,$bialy);
  19. for($i=0;$i<200;$i++)
  20. {
  21. $los1=rand(0,$szerokosc);
  22. $los2=rand(0,$wysokosc);
  23.  
  24. ImageLine($pic,$los1,$los2,$los1,$los2,$szary);
  25. }
  26. for($i=0;$i<count($slowa);$i++)
  27. {
  28. $rozmiar=rand(2,5);
  29.  
  30. ImageString($pic,$rozmiar,$i*10+7,3,trim($slowo[$i]),$czarny);
  31. }
  32. Header("Content-type: image/gif");
  33. ImageGIF($pic);
  34. ?>

plik form.php
  1. <form method="POST" action="sprawdz.php">
  2.  
  3. <table>
  4. <tr>
  5. <td>Imię:</td>
  6. <td><input type="text" name="imie" size="20" value="<? echo $_POST['imie']; ?>"></td>
  7. </tr>
  8. <tr>
  9. <td>Nazwisko:</td>
  10. <td><input type="text" name="nazwisko" size="20" value="<? echo $_POST['nazwisko']; ?>"></td>
  11. </tr>
  12.  <tr>
  13. <td><?
  14. $slowa=file('hasla.txt');
  15. $id=rand(0,count($slowa)-1);
  16.  
  17. echo '<img src="pic.php?id='.$id.'"></td><td><input type="text" name="token" size="20">';
  18.  
  19. ?></td>
  20. </tr>
  21. </table>
  22. <input type="submit" value="OK">
  23. <input type="hidden" name="los" value="<? echo $id; ?>">
  24. </form>

plik sprawdz
  1. <?
  2. $id=$_POST['los'];
  3. $odp=$_POST['token'];
  4.  
  5. $slowa=file('hasla.txt');
  6.  
  7. if(trim($slowa[$id])==$odp)
  8. {
  9. echo 'Token poprawny!';
  10. //dalsze instrukcje, jeśli token jest poprawny
  11. }
  12. else
  13. {
  14. echo 'Token niepoprawny!<br><br>';
  15. include('form.php');
  16. //dalsze instrukcje, jeśli token jest niepoprawny
  17. }
  18. ?>

tylko jak te formularze razem sklepać jeden wysyła do upload.php drugi do sprawdz.php ?
decha-design
po prostu:

  1. <?php
  2. $id=$_POST['los'];
  3. $odp=$_POST['token'];
  4.  
  5. $slowa=file('hasla.txt');
  6.  
  7. if(trim($slowa[$id])==$odp)
  8. {
  9. TUTAJ TUTAJ TUTAJ
  10. }
  11. else
  12. {
  13. echo 'Token niepoprawny!<br><br>';
  14. include('form.php');
  15. //dalsze instrukcje, jeśli token jest niepoprawny
  16. }
  17. ?>


gdzie jest TUTAJ TUTAJ TUTAJ ( sciana.gif ) wklej kod pliku pic.php i zapisz to w jednym pliku ...

najpierw sprawdzi token, a później wykona reszte czyt. upload pliku

-----

to samo z formularzami ... wrzuć wszystko do jednego ... ale nie zapomnij o enctype
aleo
ok to co podałeś zapisuje w pliku pic.php
ale jak ma wyglądać formlarz mógłbyś pokazać ?
decha-design
troche wysilku =))

(zakładam ze to imię i nazwisko jest potrzebne, jak nie to wywal

  1. <form method="POST" action="plik.php" enctype="multipart/form-data">
  2. <tr>
  3. <td>Imię:</td>
  4. <td><input type="text" name="imie" size="20" value="<? echo $_POST['imie']; ?>"></td>
  5. </tr>
  6. <tr>
  7. <td>Nazwisko:</td>
  8. <td><input type="text" name="nazwisko" size="20" value="<? echo $_POST['nazwisko']; ?>"></td>
  9. </tr>
  10. <tr>
  11. <td>Plik:</td>
  12. <td><input type="file" name="plik"></td>
  13. </tr>
  14. <tr>
  15. <td><? $slowa=file('hasla.txt');
  16. $id=rand(0,count($slowa)-1);
  17.  
  18. echo '<img src="pic.php?id='.$id.'"></td><td><input type="text" name="token" size="20">';
  19.  
  20. ?></td>
  21. </tr>
  22. </table>
  23. <input type="submit" value="OK">
  24. <input type="hidden" name="los" value="<? echo $id; ?>">
  25. </form>


tak mniej wiecej bedzie wygladac formularz ... lecz nie zapisuj nic w pic.php bo ten plik odpowiada za wyświetlanie zdjęcia z tokenem więc jego nie ruszaj ... mój bląd, nie przyglądnąłem się wcześniej ...

warunki i skrypty etc. do uploadu daj tam gdzie pisałem wcześniej - TUTAJ TUTAJ TUTAJ sciana.gif ^^

czyli tak bedzie wygladal plik.php

  1. <?php
  2. $id=$_POST['los'];
  3. $odp=$_POST['token'];
  4.  
  5. $slowa=file('hasla.txt');
  6.  
  7. if(trim($slowa[$id])==$odp)
  8. {
  9. TUTAJ TUTAJ TUTAJ (kod uploadu plików)
  10. }
  11. else
  12. {
  13. echo 'Token niepoprawny!<br><br>';
  14. exit();
  15. }
  16. ?>


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

btw. ten skrypt nie jest zbytnim zabezpieczeniem bo przekazujesz kod tokena w
  1. <input type="hidden" name="los" value="<? echo $id; ?>">
więc bardzo łatwo to obejśc ... korzystaj z sesji ...
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.