我有以下代码从URL获取数据
if (isset($_GET['id'])){
$url = $_GET['id'];
}
我检查变量结果给我的值$url
:
书-php/
目前,数据是以这种方式获取的,因为我.htaccess
在友好的Urls中有文件。
在进行查询时数据是正确的:
$stmtID = $con->prepare("SELECT idlibro,libro,titulo,precio FROM biblioteca WHERE url=?");
现在我的问题:
id
他赋予什么价值$_GET
?
如果我以这种方式更改代码不起作用,则文件的所有变量都将失去验证,因为它们不再收到查询的理想结果。
if (isset($_GET['url'])){
$url = $_GET['url'];
}
in 和它有什么id
关系$_GET
?
我在数据库中没有任何产品或数据有一个列,
id
所有的IDS都是这样定义的id_producto
,id_usuario
等等。
为什么给它另一个名字不起作用?
更新
.htaccess 文件
#Regla Url amigable
RewriteRule ^([a-zA-Z0-9-/]+)$ detalle.php?id=$1
正如PHP 手册所说:
例如在这样的 URL 中:
的值
$_GET
将是这样的数组:如果要获取 的值
GET
:解决你的问题
看到您的 URL 是这样构造的:
将规则中的值更改
id
为url
相反,如果该值
url
取自另一个元素,或者如果它等同于您构建友好 URL 的某个文件,那么您将不得不修改元素的名称(例如 HTML 元素)或名称如果它是一个文件,存档文件。关于其他事情
GET
我想你会使用
GET
或POST
不止一次,所以我允许自己留下一些迹象......当你提交 HTML 表单时,GET 会使用元素标签的值
name
作为键来关联值。例子:
如果您想将通过 GET 获得的键与数据库的列名匹配,则只需在
name
使用 HTML 表单或 URL 的值时更改标记的值。例子:
HTML 表单
当您提交此表单时,实际生成的是这样的 URL:
因此,
GET
我们得到一个包含三个键及其三个各自值的数组,每对 (key->value)&
在 URL 中被分隔:id_usuario => 1
id_producto => 24890
url => example.com/registrar
file.php 或从前一个表单接收数据的文件
在 PHP 文件中,您将检索每个值,如下所示:
PHP 手册和经验中的注释
关于使用的一些指示
GET
(也适用于POST
):name
HTML 元素标签获取值,而不是id
.它通常用于
isset
验证搜索到的值是否存在于 URL 中(如果它存在于发布的数据中)。例如,要查看它是否id_usuario
已发布:这种比较可以细化,不仅看它是否存在,还看它是否为空白。
这是一个“超全局”或自动全局变量。它只是意味着它是一个在脚本中任何地方都可用的变量。无需
global $variable;
从函数或方法访问它。GET 变量通过
urldecode()
.$_POST
以相同的方式工作,有时会推荐 overGET
,但这将是另一回事。永远不要直接将获取的值与
GET
或与POST
或任何其他来自外部的值发送到数据库查询。这样做会使代码容易受到 SQL 注入的攻击,恶意用户不仅可以通过 SQL 注入控制数据库,还可以控制整个系统。这些值必须使用准备好的查询发送。这里有几个关于 SO 处理这个主题的问题。简短的回答:
将您更改
.htaccess
为以下内容:长答案:
$_GET
一般而言,变量是由URL发送的变量,我将对此进行解释,但A.Cedano已经遇到了麻烦。当您通过或以与您发送参数相同的方式创建“友好 URL”时,您可以在您的
.htaccess
virtualhost
GET
.htaccess
您正在覆盖 url 并在内部发送id:
如果您希望我更改此设置并接收
url
您的代码,您应该将您的virtualhost
或更改.htaccess
为以下内容:发生的情况是,您添加的
$_GET['nombre']
是从前端发送到后端的变量的名称,在您的某些文件中,该变量以名称发送,id
这就是您必须接收的方式它,如果您想更改名称,您应该在发送时更改它并php
使用新名称接收它我希望我在解释中已经很清楚了,就像我给你这个链接一样,提供有关 GET 变量的更多信息