1)將不勝感激,如果有人可以 詳細解釋一次 會議究竟是如何工作的,什麼我 需要知道或有機會使用PHP 網站,在另一個 應用程序中使用會話.. 。
PS:我使用Linux(我用的是免費提供Ubuntu這是最流行/用戶友好的Linux distro)爲OS下面,我會建議你使用* NX發行(馬在我看來,cOSX也相當不錯,但價格昂貴)以及所有網絡開發,儘管所有這些命令也可在Cygwin(windows)中獲得。
Sessions是:在PHP
會議支持包括維護跨越 隨後的訪問某些數據的 方式。這使您可以 構建更多自定義應用程序 並提高您的網站 網站的吸引力。
下面我試圖解釋是什麼會議,他們是如何使用Cookie
我創建了一個簡單的no.php
不使用會話,只是輸出Hello World
:
Hello World
當我們curl這個腳本與headers使用-v我們得到以下輸出:
[email protected]:~/www/6500588$ curl http://localhost/6500588/no.php -v
* About to connect() to localhost port 80 (#0)
* Trying ::1... Connection refused
* Trying 127.0.0.1... connected
* Connected to localhost (127.0.0.1) port 80 (#0)
> GET /6500588/no.php HTTP/1.1
> User-Agent: curl/7.21.0 (i686-pc-linux-gnu) libcurl/7.21.0 OpenSSL/0.9.8o zlib/1.2.3.4 libidn/1.18
> Host: localhost
> Accept: */*
>
< HTTP/1.1 200 OK
< Date: Tue, 28 Jun 2011 02:10:53 GMT
< Server: Apache/2.2.16 (Ubuntu)
< X-Powered-By: PHP/5.3.3-1ubuntu9.3
< Vary: Accept-Encoding
< Content-Length: 12
< Content-Type: text/html
<
Hello World
* Connection #0 to host localhost left intact
* Closing connection #0
正如您從輸出中看到的,沒有設置cookie。如果你反覆這樣做,你會得到相同的輸出。
接下來我創建了一個簡單的yes.php
文件,它利用了會話。
<?php
session_start();
if (!isset($_SESSION['count'])) {
$_SESSION['count'] = 0;
}
echo $_SESSION['count']++;
讓我們顯示從捲曲的輸出,而不存儲的cookie:
[email protected]:~/www/6500588$ curl http://localhost/6500588/yes.php -v
* About to connect() to localhost port 80 (#0)
* Trying ::1... Connection refused
* Trying 127.0.0.1... connected
* Connected to localhost (127.0.0.1) port 80 (#0)
> GET /6500588/yes.php HTTP/1.1
> User-Agent: curl/7.21.0 (i686-pc-linux-gnu) libcurl/7.21.0 OpenSSL/0.9.8o zlib/1.2.3.4 libidn/1.18
> Host: localhost
> Accept: */*
>
< HTTP/1.1 200 OK
< Date: Tue, 28 Jun 2011 02:12:47 GMT
< Server: Apache/2.2.16 (Ubuntu)
< X-Powered-By: PHP/5.3.3-1ubuntu9.3
< Set-Cookie: PHPSESSID=hrduhht116e9mikhkkj0gu7126; path=/
< Expires: Thu, 19 Nov 1981 08:52:00 GMT
< Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
< Pragma: no-cache
< Vary: Accept-Encoding
< Content-Length: 1
< Content-Type: text/html
<
* Connection #0 to host localhost left intact
* Closing connection #0
0
正如你可以看到數爲0
,也是一個cookie已設置:Set-Cookie: PHPSESSID=hrduhht116e9mikhkkj0gu7126; path=/
。與session_idhrduhht116e9mikhkkj0gu7126
如果我們不保存此cookie,當我們再次發出同樣的curl命令我們仍然收到西港島線作爲0
答案(忘了算),還收到其他餅乾。
[email protected]:~/www/6500588$ curl http://localhost/6500588/yes.php -v
* About to connect() to localhost port 80 (#0)
* Trying ::1... Connection refused
* Trying 127.0.0.1... connected
* Connected to localhost (127.0.0.1) port 80 (#0)
> GET /6500588/yes.php HTTP/1.1
> User-Agent: curl/7.21.0 (i686-pc-linux-gnu) libcurl/7.21.0 OpenSSL/0.9.8o zlib/1.2.3.4 libidn/1.18
> Host: localhost
> Accept: */*
>
< HTTP/1.1 200 OK
< Date: Tue, 28 Jun 2011 02:16:42 GMT
< Server: Apache/2.2.16 (Ubuntu)
< X-Powered-By: PHP/5.3.3-1ubuntu9.3
< Set-Cookie: PHPSESSID=ihlj9c9fifl8f0lklu0umesas2; path=/
< Expires: Thu, 19 Nov 1981 08:52:00 GMT
< Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
< Pragma: no-cache
< Vary: Accept-Encoding
< Content-Length: 1
< Content-Type: text/html
<
* Connection #0 to host localhost left intact
* Closing connection #0
0
正如你所看到hrduhht116e9mikhkkj0gu7126
不等於ihlj9c9fifl8f0lklu0umesas2
,這意味着一個新的Cookie已經被設置在該會話的信息丟失。
接下來我們該cookie存儲cookie
文件發行-c
標誌
[email protected]:~/www/6500588$ curl http://localhost/6500588/yes.php -v -c cookie
* About to connect() to localhost port 80 (#0)
* Trying ::1... Connection refused
* Trying 127.0.0.1... connected
* Connected to localhost (127.0.0.1) port 80 (#0)
> GET /6500588/yes.php HTTP/1.1
> User-Agent: curl/7.21.0 (i686-pc-linux-gnu) libcurl/7.21.0 OpenSSL/0.9.8o zlib/1.2.3.4 libidn/1.18
> Host: localhost
> Accept: */*
>
< HTTP/1.1 200 OK
< Date: Tue, 28 Jun 2011 02:27:11 GMT
< Server: Apache/2.2.16 (Ubuntu)
< X-Powered-By: PHP/5.3.3-1ubuntu9.3
* Added cookie PHPSESSID="1h6710hhk84e0k9bj2kg7p03u5" for domain localhost, path /, expire 0
< Set-Cookie: PHPSESSID=1h6710hhk84e0k9bj2kg7p03u5; path=/
< Expires: Thu, 19 Nov 1981 08:52:00 GMT
< Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
< Pragma: no-cache
< Vary: Accept-Encoding
< Content-Length: 1
< Content-Type: text/html
<
* Connection #0 to host localhost left intact
* Closing connection #0
0
你可以從ls
(目錄列表)看到我們存儲的cookie來命名文件cookie
。
[email protected]:~/www/6500588$ ls -al
total 20
drwxr-xr-x 2 alfred alfred 4096 2011-06-28 04:27 .
drwxr-xr-x 19 alfred alfred 4096 2011-06-28 03:59 ..
-rw-r--r-- 1 alfred alfred 196 2011-06-28 04:27 cookie
-rw-r--r-- 1 alfred alfred 12 2011-06-28 04:00 no.php
-rw-r--r-- 1 alfred alfred 114 2011-06-28 04:12 yes.php
該cookie來跟蹤計數根據cat
包含以下信息(顯示文件的輸出)
[email protected]:~/www/6500588$ cat cookie
# Netscape HTTP Cookie File
# http://curl.haxx.se/rfc/cookie_spec.html
# This file was generated by libcurl! Edit at your own risk.
localhost FALSE / FALSE 0 PHPSESSID 1h6710hhk84e0k9bj2kg7p03u5
接下來,我們使用Cookie來跟蹤伯爵。
[email protected]:~/www/6500588$ curl http://localhost/6500588/yes.php -v -b cookie
* About to connect() to localhost port 80 (#0)
* Trying ::1... Connection refused
* Trying 127.0.0.1... connected
* Connected to localhost (127.0.0.1) port 80 (#0)
> GET /6500588/yes.php HTTP/1.1
> User-Agent: curl/7.21.0 (i686-pc-linux-gnu) libcurl/7.21.0 OpenSSL/0.9.8o zlib/1.2.3.4 libidn/1.18
> Host: localhost
> Accept: */*
> Cookie: PHPSESSID=1h6710hhk84e0k9bj2kg7p03u5
>
< HTTP/1.1 200 OK
< Date: Tue, 28 Jun 2011 02:40:18 GMT
< Server: Apache/2.2.16 (Ubuntu)
< X-Powered-By: PHP/5.3.3-1ubuntu9.3
< Expires: Thu, 19 Nov 1981 08:52:00 GMT
< Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
< Pragma: no-cache
< Vary: Accept-Encoding
< Content-Length: 1
< Content-Type: text/html
<
* Connection #0 to host localhost left intact
* Closing connection #0
1
正如你可以看到我們使用的cookie ID相同1h6710hhk84e0k9bj2kg7p03u5
和計數1
而不是0
,當我們不使用任何的cookie(或不保存Cookie,並獲得新的Cookie)。
所以基本上我需要根據自己的會話驗證 用戶。
會議只是簡單的使用Cookie(sessionid)的掩護下。例如,您可以覆蓋sessions to use the database的標準實現,而不是文件系統(有趣的閱讀!)。但我只是使用您在龍捲風應用程序中從PHP(session_id
)收到的session_id來驗證您的會話,因爲它應該是唯一的(很難猜到)。
SESSION_ID()返回會話ID 當前會話或空 字符串(「」),如果沒有當前 會話(沒有當前的會話ID 存在)。
P.S:我希望這回答了你的問題一點點。如果不是的話,你可以在評論中多詢問一些信息?
我想我找到了我正在尋找的東西,唯一的方法就是在php目錄中找到會話文件並將其序列化。 http://stackoverflow.com/questions/2534525/accessing-php-session-from-python-wsgi-is-it-possible – Viktor
另一個... http://www.python-forum.org/pythonforum/viewtopic .php?f = 19&t = 10855 – Viktor