Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jakieś cuda z sesjami
Forum PHP.pl > Forum > Przedszkole
mk83
Pisze sobie prosty skrypt obsługujący baze ogłoszeń. Wszystko szło gładko do mometu w ktorym zrobiłem tak zeby na strnie wyśwetlane były po 2 ogłoszenia z bazy danych, po naciśnięciu linka next kolejne dwa, a po nacisnięciu linka wstecz poprzednie dwa. Chyba wiadomo o co chodzi smile.gif. Teraz moze po koleji. Pierwsza strona to index.php na ktorej znajduje sie formulaz do logowania oraz wyswietlane sa ogloszenia z bazy danych bez mozliwoasci ich usuniecia czy edycji (ale to akurat jest malo istotne ). I na tej pierwszej stronie wszystko działa bez zadnych problemów. Nastepnie po zalogowaniu uruchamia sie strona index1.php, na ktorej nastepuje rejestracja zmiennych sesyjnych 'login' i 'haslo' . Tu tez sa wyswietlane ogloszenia z bazy danych tyle ze juz z mozliwoscia ich edycji. Przechodzac wreszcie do sedna sprawy, naciskając w link next za pierwszym razem wszystko jest ok, pojawiaja sie kolejne dwa ogloszenia, ale po nacisnieciu go po raz drugi jakims cudem usuwane sa zmienne sesyjne exclamation.gif! Od dwuch dni probuje dojsc czemu sie tak dzieje i dalej nie moge znalesc rozwiazania. Moze popełniam jakiśbanalny błąd ale naprawde nie mam pojęcia jaki exclamation.gif!

PLIK index.php:

Kod
<?
session_start();
session_unregister("login");
session_unregister("haslo");
session_unregister("imienazwisko");
include("klasa.php"); $ob=new ogloszenie;
?>

<HTML><HEAD>



<STYLE TYPE="text/css">
<!--

BODY {
        FONT-WEIGHT: normal;
        FONT-SIZE: 11px;
        COLOR: #1f396a;
        FONT-STYLE: normal;
        FONT-FAMILY: Tahoma, Verdana,  Geneva, Arial, Helvetica, sans-serif;
  SCROLLBAR-FACE-COLOR: white;
  SCROLLBAR-HIGHLIGHT-COLOR: #CCECFF;
  SCROLLBAR-SHADOW-COLOR: #CCECFF;
  SCROLLBAR-3DLIGHT-COLOR: #CCECFF;
  SCROLLBAR-ARROW-COLOR: #CCECFF;
  SCROLLBAR-TRACK-COLOR: #FFFFFF;
  #CCFFFFSCROLLBAR-DARKSHADOW-COLOR: #CCECFF;
}

TD {
        FONT-WEIGHT: normal;
        FONT-SIZE: 11px;
        COLOR: #1f396a;
        FONT-STYLE: normal;
        FONT-FAMILY: Tahoma, Verdana,  Geneva, Arial, Helvetica, sans-serif;
}

A:link{text-decoration:none; font-family: Thoma; color:black; font-size:11px}
A:visited{text-decoration:none; font-family: Thoma; color:black; font-size:11px}
A:active{text-decoration:underline; font-family: Thoma; color:brown; font-size:11px}
A:hover{text-decoration:underline; font-family: Thoma; color:brown; font-size:11px}

-->
</STYLE>




</HEAD>
<BODY>
<center>
<br><br>

<table boredr=0 cellspacing=0 cellpaddiang=0>
<tr><td width=800 height=0.5 bgcolor="gray">
</td></tr>
</table>
<table boredr=0 cellspacing=0>
<form action=index1.php method=POST>
<tr><td width=800  bgcolor="#F5F5F6" class=text12 noWrap valign=top>
<code><b>&nbspLogowanie: </b>
<input type=text name=login value=login>
<input type=password name=haslo value=haslo>
<input type=submit value=GO>
</td>
</form>
</tr>
</table>
<table boredr=0 cellspacing=0 cellpaddiang=0>
<tr><td width=800 height=0.5 bgcolor="gray">
</td></tr>
</table>
<br>
<table boredr=0 cellspacing=0 cellpaddiang=0>
<tr><td width=800 height=0.5 bgcolor="gray">
</td></tr>
</table>
<table boredr=0 cellspacing=0>
<tr><td width=800  bgcolor="#F5F5F6" class=text12 noWrap valign=top>
<center>  <b><code><br>
<a href="index.php?x=wszystkie">WSZYSTKIE</a> | <a href="index.php?x=kupie">KUPIE</a> | <a href="index.php?x=sprzedam">SPRZEDAM</a> | <a href="index.php?x=zamienie">ZAMIENIE</a> | <a href="index.php?x=wynajme">WYNAJME</a> | <a href="index.php?x=inne">INNE</a> | <a href="index1.php?x=archiwum">ARCHIWUM<a/>
<br><br>
<?
$ob->pokaz_ogloszenia($x,0,$i,$i_max,$krok);

?>

  
</td>
</tr>
</table>
<table boredr=0 cellspacing=0 cellpaddiang=0>
<tr><td width=800 height=0.5 bgcolor="gray">
</td></tr>
</table>

</BODY></HTML>



PLIK index1.php

Kod
<? include("klasa.php"); $ob=new ogloszenie;
session_start();
session_register("login");
session_register("haslo");
session_unregister("login_db");
session_unregister("id");
?>

<HTML><HEAD>



<STYLE TYPE="text/css">
<!--

BODY {
        FONT-WEIGHT: normal;
        FONT-SIZE: 11px;
        COLOR: #1f396a;
        FONT-STYLE: normal;
        FONT-FAMILY: Tahoma, Verdana,  Geneva, Arial, Helvetica, sans-serif;
  SCROLLBAR-FACE-COLOR: white;
  SCROLLBAR-HIGHLIGHT-COLOR: #CCECFF;
  SCROLLBAR-SHADOW-COLOR: #CCECFF;
  SCROLLBAR-3DLIGHT-COLOR: #CCECFF;
  SCROLLBAR-ARROW-COLOR: #CCECFF;
  SCROLLBAR-TRACK-COLOR: #FFFFFF;
  #CCFFFFSCROLLBAR-DARKSHADOW-COLOR: #CCECFF;
}

TD {
        FONT-WEIGHT: normal;
        FONT-SIZE: 11px;
        COLOR: #1f396a;
        FONT-STYLE: normal;
        FONT-FAMILY: Tahoma, Verdana,  Geneva, Arial, Helvetica, sans-serif;
}

A:link{text-decoration:none; font-family: Thoma; color:black; font-size:11px}
A:visited{text-decoration:none; font-family: Thoma; color:black; font-size:11px}
A:active{text-decoration:underline; font-family: Thoma; color:brown; font-size:11px}
A:hover{text-decoration:underline; font-family: Thoma; color:brown; font-size:11px}

-->
</STYLE>




</HEAD>
<BODY alink=1f396a link=1f396a vlink=1f396a>
<center>
<br><br>
<table boredr=0 cellspacing=0 cellpaddiang=0>
<tr><td width=800 height=0.5 bgcolor="gray">
</td></tr>
</table>
<table boredr=0 cellspacing=0>
<form action=index1.php method=POST>
<tr><td width=450  bgcolor="#F5F5F6" class=text12 noWrap valign=top> <code><b>
<?
if(!$login || !$haslo )
{
echo "Nie podałes loginu lub hasła!!! | <a href=index.php>Powrot</a>";
echo "<td width=350  bgcolor=#F5F5F6 class=text12 noWrap align=right>&nbsp</td>";
}
else
{
$ob->logowanie($login,$haslo);
$imienazwisko=$ob->imienazwisko;
session_register("imienazwisko");
if($ob->co==1)
{
echo "&nbspZalogowany:<font color=#FF6600> ".$login."</font>";
?>
</td>
<td width=350  bgcolor="#F5F5F6" class=text12 noWrap align=right><code><b>
<?
if($login==administrator) printf(" <a href=panel.php>Panel administracyjny</a> | <a href=dodaj_ogloszenie.php>Dodaj ogłoszenie</a> | <a href=index.php>Wyloguj</a>");
else printf("<a href=dodaj_ogloszenie.php>Dodaj ogłoszenie</a> | <a href=index.php>Wyloguj</a>");
}
else
{
session_unregister("login");
session_unregister("haslo");
session_unregister("imienazwisko");
?>
<code><b>&nbspLogowanie: </b>
<input type=text name=login value=login>
<input type=password name=haslo value=haslo>
<input type=submit value=GO>
</td>
</form>
<td width=350  bgcolor="#F5F5F6" class=text12 noWrap align=right>&nbsp</td>
<?
}
?>
</tr>
</table>
<table boredr=0 cellspacing=0 cellpaddiang=0>
<tr><td width=800 height=0.5 bgcolor="gray">
</td></tr>
</table>
<br>
<table boredr=0 cellspacing=0 cellpaddiang=0>
<tr><td width=800 height=0.5 bgcolor="gray">
</td></tr>
</table>
<table boredr=0 cellspacing=0>
<tr><td width=800  bgcolor="#F5F5F6" class=text12 noWrap valign=top>
<?
if($ob->co==1)
{
?>
<center>  <b><code><br>
<a href="index1.php?x=wszystkie">WSZYSTKIE</a> | <a href="index1.php?x=kupie">KUPIE</a> | <a href="index1.php?x=sprzedam">SPRZEDAM</a> | <a href="index1.php?x=zamienie">ZAMIENIE</a> | <a href="index1.php?x=wynajme">WYNAJME</a> | <a href="index1.php?x=inne">INNE</a>  | <a href="index1.php?x=archiwum">ARCHIWUM<a/>
<br><br>
<?

$ob->pokaz_ogloszenia($x,1,$i,$i_max,$krok);
}



else echo "<code><b>Podałes nieprawidłowy login lub hasło exclamation.gif!";
}
?>
</td>
</tr>
</table>
<table boredr=0 cellspacing=0 cellpaddiang=0>
<tr><td width=800 height=0.5 bgcolor="gray">
</td></tr>
</table>

</BODY></HTML>



PLIK klasa.php

Kod
<?
class ogloszenie
{
var $host="localhost";
var $login="root";
var $haslo="krasnal";
var $nazwa="ogloszenia";
var $co;
var $imienazwisko;



function ogloszenie()
{
$db=mysql_connect($this->host,$this->login,$this->haslo);
mysql_select_db($this->nazwa,$db);
}



function logowanie($login,$haslo)
{
$z=mysql_query("SELECT * FROM urzytkownicy WHERE login='$login'");
$row=mysql_fetch_array($z);
$this->imienazwisko=$row[3]." ".$row[4];
if($haslo==$row['haslo']) return $this->co=1;
else return $this->co=0;
}



function dodaj_ogloszenie($login,$a1,$a2,$a3,$tytul,$tresc,$kat,$imienazwisko,$grafika)
{
//sprawdzanie czy urzytkownik poprawnie wypełnił formularz
if(!$tytul) { echo "Nie podałes tytułu ogłoszenia!!!<br>"; $ok=1; }
if(!$tresc) { echo "Nie podałe treci ogłoszenia!!!<br>"; $ok=1; }
if((($a1=="on") && ($a2=="on") && ($a3=="on")) || (($a1=="on") && ($a2=="on")) || (($a1=="on") && ($a3=="on")) || (($a2=="on") && ($a3=="on"))) { echo "Możesz zaznaczyc tylko jedną opcje ( 4,7, lub 10 dni ) exclamation.gif!!<br>"; $ok=1; }
if(!$a1 && !$a2 && !$a3) { echo "Wybierz przez ile dni ma być wyswietlane twoje ogłoszenie.<br>"; $ok=1; }
if($ok!==1)
{
if($a1=="on") $ile=345600; // 4 dni
if($a2=="on") $ile=604800; // 7 dni
if($a3=="on") $ile=864000; // 10 dni
switch($kat)
{
case 0: { $kategoria="kupie"; break; }
case 1: { $kategoria="sprzedam"; break; }
case 2: { $kategoria="zamienie"; break; }
case 3: { $kategoria="wynajme"; break; }
case 4: { $kategoria="inne"; break; }
}
if(is_uploaded_file($_FILES['grafika']['tmp_name']))
{
$sciezka="grafika/".$_FILES['grafika']['name'];
if(move_uploaded_file($_FILES['grafika']['tmp_name'],$sciezka))
{
@chmod($sciezka,666);  // zmiana uprawnien dodawanego pliku
}
}
else if(!$grafika) echo " "; else printf("<font color=red>Nie mozna było dodać grafiki!!!</font><br>");

$data_dodania=time();
$data_zakonczenia=time()+$ile;
mysql_query("INSERT INTO baza_ogloszen(tytul,tresc,login,imienazwisko,data_dodania,tryb,data_zakonczenia,kategoria,
rafika) VALUES('$tytul','$tresc','$login','$imienazwisko','$data_dodania','aktywny','$data_zakonczenia','$kategoria','$sciezka')");
echo "Dodano nowe ogłoszenie do bazy.";
}
}



function pokaz_ogloszenia($x,$tryb,$i,$i_max,$krok)
{
if($krok==next || !$krok)
{
if(!$i) $i=0;
if(!$i_max) $i_max=2;
else $i_max=$i_max+2;
}
elseif($krok==wstecz)
{
if(!$i) $i=0;
else $i=$i-4;
if(!$i_max) $i_max=2;
else $i_max=$i_max-2;
}

if($x=='wszystkie' || !$x) $z=mysql_query("SELECT * FROM baza_ogloszen ORDER BY data_zakonczenia");
else $z=mysql_query("SELECT * FROM baza_ogloszen WHERE kategoria='$x' ORDER BY data_zakonczenia");

$last=mysql_num_rows($z);
if($i<0) { $i=0; $i_max=2; }
if($i>$last) { $i=$last-1; $i_max=$last+1;}

mysql_data_seek($z,$i);


for($i;$i<$i_max;$i++)
{
$row=mysql_fetch_array($z);
$data_d=date("d-m-Y",$row[5]);
$dni_do_konca1=$row[7]-time()-86400;
$dni_do_konca=date("j",$dni_do_konca1);
if($tryb==1) { $tresc="<a href=usun.php?login_db=$row[3]&id=$row[0]>USUN</a> | <a href=edit.php?login_db=$row[3]&id=$row[0]&tytul=$row[1]&tresc=$row[2]>EDYTUJ</a>"; $adres='index1.php'; } else $adres='index.php';
printf("<table border=1>");
printf("<tr><td>$row[1]&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp $tresc </td></tr>");
printf("<tr><td><a href='$row[9]' target=_new><img src='$row[9]' width=100 height=100></a></td><td>$row[2]</td></tr>");
printf("<tr><td>Ogloszenie zamieszczone przez: $row[4] | Dnia: $data_d | Kategoria: $row[8] | Dni do końca: $dni_do_konca");
printf("</table><br><br>");
}
printf("<a href=$adres?i=$i&i_max=$i_max&krok=wstecz>WSTECZ</a> | <a href=$adres?i=$i&i_max=$i_max&krok=next>NEXT</a>");
}


function usowanie_ogloszenia($login_db,$login,$id,$czy_usunac)
{
session_register("login_db");
session_register("id");
if($login==$login_db || $login=='administrator')
{
if($czy_usunac==1)
{
mysql_query("DELETE FROM baza_ogloszen WHERE id='$id'");
echo "Ogloszenie zostało usunięte prawidłowo.";
}
else echo " Czy napewno chcesz usunąć to ogłoszenie ? <br><Br>  <a href=usun.php?czy_usunac=1>TAK</a> &nbsp&nbsp <a href=index1.php>NIE</a>";
}
else printf("Nie masz uprawnień do wykonania tej operacji exclamation.gif!!");
}



function edycja_ogloszenia($login_db,$login,$id,$tytul,$tresc,$czy_edytowac)
{
session_register("id");
if($login==$login_db || $login=='administrator')
{
if($czy_edytowac==1)
{
mysql_query("UPDATE baza_ogloszen SET tytul='$tytul' , tresc='$tresc' WHERE id='$id'");
echo "Ogłoszenie zostało zmienione.";
}
else
{
printf("<form action=edit.php?czy_edytowac=1 method=POST>");
?>
Tytuł ogłoszenia: <br><bR>
<? printf("<input type=text name=tytul value=$tytul><br>"); ?>
<br>
Tresć ogłoszenia:<br><Br>
<? printf("<TEXTAREA NAME=tresc COLS=50 ROWS=7>$tresc</TEXTAREA> "); ?>
<br><Br>
<input type=submit value="Edytuj ogłoszenie">
</form>
<?
}
}
else printf("Nie masz uprawnień do wykonania tej operacji exclamation.gif!!");
}



}
?>
zbig13
Czy jest sens umieszczania tylu linii kodu w jednym poście? Nie mogłeś tego wrzucić na jakiś serwer i dać do ściągnięcia?
mk83
Udało mi sie wkońcu znaleść przyczyne mojego problemu. W pliku klasa.php w funkcji pokaz_ogloszenia jest nastepujaca linijka:
Kod
printf("<tr><td><a href='$row[9]' target=_new><img src='$row[9]' width=100 height=100></a></td><td>$row[2]</td></tr>");

W tej postaci jaka widać powyżej z jakiegos powodu zmienne sesyjne znikaja po odswiezeniu/powrocie do strony na ktorej jest uzyta ta funkcja. A jesli przeprowadze mala modywfukacje:
Kod
printf("<tr><td><a href='$row[9]' target=_new><img src=$row[9] width=100 height=100></a></td><td>$row[2]</td></tr>");



to wszystko działa proawidłowo exclamation.gif! Problem jedynie w tym ze w tym drugim przypadku jezeli wyswietlane zdjecie sklada sie z dwuch słow to z powodu braku tych "zabkow" ( ' ' ) nie zostanie wyswietlone ( np zdjęcie: jakas nazwa.jpg ).
zbig13
To zrób tak:
  1. <?php
  2. printf(&#092;"<tr><td><a href=/\"{$row[9]}/\" target=_new><img src=/\"{$row[9]}/\" width=100 height=100></a></td><td>{$row[2]}</td></tr>\");
  3. ?>
mk83
No nistety przy Twoim sposobie wywal bład składni:

Kod
Parse error: parse error in c:\usr\krasnal\www\moje\klasa.php on line 86
zbig13
sory pomylily mi sie znaki. zamiast wszystkich / powinny być \.
  1. <?php
  2. printf(&#092;"<tr><td><a href=\"{$row[9]}\" target=_new><img src=\"{$row[9]}\" width=100 height=100></a></td><td>{$row[2]}</td></tr>\");
  3. ?>
mk83
Błedu juz nie ma ale nic to nie pomaga:(

Wlasnie zaówazyłem jeszcze jedna sprawe. Problem istnieje tylko pod IE, na inncy przegladarkach skrypt działa bez zadnych problemów.
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.