2010-11-06 20 views
5

Có vấn đề sau trong giỏ hàng PHP.

Một bãi chứa của phiên của tôi trông giống như:

Array ([username] => [email protected] [key] => 1) 

Các giỏ mua hàng có ba nút:

<form name='cartForm' action='cart.php' method='post'> 
<input type='image' value='submit' name='continueshopping' src='x.jpg' /> 
<input type='image' value='submit' name='update' src='y.jpg' /> 
<input type='image' value='submit' name='checkout' src='z.jpg' /> 

bất cứ khi nào tôi nhấn một trong các nút, trang tái tải và làm những gì nó cần phải (tức là loại bỏ hoặc thêm một mục) ... nhưng mảng phiên được thay đổi thành sau (tùy thuộc vào nút được đẩy)

Array ([username] => [email protected] [key] => continueshopping_y) 
Array ([username] => [email protected] [key] => update_y) 
Array ([username] => [email protected] [key] => checkout_y) 

[key] là một từ dành riêng? Tại sao giá trị của $ _SESSION ['key'] bị ghi đè từ một biểu mẫu chỉ POST mọi thứ? Đây là một vấn đề đối với dự án của chúng tôi vì chúng tôi đã lưu trữ ID tài khoản người dùng trong [key], nhưng giá trị được ghi đè mỗi khi nút được đẩy vào giỏ hàng.

Mã thực tế khá dài và đăng ở đây sẽ không thực tế. Không biết phải đăng gì, vì giỏ hàng không bao giờ tương tác với phiên khác ngoài việc lấy session_id(). Thực sự tôi chỉ tự hỏi liệu có ai có kinh nghiệm tương tự không. Tôi không thể tạo lại vấn đề trên máy chủ cục bộ của mình (PHP5), chỉ tồn tại trên máy chủ trực tiếp (PHP4).

Xin cảm ơn trước.

Trả lời

1

Không, khóa không được đặt trước; phải có mã thực tế ghi đè mục nhập.

Vì nó phụ thuộc vào cấu hình máy chủ, tôi khuyên bạn nên kiểm tra cài đặt register_globals và đảm bảo rằng nó đã bị tắt trên cả hai máy chủ.

0

continueshopping_y, update_y, checkout_y - khi sử dụng hình ảnh INPUT trình duyệt cũng sẽ gửi tọa độ x & y nơi hình ảnh được nhấp. Dự đoán của tôi sẽ có một số mã hiện diện như sau:

foreach ($_POST as $key => $value) { 
..... 
} 

.... 
Many lines of code later .... 
.... 

$_SESSION['key'] = $key; 
// or, 
session_register('key'); 
+0

Thay đổi foreach ($ _POST là $ key => $ value) để foreach ($ _POST là $ key2 => $ value) làm mọi thứ hoạt động. Vì vậy, tôi cho rằng câu trả lời là một sự kết hợp của câu trả lời của AndreKR và của bạn - biến khóa _POST được trộn lẫn với biến khóa _SESSION. – Hovvit

Các vấn đề liên quan