相关疑难解决方法(0)

php会话随机丢失,无法理解原因

我付了一个程序员来制作一个购物篮脚本来使用Spreadshirt API.一切都很完美,除了篮子一直在排空.我认为会话在某些时候丢失,所以脚本创建了另一个BasketId.

我试图找出它是否有特定原因发生,没有任何成功......我无法重现这个错误.它只是随机发生而没有任何理由.关闭浏览器,重置apache甚至整个网络服务器都不会引起会话丢失.

我有两个不同的脚本在同一个域上使用cookie,他们没有任何问题(一个是管理员登录会话的cookie,另一个cookie是保存用户在商店上最后查看的文章)

我尝试了谷歌上找到的所有解决方案没有任何成功:编辑php.ini,通过PHP强制ini设置,尝试了htaccess方式,...

这是我的phpinfo的"会话"部分:http://gyazo.com/168e2144ddd9ee368a05754dfd463021

shop-ajax.php (会议处理@第18行)

ini_set('session.cookie_domain', '.mywebsite.com' );
header("Pragma: no-cache");
header("Cache-Control: no-store, no-cache, max-age=0, must-revalidate");
$language = addslashes($_GET['l']);
$shopid = addslashes($_GET['shop']);


// if($_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest') {
//  die("no direct access allowed");
// }



if(!session_id()) {
  $lifetime=60 * 60 * 24 * 365;
  $domain = ".mywebsite.com";
   session_set_cookie_params($lifetime,"/",$domain);
    @session_start();
}





// Configuration
$config['ShopSource'] = "com";
$config['ShopId'] = $shopid;
$config['ShopKey'] = "*****";
$config['ShopSecret'] = "*****";



/*
 * add an article to …
Run Code Online (Sandbox Code Playgroud)

javascript php cookies ajax session

16
推荐指数
1
解决办法
3683
查看次数

通过URL指定Controller类与为每个Controller指定脚本有什么优缺点?

我今年夏天已经设置了两个不同的PHP系统.每个使用两种不同的方法:

方法#1:每个任务一个PHP文件

此方法要求PHP为每个主要任务创建一个文件.例如,我的上传脚本将通过访问http://www.domain.com/upload.php.在upload.php,实例化和使用"控制器"和"视图"类.例如,upload.php可能看起来像这样:

<?php
require_once PATH_LIBRARY . 'control/Uploader.class.php';
require_once PATH_LIBRARY . 'view/UploaderPage.class.php';

$uploader = new Uploader();
$uploader->setView(new UploaderPage());
$uploader->init();
?>
Run Code Online (Sandbox Code Playgroud)

在上面的脚本中,如果我想调用另一个脚本,我只需重定向并附加必要的URL编码变量(header('Location: edit_details.php?image_id=456');).

方法#2:index.php处理所有请求的主文件

此方法不要求PHP为每个主要任务创建文件.相反,将在系统中使用的每个"控制器"类都使用index.php我调用的唯一类进行注册Router.路由器决定指定的Controller是合法的还是非法的并且相应地起作用(将浏览器路由到正确的控制器).例如,index.php脚本的简化版本:

<?php
require_once 'bootstrap.inc';
require_once PATH_LIBRARY . 'router/Router.class.php';

$router = new Router();
$router->register('Uploader', PATH_LIBRARY . 'control/Uploader.class.php');
$router->register('DetailsEditor', PATH_LIBRARY . 'control/DetailsEditor.class.php');
$router->route();
?>
Run Code Online (Sandbox Code Playgroud)

因此,每一个行动都发生在index.php.不需要很多文件,这些文件没有做太多其他实例化特定视图和控制器类的文件.但是,如果你想从脚本/类B调用脚本/类A,那么你需要在URL上传递控制器类的名称:header('Location: index.php?controller=DetailsEditor&image_id=456').

到目前为止,我真的不喜欢我需要在URL中包含Controller名称的事实.我觉得它将我的底层系统暴露给最终用户.但是,我确实喜欢我可以在一个页面上注册所有控制器类的事实.大多数情况下,我不知道暴露控制器名称是否安全.另一个烦恼是,如果我想通过POST请求调用脚本,我必须包含一个指定所需控制器类的隐藏输入(例如<input type="hidden" name="controller" value="DetailsEditor" />).

我希望这足以继续下去.我很紧张第二种方法在未来几个月里并没有真正为我服务.我很快就会选择一个或另一个.

谢谢.

php theory security

6
推荐指数
1
解决办法
383
查看次数

PHP 中的 session.auto_start 有缺点吗?

我通常最终添加session_start()到我的 PHP 站点上每个页面的顶部(或在每个页面中包含的头文件中)。我最近发现您可以通过使用以下设置来自动启动会话php.ini

session.auto_start = 1

使用此设置有哪些潜在的缺点(如果有)?

php session

6
推荐指数
1
解决办法
1万
查看次数

在整个网页上使用一个文件的优缺点?

我不确定我应该如何表达这一点,但我会试一试.
我最近开始使用面向对象的PHP编写我的投资组合,我想知道是否根据最佳实践使用单个页面,其中内容根据SQL数据和$ _GET变量而变化?

如果是/否,为什么?

编辑:看看我的下一篇文章,更深入的细节.

php file

2
推荐指数
3
解决办法
1088
查看次数

标签 统计

php ×4

session ×2

ajax ×1

cookies ×1

file ×1

javascript ×1

security ×1

theory ×1