Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][HTML]Zmienna nazwa inputa
Misiur66
post
Post #1





Grupa: Zarejestrowani
Postów: 170
Pomógł: 11
Dołączył: 2.03.2008
Skąd: Lublin

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


Witam wszystkich. Mam zwykły kod:
Kod
<?php $_SESSION['bot'] = rand(100, 999);

<input type="text" style="display:none" name="<?php echo($_SESSION['bot']);?>" value="" />


Jest to w pewnym stopniu zabezpieczenie przed botami (one wypełniają co się da wiadomo jakimi treściami). I chciałem sprawdzić w PHP czy pole pozostało puste. Tylko tu mam problem. W jaki sposób pobrać nazwę pola?
Bo np.
Kod
$nazwa = $_SESSION['bot'];
$pole = mysql_escape_string($_POST[''.$nazwa.''];


zwraca:

Cytat
Notice: Undefined offset: 741 in C:\Serwer\www\MisiurGaming\php\rejestracja_mechanizm.php on line 16


Pozdr
Go to the top of the page
+Quote Post
erix
post
Post #2





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




Kod
$pole = mysql_escape_string($_POST[''.$nazwa.''];

Masz kod niekompletny.

Po drugie, daj var_dump($_SESSION) i zobacz, czy wszystko Ci się zgadza. Poza tym, nie jestem pewien, czy name może być liczbą.


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

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
peter13135
post
Post #3





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

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


  1. <?php
  2. $pole = mysql_escape_string($_POST[$nazwa];
  3. ?>


--------------------
:)
Go to the top of the page
+Quote Post
Misiur66
post
Post #4





Grupa: Zarejestrowani
Postów: 170
Pomógł: 11
Dołączył: 2.03.2008
Skąd: Lublin

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


Tak, chyba po prostu nie może być cyfrą, bo kiedy sesji nadam 'a', to się zgadza... dzięki za pomoc.

Edit:

Kurcze Peterowi nie chciałem dać pomógł biggrin.gif A zresztą w kodzie chyba miałem ten nawias (nie wiem czemu tu go nie dałem)

Edit2:

Kurcz, a teraz mam inny błąd... próbowałem całkowicie inego kodu i mi błąd wyskakuje:

Cytat
Fatal error: Can't use function return value in write context ... ścieżka


próbowałem tak:

Kod
$litery = str_shuffle('qwertyuiopasdfghjklzxcvbnm');
$_SESSION['bot_pole'] = substr($litery, 0, 3);


A w pliku przyjmującym dane:

Kod
$pole_bot = $_SESSION['bot_pole'];
             $blad = 0;
             $bledy = array();
             if(isset(mysql_escape_string($_POST[''.$pole_bot.''])))
             {
                 $blad++;
                 $bledy[] = 'Wykryto próbę spamowania';
             }
Go to the top of the page
+Quote Post
erix
post
Post #5





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




Primo:
Kod
''.$pole_bot.''

Na chorobę coś takiego? Przecież sama zmienna też wystarczy, a parserowi oszczędzisz roboty.

Secundo:
Kod
isset(mysql_escape_string($_POST[''.$pole_bot.'']))

Za pomocą isset" title="Zobacz w manualu PHP" target="_manual sprawdzasz zmienną/klucz w tablicy, a nie wartość.


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

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
Misiur66
post
Post #6





Grupa: Zarejestrowani
Postów: 170
Pomógł: 11
Dołączył: 2.03.2008
Skąd: Lublin

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


No to wróciliśmy do punktu wyjścia biggrin.gif.

Kod
$p_email = mysql_escape_string($_POST['powtorz_email']);
            $pole_bot = $_SESSION['bot_pole'];
            $blad = 0;
            $bledy = array();
            if(mysql_escape_string($_POST[$pole_bot]) != null)
            {
                $blad++;
                $bledy[] = 'Wykryto próbę spamowania';
            }


Zwraca nam:

Kod
[b]Notice[/b]:  Undefined index:  abr in [b]C:\Serwer\www\MisiurGaming\php\rejestracja_mechanizm.php[/b] on line [b]17[/b]


Ale chyba wiem co jest nie tak... Ostatnim razem też się zmagałem z Notice'ami, i wszystkie dały się naprawić przy użyciu isset();, ale tak to nie wiem czym to zrobić, skoro będzie coś nie tak przy użyciu isset... Sorka za zawracanie głowy, ale takie szczególiki których nie mogę rozwiązać doprowadzają mnie do szału...
Go to the top of the page
+Quote Post
erix
post
Post #7





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




Sprawdź najpierw istnienie zmiennej/klucza, dopiero potem na niej operuj.

Escape'owanie ciągu jest właśnie tą operacją. winksmiley.jpg


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

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

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 Aktualny czas: 22.08.2025 - 05:47