繁体   English   中英

如何在PHP中获取URL ID? (用于mysql_query UPDATE)

[英]How to get url ID in PHP? (for mysql_query UPDATE)

我想为一个名为Spiral url的脚本添加一个编辑按钮,但是问题是我无法获取URL ID。 这是我尝试过的:

/** get url id **/
$id = isset($_GET['id']) ? $_GET['id'] : '';
@mysql_query("UPDATE short_urls SET long_url = 'test' WHERE url_id = '".$id."' LIMIT 1");

我究竟做错了什么?

我还通过电子邮件发送了作者及其回复:

“我建议您在Stackoverflow上发帖-https: //stackoverflow.com/ 。我很乐意为您提供帮助,但是我看不到您做错了什么。我还在学习PHP。”

  1. 您对SQL注入攻击持开放态度。
  2. 您正在使用@运算符抑制错误。 永远不要抑制错误
  3. 您不检查mysql_query()的返回值,该值在失败时返回布尔FALSE。

报废该代码并使用此代码:

if (!isset($_GET['id'])) {
    die("missing query parameter");
}
$id = intval($_GET['id']);
if ($id === '') {
    die("Invalid query parameter");
}
$sql = "UPDATE short_urls SET long_url = 'test' WHERE url_id=$id LIMIT 1";
$result = mysql_query($sql);
if ($result === FALSE) {
    die("Mysql error: " . mysql_error() . $sql);
}

请注意,我假设id参数是数字。 如果不是,则删除intval()内容。

确保$_GET['id']的值实际上有一个值。 您的URL看起来像http://myurl.com/index.phtml?id=yourvalue 您可以执行以下操作:

print "id=".$_GET['id'];

另外,每当执行查询时,请确保转义用户可以操纵的所有变量。 不这样做,您就容易受到SQL注入攻击的影响。

mysql_real_escape_string- http://php.net/manual/zh/function.mysql-real-escape-string.php

@mysql_query("UPDATE short_urls SET long_url = 'test' WHERE url_id = '".mysql_real_escape_string($id)."' LIMIT 1");

如果网址是这样的: domain.com/something.php?id=65

$_GET['id']应该等于65

如果那里没有id ,那么当您尝试访问$_GET['id'] ,会收到错误消息。

另外,请尝试删除@符号(禁止显示PHP警告)。

而且你对鲍比桌敞开怀抱

另外(旁注),请一位知道他们在做什么的新开发人员;-)

您检查过网址了吗

http://www.somewebsite.com?id=56&other_car=test

专为“?” 在网址末尾后,还要检查所有部分是否被&符分解。

无法通过以下方式查看所有可用的get数组变量:

print_r($_GET);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM