Home  >  Article  >  Backend Development  >  PHP如何防止一个页面。被同时打开呢

PHP如何防止一个页面。被同时打开呢

WBOY
WBOYOriginal
2016-06-13 13:28:461031browse

PHP怎么防止一个页面。。被同时打开呢
PHP怎么防止一个页面。。被同时打开呢。。。。有什么办法实现呢。。。JS也行。。谢谢了

------解决方案--------------------
把以下代码加在程序开始处

PHP code
$fn = __FILE__ . 'lock';
if( file_exists($fn) ) exit('拒绝访问');
file_put_contents($fp, '');
ob_start( 'unlock' );
function unlock( $buffer ) {
  global $fn;
  unlink($fn);
  return $buffer;
}
<br><font color="#e78608">------解决方案--------------------</font><br>嗯,不能依靠session控制,是可欺诈的。<br>只能依靠服务端保证唯一打开了,flock文件锁就可以了.<br><br>
PHP code
<?php $fp = @fopen("lock.file", "c");
$ret = flock($fp, LOCK_EX | LOCK_NB);
if ($ret) {
        echo "after flock, before sleep" . PHP_EOL;
        sleep(5);
        flock($fp, LOCK_UN);
} else {
        echo "can't obtain the file lock" . PHP_EOL;
}
?>
<br><font color="#e78608">------解决方案--------------------</font><br>楼主可能是在做管理系统,因为一些管理系统会有特别的要求或者是担心同时插入的问题。<br>用数据库吧,核心是<br>IP(或用户ID)和当前打开页面的路径要关联,就像一个联合主键一样。<br>openUser openPage<br>1        index.php<br>2        modules/user/user_list.php<br>3        modules/user/user_list.php//这是错误的,因为User 1已经打开了“modules/user/user_list.php”页面。
<br><font color="#e78608">------解决方案--------------------</font><br>嗯,我就是担心他想要一个人<strong>已经</strong>"打开"的情况下,还不让别人"打开".....<br><br><br><br>
探讨

楼主可能是在做管理系统,因为一些管理系统会有特别的要求或者是担心同时插入的问题。
用数据库吧,核心是
IP(或用户ID)和当前打开页面的路径要关联,就像一个联合主键一样。
openUser openPage
1 index.php
2 modules/user/user_list.php
3 modules/user/user_list.ph……
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn