【问题标题】:Capturing PHP value in session or cookie在会话或 cookie 中捕获 PHP 值
【发布时间】:2014-06-20 11:07:02
【问题描述】:

我正在尝试将 PHP 输出的值捕获到会话或 cookie 中,以便我可以在其他页面中调用它。请看下面的例子

session-page1.php

<?php
session_start(); 
ob_start();
?>

<!DOCTYPE HTML>
<!--
Strongly Typed 1.1 by HTML5 UP
html5up.net | @n33co
Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
-->

<html lang="en" xmlns:og="http://opengraphprotocol.org/schema/" xmlns:fb="http://www.facebook.com/2008/fbml">
<?php $servurl = basename($_SERVER['REQUEST_URI']); ?>
<?php include_once "includes/ghead.php" ?>
<body itemscope itemtype="http://schema.org/CreativeWork" class="upload">

HEAD AND HEADER HTML CODE GOES HERE

<?php
 $fpath="upload/myImage.jpg";
 $size = getimagesize("$fpath");
 $nheight = $size[1];
 $nwidth = $size[0];

// Setting sessions
  $_SESSION['filepath'] = $fpath;
  $_SESSION['nwidth'] = $nwidth;
  $_SESSION['nheight'] = $nheight;

session_write_close(); 
?>
<header>   
  <h2><?php echo $fpath; ?></h2>
 <br> some html code goes here
 <br> <a href='session-page2.php'>go to page 2</a>
</header>
<?php echo $_SESSION['filepath']; ?>
</body>
</html>

我现在想获取第 2 页中的会话值。

session-page2.php

<?php
session_start();

echo $_SESSION['filepath'].": ".$_SESSION['nwidth']."x".$_SESSION['nheight'];
session_write_close();
?>

问题是 page1.php 没有生成会话。我使用 cookie 尝试了同样的事情,但我也没有任何运气。

cookie-page1.php

<?php
 ob_start();
 session_start(); 

 $fpath="upload/myImage.jpg";
 $size = getimagesize("$fpath");
 $nheight = $size[1];
 $nwidth = $size[0];

// Setting cookies
  $cookie_name = 'test_cookie';
  $cookie_value = $fpath;
  setcookie($cookie_name, $cookie_value, time() + (3600), '/'); // 1 hour (60 minutes * 60 seconds = 3,600 seconds)

  $cookie_name2 = 'test_cookie2';
  $cookie_value2 = $nwidth;
  setcookie($cookie_name2, $cookie_value2, time() + (3600), '/'); // 1 hour (60 minutes * 60 seconds = 3,600 seconds)

  $cookie_name3 = 'test_cookie3';
  $cookie_value3 = $nheight;
  setcookie($cookie_name3, $cookie_value3, time() + (3600), '/'); // 1 hour (60 minutes * 60 seconds = 3,600 seconds)

session_write_close(); 
ob_end_clean();
?>

我现在想获取第 2 页中的 cookie 值。

<?php
 ob_start();
 session_start(); 

echo $_COOKIE['test_cookie1'].": ".$_COOKIE['test_cookie2']."x".$_COOKIE['test_cookie3'];

session_write_close(); 
ob_end_clean();
?>

cookie 未生成,值未保存。有人可以告诉我我做错了什么吗?代码看起来不错,应该保存高度/宽度和文件名的值/输出。另外,如果这在 PHP 中是不可能的,我应该使用 Ajax 来保存值吗?如果是的话,有人能指出我正确的方向吗?

提前感谢大家的帮助!

【问题讨论】:

  • 如果删除 session_write_close() 会发生什么; ob_end_clean();
  • 嗨 Medda86 - 会话和 cookie 正在生成,值未保存。
  • 如果你把 echo $_SESSION['filepath'];在 page1.php 的末尾你得到了什么?您在 page1.php 之前没有请求其他任何内容?
  • 如果我把 $_SESSION['filepath'];在 page1.php 的末尾我得到“upload/myImage.jpg”我用 page1.php 上的其他变量对代码进行了编辑
  • 我编辑了 session_page1.php 的代码以提供更好的视图。但是 session 和 cookie 的代码是一样的。

标签: php ajax session cookies session-cookies


【解决方案1】:

测试这个,如果它不起作用,那么你的 php 安装或配置有问题。当您单击刷新时,会话值应增加 +1

<?php
session_start();
if (isset($_SESSION['test']))
{
    $_SESSION['test'] = $_SESSION['test'] + 1;
}
    else
    {
        $_SESSION['test'] = 1;
    }
        echo 'Session value = '.$_SESSION['test'].'<br /><a href="">Refresh</a>';
?>

【讨论】:

  • 每次点击刷新都会增加+1。
  • 我想知道 cookie 或会话是否在 PHP 处理图像大小之前尝试设置。
  • 好吧,你的会话工作正常,但你只需要运行一次 session_start()。因此,如果您包含许多文件,请确保只有第一个具有 session_start()... 您可以在启动会话的位置创建一个单独的文件,然后运行 ​​require_once('startsessionscript.php');
  • 嗨 Medda86,我无法投票。但想说声谢谢。我在全局头脚本中加载了 session_start,它运行良好。再次感谢!!!你摇滚!!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-12-31
  • 1970-01-01
  • 1970-01-01
  • 2014-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多