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 20.03.2007, 19:30:19
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. ?>


--------------------
> > > Tworzenie stron < < <
Go to the top of the page
+Quote Post
kwiateusz
post 20.03.2007, 21:26:03
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 20.03.2007, 21:27:51
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 smile.gif

ale tutaj sa chyba warunki zwalone, a ja nie za bardzo sie na tym znam.


--------------------
> > > Tworzenie stron < < <
Go to the top of the page
+Quote Post
kwiateusz
post 20.03.2007, 21:30:17
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 20.03.2007, 23:54:23
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 tongue.gif Jeszcze można zastosować uniwersalną: $_REQUEST

Ten post edytował misiek172 20.03.2007, 23:54:52


--------------------
zmoderowano - waga i rozmiar
Go to the top of the page
+Quote Post
kwiateusz
post 21.03.2007, 00:49:38
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 21.03.2007, 07:17:49
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 ;/


--------------------
> > > Tworzenie stron < < <
Go to the top of the page
+Quote Post
crash
post 21.03.2007, 08:27:34
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 21.03.2007, 08:59:08
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.


--------------------
> > > Tworzenie stron < < <
Go to the top of the page
+Quote Post
kwiateusz
post 21.03.2007, 09:00:15
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 21.03.2007, 10:14:12
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 (winksmiley.jpg po { questionmark.gif smile.gif


--------------------
Prawo Wylera:
Nie ma rzeczy niemożliwych dla kogoś, kto nie musi ich zrobić sam.
Go to the top of the page
+Quote Post
in5ane
post 21.03.2007, 11:11:04
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.


--------------------
> > > Tworzenie stron < < <
Go to the top of the page
+Quote Post
uli
post 21.03.2007, 12:07:32
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??


--------------------
Prawo Wylera:
Nie ma rzeczy niemożliwych dla kogoś, kto nie musi ich zrobić sam.
Go to the top of the page
+Quote Post
in5ane
post 21.03.2007, 13:19:58
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.


--------------------
> > > Tworzenie stron < < <
Go to the top of the page
+Quote Post
uli
post 21.03.2007, 13:40:01
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 biggrin.gif

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


Ten post edytował uli 21.03.2007, 13:40:23


--------------------
Prawo Wylera:
Nie ma rzeczy niemożliwych dla kogoś, kto nie musi ich zrobić sam.
Go to the top of the page
+Quote Post
in5ane
post 21.03.2007, 13:43:29
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.


--------------------
> > > Tworzenie stron < < <
Go to the top of the page
+Quote Post
uli
post 21.03.2007, 13:47:09
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?? ohmy.gif

Ten post edytował uli 21.03.2007, 13:50:55


--------------------
Prawo Wylera:
Nie ma rzeczy niemożliwych dla kogoś, kto nie musi ich zrobić sam.
Go to the top of the page
+Quote Post
kwiateusz
post 21.03.2007, 13:51:36
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 21.03.2007, 13:56:18
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


--------------------
> > > Tworzenie stron < < <
Go to the top of the page
+Quote Post
uli
post 21.03.2007, 13:56:33
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'] 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


--------------------
Prawo Wylera:
Nie ma rzeczy niemożliwych dla kogoś, kto nie musi ich zrobić sam.
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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: 23.04.2024 - 13:10