2010-12-31 13 views
0

ご覧のとおり、(おそらく)が動作してはならない理由はありません。私は他に何ができるのか、何か考えているのですか?どんな助けもありがとう!QUERY_STRINGからINSERTできますが、MySQLから同じ値を選択することはできません!

私がやろうとしていますすべては、URLの末尾に入力された値は、データベースにあるもの(とはいに一致した場合、それはデータベース内にあるビューのチェックです。:) あなた

ありがとう


コード:

<?php 

$keyword = substr($_SERVER['REQUEST_URI'],11); 
    if($_REQUEST['action'] == "link") 
    { 
     $keyword = $_POST['keyword']; 
     $link = $_POST['link']; 

     $connection = 
       mysql_connect("my01..com","h","h") or die(mysql_error()); 

     if($connection) 
     { 
     mysql_select_db("mysql_17902_h", $connection); 

     mysql_query(
       "INSERT INTO mysql_17902_h.links (
        link, 
        keyword) VALUES (
        '".$link."', 
         '".$keyword."')") or die(mysql_error()); 

      $state = true; 
     } 
    } 
    else 
    { 
     if(!empty($_POST)) 
     { 
      print_r($keyword); 
      $connection = 
        mysql_connect("my01.h.com","h","h") or die(mysql_error()); 


      if($connection) 
      { 


       mysql_select_db("mysql_17902_h") or die(mysql_error()); 
      $result = mysql_query("SELECT link FROM links WHERE keyword = $keyword") 
      or die(mysql_error()); 

      $row = mysql_fetch_array($result); 
       $outsy = $row['link']; 

      } 
      $state = true; 
      } 

    } 
?> 
+0

SELECTを実行しようとするとどうなりますか?エラーなど何かありますか? – Brettski

+0

これは私の問題です - SELECT文はエラーを起こさず、見ることができるように** print_r()**を使って値を出力していますが、何も出力されません。だから私はそれが最初の場所のデータベースからの何かのSELECTでもあるかどうかを知る方法がない。 –

+0

これはちょうどこれを言うためです。データベースに挿入する前に$ _POST-dataをエスケープしてください:http://www.tizag.com/mysqlTutorial/mysql-php-sql-injection.php – Damiqib

答えて

0

それは、より読みやすいですので、あなたのコードを書き直してみます

$link = mysql_real_escape_string($_POST['link']); 
$keyword = mysql_real_escape_string($_POST['keyword']); 

$sql = <<<EOL; 
INSERT INTO mysql_17902_h.links (link, keyword) 
VALUES ('$link', '$keyword') 
EOL; 

mysql_query($sql) or die(mysql_error()); 

mysql_real_escape_string()を使用してSQLインジェクション攻撃を防ぎ、SQL文字列内の変数を一重引用符で囲むことに注意してください。

$result = mysql_query("SELECT link FROM links WHERE keyword = $keyword") or ... 
                   ^^^^^^^^ 

テキストタイプフィールドの前後に引用符はありません。構文エラーです。同様に、コードのその時点で、$キーワードにはスクリプトの先頭にあるsubstr()の呼び出しが含まれているので、substr呼び出しが実際にあなたが意図していることを確認してください。

+0

あなたの助けてくれてありがとう!私がすべてを終えるまで、私は通常、攻撃/セキュリティのものを含んでいません。そして、引用符は、私はもともとそれらを持っていましたが、このことを機能させるためにアイデアが不足していたので、私は魔法のように動作させることを望んでいる絶望的な試みでそれらを削除しました。 :P –

+0

ゲット・ゴーから攻撃からの攻撃を防ぐ方が良いでしょう。コードのほんの1行か2行なので、後で必要な箇所を覚えておくよりも、通常は1〜2行足りません。 –

関連する問題