php değişken Persistance

4 Cevap php

Ben iki dosya var:

index.php /lib/user.php

Endeks formu içerir:

<div class="<? echo $msgclass; ?>">
  <? echo $msg; ?>
</div>
<form id="signin" action="/lib/user.php" method="post">
...
</form>

User.php makes all the processing. It sets $msg to 'some error message' and $msgalert to 'error' in case of any error. At the end of processing it uses header() to redirect to index.php

But after redirection $msg and $msgalert no longer persist and index only gets empty vars. How can i fix this?

4 Cevap

Edit: Özür soru oynanırsa. Bir oturumda bu değerleri saklayabilirsiniz.

In /lib/user.php

session_start();
$_SESSION['msg']      = $msg;
$_SESSION['msgalert'] = $msgalert;

in index.php

session_start();
$msg      = $_SESSION['msg'];
$msgalert = $_SESSION['msgalert'];

herhangi bir çıktı gönderilmeden önce koymak gerekir böylece session_start() başlıklarını kullandığını unutmayın.

web sayfalarını vatansız. Eğer durumunu korumak istiyorsanız, bir $_SESSION değişkene gerekli değerleri saklamak veya $_GET veya $_POST bunu geçmek ya.

Bu bir kalıcılık sorunu var, bir kapsam sorun değildir. Eğer yönlendirmek header () kullandığınızda, tamamen farklı bir komut çalıştırır bambaşka bir sayfa, almak için tarayıcı soruyorsun.

Vb veritabanı, oturumda, $ _GET değişkenler aracılığıyla, elle devam ya da veri aktarmak gerekir

User.php ve index.php bağımsız infazlar, böylece değişken kapsamı burada çok mantıklı değil.

Sen GET parametreleri veya oturum değişkeni olarak bu değerleri geçebilir.

GET parametresi ile yönlendirerek, örneğin deneyin:

header('Location: http://www.example.com/index.php?msgalert=error&msg=some%20error%20message');

Sonra index.php kullanımda:

$_GET['msgalert']
$_GET['msg']

veri erişim için. Eğer, komut dosyası içine kodlanmış bazı önceden tanımlanmış hata mesajları kullanarak (sadece hata kodları geçen) daha iyi olurdu eğer rağmen.