我使用了“echo $ query”来查看它是否正在获取值,但它没有在页面上显示任何内容。看看它有什么价值的另一种方式是什么?
我使用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>
答案 0 :(得分:4)
您可能无法获得所需的参数,因此请使用
启动脚本var_dump($_GET);
查看您的网页实际获得的内容。
虽然我很感激您只是在学习,但是接受逐字传递给数据库服务器和客户端浏览器的参数是一种安全禁忌。
获取$ ulName变量 - 我可以在那里注入我选择的HTML,那么为什么不将它限制为字母数字呢?
if (preg_match('/[^a-z0-9_]/i', $ulName)
die("Invalid ControlName specified");
至于通过参数接受SQL,我真的不会这样做,除非你完全信任你的应用程序的用户....
?SqlQuery=DROP+DATABASE+publicdb
可怕吗?如果你把这两个缺点结合起来怎么样?我可以制作一个显示你的页面的链接,但是嵌入了一个包含该查询的隐藏字段的表单,其中有一个大按钮,上面写着“点击我有趣的猫视频”。现在我只需要发送链接并等待其他人进行我的恶意竞标:)
答案 1 :(得分:1)
尝试var_dump($query);
(也会报告/显示空字符串)
如果您的页面完全空白,则查看您的apache(或您选择的网络服务器)错误日志也可能会有所帮助。
答案 2 :(得分:1)
试试这个:
var_dump($query);
exit;
看看会发生什么。
答案 3 :(得分:1)
这可能听起来没用,但您也应该复制一个您正在使用的“示例”网址。
PHP区分大小写(特别是在数组键时),所以对于一个,我会检查你正在调用的URL在使用GET参数时是否使用了正确的大小写。
答案 4 :(得分:0)
当这个简单的方法无法显示任何值时,自然会出现这样的问题:“回声是否正常工作或没有值显示?”
我之前做过类似的事情,但我没有使用echo
,而是使用了
printf("[%s]", $query);
所以当$_GET
答案 5 :(得分: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