2010-01-16 51 views
0

我已经使用“echo $查询”来查看它是否获取价值或不是,但它没有显示任何内容在页面上。什么是另一种方式来看看它获得了什么价值?回声不显示值

我使用Aptana Studio 2.0 PDT,但我无法设置断点。相当新的。

<?php 
error_reporting(E_ALL); 
ini_set('display_errors', '1'); 

    $ulName = $_GET['ControlName']; 
    $query = $_GET['SqlQuery']; 
    echo $query; 
    mysql_connect('localhost:3306','pffsddsf','dfsdfsd'); 
    mysql_select_db('publicdb'); 
    $result=mysql_query("select * from electioncategorymaster"); 
?> 
<ul id="<?php echo $ulName; ?>" name="<?php echo $ulName; ?>"> 
<?php while($row=mysql_fetch_array($result)) 
{ ?> 
    <li><?php echo $row[1]; ?></li> 
<?php } ?> 
</ul> 

回答

4

您可能没有与

var_dump($_GET); 

得到你所期望的参数,所以开始你的脚本来看看你的网页实际上得到。

尽管我很欣赏你只是在学习,但接受逐字传递给数据库服务器和客户端浏览器的参数是一个安全禁止。

取$ ulName变量 - 我可以在那里注入我选择的HTML,那么为什么不把它约束为字母数字?

if (preg_match('/[^a-z0-9_]/i', $ulName) 
    die("Invalid ControlName specified"); 

至于通过参数接受SQL,我真的不会做,除非你完全信任你的应用程序的用户....

?SqlQuery=DROP+DATABASE+publicdb 

可怕吧?现在如果你把这两个缺陷结合起来,那么怎么样?我可以制作一个显示你的页面的链接,但是嵌入了一个包含该查询的隐藏字段的表单,沿着这个表单有一个大按钮,表示“点击我的滑稽猫视频”。现在我只需要发送的链接在那里,等待别人做我的恶招投标:)

+0

说这是一个“不 - no”接近没用的新手......告诉他为什么这是一个坏主意。 – 2010-01-16 10:40:39

+0

我以为我做过,但我扩大了SQL注入警告,以包括一个适当的可怕的例子... – 2010-01-16 10:43:01

+0

谢谢。我会记下这一点。在哪里写var_dump()? – RKh 2010-01-16 10:44:05

1

尝试var_dump($query);(还将报告/显示空字符串)

如果你的页面是完全空白走进一看你的Apache(或网络服务器您所选择的)errorlogs也可能是有帮助的。

1

试试这个:

var_dump($query); 
exit; 

,看看有什么会发生。

0

当这个简单的方法无法显示任何值时,自然会产生这样的问题:“回声工作还是没有值显示?

我做了类似前一段时间的东西,而不是使用echo,我用

printf("[%s]", $query); 

所以,我可以看空[]在没有价值的$_GET

0

第一回:启用错误日志记录并且还记录到日志文件。

error_reporting(E_ALL); 
ini_set('display_errors','On'); 

你可以,如果你的错误日志通过执行以下工作尝试:

error_log("This Error should be displayed!", 0); 

看到更多的有关错误处理和记录在php.net网站:http://www.php.net/manual/en/book.errorfunc.php

1

这听起来无用的,但你也应该复制你正在使用的“示例”URL。

PHP是区分大小写的(特别是当涉及到数组键时),所以我会检查您调用的URL在使用GET参数时是否使用了正确的大小写。

+0

一个很好的答案。 www.example.com/script.php?ControlName=foo会起作用。 www.example.com/script.php?controlname=foo不会。 – 2010-01-16 11:53:39