Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php]Sesja
glass
post 30.04.2008, 22:54:33
Post #1





Grupa: Zarejestrowani
Postów: 94
Pomógł: 0
Dołączył: 23.03.2007
Skąd: United Kingdom

Ostrzeżenie: (10%)
X----


Poniżej zamieściłem kod prosto z wiki books link tutaj, mam pytanie w związku z wywoływaniem sesji . . czy jeśli wstawię jeden warunek przed wywołaniem sesji chodzi o session_start(); to będzie dobrze czy automatycznie zainicjować sesje powyżej warunku..questionmark.gif

  1. <?php
  2.  
  3. session_start(); // 1
  4.  
  5. if(!isset($_SESSION['licznik'])) // 2
  6. {
  7. $_SESSION['licznik'] = 0;
  8. }
  9.  
  10. $_SESSION['licznik']++; // 3
  11.  
  12. echo 'Odwiedziłeś już '.$_SESSION['licznik'].' podstron!'; // 4
  13.  
  14. ?>


Niech szanowna komisja administracyjna da spokój z tymi ostrzeżeniami!
---@ociu
Szanowna komsja nie da sobie spokoju. Nie mam zamiaru z Tobą dyskutować, to jest Twój czwarty post w tym subforum, z Tobą samą treścią. Zamkneliśmy Ci pierwszy temat, bo nie było tagu, dostałeś wiadomość w temacie o przesłanie pw do opiekuna, który Ci zamknął temat, co źle zrobiłeś, Ty to olałeś, otworzyłęś dwa takie same tematy w odstepie czasowym 20 minut. Usunąłem je, wysłałem Ci pw, dodałem poziom ostrzeżenia za crossingpost, jednak wchodząc tu rano, nie myślałem, że założysz następny temat. Powinienem ten temat usunąć i czekac dalej na pw z poprawną formą tamtego tematu na pw.


Ten post edytował Ociu 1.05.2008, 07:48:04


--------------------
Marcin Małysa
Zapisz się na listę mailingową http://tnij.org/mai_l otrzymasz porady webmastera i fragment e-book-a gratis
http://tnij.org/prezent_nagranie_mp3
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 19)
artega
post 30.04.2008, 23:10:27
Post #2





Grupa: Zarejestrowani
Postów: 174
Pomógł: 42
Dołączył: 22.07.2007
Skąd: /dev/random

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


Żeby na czymś operować, trzeba wiedzieć czym to jest - tak, musisz użyć session_start przed odczytem/zapisem danych sesji ale to przecież nie trudno sprawdzić osobiście, prawda?
Go to the top of the page
+Quote Post
glass
post 1.05.2008, 04:59:35
Post #3





Grupa: Zarejestrowani
Postów: 94
Pomógł: 0
Dołączył: 23.03.2007
Skąd: United Kingdom

Ostrzeżenie: (10%)
X----


no wiesz co? hmm powiem tak żeby odpowiedzieć na pytanie trzeba najpierw je przeczytać a później zrozumieć, tobie nie poszło dobrze z tym drugim .. dla przyszłego pokolenia dodam wzmiankę .. postaram się i dam przekład, to czym są sesje ogólnie rozumiem i jak się je otwiera też chodzi mi o czystą poprawność, więc wygląda to tak:

ten przykład jest najpewniej poprawny:

  1. <?php
  2.  
  3. session_start(); // 1
  4.  
  5. if(!isset($_SESSION['licznik'])) // 2
  6. {
  7. $_SESSION['licznik'] = 0;
  8. }
  9.  
  10. $_SESSION['licznik']++; // 3
  11.  
  12. echo 'Odwiedziłeś już '.$_SESSION['licznik'].' podstron!'; // 4
  13.  
  14. ?>


moje pytanie brzmi czy przykład który umieszczam poniżej jest również (nie równie) poprawny i będzie działał w każdych warunkach (chodzi o inne bardziej uwikłane zagnieżdżenia, nie o kolejne funkcje jak na przykładzie):

sprostowanie pytania, czy linijka session_start(); // 1 na podstawie przykładu poniżej jest umieszczona poprawnie i spełnia swoje zadanie, czy może trzeba ją umieścić na samej górze skryptu??

  1. <?php
  2. $adres=stripslashes($_POST['adres']); 
  3.  
  4. function ValidEmail($adres) {
  5.  if (!eregi("^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,4}$" , $adres)) {
  6. return false;
  7.  }
  8.  return true;
  9. }
  10.  
  11. if (ValidEmail("$adres"))
  12. {
  13. session_start(); // 1
  14.  
  15. if(!isset($_SESSION['licznik'])) // 2
  16. {
  17. $_SESSION['licznik'] = 0;
  18. }
  19.  
  20. $_SESSION['licznik']++; // 3
  21.  
  22. echo 'Odwiedziłeś już '.$_SESSION['licznik'].' podstron!'; // 4
  23. }
  24.  
  25. else {}
  26.  
  27. ?>


dodam że przykład powyżej jest wyrwany z kontekstu jednak jest to całkiem nieistotne, na pytanie można odpowiedzieć i bez tego!
dzięki!!


--------------------
Marcin Małysa
Zapisz się na listę mailingową http://tnij.org/mai_l otrzymasz porady webmastera i fragment e-book-a gratis
http://tnij.org/prezent_nagranie_mp3
Go to the top of the page
+Quote Post
artega
post 1.05.2008, 08:06:48
Post #4





Grupa: Zarejestrowani
Postów: 174
Pomógł: 42
Dołączył: 22.07.2007
Skąd: /dev/random

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


Pierwsza wiadomość była troche dwuznaczna.
Cytat
sprostowanie pytania, czy linijka session_start(); // 1 na podstawie przykładu poniżej jest umieszczona poprawnie i spełnia swoje zadanie, czy może trzeba ją umieścić na samej górze skryptu??

session_start może być wywołane gdzie tylko zechcesz byle by była przed wywołaniami funkcji, które wysyłają właściwą treść. session_start ustawia ciasteczko w nagłówkach, dlatego zalecane jest by umieszczać ją na początku skryptu.
Go to the top of the page
+Quote Post
glass
post 1.05.2008, 08:13:48
Post #5





Grupa: Zarejestrowani
Postów: 94
Pomógł: 0
Dołączył: 23.03.2007
Skąd: United Kingdom

Ostrzeżenie: (10%)
X----


no dobra to by była odpowiedź na moje pytanie, jednak to także oznacza że muszę szukać błędu gdzieś indziej ale tym już się zajmę osobiście .. dzięki exclamation.gif


--------------------
Marcin Małysa
Zapisz się na listę mailingową http://tnij.org/mai_l otrzymasz porady webmastera i fragment e-book-a gratis
http://tnij.org/prezent_nagranie_mp3
Go to the top of the page
+Quote Post
--glass--
post 1.05.2008, 11:34:51
Post #6





Goście







mam bug-a i z tego powodu kontynuuje temat, zabrałem sie za skrypt i czegoś się dowiedziałem ale potrzebuje potwierdzenia ..

mam taki kod poniżej: i zamieszczam go przed inicjacją sesji, a to chyba niedobrze o ile się nie mylę to chodzi o puste znaki, przez nie skrypt nie może wywołać sesji .. testowałem to kilka razy na kilka sposobów i na to wychodzi, proszę o odpowiedź czy jeśli pousuwam puste znaki to wszystko w tym temacie będzie dobrze??

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  2. "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
  3.  
  4. <html>
  5.  
  6. <head>
  7. <title>Garden-center (wykaz polecen Html, Css)</title>
  8.  
  9. <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=iso-8859-2">
  10. <META NAME="language" CONTENT="pl">
  11. <META NAME="author" CONTENT="Marcin Malysa">
  12.  
  13. <style type="text/css">
  14.  
  15. body {
  16. background-color: #fff7e7;
  17. }
  18.  
  19. table.ramka {padding: 20px; color: white; font: normal 14pt verdana; padding: 11
    px;border: solid 1px silver; background-color: #b5d3f7}
  20. </style>
  21.  
  22. </head>
  23. <body>
  24. <?php
  25. echo "tu jest inicjacja sesji";
  26. ?>
Go to the top of the page
+Quote Post
artega
post 1.05.2008, 12:03:10
Post #7





Grupa: Zarejestrowani
Postów: 174
Pomógł: 42
Dołączył: 22.07.2007
Skąd: /dev/random

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


Jak wspomniałem wcześniej funkcja session_start ustawia ciastko dlatego musi zostać wywołana przed jakąkolwiek treścią, która nie jest nagłówkiem, czyli wstaw
  1. <?php session_start(); ?>

przed kodem HTML.
Go to the top of the page
+Quote Post
--glass--
post 1.05.2008, 12:09:03
Post #8





Goście







o to chodziło artega nie myślałem że pomożesz mi jeszcze raz!!
Go to the top of the page
+Quote Post
acztery
post 1.05.2008, 13:54:13
Post #9





Grupa: Zarejestrowani
Postów: 945
Pomógł: 7
Dołączył: 15.03.2005
Skąd: katowice

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


albo buforować <? ob_start(); ?> na początku i po sprawie.
Go to the top of the page
+Quote Post
Crozin
post 1.05.2008, 14:34:34
Post #10





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


@acztery: to jest obejście, a nie rozwiązanie problemu. Funkcje serii ob_* mają inne przeznaczenie.
Go to the top of the page
+Quote Post
Glukozamina
post 1.05.2008, 18:30:20
Post #11





Grupa: Zarejestrowani
Postów: 58
Pomógł: 0
Dołączył: 27.04.2008

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


Już nie będę zakladał nowego tematu bo dopadłą mnie blachostka . Coś nie tak ze składnią  także sesji.

  1. <?php
  2.  
  3.  
  4.  
  5. if(isSet($_SESSION['zalogowany']));{
  6.  
  7. echo ("Nie jesteś zalogowany");
  8. }
  9. else{
  10.  echo("Witaj:".$_SESSION['zalogowany']);
  11. }
  12.  
  13. ?>

Jestem noobem php ogólnie chodzi o to ,ze mam skrypt logowania . I poprostu kiedy nie jestem zalogowany to pokazoje mi się nie jesteś zalogowany. A jak jestem to to else sie pokazuje Witaj xxx.
Go to the top of the page
+Quote Post
erix
post 1.05.2008, 18:55:08
Post #12





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




isset" title="Zobacz w manualu PHP" target="_manual zwraca w tym przypadku true, a nie o to chodzi w warunku. ;]


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

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
--glass--
post 1.05.2008, 18:58:20
Post #13





Goście







Być może chodzi o jeden średnik za dużo w linijce z warunkiem..
Go to the top of the page
+Quote Post
Glukozamina
post 1.05.2008, 19:49:09
Post #14





Grupa: Zarejestrowani
Postów: 58
Pomógł: 0
Dołączył: 27.04.2008

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


Nie wiem , nie mogę tego ogarnąć próbowałem na kilka sposobów i zabardzo z tego powyższego linka nie mogę dostosować do mojego przykładu.
  1. <?php
  2.  
  3.  
  4. if(isSet($_SESSION['zalogowany']));
  5. {
  6. echo "This var is set so I will print.";
  7. }
  8. unset ($_SESSION);
  9.  
  10.  if(isSet($_SESSION['zalogowany']));{
  11.  echo("Witaj:");
  12. }
  13.  
  14. ?>


Nie wiem jak to zrobiłem ale teraz to mi wyświetla wszystko .
Go to the top of the page
+Quote Post
artega
post 1.05.2008, 20:04:54
Post #15





Grupa: Zarejestrowani
Postów: 174
Pomógł: 42
Dołączył: 22.07.2007
Skąd: /dev/random

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


@Glukozamina podstawy języka się kłaniają, jak słusznie glass zauważył wstawiasz o jeden średnik za dużo.
  1. <?php
  2. if (false);
  3. {
  4. // Ten kod zawsze sie wykona
  5. echo "foo";
  6. }
  7.  
  8. if (false)
  9. {
  10. // ale ten juz nigdy
  11. echo "bar";
  12. }
  13. ?>
Go to the top of the page
+Quote Post
Crozin
post 1.05.2008, 20:16:15
Post #16





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


@artega chyba:
  1. <?php
  2. if(true){
  3. echo 'To się zawsze wykona';
  4. }
  5.  
  6. if(false){
  7. echo 'A to się nigdy nie wykona';
  8. }
  9. ?>
winksmiley.jpg

A co do problemu:
  1. <?php
  2.  
  3. if(!isset($_SESSION['zalogowany'])){
  4. //ten kod sie wykona w przypadku, gdy uzytkownik jest NIE zalogowany (! przed isset() odwraca zwracaną wartość (neguje dokładniej rzecz biorąc))
  5. }
  6.  
  7. if(isset($_SESSION['zalogowany'])){
  8. //a ten, gdy uzytkownik JEST zalogowany
  9. }
  10. ?>
Go to the top of the page
+Quote Post
artega
post 1.05.2008, 20:44:26
Post #17





Grupa: Zarejestrowani
Postów: 174
Pomógł: 42
Dołączył: 22.07.2007
Skąd: /dev/random

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


@Crozin celowo wpisałem false by pokazać istote rzeczy - średnik za warunkiem
  1. <?php
  2. if (false);
  3.  
  4. {
  5. // Ten blok kodu nie nalezy do warunku i zawsze sie wykona
  6. }
  7. ?>

przegapiłeś średnik winksmiley.jpg
Go to the top of the page
+Quote Post
Glukozamina
post 1.05.2008, 21:32:55
Post #18





Grupa: Zarejestrowani
Postów: 58
Pomógł: 0
Dołączył: 27.04.2008

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


Pare lekcji z php opuściłem . Muszę wrócic do podstaw bo z tego co pamiętam to ruszylem z kopyta. A narazie nawet nie wiem do czego sluży średnik (wiem tyle że czesto się z niego korzysta haha.gif ). Przez rok z nooba stałem się większym noobem smile.gif.Czekam na dzień w którym to ja zaczne pomagać potrzebującym "przedszkolakom" .Dzięki za pomoc .

Ten post edytował Glukozamina 1.05.2008, 21:36:53
Go to the top of the page
+Quote Post
Crozin
post 1.05.2008, 22:01:03
Post #19





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Ablo za dużo dziś przed PC siedzę,
albo czcionka jaką mam kod PHP wypisany jest mało czytelna biggrin.gif
Go to the top of the page
+Quote Post
Glukozamina
post 2.05.2008, 09:14:30
Post #20





Grupa: Zarejestrowani
Postów: 58
Pomógł: 0
Dołączył: 27.04.2008

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


Jeszcze jedno pytanko. Jak wygląda sprawa z ograniczaniem dostępu ,że tylko zalogowani mogą np. pisać w shoutboxie. Mam kod:
  1. <?php
  2.  
  3. if(!isset($_SESSION['zalogowany'])){
  4. echo "Nie jesteś zalogowany";
  5. include("rejestracja/form.php");
  6. }
  7.  
  8. if(isset($_SESSION['zalogowany'])){
  9.  echo "Witaj w twoim menu: ";
  10.  echo $_SESSION['zalogowany'];
  11.  echo "<center><br>";
  12.  echo "<a href='index.php?go=11'>Wylogowanie</a>";
  13.  echo "</center></br>";
  14. }
  15. ?>

I przypuśmy mam shoutboxa w ktorym tylko zalogowani mogą pisać to muszę zrobić tak jak by 2 pliki shoutboxa ? Że jeden kiedy będzie pokazywany napis nie jesteś zalogowany nie możesz pisać a gdy zalogowany to będzie includować input type text do wpisywania .

P.S dlaczego nie działają te znaczniki do kodu ? Muszę ręcznie wpisywać [php].

Ten post edytował Glukozamina 2.05.2008, 09:19:53
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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 Wersja Lo-Fi Aktualny czas: 19.07.2025 - 07:59