2011-10-23 12 views
-1

こんにちは、私はユーザーがお互いのモンスターを交換できるトレードス​​クリプトを作ろうとしています。 だから私はスクリプトを持っているそれはモンスターと彼らが入力するユーザーのモンスターが表示されたので、ユーザーがニックネームを入力すると、ポケモンニックネームのモンスターとそれを入力したユーザーモンスターに表示されます。 すごくうまく動いています。私が望むものが表示されます。 今、私は彼らが望むモンスターを保管しておき、dbで提供したいと思っています。そして、それが問題になるのです。いくつかのresosnは、ユーザー名と商人のユーザー名を保存しますが、モンスターは保存しません。その保存空の結果を投稿する

{「ポケモン」:[「」]} trade_pokeidとtrade_mypokeidについては はここ

は私がそこにモンスターとここ

Trade with </h4> 
    <?php 



$username_trade = $_POST['username_trade']; 



$_SESSION['username_trade'] = $username_trade ; 

echo "You put in id ". $username_trade . ".<br />"; 



?> 
</p> 
<p>&nbsp;</p> 
<p><span class="mid_box"> 
    <?php 
         // get and display userbox 
         $q = "SELECT id,pokemon,exp,level FROM user_pokemon WHERE belongsto='". $_SESSION['username_trade']."'"; 
         $r = mysql_query($q); 

         if (mysql_num_rows($r) <= 0) { 
          echo "You have no current pokemon stored"; 

         } 
        ?> 

</span></p> 
<p>&nbsp;</p> 

<p> 
    <?php 
echo "<form action='test_process.php' method='POST'>"; 
while ($v = mysql_fetch_object($r)) 
{ 
    echo "<label><input type='checkbox' name='pokemon[]' value='$v->dbid'/> They have a $v->pokemon </label><br/>"; 
     echo "<label> Level $v->level  </label><br/>"; 
} 
echo "<input type='hidden' name='user' value='$username_trade'/>"; 
echo "<input type='submit' value='Check!!'/>"; 
?> 
</p> 
<p><strong>Pick what you want two offer for the pokemon </strong></p> 
<p> 
    <?php 
         // get and display userbox 
         $q = "SELECT id,pokemon,exp,level FROM user_pokemon WHERE belongsto='". $_SESSION['username']."'"; 
         $t = mysql_query($q); 

         if (mysql_num_rows($t) <= 0) { 
          echo "You have no current pokemon stored"; 

         } 
        ?> 
</p> 
<p> 


    <?php 
echo "<form action='test_process.php' method='POST'>"; 
while ($v = mysql_fetch_object($t)) 
{ 
    echo "<label><input type='checkbox' name='pokemonin[]' value='$v->dbid'/> I have a $v->pokemon</label><br/>"; 
    echo "<label> Level $v->level  </label><br/>"; 
} 
echo "<input type='hidden' name='userin' value='$username'/>"; 
echo "</form>"; 
?> 

       <p align="center"> 

今正常に動作し、ユーザーのモンスターの表示方法でありますどのように私はそれらを試して保存する方法です。

<?php 
include 'config.php'; 

$pokemon = $_POST['pokemon']; 
$pokemonin = $_POST['pokemonin']; 
$meid = $_SESSION['username']; 
$toid = $_POST['user']; 
$dbid = array(); 
$dbid2 = array(); 

foreach ($pokemon as $poke) 
{ $dbid['pokemon'][] = $poke; 

} 

foreach ($pokemonin as $poke2) 
{ $dbid2['pokemonin'][] = $poke2; 


} 




srand ((double) microtime()*1000000); 
$random_number = rand(); 
echo "$random_number"; 


    mysql_query("INSERT INTO trade (trade_id, trade_to, trade_from, trade_pokeid, trade_mypokeid) 
          VALUES ('$random_number','$toid', '$meid', '"$dbid."', '".$dbid2."');") or die("Error: ". mysql_error()); 






?> 

私は間違っていますか?なぜ結果が保存されていないのですか?またはDB上で実施して接続して、セッション開始は、config.phpのページにある

+0

を警告、通知を?渡された変数をトレース(var_dump)しようとしましたか?生成されたSQLクエリがどのように見えるか確認しましたか? –

+1

Sidenote:あなたは、そのコードに深刻なSQLインジェクションの脆弱性があります。 – Dogbert

+1

mysqlに配列を格納することはできません! http://www.evolt.org/node/60222 – Anonymous

答えて

0

あなたは(十分ではありません - あるいは、あまりにも多くのドット)の誤差を持って

VALUES ('$random_number','$toid', '$meid', '"$dbid."', '".$dbid2."') 

をお読みください...あなたのMYSQL文で
VALUES ('$random_number','$toid', '$meid', '$dbid', '$dbid2') 
+0

あなたのコードに白いページがありますか? – user1008843

2

最後のMySQLクエリでは、PHP配列をクエリとして文字列として挿入しようとしていますが、これは機能しません。私が正しく推測しているのであれば、$dbidの代わりにimplode(",",$dbid['pokemon'])のようなものを使用したいと思うでしょう。

また、mysql_real_escape_stringをユーザやURLから来るものであれば、クエリに入れる前に実行することをお勧めします。

+1

爆発?それは動作しません... –

+0

それに依存します。余分なテーブルが良いでしょう。ポスターは配列全体をフィールドに挿入したいので、単一のフィールドの中に複数の整数値を格納する他の便利な方法は考えられません。 – toon81

+0

あなたはどうやってそれをしますか?彼らが選んだモンスターが10個ある場合、そのモンスターを20個選んで欲しいとします。どうやってそれを保管しますか? – user1008843

1

あなたのコードはsql injectionです! あなたはスタートチェックのために> = SQLクエリに(エスケープなし)のパラメータを渡しaviod shuld:

http://php.net/manual/en/function.mysql-real-escape-string.php

+1

@ user1008843:そのコメントのために-100を取得する必要があります。 –

+0

@ user1008843誰かがあなたのコードの中で非常に誠実な問題を指摘しました。あなたはSQLインジェクションを気にする必要があります。そうしないと、システムに侵入してデータを削除する可能性があります。 – middus

+0

私は厄介ではなく、私のローカルホストだけです。誰がそれを攻撃するつもりですか? LOL私はSQLのサポートを求めていません。そしてスクリプトが生きていなくても、SQLインジェクションについて私に教えてくれる本当の病気です。問題はSQLインジェクションではありません。そして、SQLインジェクションは、スクリプトの動作を停止していません。 – user1008843

関連する問題