php 变量 $page 未正确传递到 URL
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 等等。我明白了这个:
http//server-ip/install/index.php?page=<?=($page+1)
导致 'Page not found!' 网页上的一些 pagecounter 也没有正确显示所以它看起来像 index.php 中的变量 $page 没有正确地传递给浏览器它的真实值。
suEXEC 作为 fast-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 ^(.*)$ .php
使用 javascript 完成的导航功能的一小段:
由于这是一款可以购买且通常不需要的软件
由客户编辑我只是展示他们如何构建它。协作
除了说我的安装有问题外,支持人员无法进一步帮助我。
<?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 个步骤,每个步骤都在单独的 php 文件(1.php 到 15.php)中定义,这些文件位于安装文件夹中的 pages 文件夹中。
一年前我曾在 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 破坏的短标签。
我正在尝试从 Kollaborate 安装审查和批准服务器,它基本上是一个包含 js/php 文件的 zip 包,需要将其部署在文档根目录中,然后导航到 http://server-ip/install/index.php
但是导航到下一页会导致直接将 $page 变量传递给 URL 而不是像 1.php -> 2.php 等等。我明白了这个:
http//server-ip/install/index.php?page=<?=($page+1)
导致 'Page not found!' 网页上的一些 pagecounter 也没有正确显示所以它看起来像 index.php 中的变量 $page 没有正确地传递给浏览器它的真实值。
suEXEC 作为 fast-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 ^(.*)$ .php
使用 javascript 完成的导航功能的一小段: 由于这是一款可以购买且通常不需要的软件 由客户编辑我只是展示他们如何构建它。协作 除了说我的安装有问题外,支持人员无法进一步帮助我。
<?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 个步骤,每个步骤都在单独的 php 文件(1.php 到 15.php)中定义,这些文件位于安装文件夹中的 pages 文件夹中。
一年前我曾在 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 破坏的短标签。