Ciastko w formularzu

0

Mam formularz z imieniem i nazwiskiem. Jeśli użytkownik zaznaczy, że chce zapamiętać te dane, to mają się one pojawiać po ponownym wejściu na stronę. Niestety tak nie jest nie wiem czemu. Może ktoś mi napisze co robię nie tak. Oto kod:

<?php
    if ($_SERVER["REQUEST_METHOD"]==GET) {
?>
    <link rel="stylesheet" href="ciasteczka.css" type="text/css">
	<center><form action="ciasteczka.php" method="post">
	    <table>
		<tr>
		    <td class="label">Imie</td>
		    <td class="contener"><input type="text" name="imie" value="<?php echo $imie; ?> " size="50" maxlength="50"></td>
		</tr>
		<tr>
		    <td class="label">Nazwisko</td>
		    <td class="contener"><input type="text" name="nazwisko" value="<?php echo $nazwisko; ?> " size="50" maxlength="50"></td>
		</tr>
		<tr>
		    <td colspan="2" class="contener"><input type="checkbox" name="pamiec">  zapamietac?</td>
		</tr>
		<tr>
		    <td colspan="2" class="contener"><input type="submit" value="Wyslij"></td>
		</tr>
	    </table>
	</form></center>
	
<?php
    } else {
	if(isset($_POST['pamiec'])) {
	    $imie=$_POST['imie'];
	    $nazwisko=$_POST['nazwisko'];
	    setcookie("imie", $imie, time()+3600);
	    setcookie("nazwisko", $nazwisko, time()+3600);
	    if((isset($_COOKIE['imie'])) && (isset($_COOKIE['nazwisko']))) {
		echo "ciasteczko wyslane";
	    }
	}
	if((!isset($_COOKIE['imie'])) && (!isset($_COOKIE['nazwisko']))) {
	    $imie="nic";
	    $nazwisko="nic";
	} else {
	    $imie = $_COOKIE['imie'];
	    $nazwisko = $_COOKIE['nazwisko'];
	}
	echo $_POST['imie']."<br/>";
	echo $_POST['nazwisko']."<br/>";
    }
?>
0

Po pierwsze: materiały z których korzystasz są delikatnie mówiąc mocno przestarzałe. Sugerowałbym wymianę częściej niż co ćwierć wieku.
Po drugie: Twój kod jest nielogiczny.

  1. Pierwsze żądanie GET - spełniony warunek
if ($_SERVER["REQUEST_METHOD"]==GET)

czyli widzisz na stronie tabelkę z formularzem,

  1. Drugie żądanie POST (wysłane dale logowania) - warunek
if ($_SERVER["REQUEST_METHOD"]==GET)

nie jest spełniony, oraz zakładając że zaznaczyłeś checkbox'a - warunek if(isset($_POST['pamiec']))

 spełniony, czyli wykonuje się setcookie. 
ALE UWAGA:
```php
 if(isset($_COOKIE['imie']) && isset($_COOKIE['nazwisko']))

nie jest jeszcze spełnione ponieważ superglobalna $_COOKIE będzie wypełniona dopiero podczas następnego żądania do serwera.

Trzecie żądanie GET - spełniony warunek</li> </ol>
if ($_SERVER["REQUEST_METHOD"]==GET)

, czyli ponownie widzisz na stronie tabelkę z formularzem. Zakładając, że nie masz register_globals wyłączone (mam nadzieję) to co wyświetlasz w formularzu (echo $nazwisko) ?

0

Rany, ja chcę tylko żeby informacja ze zmiennych $imie i $nazwisko znalazła się w formularzu po ponownym przejściu na stronę. Właściwe informacje już znajdują się w tych zmiennych tylko nie chcą się wyświetlić na stronie. Wspisałam to tak:
value="<?php echo $imie; ?>"
ale się nie wyświetla

0

Nie wiem czy dobrze zrozumiałem ale jak mają sie pojawić gdy pod zmienne $imie i $nazwisko podstawiasz dane dopiero po wyświetleniu ich?
Przenieś kod który podstawia te dane powyżej tej części z wyświetlaniem formularza.
W ogóle te rozwiązanie tak jak kolega zauważył strasznie przestarzałe.

Zawsze możesz tez przed zmienną wstawić np die(print_r($zmienna)) żeby zobaczyć co ona zwiera w danym momencie.

0

Wielkie dzięki, pomogło przeniesienie kodu.

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