【问题标题】:how to get url value in php [duplicate]如何在php中获取url值[重复]
【发布时间】:2016-10-13 10:40:47
【问题描述】:

我有这个页面,在提交时我调用了另一个页面。我在 url 中传递了 id 和 name

我的网址是这样的

http://localhost/sfrefer/sf-refer-ap.php?id=45&cust_name=testing

在 sf-refer-ap.php 中

我使用以下代码

$name= $_POST['name'];
$mobile= $_POST['mobile'];
$custname1= $_POST['cust_name'];
echo $custname1;
$sql = "INSERT INTO test1 (name,email,mobile) VALUES ('$cust_name','$email[$i]', '$mobile[$i]')";

空值正在进入数据库...... 如何在db中插入id和cust_name

【问题讨论】:

  • 您发送 GET 参数而不是 POST。使用 $_GET 而不是 $_POST
  • 使用 $_GET[''] 代替帖子
  • 在修复此问题之前了解SQL Injection
  • 调试你的代码。它会告诉您$_POST 中没有任何内容,因为您使用的是查询字符串。也对 XSS 和 sql 注入攻击开放。
  • @jhon 这是一个愚蠢的言论。仅仅改变动词并不能使它神奇地安全。

标签: php mysql


【解决方案1】:

您使用GET 方法传递idcust_name。因为您在 url id=45&cust_name=testing

上传递了值
$id =  $_GET['id']; 
$name= $_GET['cust_name']; 

在尝试使用之前,您应该检查索引cust_name 是否确实存在于$_GET 数组中。

if(isset($_GET['cust_name'])){ $name = $_GET['cust_name']; } 

【讨论】:

  • 注意:未定义索引:第 6 行 C:\xampp\htdocs\sfrefer\sf-refer-ap.php 中的 cust_name
【解决方案2】:

在 URL 中传递数据时必须使用GET,仅在提交时使用POST。尝试将您的代码更改为:

更新:您应该先初始化变量,然后使用 isset 确保数据以正确的值传递。

$id= ""; 

$custname1= ""; 

if(isset($_GET['id']) && isset($_GET['cust_name'])){ 
$id= $_GET['id'];
$custname1= $_GET['cust_name'];
 echo $custname1;
}

【讨论】:

    【解决方案3】:

    看起来你有点困惑。使用以下

    $name= $_GET['name'];
    $mobile= $_GET['mobile'];
    $cust_name= $_GET['cust_name'];
    echo $cust_name; // cust name echoed here
    

    如果您想将 cust_name 保存在数据库表中,请使用名称列值作为 $cust_name

    $sql = "INSERT INTO test1 (name,email,mobile) VALUES ('$cust_name','$email[$i]', '$mobile[$i]')";
    

    如果您想在数据库表中保存名称,请使用名称列值作为 $name

    $sql = "INSERT INTO test1 (name,email,mobile) VALUES ('$name','$email[$i]', '$mobile[$i]')";
    

    【讨论】:

    • 注意:未定义索引:C:\xampp\htdocs\sfrefer\validate.php 中第 13 行 cust_name 中的 cust_name
    • 你能发布你的完整代码吗
    • 我的错误而已
    • 现在工作正常吗?
    • 是的。我可以将值存储在隐藏字段中
    【解决方案4】:
    (isset($_POST['name']))? $name= $_POST['name'] : $name = "";
    (isset($_POST['mobile']))? $mobile= $_POST['mobile'] : $mobile="";
    (isset($_POST['cust_name']))? $custname1= $_POST['cust_name'] : $custname1 = ""; 
    echo $custname1; 
    

    但是,如果您希望 url 中的 id 将变量之一更改为

    (isset($_POST['id']))? $id= $_POST['id'] : $id = "";
    

    如果你这样做 echo $id你会得到id

    为了尽量避免sql注入,请使用mysqli_real_escape_string()

    $sql = "INSERT INTO test1 (name,email,mobile) VALUES ('".mysqli_real_escape_string($con, $cust_name)."','".mysqli_real_escape_string($con, $email[$i])."', '".mysqli_real_escape_string($con, $mobile[$i])."')";
    

    $con 是您与 mysql 的连接,也许您的变量名不同。

    【讨论】:

      猜你喜欢
      • 2017-08-18
      • 1970-01-01
      • 2012-05-14
      • 1970-01-01
      • 2021-11-21
      • 2016-06-27
      • 2010-11-19
      • 1970-01-01
      • 2018-06-22
      相关资源
      最近更新 更多