我目前正在处理一个表单,该表单需要用户填写很少的字段,而很少根据用户在上一页上做出的选择。 URL如下所示:
http://localhost:8080/series/dynamics/admin/cleanURL/post.php?subgroup=redapple&adverid=254427035
其中redapple是$ _GET变量。但是,我希望网址看起来像是什么;
http://localhost:8080/series/dynamics/admin/cleanURL/post.php?adverid=254427035
即。没有关于网址中子组选择的信息。但是仍然想让子组字段填充用户做出的选择。
我的php看起来像这样:
<?php require('../config/connection.php');
if(isset($_POST['variable'])){
$values = mysqli_real_escape_string($dbc, $_POST['variable']);
$query = "SELECT * FROM prdct_categories WHERE product = '$values'";
$result = mysqli_query($dbc, $query);
$rand = rand(0, 1000000);
$html = '<ul>';
while($row = mysqli_fetch_assoc($result)){
$clickable_url = 'post.php?subgroup='.$row['subgroup'].'&advertid='.$rand;
$html .= '<li class="nav">';
$html .= '<a href="'. $clickable_url .'">'.$row['subgroup'].'</a>';
$html .= '</li>';
}
$html .='<ul/>';
echo $html;
mysqli_close($dbc);
}
答案 0 :(得分:1)
如果您不想在网址中传递信息,那么您需要使用Cookie或会话。将表单发布到收集发布数据的页面,然后在将用户重定向到正确的页面之前设置会话或cookie。
http://php.net/manual/en/features.cookies.php
或者
答案 1 :(得分:0)
您也可以使用POST请求,例如,如果我创建了一个表单:
<form action="form_url.php" method="get">
First name: <input type="text" name="fname"><br>
Last name: <input type="text" name="lname"><br>
<input type="submit" value="Submit">
</form>
在form_url.php中,我可以像这样访问变量:
<?php
var_dump($_POST);
使用POST over GET的好处是可以通过SSL加密,而GET请求中的所有参数都在URL中编码并可见。此外,由于URL最多只能是265个字符,这也是数据大小的限制。
如果您想上传某些内容,例如图片,则需要在表单字段中使用文件输入(如上图所示),以便可以通过文件流而不是网址发送数据。 / p>
编辑:
如果您想要另一种获取网址数据的方式,则不必使用get。完整的URL可以通过以下方式给出:
<?php
var_dump($_SERVER['HTTP_HOST']);
var_dump($_SERVER['REQUEST_URI']);
虽然REQUEST_URI可能是你想要的。请注意,通过此处传递的任何数据也可以从GET获得,但您不必使用GET来获取数据。然后,您需要使用以下内容解析URL:
<?php
var_dump(explode('\', $_SERVER['REQUEST_URI']));