0
私は電子商取引のWebサイトの構築を練習していますが、setcookie()関数に問題があります。クッキーの設定とデータベースへの挿入
これは私のadd_cartファイルです:
<?php
require_once $_SERVER['DOCUMENT_ROOT'].'/onlineStore/system/init.php';
$product_id = sanitize($_POST['product_id']);
$size = sanitize($_POST['size']);
$available = sanitize($_POST['available']);
$quantity = sanitize($_POST['quantity']);
$item = array();
$item[] = array(
'id' => $product_id,
'size' => $size,
'quantity' => $quantity,
);
$domain = ($_SERVER['HTTP_HOST'] != 'localhost') ? $_SERVER['HTTP_HOST'] : false;
$query = $db->query("SELECT * FROM products WHERE id = '{$product_id}'");
$product = mysqli_fetch_assoc($query);
$_SESSION['success_flash'] = $product['title'].' was added to your cart.';
//CHECK TO SEE IF CART COOKIE EXISTS
if($cart_id != ''){
//adding code later
}
else{
//ADD CART TO THE DATABASE AND SET COOKIE
$items_json = json_encode($item);
$cart_expire = date("Y-m-d H:i:s", strtotime("+30 days"));
$db->query("INSERT INTO cart (itmes,expire_date) VALUES
('{$items_json}','{$cart_expire}')");
$cart_id = $db->insert_id;
setcookie(CART_COOKIE,$cart_id,CART_COOKIE_EXPIRE,'/',$domain,false);
}
?>
そして、私は定数としてクッキーを定義する別のファイル:
<?php
define('BASEURL',$_SERVER['DOCUMENT_ROOT'].'/onlineStore/');
define('CART_COOKIE','edHjw3345LKJ1z');
define('CART_COOKIE_EXPIRE',time() + (86400 * 30));
?>
私は、ブラウザの開発ツールを使用してページを閲覧すると、それがどのように見えますCookieはページの再ロード後に設定されますが、値は0、パスはn/a、ドメインはn/a、期限切れはn/aを示し、データはデータベースに挿入されません。誰が何が間違っているのか分かりますか?助けてください。
私もそうのように私のinit.phpファイル内のif文で設定した$のcart_idを持っている:
$cart_id = '';
//IF COOKIE EXISTS, SET COOKIE TO cart_id
if(isset($_COOKIE[CART_COOKIE])){
$cart_id = sanitize($_COOKIE[CART_COOKIE]);
}
私は不安を抱いて、INSERTクエリにエラーがあると言います。 'itmes'はこれがスペルミスです。 – RiggsFolly
データベースに接続している場所がわからない – RiggsFolly
**警告**:mysqliを使用する場合は、[パラメータ化されたクエリ](http://php.net/manual/en/mysqli.quickstart)を使用してください。 .prepared-statements.php)と['bind_param'](http://php.net/manual/en/mysqli-stmt.bind-param.php)を使用してクエリにユーザーデータを追加します。 **正しくエスケープするのを忘れた場合、重大な[SQLインジェクションのバグ](http://bobby-tables.com/)を作成するため、手動エスケープと文字列補間または連結を使用しないでください。 – tadman