Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Blad w skypcie i sesjach.
Forum PHP.pl > Forum > Przedszkole
The Night Shadow
Nie wiem dlaczego, ale po kliknięciu w formlarzu na wyślij wpis do księgi gosci jest wysyłany, następuje przekierowanie by nie było możliwości ponownego dopisania wpisu, ale pojawia sie problem. Skrypt zachowuje się tak, jakby zniknęła sesja lub też jakby nie widział zmiennej $_SESSION["zalogowany"]
W momencie kiedy kliknę (np w Operze) na wstecz a następne odśwież, okazuje się, że sesja nadal jest. Dlaczego tak się dzieje? Gdzie jest błąd tudzież co zrobić by się tego błed pozbyć..?


HTML
<?
session_start();
if ($_SESSION["zalogowany"]=="tak")
{ ?>
<TABLE>
<TR>
<td style="border-left-style: solid; border-right-style: solid; border-top-style: solid; border-bottom-style: solid; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 1px; border-right-width: 1px; width: 400; padding: 10px; margin: 10px;" valign="top">
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=4,0,2,0" width="400" height="307">
<param name=movie value="flash/1.swf">
<param name=quality value=high>
<embed src="flash/1.swf" quality=high pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" width="400" height="307">
</embed>
</object><br /><br />
<? $ssend = strip_tags(htmlspecialchars(stripslashes(trim($_POST['send'])), ENT_QUOTES));
$mysql_host = '********;
$mysql_login = o******
$mysql_haslo = '1********ar3k';
$mysql_baza = 'o*********ia';
$twoj_adres = "*************";
if ($baza = mysql_connect($mysql_host, $mysql_login, $mysql_haslo))
{
if (mysql_select_db($mysql_baza))
{
$data = time();
$zapytanie = mysql_query("SELECT * FROM ksiega ORDER BY 'szept_data' DESC");
while($wiersz=mysql_fetch_array ($zapytanie))
{
$miesiac = date('m', $wiersz['szept_data']);
if ($miesiac=='1') {$miesiacslownie='stycznia';}
else if ($miesiac=='2') { $miesiacslownie='lutego'; }
else if ($miesiac=='3') { $miesiacslownie='marca'; }
else if ($miesiac=='4') { $miesiacslownie='kwietnia'; }
else if ($miesiac=='5') { $miesiacslownie='maja'; }
else if ($miesiac=='6') { $miesiacslownie='czerwca'; }
else if ($miesiac=='7') { $miesiacslownie='lipca'; }
else if ($miesiac=='8') { $miesiacslownie='sierpnia'; }
else if ($miesiac=='9') { $miesiacslownie='września'; }
else if ($miesiac=='10') { $miesiacslownie='października'; }
else if ($miesiac=='11') { $miesiacslownie='listopada'; }
else if ($miesiac=='12') { $miesiacslownie='grudnia'; }
$ddzien = date('d', $wiersz['szept_data']);
$rrok = date('Y', $wiersz['szept_data']);
$ggodzina = date('H:i:s', $wiersz['szept_data']);
$pytanie = mysql_query("SELECT * FROM logowanie WHERE id='".$wiersz['szept_id_uzytkownika']."'");
$pole = mysql_fetch_assoc($pytanie); ?>
<table width="400">
<tr>
<td width="200" valign="top" align="left">
Szepcząc: <? echo "".$pole['login'].""; ?><br />
E-mail: <A HREF="MAILTO:<? echo "".$pole['email'].""; ?>">
<? echo "".$pole['email'].""; ?>
</A><br />
Gadu: <A href="gg:<? echo "".$pole['gadu'].""; ?>">
<? echo "".$pole['gadu'].""; ?> <img src="http://www.gadu-gadu.pl/users/status.asp?id=<? echo "".$pole['gadu'].""; ?>" border="0" width="12" height="12">
</A><br /><br />
Ip: <? echo "".$wiersz['szept_ip'].""; ?><br />
Host: <? echo "".$wiersz['szept_host'].""; ?><br /><br />
<? echo "$ddzien $miesiacslownie $rrok o godz.: $ggodzina"; ?>
</td>
<td width="200" valign="top" align="left">
<? echo "".nl2br($wiersz['szept']).""; ?>
</td>
</tr>
</table><br />
<table width="400">
<tr>
<td>
<center>
<br />. . .
</center><br /><br /><br />
</td>
</tr>
</table>
<? }
if($ssend=='wyslij')
{
$tresc = strip_tags(htmlspecialchars(stripslashes(trim($_POST['szept'])), ENT_QUOTES));
$aadres = strip_tags(htmlspecialchars(stripslashes(trim($_POST['adres'])), ENT_QUOTES));
$ahost = strip_tags(htmlspecialchars(stripslashes(trim($_POST['host'])), ENT_QUOTES));
$aprzegladarka = strip_tags(htmlspecialchars(stripslashes(trim($_POST['przegladarka'])), ENT_QUOTES));
$date = time();
$zapytanie = mysql_query("INSERT INTO ksiega SET szept_id_uzytkownika='".$_SESSION["id"]."', szept='$tresc', szept_data='$date', szept_ip='$aadres', szept_host='$ahost', szept_przegladarka='$aprzegladarka'");
Header ('Location: [URL=http://www.ogien.webd.pl/ksiega.php');]http://www.ogien.webd.pl/ksiega.php');[/URL]
}
else
{ ?>
<form method="post" action="ksiega.php" id="wysylanie" style="display: inline;">
<center>
<table border="0" cellspacing="1" cellpadding="1">
<tr>
<td valign="top">
Treść:
</td>
<td>
<input type="hidden" name="send" value="wyslij" />
<input type="hidden" name="adres" value="<? echo "".$_SERVER['REMOTE_ADDR'].""; ?>" />
<input type="hidden" name="host" value="<? echo "".gethostbyaddr($_SERVER['REMOTE_ADDR']).""; ?>" />
<input type="hidden" name="przegladarka" value="<? echo "".$_SERVER['HTTP_USER_AGENT'].""; ?>" />
<textarea type="text" name="szept" rows="10" cols="35"></textarea>
</td>
</tr>
<tr>
<td>
</td>
<td align="right">
<a href="#" onclick="document.getElementById('wysylanie').submit();" onMouseOver="overlib('<table><tr><td><center>...by zerwać<br />więzy milczenia.</center></td></tr></table>', FGCOLOR, '#222222', BGCOLOR, '#000000', TEXTCOLOR, '#CCCCCC', STATUS, 'Dymek zwykły', VAUTO, WRAP)" onMouseOut="nd();">
<b>Wyślij</b>
</a>
</td>
</tr>
</table>
</center>
</form>
<? }
}
else
{ ?
>
<span>
<center>
Nie można połączyć się z bazą - spróbuj ponownie za chwilę...
</center>
</span>
<? }
}
else
{ ?
>
<span>
<center>
Nie można połączyć się z serwerem MySQL - spróbuj ponownie za chwilę...
</center>
</span>
<? } ?>
</td>
<td valign="top">
<br /><br /><br /><br />
<a href="http://www.ogien.webd.pl/ksiega.php" onMouseOver="overlib('<table><tr><td><center>...by pozostawić kolejną cząstkę siebie.</center></td></tr></table>', FGCOLOR, '#181818', BGCOLOR, '#000000', TEXTCOLOR, '#CCCCCC', STATUS, 'Dymek zwykły', VAUTO, WRAP)" onMouseOut="nd();">
Szepty
</a><br />
<form method="post" action="rejestracja.php" id="pw" style="display: inline;">
<input type="hidden" name="opcja" value="pw" />
<a href="#" onclick="document.getElementById('pw').submit();" onMouseOver="overlib('<table><tr><td><center>...by zaistnieć w sercach innych.</center></td></tr></table>', FGCOLOR, '#222222', BGCOLOR, '#000000', TEXTCOLOR, '#CCCCCC', STATUS, 'Dymek zwykły', VAUTO, WRAP)" onMouseOut="nd();">
Skrzynka PW
<? if ($baza = mysql_connect($mysql_host, $mysql_login, $mysql_haslo))
{
if (mysql_select_db($mysql_baza))
{
$wwwynik = mysql_query("SELECT * FROM priv_tresc WHERE privtresc_id_odbiorcy='".$_SESSION["id"]."' and privtresc_status='nieprzeczytana'");
$wilosc = mysql_num_rows($wwwynik);
$wwwwynik = mysql_query("SELECT * FROM priv_tresc WHERE (privtresc_id_nadawcy='".$_SESSION["id"]."' or privtresc_id_odbiorcy='".$_SESSION["id"]."')");
$wwilosc = mysql_num_rows($wwwwynik);
if ($wilosc==0)
{
echo
"($wilosc/$wwilosc)";
}
else
{
echo
"(<font color=\"#CC0000\">$wilosc</font>/$wwilosc)";
}
}
else
{ ?>
<span>
<center>
Nie można połączyć się z bazą - spróbuj ponownie za chwilę...
</center>
</span>
<? }
}
else
{ ?
>
<span>
<center>
Nie można połączyć się z serwerem MySQL - spróbuj ponownie za chwilę...
</center>
</span>
<? } ?>
</a>
</form><br />
<a href="index.php?login=koniec" onMouseOver="overlib('<table><tr><td><center>...by zatoczyć koło i odejść.</center></td></tr></table>', FGCOLOR, '#181818', BGCOLOR, '#000000', TEXTCOLOR, '#CCCCCC', STATUS, 'Dymek zwykły', VAUTO, WRAP)" onMouseOut="nd();">
Wyloguj się
</a><br /><br /><br /><br />
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=4,0,2,0" width="500" height="800">
<param name=movie value="http://blaskognia.ovh.org/2.swf">
<param name=quality value=high>
<embed src="http://blaskognia.ovh.org/2.swf" quality=high pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" width="500" height="800">
</embed>
</object>
</td>
</tr>
</table>
<? }
else
{
die();
}
?>
piotrekkr
a to przekierowanie gdzie przenosi?? z powrotem na ta sama strone??
The Night Shadow
Tak, dokładnie na tą samą.

  1. <?php
  2. Header ('Location: http://www.ogien.webd.pl/ksiega.php');
  3. ?>
piotrekkr
wogole jak patrze na ten kod to dla mnie jakas sieczka ogolnie. moglbys poprostu napisac na jakiej zasadzie on dziala i wywalic troche tagow html z tego lisingu?? Bo to jest nieczytelne
The Night Shadow
Problem został przeze mnie już rozwiązany. Dla zainteresowanych:

Pdany skrypt działał w następujący sposób. Wyświetlana jest strona z wszystkimi wpisami do księgi gości. Pod nimi znajduje się formularz, który po wypełnieniu ma dodawać nowy wpis. W momencie kiedy użytkownik kliknie wyślij w tym samym pliku zmienna $ssend przyjmowala wartosc "wyslij" i zamiast wyswietlac formularz dodawala odpowiednie dane do bazy. Nastepnie by nie bylo możliwości odświerzenia strony, a więc ponownego dodania komentarza następowało przekierowanie na tą samą stronę i t włąśnie jest haczyk. Kiedy wpisać http://itd. sesje są gubione, ale keidy wpisać sam plik np.: ksiega.php wszystko jest w porzadku. Schemat:

WPISY DO KSIGI

JEŚLI $SSEND=='WYSLIJ'

---- WSTAWIA DANE DO BAZY PRZEKIEROWUJAC NA TA SAMA STRONE, A WIEC KSIEGA.php ----

W PRZECIWNYM WYPADKU

---- FORMULARZ ----


A co do sieczki... użyłem OVERLIB i one stasznie dżo tekst ponad miare dodają.
piotrekkr
a nie mogles poprostu zrobic funkcji ktora pod koniec sprawdzala czy ktos juz dodal wpis czy jeszcze nie i w zaleznosci od wyniku wyswietlala formularz lub nie?questionmark.gif
The Night Shadow
Na jedno by wyszło, a potrzebne by było dodatkowe zapytanie, w którym sprawdzałby w bazie datę dodania wpisu... po co to? Skoro w łatwy sposób można dodać i natchmiast przekierować... Skrypt księgi jest tak mało rozbudowany, zę ma to naprawde niewielki wpływ na wydajność.
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.