Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][HTML]Zmienna nazwa inputa
Forum PHP.pl > Forum > Przedszkole
Misiur66
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
erix
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ą.
peter13135
  1. <?php
  2. $pole = mysql_escape_string($_POST[$nazwa];
  3. ?>
Misiur66
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';
             }
erix
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ść.
Misiur66
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...
erix
Sprawdź najpierw istnienie zmiennej/klucza, dopiero potem na niej operuj.

Escape'owanie ciągu jest właśnie tą operacją. winksmiley.jpg
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.