小编jef*_*n24的帖子

PHP会话超时太快

我在我的网站上使用php Sessions,似乎它们随机间隔"消失".我不知道他们是否由于不活动或我的代码出现问题而超时,但是有没有办法控制会话到期时的会话?

就像我可以在我的代码中添加一些内容或更改php.ini文件中的内容一样?

更新 -所以只是在这里更新,我切换主机,神奇地会话开始工作.我不知道出了什么问题,但显然他们不想正常工作.

php session

34
推荐指数
3
解决办法
8万
查看次数

确定用户是否正在使用代理

嗨,我正在创建一个游戏,我希望能够判断用户是否正在使用代理.如果它们比它基本上在他们的帐户上放置一个标志.我可以让它做旗帜,但我不确定如何判断用户是否正在使用代理.我已经看到你可以使用标题,但我不确定要查找哪些内容以及如何检查用户是否"有"标题(除了正常的http_referrer以外还有什么).

任何帮助是极大的赞赏.

编辑

if ( $_SERVER['HTTP_X_FORWARDED_FOR']
|| $_SERVER['HTTP_X_FORWARDED']
|| $_SERVER['HTTP_FORWARDED_FOR']
|| $_SERVER['HTTP_CLIENT_IP']
|| $_SERVER['HTTP_VIA']
|| in_array($_SERVER['REMOTE_PORT'], array(8080,80,6588,8000,3128,553,554))
|| @fsockopen($_SERVER['REMOTE_ADDR'], 80, $errno, $errstr, 30))
{
     exit('Proxy detected');
}
Run Code Online (Sandbox Code Playgroud)

所以这个代码大多数都可以工作,当用户是代理时,它会快速退出.但是当它们不是它需要永远加载(大约10秒).反正有没有使用这个脚本,但让它更快?

编辑2

将fsockopen上的超时从30更改为1,它的工作速度更快,并且仍在工作.感谢大家的建议:)

php proxy http-headers

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

阻止单个人创建多个帐户的最佳方法

我正在创建一个游戏,我想限制每人一个帐户.我有很多想要玩的家庭,我想不出一种从欺骗者那里解读家庭的方法.

我目前计划这样做的方式是检查cookie和会话,看看是否有任何设置在那台计算机上,如果他们是我知道有人已经从该帐户播放.我将检查他们的IP与我存储在我的数据库中的IP(我存储每个帐户的注册IP以及他们登录的最后一个IP).如果他们不符合我的任何一项,请查看他们已注册的电子邮件,并检查以确保该电子邮件尚未使用.

我的问题是,虽然这可能会阻止作弊者,但它也阻止了拥有一台计算机的家庭.

有没有人有任何建议或经验你做过什么?

提前致谢,

杰夫

php mysql login registration login-control

7
推荐指数
3
解决办法
2111
查看次数

将文件包含到变量中

我试图保持我的代码干净将其中的一些分解成文件(有点像库).但其中一些文件需要运行PHP.

所以我想做的是:

$include = include("file/path/include.php");
$array[] = array(key => $include);

include("template.php");
Run Code Online (Sandbox Code Playgroud)

比在template.php我会:

foreach($array as $a){
    echo $a['key'];
}
Run Code Online (Sandbox Code Playgroud)

所以我想存储php在变量运行之后发生的事情以便稍后传递.

使用file_get_contents不会运行它将它存储为字符串的php,所以有没有任何选项,或者我运气不好?

更新:

所以喜欢:

function CreateOutput($filename) {
  if(is_file($filename)){
      file_get_contents($filename);
  }
  return $output;
}
Run Code Online (Sandbox Code Playgroud)

或者你的意思是为每个文件创建一个函数?

php include server-side-includes

4
推荐指数
1
解决办法
4169
查看次数

在MySQL select语句中组合2个表

我知道我可以做加入,但它不完全是我想要的.

我正在制作一个主要有两个表的实时聊天系统:主聊天表(称之为表a),然后是一个mod表(称之为表b).如果用户被暂停,该频道的消息超过100,或者超过1周,消息将从主聊天表移动到mod表.

我将聊天消息的ID作为ID(主要)存储在主聊天表上,并作为modID存储在mod表上.

我正在做的是为我的Mods创建一个单独的页面,我希望能够将这两个表组合成一个区域,但我希望它们按各自的表排序.

所以我们说我们有以下内容:

主表ID:1,2,4 Mod表ID:3

我希望我的结果显示1,2,3,4无论ID在哪个表中.

任何帮助是极大的赞赏!

编辑:我得到了答案,这是我过去常常这样做的:

SELECT ab.* FROM 
  ((SELECT ID as table_id FROM a 
    WHERE roomID = 'newUsers' ORDER BY ID ASC) 
UNION ALL 
  (SELECT chatID as table_id FROM b 
    WHERE roomID = 'newUsers' ORDER BY chatID ASC)) ab 
ORDER BY ab.table_id 
Run Code Online (Sandbox Code Playgroud)

php mysql select join

2
推荐指数
1
解决办法
3718
查看次数

使用SQL获取不同的行,但也使用整行

好的,所以更容易举一个例子,希望有些人有一个解决方案:

我有持有出价的表格:

ID | companyID | userID | contractID | bidAmount | dateAdded
Run Code Online (Sandbox Code Playgroud)

下面是可以在表中的一组示例行:

ID | companyID | userID | contractID | bidAmount | dateAdded
--------------------------------------------------------------
10 | 2         | 1      | 94         | 1.50      | 1309933407
9  | 2         | 1      | 95         | 1.99      | 1309933397
8  | 2         | 1      | 96         | 1.99      | 1309933394
11 | 103       | 1210   | 96         | 1.98      | 1309947237
12 | 2         | 1      | 96         | 1.97      | …
Run Code Online (Sandbox Code Playgroud)

mysql sql

2
推荐指数
1
解决办法
614
查看次数