Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Problem z sesja...
track
post
Post #1





Grupa: Zarejestrowani
Postów: 180
Pomógł: 0
Dołączył: 17.07.2003
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Mam nadzieje, ze trafiam do dobrego dzialu. Dobra przejde do rzeczy.

Mam strone na ktorej mam 2 style. W zaleznosci jaki zaladujesz tzn. $temat=style_blue albo $temat=style_green strona jak sie pewnie domyslacie zmienia kolor. Sek w tym, ze chce aby dany styl zostawal tak dlugo, az ja sam nie bede chcial go zmienic. To znaczy wchodze na strone standardowo laduje sie niebieska, ale po kilku kliknieciach chce zmienci ja na zielona. Zmieniam i teraz chce, aby ta strona (zielona) zostala tak dlugo, az nie zechce jej zmienic na niebieska. Pomijam tutuaj zamkniecie przegladarki, bo chce aby narazie przy otworzeniu nowego okna ladowala sie standardowa skora. Mam nadzieje, ze nie namieszalem zbytnio.

Probowalem to zrobic z sesja:

[php:1:101e8f4cea]<?php
session_start();

if (!isset($_SESSION['count'])) {
$_SESSION['count'] = 0;
} else {
$_SESSION['count']++;
}

if ($temat == "style_blue")
{
session_unset( "temat" );
session_register( "temat" );
}

if ($temat == "style_green")
{
session_unset( "temat" );
session_register( "temat" );
}
?>[/php:1:101e8f4cea]
Chcialem, aby przed kazdym zarejestrowaniem wyrejestrowal zmienna i zarejestrowal ja jeszcze raz. Niestety to nie dziala. Kto powie mi dlaczego? Z gory dzieki za pomoc.
___
[scanner] Proszę używac BBCode
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 17)
DeyV
post
Post #2





Grupa: Zarząd
Postów: 2 277
Pomógł: 6
Dołączył: 27.12.2002
Skąd: Wołów/Wrocław




powinno być po prostu tak:
[php:1:d32a1523ae]<?php
if ( in_array($temat , array("style_blue", "style_green" ) ) )
{
$_SESSION['temat'] = $temat;
}

?>[/php:1:d32a1523ae]

a przy okazji poczytaj dokładnie do czego służy funkcja [manual:d32a1523ae]session_unset[/manual:d32a1523ae]


--------------------
"Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
Go to the top of the page
+Quote Post
Omega
post
Post #3





Grupa: Zarejestrowani
Postów: 273
Pomógł: 0
Dołączył: 5.05.2003
Skąd: Mazury

Ostrzeżenie: (0%)
-----


Mozna zrobić bez sesji, ale jest troche więcej gmatwania. Na każdej stronie ustawiasz zmienną $styl dla przykładu, ustawiasz ukryte pole formulaża z zawartością tej zmiennej i na każdej nastepnej stronie zmienna $styl zawiera tę wartość jaką określiłeś wcześniej. Na podstawie tej zmiennej ustalasz wygląd.


--------------------
<<< EB >>>
Go to the top of the page
+Quote Post
track
post
Post #4





Grupa: Zarejestrowani
Postów: 180
Pomógł: 0
Dołączył: 17.07.2003
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Wiem, ze mozna to zrobic bez sesji, ale nie chcialem.
Go to the top of the page
+Quote Post
Omega
post
Post #5





Grupa: Zarejestrowani
Postów: 273
Pomógł: 0
Dołączył: 5.05.2003
Skąd: Mazury

Ostrzeżenie: (0%)
-----


Ok, to tylko propozycja... biggrin.gif


--------------------
<<< EB >>>
Go to the top of the page
+Quote Post
track
post
Post #6





Grupa: Zarejestrowani
Postów: 180
Pomógł: 0
Dołączył: 17.07.2003
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Niestety nie rozwiazalo to mojego problemu do konca. Strona jak wczyta jeden styl, to nie pozwala wczytac juz drugiego. Style wywoluje przez URL
?temat=style_green Drugim problemem jest brak zdefiniowanego stylu na samym poczatku strony, ale wydaje mi sie, ze moge to zrobic w ten sposob

[php:1:35afd5353a]
if($temat == "") $temat = "style_blue";
[/php:1:35afd5353a]

Mam racje? Tylko teraz jak zrobic, zeby mozna bylo zmieniac style po zaladowaniu juz jednego z nich... Z gory dzieki za pomoc.

TRACK
Go to the top of the page
+Quote Post
spenalzo
post
Post #7





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

Ostrzeżenie: (0%)
-----


A spróbuj dać przed zmianą stylu na inny
[php:1:5a0f0469c5]<?php
unset($HTTP_SESSION_VARS["temat"]);
$HTTP_SESSION_VARS["temat"]="nazwa_tematu";
?>[/php:1:5a0f0469c5]
I pamiętaj, żeby wszędzie stosować tablice globalne $_POST, $_GET (lub ich starsze odpowiedniki).


--------------------

Go to the top of the page
+Quote Post
track
post
Post #8





Grupa: Zarejestrowani
Postów: 180
Pomógł: 0
Dołączył: 17.07.2003
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Zrobilem cos takiego:

[php:1:27ded24ae7]
<?php
if (session_is_registered("temat"))
{
unset($HTTP_SESSION_VARS["temat"]);
$HTTP_SESSION_VARS["temat"]=$temat;
}
else
{
$HTTP_SESSION_VARS["temat"]=$temat;
}
?>
[/php:1:27ded24ae7]

niestety nie dziala i nie wiem dlaczego Moze pomozecie? Poza tym nie mam zarejestrowanej zadnej zmiennej typu $temat = "style_green" dopiero definiuje ja poprzez adres URL index.php?temat=style_green

TRACK
Go to the top of the page
+Quote Post
spenalzo
post
Post #9





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Ja już nic nie kapuję...
To podaj cały kod, i linki które wywołują zmianę tematu.


--------------------

Go to the top of the page
+Quote Post
track
post
Post #10





Grupa: Zarejestrowani
Postów: 180
Pomógł: 0
Dołączył: 17.07.2003
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Link wywolujacy zmiane tematu to http://strona.pl?temat=styl_blue

kod strony to:
[php:1:0568d7ec65]<?php

session_start(); // mozna pominac jesli jest sie pewnym ze wlaczona jest opcja auto_start

if (!isset($_SESSION['count'])) { // jesli zmienna nie jest zarejestrowana
$_SESSION['count'] = 0; // przypisz jej poczatkowa wartosc
} else { // jesli jest zarejestrowana
$_SESSION['count']++; // zwieksz jej wartosc
}

echo 'Strona odczytana '.$_SESSION['count'].' razy w ciagu tej sesji';
echo "<p><b>ID sesji</b> $PHPSESSID";

if (session_is_registered("temat"))
{
unset($HTTP_SESSION_VARS["temat"]);
$HTTP_SESSION_VARS["temat"]=$temat;
}
else
{
$HTTP_SESSION_VARS["temat"]=$temat;
}


?>

<html>
<head>
<title>
Szko&sup3;a Mistrzostwa Sportowego im. Kazimierza Górskiego
</title>

<META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=iso-8859-2">
<meta name="discription" content="Strona Szko&sup3;y Mistrzopstwa Sportowego im. Kazimierza górskiego w &pound;odzi">
<meta name="Keywords" content="sport, pi&sup3;ka no&iquest;na, szko&sup3;a, mistrzostwa sportowego, kazimierz górski, &sup3;ód&frac14;, taniec">
<meta name="robots" content="index, nofollow">
<meta http-equiv=Page-Exit content=blendTrans(Duration=0.5)>

<STYLE type="text/css">
<?php include ("data/$temat.css"); ?>
</STYLE>

</head>
<body>
<table border=1 cellpadding=0 cellspacing=0 BorderColorLight=black borderColorDark=#C9CACB width=758 align=center class=strona>
<tr><Td>
<table border=0 cellpadding=0 cellspacing=0 width=100% height=150>
<tr><Td class=top>
<?php include ("data/files/logo.php");?>
</td>
<td class=logo>

<!-- <img src=pliki/logo.gif border=0 align=right> -->

</td></tr>
</table>
</i></b>
</td></tr>
<tr><Td class=top_menu>

<?php include ("data/files/menu_top.php"); ?>

</td></tr>
<tr><Td class=glowna>

<?php include ("data/glowna.php"); ?>

</td></tr>
<tr><td class=down>

Copyright &copy; 2002 - 2003 <a href="mailto:track@op.pl">TRACK</a>
</td></tr>
</table>
</body>
</html>[/php:1:0568d7ec65]

[KaMeLeOn]: Czy kiedyś nauczycie się stosować BBcode?
Go to the top of the page
+Quote Post
spenalzo
post
Post #11





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

Ostrzeżenie: (0%)
-----


A może BBCodequestionmark.gif? To pewnie przez to nie działa...


--------------------

Go to the top of the page
+Quote Post
track
post
Post #12





Grupa: Zarejestrowani
Postów: 180
Pomógł: 0
Dołączył: 17.07.2003
Skąd: Łódź

Ostrzeżenie: (0%)
-----


questionmark.gif? To znaczy... :oops:
Go to the top of the page
+Quote Post
KaMeLeOn
post
Post #13





Grupa: Zarejestrowani
Postów: 680
Pomógł: 0
Dołączył: 1.10.2002
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


To znaczy, że nie przeczytałeś regulaminu...
Przy pisaniu posta jest na górze BUTTON "php", który powoduje że ogarniasz kod znacznikami php... a wynik wygląda mniej więcej tak:
[php:1:9b351f7bb1]<?php
// twoj kod
?>[/php:1:9b351f7bb1]


--------------------
"Czerp z innych, ale nie kopiuj ich. Bądź sobą." Michel Quoist
Go to the top of the page
+Quote Post
spenalzo
post
Post #14





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Ja do zmiany grafiki robiłem coś takiego, że tworzyłem osobny plik, np. coś w tym stylu:
[php:1:fa96be371c]<?php
// plik design.php
session_start();
$design=$HTTP_GET_VARS["set"];
session_register("design");
$HTTP_SESSION_VARS["design"]=$design;
header("Location: ".urlencode(base64_decode($HTTP_GET_VARS["back"])));
?>[/php:1:fa96be371c]

[php:1:fa96be371c]<?php
// inne pliki
echo "<a href="design.php?set=2&back=".base64_encode($HTTP_SERVER_VARS["PHP_SELF"]."?".$HTTP_SERVER_VARS["QUERY_STRING"])."">Zmień design</a>";
?>[/php:1:fa96be371c]
i zawsze działało.


--------------------

Go to the top of the page
+Quote Post
spenalzo
post
Post #15





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Zrób po zadeklarowaniu nowej wartości
[php:1:8c3a9d85ef]<?php
echo $HTTP_SESSION_VARS["temat"];
?>[/php:1:8c3a9d85ef]
i zobacz co się pokazuje.


--------------------

Go to the top of the page
+Quote Post
track
post
Post #16





Grupa: Zarejestrowani
Postów: 180
Pomógł: 0
Dołączył: 17.07.2003
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Dobra zaczynamy od poczatku, bo moj kod caly czas sie zmienia.
Wyglada to teraz tak:

[php:1:c2e1ab6713]
<STYLE type="text/css">
<?
include ("data/$temat.css");
session_start();
session_register("temat");
?>
</STYLE>
[/php:1:c2e1ab6713]

Standardowo nie ma ustawionego, zadnego stylu. Jesli klikam na link
http://strona.pl/index.php?temat=style_blu...SID=numer_sesji (jest to dolaczane automatycznie do linkow na stronie)
strona zmienia sie na niebieska i wszystko jest spoko. Niestety jak klikne na jakis link ktory nie zawiera zdefiniowanego stylu strona otwiera sie "pusta" czyli bez zadnego stylu. Mam nadzieje, ze wyraznie to napisalem. Co polecacie zrobic?
Go to the top of the page
+Quote Post
KaMeLeOn
post
Post #17





Grupa: Zarejestrowani
Postów: 680
Pomógł: 0
Dołączył: 1.10.2002
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


1. session_start() musi być wywołane zanim coś wyślesz do przeglądarki... Czyli:
[php:1:867b8c12a8]<?php
session_start();
?>
<html>
<head>
itd...[/php:1:867b8c12a8]
2. Po co używasz session_register() ? Wystarczy tak...
[php:1:867b8c12a8]<?php
$_SESSION['temat'] = $_GET['temat'];
?>[/php:1:867b8c12a8]


--------------------
"Czerp z innych, ale nie kopiuj ich. Bądź sobą." Michel Quoist
Go to the top of the page
+Quote Post
track
post
Post #18





Grupa: Zarejestrowani
Postów: 180
Pomógł: 0
Dołączył: 17.07.2003
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Zrobilem jak kazales.

[php:1:fe7c910ec9]
<?php session_start(); ?>

<html>
<head>
<title></title>
<STYLE type="text/css">
<?php
include ("data/$temat.css");
$_SESSION['temat'] = $_GET['temat'];
?>
</STYLE>
[/php:1:fe7c910ec9]

niestety to nie dziala. Kto powie mi dlaczego?questionmark.gif

Teraz na samym poczatku (przy pierwszym zaladowaniu strony) do linkow ladnie zostaje dodany numer sesji. Niestety pozniej numer sesji zniaka z adresu URL.

Oczywiscie temat jest wywolywany tak jak we wczesniejszym poscie.

Pozdrawiam i czekam na pomoc.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 06:15