-4

我制作了一个缩短网址的网站。但事情是行不通的。我不能包含文件。如果我直接使用 url,它会起作用并重定向。

我的处理程序页面代码是

<?php

plink = explode('/',$_GET['p']);
//print_r($plink);

include ($_SERVER['DOCUMENT_ROOT'].'/core/config/file.php');

$code = $_GET['p'];

$query = mysql_query("SELECT * FROM shortenurl WHERE code = '$code'");
$numrows = mysql_num_rows($query);

if($numrows == 1){
    $row = mysql_fetch_assoc($query);
    $url = $row['url'];

//  header ("Location: $url");  
}

//starts url masking
if (isset($_GET['p']))
{
    switch($_GET['p'])
    {

// pages set for common interface       
       case 'home':
       include "pages/home.php";
       break;

       case $code:
       include ($_SERVER['DOCUMENT_ROOT'].'/core/pages/redirect.php?r=$url');
       break;      

//defualt page 404 Error page is set       
       default;
       include ($_SERVER['DOCUMENT_ROOT'].'/errorpages/404.php');
       break;
    }
}?>

我在数据库中添加了 google 并在 localhost 中缩短了 url 是“site.com/AasfAS”

但我收到以下错误

警告:include(C:/xampp/htdocs/core/pages/strg_rd.php?r=googlesite): 无法打开流:在线 C:\xampp\htdocs\core\pagehandler.php 中没有这样的文件或目录

警告:include():在 C:\ xampp\htdocs\core\pagehandler.php 上线"

但是如果我转到该网址/core/pages/strg_rd.php?r=googlesite
,它会将我重定向到谷歌网站
我该如何解决这个问题?

4

3 回答 3

0

include只需将文件的内容放入您正在处理的文件中。有一个名为redirect.php(我假设)的文件,但没有名为redirect.php?r=.... 您可能想要做的只是直接在同一个文件中进行重定向。

由于这是 PHP,您只需要替换:

include ($_SERVER['DOCUMENT_ROOT'].'/core/pages/redirect.php?r=$url');

header( 'Location: $url' ) ;
于 2013-10-09T19:01:18.623 回答
0

将您的代码更改为此。

case $code:
       $_GET['r'] = $url;
       include ($_SERVER['DOCUMENT_ROOT'].'/core/pages/redirect.php');
       break; 
于 2013-10-09T19:02:01.250 回答
0

这段代码:

$code = $_GET['p'];

$query = mysql_query("SELECT * FROM shortenurl WHERE code = '$code'");
$numrows = mysql_num_rows($query);

是一场等待发生的灾难。在您的网站被 pwned 之前
修复 sql-injection 漏洞,如下所示:

$code = mysql_real_escape_string($_GET['p']);

$query = mysql_query("SELECT * FROM shortenurl WHERE code = '$code'");
$numrows = mysql_num_rows($query);

更多信息在这里:如何防止 PHP 中的 SQL 注入?

或者甚至更好地放弃mysql_lib(它在 10 年前被贬值了!)并使用PDO

请参阅此处了解更多信息: http: //php.net/manual/en/book.pdo.php ‎</p>

于 2013-10-10T02:46:32.577 回答