Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [php] problem z tokenem, prosze o pomoc
in5ane
post
Post #1





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


Witam, mam problem z tokenem, otoz chodzi o to, ze caly czas pisze napis, nawet jak sie dopiero wejdzie na strone "Wprowadzono niepoprawny kod", i nawet jak sie wprowadzi to tez nadal pisze.

Skrypt generuje cyferki, ktore sa obrazkami w folderze "token"

Oto kod:
  1. <?php
  2. ?>
  3. <?php
  4.  
  5. $_SESSION['token'] = '';
  6.  
  7. for($i=0;$i<5;$i++) {
  8.  $liczba = rand(0,9);
  9.  $_SESSION['token'] .= $liczba;
  10.  $img .= '<img src="token/'.$liczba.'.gif" />';
  11. }
  12.  
  13. include("config.php");
  14. mysql_query('SET CHARSET LATIN2');
  15. $query = mysql_query ("SELECT * FROM article WHERE id=$_GET[id]");
  16. while ($row = mysql_fetch_array ($query)) {
  17. echo '<td><strong><span class="tekst">'.$row[1].'</span></strong><br>
  18. <span class="maly2">dodano '.$row[3].' <br>
  19. </span><span class="tekst2">'.$row[2].'</span><br><br>';
  20. }
  21.  
  22.  
  23. if ($co == 'dodaj' and $_SESSION['token'] == $_POST['token']) {;
  24. if($kto && $text && $_GET[id]) {
  25. $query = "INSERT INTO `comments` (`id`, `kto`, `text`, `id_art`, `data`) VALUES (NULL, '$kto', '$text', '$_GET[id]', now());";
  26. $wynik = mysql_query ($query);
  27. }
  28. else{
  29. echo'Sorry Wypelnij poprawnie formularz!<br>';
  30. }
  31. }
  32. else {echo "Wprowadzono <b>niepoprawny</b> kod!<br>";}
  33.  
  34. $querys = mysql_query ("SELECT * FROM comments WHERE id_art=$_GET[id]");
  35. echo '<span class="tekst">Komentarze:</span><br>';
  36. while ($rows = mysql_fetch_array ($querys)) {
  37. echo '<span class="maly2">'.$rows[1].',<i> '.$rows[4].'</i>:</span><span class="tekst2"> '.$rows[2].'</span><hr>';
  38. }
  39.  
  40. echo '<br><br><form method="post"><span class="tekst">Skomentuj:</span><input type="hidden" name="co" value="dodaj"><table><tr><td><span class="tekst2">Login:</span></td><td><input type="text" name="kto" style="font-family: Verdana; font-size: 10px"></td><tr><td><span class="tekst2">Treść:</span></td><td><textarea name="text" cols="50" rows="5" style="font-family: Verdana; font-size: 10px"></textarea></td></tr>
  41. <tr><td>'.$img.'</td><td><input type="text" name="token" style="font-family: Verdana; font-size: 10px"></td></tr>
  42. </table><input type="submit" value="Dodaj" style="font-family: Verdana; font-size: 10px"></form>';
  43.  
  44. ?>
Go to the top of the page
+Quote Post
kwiateusz
post
Post #2


Admin Techniczny


Grupa: Administratorzy
Postów: 2 071
Pomógł: 93
Dołączył: 5.07.2005
Skąd: Olsztyn




skąd bierzesz $co, $kto i $text?
Go to the top of the page
+Quote Post
in5ane
post
Post #3





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


z formularza (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

ale tutaj sa chyba warunki zwalone, a ja nie za bardzo sie na tym znam.
Go to the top of the page
+Quote Post
kwiateusz
post
Post #4


Admin Techniczny


Grupa: Administratorzy
Postów: 2 071
Pomógł: 93
Dołączył: 5.07.2005
Skąd: Olsztyn




z formularza... boże... dalej przecież masz tablice $_POST i $_GET to po co stosujesz konwencje jakby register_globals było na on?
Go to the top of the page
+Quote Post
misiek172
post
Post #5





Grupa: Zarejestrowani
Postów: 656
Pomógł: 3
Dołączył: 26.10.2005
Skąd: Częstochowa

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


może ma włączone (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Jeszcze można zastosować uniwersalną: $_REQUEST

Ten post edytował misiek172 20.03.2007, 23:54:52
Go to the top of the page
+Quote Post
kwiateusz
post
Post #6


Admin Techniczny


Grupa: Administratorzy
Postów: 2 071
Pomógł: 93
Dołączył: 5.07.2005
Skąd: Olsztyn




jak wiesz skąd ma pochodzić informacja to z niej pobieraj $_REQUEST jest dość niebezpieczne :] nawet jak ma włączone to jeśli skrypt ma być przenośny to musi być przygotowany na ta ewentualność... a właśnie nie stosowanie tablic superglobalnych możliwe ze powoduje błędne działanie skryptu
Go to the top of the page
+Quote Post
in5ane
post
Post #7





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


cos nie bardzo nadal kapuje co tam jest zle ;/
Go to the top of the page
+Quote Post
crash
post
Post #8





Grupa: Przyjaciele php.pl
Postów: 2 196
Pomógł: 2
Dołączył: 17.01.2004
Skąd: Sosnowiec

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


Sprawdziłeś co wyświetla:
  1. <?php
  2. var_dump( $_SESSION[ 'token' ] );
  3. var_dump( $_POST[ 'token' ] );
  4. ?>
Go to the top of the page
+Quote Post
in5ane
post
Post #9





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


wyswietla
string(5) "NUMEREK_WYLOSOWANY_TOKENIE" NULL


ale tutaj jest cos zle z warunkiem, bo zawsze wyswietla mi sie "Wprowadzono niepoprawny kod!", nawet jak dopiero wejde na strone.
Go to the top of the page
+Quote Post
kwiateusz
post
Post #10


Admin Techniczny


Grupa: Administratorzy
Postów: 2 071
Pomógł: 93
Dołączył: 5.07.2005
Skąd: Olsztyn




conajmniej to jest źle
  1. <?php
  2. if ($co == 'dodaj' and $_SESSION['token'] == $_POST['token']) {;
  3. if($kto && $text && $_GET[id])
  4. ?>
poczytaj o $_POST a powienieneś zajarzyć jak należy to zmienić
Go to the top of the page
+Quote Post
uli
post
Post #11





Grupa: Zarejestrowani
Postów: 318
Pomógł: 6
Dołączył: 27.01.2005

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


Cytat(in5ane @ 20.03.2007, 19:30:19 ) *
if ($co == 'dodaj' and $_SESSION['token'] == $_POST['token']) {;
if($kto && $text && $_GET[id]) {


średnik ((IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) po { (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
in5ane
post
Post #12





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


nic nadal nie dalo.

nadal caly czas nawet jak sie dopiero wejdzie na strone pisze "Wprowadzono niepoprawny kod!" i nie dodaje jak proboje dodac.
Go to the top of the page
+Quote Post
uli
post
Post #13





Grupa: Zarejestrowani
Postów: 318
Pomógł: 6
Dołączył: 27.01.2005

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


A mógłbyś wklepać między tymi if'ami

echo $kto;
echo $text;
echo $_GET['id'];

i pokazać co Tobie wyskoczy??
Go to the top of the page
+Quote Post
in5ane
post
Post #14





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


Lekko poprawilem ten kod, dokladnie to warunki:

  1. <?php
  2.  
  3. $_SESSION['token'] = '';
  4.  
  5. for($i=0;$i<5;$i++) {
  6.  $liczba = rand(0,9);
  7.  $_SESSION['token'] .= $liczba;
  8.  $img .= '<img src="token/'.$liczba.'.gif" />';
  9. }
  10.  
  11. include("config.php");
  12. mysql_query('SET CHARSET LATIN2');
  13. $query = mysql_query ("SELECT * FROM article WHERE id=$_GET[id]");
  14. while ($row = mysql_fetch_array ($query)) {
  15. echo '<td><strong><span class="tekst">'.$row[1].'</span></strong><br>
  16. <span class="maly2">dodano '.$row[3].' <br>
  17. </span><span class="tekst2">'.$row[2].'</span><br><br>';
  18. }
  19.  
  20.  
  21. if($co == 'dodaj') {
  22. echo $kto;
  23. echo $text;
  24. echo $_GET['id'];
  25. echo $_POST['token'];
  26. if($_SESSION['token'] == $_POST['token']) {
  27. if($kto && $text && $_GET[id]) {
  28. $query = "INSERT INTO `comments` (`id`, `kto`, `text`, `id_art`, `data`) VALUES (NULL, '$kto', '$text', '$_GET[id]', now());";
  29. $wynik = mysql_query ($query);
  30. }
  31. else{
  32. echo'Sorry Wypelnij poprawnie formularz!<br>';
  33. }
  34. }
  35. else {echo "Wprowadzono <b>niepoprawny</b> kod!<br>";}
  36. }
  37.  
  38. $querys = mysql_query ("SELECT * FROM comments WHERE id_art=$_GET[id]");
  39. echo '<span class="tekst">Komentarze:</span><br>';
  40. while ($rows = mysql_fetch_array ($querys)) {
  41. echo '<span class="maly2">'.$rows[1].',<i> '.$rows[4].'</i>:</span><span class="tekst2"> '.$rows[2].'</span><hr>';
  42. }
  43.  
  44. echo '<br><br><form method="post"><span class="tekst">Skomentuj:</span><input type="hidden" name="co" value="dodaj"><table><tr><td><span class="tekst2">Login:</span></td><td><input type="text" name="kto" style="font-family: Verdana; font-size: 10px"></td><tr><td><span class="tekst2">Treść:</span></td><td><textarea name="text" cols="50" rows="5" style="font-family: Verdana; font-size: 10px"></textarea></td></tr>
  45. <tr><td>'.$img.'</td><td><input type="text" name="token" style="font-family: Verdana; font-size: 10px"></td></tr>
  46. </table><input type="submit" value="Dodaj" style="font-family: Verdana; font-size: 10px"></form>';
  47.  
  48. ?>


a po wpisaniu
echo $kto;
echo $text;
echo $_GET['id'];
echo $_POST['token'];
tego wszystkie dane sa dobrze wyswietlane, wiec cos jest z warunkami.

za kazdym razem teraz pisze po wpisaniu ze zly kod, nie ma juz tego ze jak sie wejdzie na strone to od razu pisze ze zly kod. jak proboje dodac to wpisuje wszystko ale po klinieciu dodaj wywala ze zly kod.
Go to the top of the page
+Quote Post
uli
post
Post #15





Grupa: Zarejestrowani
Postów: 318
Pomógł: 6
Dołączył: 27.01.2005

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


Hihihihihi

Oczywiście, że źle

w warunku daj w $_GET między [] apostrofy!! - Nie zauważyłem tego wcześniej (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)

  1. <?php
  2. $_GET['id'];
  3. ?>


Ten post edytował uli 21.03.2007, 13:40:23
Go to the top of the page
+Quote Post
in5ane
post
Post #16





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


nie dalo rady.
Go to the top of the page
+Quote Post
uli
post
Post #17





Grupa: Zarejestrowani
Postów: 318
Pomógł: 6
Dołączył: 27.01.2005

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


No dobrze, w takim razie niespełniony jest warunek:

  1. <?php
  2. if($_SESSION['token'] == $_POST['token']) {
  3. ?>


Dopisz do tych echo jeszcze

echo $_SESSION['token'];

Zobaczymy czy wychodzi taki sam jak $_POST['token'];

Z drugiej strony to ja przepraszam:
Jakie masz prawdopodobieństwo, że liczba 5-ciocyfrowa wpisana przez Ciebie będzie taka sama jak losowana?? (IMG:http://forum.php.pl/style_emoticons/default/ohmy.gif)

Ten post edytował uli 21.03.2007, 13:50:55
Go to the top of the page
+Quote Post
kwiateusz
post
Post #18


Admin Techniczny


Grupa: Administratorzy
Postów: 2 071
Pomógł: 93
Dołączył: 5.07.2005
Skąd: Olsztyn




skoro dane sa z formularza to jak już powinno być tak:
  1. <?php
  2. if($_POST['kto'] && $_POST['text'] && $_GET['id'])
  3. ?>
o ile one postem sa słane
Go to the top of the page
+Quote Post
in5ane
post
Post #19





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


a wiec tak,
echo $_POST['token']; - wyswietwla dopiero wpisany
echo $_SESSION['token']; - wyswietla po wpisaniu kolejny a powinno byc rowne temu wyzej
Go to the top of the page
+Quote Post
uli
post
Post #20





Grupa: Zarejestrowani
Postów: 318
Pomógł: 6
Dołączył: 27.01.2005

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


Wszystko pięknie ale nie sądzisz że zerujesz $_SESSION['token'] (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
A nie powinieneś??

Nigdy nie będziesz mieć równości w 1-szym if.

Czyli

  1. <?php
  2. if($co != 'dodaj') {
  3. $_SESSION['token'] = '';
  4.  
  5. for($i=0;$i<5;$i++) {
  6.  $liczba = rand(0,9);
  7.  $_SESSION['token'] .= $liczba;
  8.  $img .= '<img src="token/'.$liczba.'.gif" />';
  9. }
  10. }
  11. ?>


Ten post edytował uli 21.03.2007, 13:58:19
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 17:48