PHP会话变量不会为某些用户传递,但会为其他用户传递正常

时间:2016-11-19 14:32:51

标签: php session-variables

我在多个屏幕中构建了一个面向公众的PHP应用程序。它在我的个人台式电脑上测试得很好,但在正在测试应用程序的其他PC上无效。所有PC都使用Windows 10,浏览器是Firefox。 Unix服务器上“tmp”文件夹的权限是“755”。 服务器上PHP.ini文件的SESSIONS部分如下:

[Session]
; Handler used to store/retrieve data.
session.save_handler = files

; Argument passed to save_handler.  In the case of files, this is the path
; where data files are stored. Note: Windows users have to change this
; variable in order to use PHP's session functions.
; As of PHP 4.0.1, you can define the path as:
;     session.save_path = "N;/path"
; where N is an integer.  Instead of storing all the session files in
; /path, what this will do is use subdirectories N-levels deep, and
; store the session data in those directories.  This is useful if you
; or your OS have problems with lots of files in one directory, and is
; a more efficient layout for servers that handle lots of sessions.
; NOTE 1: PHP will not create this directory structure automatically.
;         You can use the script in the ext/session dir for that purpose.
; NOTE 2: See the section on garbage collection below if you choose to
;         use subdirectories for session storage
session.save_path = /tmp

; Whether to use cookies.
session.use_cookies = 1

; This option enables administrators to make their users invulnerable to
; attacks which involve passing session ids in URLs; defaults to 0.
; session.use_only_cookies = 1

; Name of the session (used as cookie name).
session.name = PHPSESSID

; Initialize session on request startup.
session.auto_start = 0

; Lifetime in seconds of cookie or, if 0, until browser is restarted.
session.cookie_lifetime = 0

; The path for which the cookie is valid.
session.cookie_path = /

; The domain for which the cookie is valid.
session.cookie_domain =

; Handler used to serialize data.  php is the standard serializer of PHP.
session.serialize_handler = php

; Define the probability that the 'garbage collection' process is started
; on every session initialization.
; The probability is calculated by using gc_probability/gc_divisor,
; e.g. 1/100 means there is a 1% chance that the GC process starts
; on each request.

session.gc_probability = 1
session.gc_divisor     = 100

; After this number of seconds, stored data will be seen as 'garbage' and
; cleaned up by the garbage collection process.
session.gc_maxlifetime = 1440

; NOTE: If you are using the subdirectory option for storing session files
;       (see session.save_path above), then garbage collection does *not*
;       happen automatically.  You will need to do your own garbage
;       collection through a shell script, cron entry, or some other method.
;       For example, the following script would is the equivalent of
;       setting session.gc_maxlifetime to 1440 (1440 seconds = 24 minutes):
;          cd /path/to/sessions; find -cmin +24 | xargs rm

; PHP 4.2 and less have an undocumented feature/bug that allows you to
; to initialize a session variable in the global scope, albeit register_globals
; is disabled.  PHP 4.3 and later will warn you, if this feature is used.
; You can disable the feature and the warning separately. At this time,
; the warning is only displayed, if bug_compat_42 is enabled.

session.bug_compat_42 = 1
session.bug_compat_warn = 1

; Check HTTP Referer to invalidate externally stored URLs containing ids.
; HTTP_REFERER has to contain this substring for the session to be
; considered as valid.
session.referer_check =

; How many bytes to read from the file.
session.entropy_length = 0

; Specified here to create the session id.
session.entropy_file =

;session.entropy_length = 16

;session.entropy_file = /dev/urandom

; Set to {nocache,private,public,} to determine HTTP caching aspects
; or leave this empty to avoid sending anti-caching headers.
session.cache_limiter = nocache

; Document expires after n minutes.
session.cache_expire = 180

; trans sid support is disabled by default.
; Use of trans sid may risk your users security.
; Use this option with caution.
; - User may send URL contains active session ID
;   to other person via. email/irc/etc.
; - URL that contains active session ID may be stored
;   in publically accessible computer.
; - User may access your site with the same session ID
;   always using URL stored in browser's history or bookmarks.
session.use_trans_sid = 0

; The URL rewriter will look for URLs in a defined set of HTML tags.
; form/fieldset are special; if you include them here, the rewriter will
; add a hidden <input> field with the info which is otherwise appended
; to URLs.  If you want XHTML conformity, remove the form entry.
; Note that all valid entries require a "=", even if no value follows.
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=,fieldset="

所有PHP文件都以session_start()开头; 这是传递变量的PHP文件片段(POST1.PHP)

<?php
session_start();
//Multiple processing statements not copied
//Obtain the primary key from the prior insert
$family_fkey = mysqli_insert_id($link);
//store the value of $family_fkey into the session variable 'family_fkey'
$_SESSION["family_fkey"] = $family_fkey;
//store the value of $family_last_name into the session variable 'family_last_name'
$_SESSION["family_last_name"] = $family_last_name;
//Close the connection
mysqli_close($link);
//Redirect to the submitted.php page
header("Location: http://example.org/my_app/input2.php");
//close PHP
?> 

这是接收变量(INPUT2.PHP)的PHP文件的片段

<?php session_start();?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<!-- Multiple HTML and PHP Processing statements NOT copied here -->
<?php
    ECHO "Session ID is: " . session_id() . "<br />"; 
    // retrieve the session value 'family_fkey' and store it in $family_fkey
    $family_fkey = $_SESSION['family_fkey'];
    // retrieve the session value 'family_last_name' and store it in $family_last_name
    $family_last_name = $_SESSION['family_last_name'];
    ECHO "The family_last_name and family_fkey are: " . 
          $family_last_name . $family_fkey . "<br />";

当在我的家用电脑上执行Input2.php时,所有值都回显得很好。 当在许多其他PC上执行Input2.php时,我得到会话ID的值,但是两个值'family_fkey'和'family_last_name'值是空白的。这将是一个面向公众的应用程序。 为什么某些PC的变量通过OK而其他PC没有? 谢谢你看这个。

0 个答案:

没有答案