2012-03-04 30 views
1

私はproduct.phpとviewcart.phpという2つのページを持っています。ユーザーがproduct.php上のボタンをクリックすると、製品はバックエンド(属性とともに)に追加され、viewcart.phpに移動します。データは以下のコードでviewcart.phpに送信されます。 product.php上のテキストボックスからの値に加えていくつかのPHP変数が渡されなければなりません(変数は以下の "val"です)。 viewcart.phpでPHPを使用してmysqlにエントリを挿入することに関連する問題を解決するにはどうすればよいですか?

<script language="javascript"> 
      function test() 
{ 
    var val=document.getElementById("textarea").value; 
    var hrf="viewcart.php?retailer=<?php echo $retailer?>&link=<?php echo $link; ?>&price=<?php echo $price; ?>&title=<?php echo $title; ?>&options="+val; 
     document.getElementById("a_link").href=hrf; 
} 
</script> 
<a href ="#" id="a_link" onclick="test();" class="btn btn-success" type="submit"><i class="icon-shopping-cart icon-white"></i> Add to Cart</a> 

、生成物がバックエンドに追加され、その後、次のコードを介して表示されます:ユーザーがviewcart.phpをリフレッシュするとき、私が午前問題がある

@$link = $_GET['link']; 
$price = $_GET['price']; 
$title = $_GET['title']; 
$retailer = $_GET['retailer']; 
$options = $_GET['options']; 
$session = session_id(); 
$_SESSION['sess_var'] = $session; 

//connect to database code here 
mysql_query("INSERT INTO sessionid (sessionid, link, retailer, price, title, qt, options) VALUES('$session' , '$link', '$retailer', '$price', '$title', 1, '$options') "); 

;上記のコードのために製品が再び追加されます。ユーザーがproduct.phpの送信ボタンをクリックした場合(viewcart.phpを更新するか、「戻る」ボタンをクリックしてviewcart.phpに移動しない場合)にのみ、製品がデータベースに追加されるようにするにはどうすればよいですか?

+2

私はPHPコードのSQLインジェクションの脆弱性を最初に指摘することができます - SQLと混合する前に変数をエスケープしてください:) – halfer

答えて

0
// where submit is the name of the forms submit input/button 
if ($_GET["submit"]) { 
    // add to cart 
} else { 
    // products should have already been added 
} 
0

行が既に追加されている場合は、ckeckする必要があります。 したがって、selectを使用し、 "fetch()"が "false"と異なるものを返した場合は、データを挿入します。

0

この問題は、しばしばPOST/Redirect/GETパターンを使用して解決されます。一般に、viewcart.phpというファイルがある場合は、カートを表示して製品を追加しないでください。あなたは同じPOSTデータでページを更新する場合

1

技術的には、私の知る限り、あなたは同じリファラを持つことになりますので、あなたは、リファラがproduct.phpあるかどうかをチェックしてみてはいけません。

あなたがすべきことは、更新/挿入MySQLクエリを使用することです。まず、その後のようなものを使用(ページが更新されたとき、それは同じキーになるように)また、あなたのクエリで主キーを挿入していることを確認してください:

INSERT INTO sessionid (id,a,b,c) VALUES (0,1,2,3) 
    ON DUPLICATE KEY UPDATE id=id; 

最後に、することを忘れないでくださいあなたの入力を消毒する。

関連する問題