[英]php variable $page not passed correctly into the URL
我正在尝试从Kollaborate安装一个审批服务器,它基本上是一个包含js / php文件的zip程序包,需要将其部署在文档根目录中,然后导航至http://server-ip/install/index.php
但是导航到下一页会导致将$ page变量直接传递到URL中,而不是像1.php-> 2.php之类的东西传递给URL。我得到了这个信息: http//server-ip/install/index.php?page=<?=($page+1)
导致出现“找不到页面!” 另外,网页上的一些pagecounter不能正确显示,因此,看起来index.php中的$ page变量没有正确地以其真实值传递给浏览器。 suEXEC被禁用为快速cgi包装器,并且.htaccess中有一些重写规则
RewriteEngine On
# Is not directory
RewriteCond %{REQUEST_FILENAME} !-d
# Is an existing php file
RewriteCond %{REQUEST_FILENAME}\.php -f
# rewrite index to index.php
RewriteRule ^(.*)$ $1.php
导航功能的一小段代码是用javascript完成的:由于这是一款可以购买的软件,通常不需要客户编辑,我只是向他们展示它们的构造方式。 除了说我的安装有问题之外,Kollaborate的支持无法进一步帮助我。
<?php
$page_count = 15;
$page = 1;
if (isset($_GET['page'])) $page = $_GET['page'];
if (!file_exists("pages/$page.php")) {
echo '<h1>Error: Page not found!</h1>
<a href="index.php?page='.($page+1).'"><button>Next Page</button</a>';
exit;
}
导航步骤在index.php中进一步
<script>
function nextPage()
{
if (typeof endPage == 'function') {
var err = endPage();
if (err && err.length > 0) {
$('#error').html(err);
$('#error').show();
return;
}
}
$('#error').hide();
window.location.href = "index.php?page=<?=($page+1)?>";
}
</script>
此Kollaborate服务器在Ubuntu上需要某种LAMPP堆栈,但我使用的是CENTOS,并安装了单独的必需软件包,如php / mysql / nodejs /
该服务器的配置分15个步骤,每个步骤都在安装文件夹内pages文件夹中的单独php文件(1.php至15.php)中定义。
我一年前曾与Centos一起工作过,但现在不知道要去哪里找...这是httpd或php中格式错误的配置问题吗? 还是nodejs? 全部安装在Centos 6.7上,具有最新版本,并且基于httpd和php 5.5.3(之前尝试过nginx,但产生的结果令人失望)
乍看之下,似乎短标记可能未在您的php配置中打开。 使用短标签<?
而不是长标签<?php
要求设置short_open_tag
php ini指令。 如果您在应用程序中创建一个php脚本并运行phpinfo();
应该有一行告诉您短标签是关闭还是打开。 只需搜索“ short_open_tag”。
您也可以尝试在index.php
切换到长标签语法,所以不要
window.location.href = "index.php?page=<?=($page+1)?>";
该行将是
window.location.href = "index.php?page=<?php echo ($page+1);?>";
另一种方法是安装PHP 5.4,它会自动启用短回显标记,而与PHP.ini中的short_open_tag值无关。
这可能是解决该问题的更好方法,因为它允许您使用简短的回显标记,而无需启用可能破坏XML的简短标记。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.