Błąd w przesyłaniu formularza

0

Witam. Prosiłbym o pomoc. Problem jest następujący: nie są pobierane dane z formularza. W momencie wyświetlania nicku nie pojawia się totalnie nic, mimo że wszystko wydaje się być poprawnie zrobione. Do pierwszego ifa wchodzi (po wysłaniu formularza), więc jest tam zaalokowana pamięć, natomiast nie jest, nie wiedzieć czemu, pobierana wartość, niezależnie od tego, co wpiszę do textfielda. Prosiłbym o pomoc.

Formularz:

     <form method="post" action="rejestracja.php">

        Nickname: <br /><input type="text" name="nick" /><br />

        <?php
            if(isset($_SESSION['e_nick']))
            {
                echo '<div class="error">'.$_SESSION['e_nick'].'</div>';
                unset($_SESSION['e_nick']);
            }
        ?>

        <input type="submit" value="Zarejestruj się" />
    </form>

Pobieranie pola z formularza (ten sam plik, rejestracja.php):

 <?php

session_start();

if (isset($_POST['nick']))
{
    $wszystko_OK = true;

    $nick = $_POST['nick'];

    // długość nicku
    if ((strlen($nick)<3) || (strlen($nick)>20))
    {
        $wszystko_OK=false;
        $_SESSION['e_nick']="Nick musi posiadać od 3 do 20 znaków!";
    }

    if ($wszystko_OK == true)
    {
        echo "Udana walidacja!"; exit();
    }

}

?>
1

Sprawdź na początek czy faktycznie nie ma tej wartości tam. zrób w głównym if-ie

echo $_POST['nick']; exit();
1

Czy w pliku z formularzem masz także session_start();?
Btw, luźna uwaga: nie krzycz na użytkownika ;-) Nick musi mieć od 3 do 20 znaków. brzmi lepiej niż wersja z wykrzyknikiem.

0

Niestety w ogóle nie pobiera wartości z formularza, przy wyświetlaniu jest jedna wielka pustka :). Co do "session_start()", zarówno formularz jak i pobieranie pól jest w pliku "rejestracja.php". "Action="rejestracja.php"" dałem bardziej na test, ale nic to nie zmieniło. @Patryk27, racja :D. Cały kod wygląda tak:

 <?php

session_start();

if (isset($_POST['nick']))
{
    // udana walidacja? załóżmy, że tak
    $wszystko_OK = true;

    echo $_POST['nick']; // tu nic nie wyświetla, ale do ifa wchodzi, pojawia się napis na czerwono
    $nick = $_POST['nick'];
    echo "Nick: ".$nick;

    if ((strlen($nick)<3) || (strlen($nick)>20))
    {
        $wszystko_OK=false;
        $_SESSION['e_nick']="Nick musi posiadać od 3 do 20 znaków";
    }

    if ($wszystko_OK == true)
    {
        echo "Udana walidacja!"; exit();
    }

}

?>

<!DOCTYPE HTML>
    <html>
<head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-COMPATIBLE" content="Ie=edge,Chrome=1" />
    <title>Osadnicy – gra przeglądarkowa</title>
    <script src='https://www.google.com/recaptcha/api.js'></script>
    <style>

      .error
      {
          color: red;
          margin-top: 10px;
          margin-bottom: 10px;
      }

    </style>
</head>
<body>

    Tylko martwi ujrzeli koniec wojny.<br /><br />

    <form method="post">

        Nickname: <br /><input type="text" name="nick" /><br />

        <?php
            if(isset($_SESSION['e_nick']))
            {
                echo '<div class="error">'.$_SESSION['e_nick'].'</div>';
                unset($_SESSION['e_nick']);
            }
        ?>

        E-mail: <br /><input type="text" name="email" /><br />
        Twoje hasło: <br /><input type="password" name="haslo1" /><br />
        Powtórz hasło: <br /><input type="password" name="haslo2" /><br />
        Nickname: <br /><input type="text" name="nick" /><br />

        <label> <!-- checkbox działa po kliknięciu napis, jeśli jest label -->
        <input type="checkbox" name="regulamin" /> Akceptuję regulamin
        </label>

        <div class="g-recaptcha" data-sitekey="6Lev7A8UAAAAAILyOLKwRP_3tyJWDIms9tGFeixL"></div>

        <br />
        <input type="submit" value="Zarejestruj się" />
    </form>

    <?php

    ?>

</body>
    </html>
1

Masz dwa pola Nickname jedno na górze formularza jedno na spodzie spróbuj skasować górne.

0

Wszystko działa teraz jak należy :). Dzięki wielkie za dopatrzenie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1