好的,所以不久之前我有一些帮助编写了一些PHP投票代码,在我升级服务器以使用最新版本的PHP后,它工作得很好。但是现在我已经切换了服务器,并且PHP不像另一个那样是最新的。无论如何,这是我的代码:
<?php
if(!file_exists('vote/1u.txt')){
file_put_contents('vote/1u.txt', '+1');
}
if($_GET['click'] == 'up1'){
file_put_contents('vote/1u.txt', ((int) file_get_contents('vote/1u.txt')) + 1);
header('Location: ' . $_SERVER['SCRIPT_NAME']);
die;
}
?>
执行并显示:
<a href="?click=up1"><img src="images/thumbsup.jpg" width="40px"border="0"> </a><br>Votes: <?php echo file_get_contents('vote/up1.txt'); ?>
现在,在我的其他服务器(PHP版本5.2.5)上,此代码运行良好!但是在我的新服务器上,PHP版本是5.2.11,因此代码将无法正常工作。我的问题是,有没有办法让它与早期版本的PHP更兼容,或者编写全新的代码,就像这个一样?或者有没有办法告诉我的服务器使用PHP 5.2.5+?我正在使用cPanel X管理面板。
我已将文本文件权限设置为777,但仍然没有!
答案 0 :(得分:3)
您正在检查变量“click”,但只有在等于“up1”时执行代码。
但是你的链接告诉click等于“是”,因此部分代码永远不会为真,因此从未执行过。
将执行人更改为:
<a href="?click=up1"><img src="images/thumbsup.jpg" width="40px"border="0"> </a><br>Votes: <?php echo file_get_contents('counteru.txt'); ?>
但从逻辑上讲,你的处理代码应该合理化一点:
如果点击链接: 首先,如果数据文件(lu.txt)不存在,则创建它并在其中写入“+1”,否则,将1添加到其现有值。
然后,重定向到初始页面。
if($_GET['click'] == 'up1'){
if(!file_exists('vote/1u.txt')){
file_put_contents('vote/1u.txt', '+1');
}else{
$content = file_get_contents('vote/1u.txt');
if(!$content){
die("Error! file_get_content failed !");
}
file_put_contents('vote/1u.txt', ((int)$content) + 1);
}
header('Location: ' . $_SERVER['SCRIPT_NAME']);
}
exit;
答案 1 :(得分:0)
在file_get_contents()周围添加trim()并不是一个坏主意。或者在检查$ _GET ['click'] isset()之前检查它是否等于'up1'。
在标题重定向之后退出()而不是die()是常规的 - 好吧,从我至少看到过。
基本上,在开发过程中,打开错误报告并将错误标记设置为E_ALL以查看所有内容,包括警告和通知 - 这些都不会停止您的代码,但仍应该知道并解决。
您可以通过打开完整的错误报告,发现您的代码在不同的PHP小版本下产生不同结果的原因。