2015-12-09 52 views
-1

我試圖在數據庫中插入$ _COOKIE ['PHPSESSID']與pdo,但我有問題,有人可以幫忙嗎?如何使用PDO將PHPSESSID插入數據庫?

這裏是db表設計:db表名:unregistered_customer_orders

session_id (int) 
sel_article_id (varchar, 32) 
sel_article_qty(smallint) 
sel_article_color(varchar) 
sel_article_size(varchar) 
order_date(datetime) 

這裏是代碼

session_start(); 
try { 
include_once'../includes/connect.inc.php'; 
$q ="INSERT INTO unregistered_customer_orders SET 
session_id = $_COOKIE['PHPSESSID'] , 
sel_article_id = :sel_article_id, 
sel_article_qty =:sel_article_qty, 
sel_article_color = :sel_article_color, 
sel_article_size = :sel_article_size, 
order_date = NOW()"; 
$stm = $pdo->prepare($q); 
$stm->bindValue(':sel_article_id', $sel_article_id); 
$stm->bindValue(':sel_article_qty', $sel_article_qty); 
$stm->bindValue(':sel_article_color', $sel_article_color); 
$stm->bindValue(':sel_article_size', $sel_article_size); 
$stm->execute(); 

    if ($stm) { 
    echo "Insert"; 
    exit(); 
    } 
    else{ 
    echo "Insert failed"; 
    exit(); 
    } 
} catch (PDOException $e) { 
    echo "sth got wrong with the insert".$e->getMessage(); 
} 
+0

http://php.net/manual/en/pdo.error-handling.php --- http://php.net/manual/en/function.error-reporting.php –

+0

您正在使用準備好的語句不正確。這個'$ _COOKIE ['PHPSESSID']'也應該綁定。 – chris85

回答

1

你的代碼中有一個嚴重的SQL注入的問題!

您從cookie中將未轉義的SQL代碼注入查詢 - 或者至少嘗試這樣做。

該cookie變量應該像部分一樣。創建一個進入準備語句部分的新變量名稱,並將cookie值綁定到它。

請注意,PHP可以配置爲使用會話cookie的不同名稱!開始會話後,您不必訪問$ _COOKIE變量,只需調用session_id()函數即可獲取當前使用的會話標識。

在使用session_start()之前,可以通過調用session_name()來讀取已配置的cookie名稱。不要將cookie名稱硬編碼到代碼中 - 當新服務器具有不同的配置時,它將很難調試錯誤。

+0

謝謝...爲答案。真正感激..神..我忘了我可以只使用session_id ...到變量和綁定 –