簡體   English   中英

PHP 5.3動態數組損壞

[英]PHP 5.3 dynamic array broken

我有一個舊系統,已切換為運行PHP 5.3。 出現的一個問題是設計用來編輯表中動態產生的值的代碼。 editinvoice數組沒有值。 有任何想法嗎?

//Line Item x:<input type="text" name="editinvoice[lineitem_text_x]">
//Value x:<input type="text"    name="editinvoice[lineitem_amount_x]">

//edit values in the invoice table
$sqldata = array();
foreach   ($_POST['editinvoice'] AS $k => $v)
{
    $sqldata[] = "$k = '$v'";
}
$sql = "UPDATE db.invoices SET ".implode(',', $sqldata)." WHERE (booking_id = '$booking_id') LIMIT 1";
mysql_query($sql);

我知道mysql已過時,但是沒有資源重寫系統,並且它在Intranet上,因此沒有SQL注入的麻煩。

您的代碼暗示您期望$_POST['editinvoice']是一個數組。 但是您說您在某處添加了替代magic_quotes_gpc

foreach($_POST as $key => $val){
    $_POST[$key] = addslashes($val);
}

因此,猜測數組$_POST['editinvoice']什么?

<?php

$expected = array("foo" => "bar");
$_POST["editinvoice"] = addslashes($expected);
assert ($expected == $_POST["editinvoice"]); // it's NULL

警告:addslashes()期望參數1為字符串…
PHP警告:assert():斷言失敗

您也可能在錯誤日志中找到這樣的警告。

您的代碼依賴magic_quotes_gpc=on 因此,請再次打開它並刪除該損壞的解決方法。 當您更新到> = PHP-5.4時,您仍然可以找出解決方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM