2012-01-05 13 views
0

私は最後に仕事をしましたが(simple outbound link tracker - Why isn't this working?)、問題は空白と大文字の大文字となります。リンククリックトラッカー - その他の問題

今、私はこれを既存のデータベースに運のない状態で実装しようとしています。

はここ

<?php 
$id = $_GET['ID']; 

/** Increase the counter of the URL to which the user is going*/ 
mysql_query("UPDATE `table_name` SET countout = countout + 1 WHERE ID = '$id'") or die(mysql_error()); 

/** Retrieves URL */ 
$result = mysql_query("SELECT * FROM `table_name` WHERE ID = '$id'") or die(mysql_error()); 
$row = mysql_fetch_array($result); 

//redirects them to the link they clicked 
header("Location:" .$info['Url']); 
?> 

も重要な(mysqlのデータを接続し、テーブル名を難読化は含まない)のコードですが、ここではその中のデータをDBテーブル構造のスクリーンショットです:

http://cl.ly/323A1i3L0n181P3H0J2B/Image%202012-01-05%20at%201.39.41%20PM.png

私がしようとし

out.php?id=36 

I GE空白のページ

編集:@RunarJørgensenは修正を提供しました。今すぐSQLインジェクションから保護しようとしています

+0

まず、エラー報告をオンにします。次に、エラーメッセージの出力を質問に追加してください。ああ、あなたのコードは大量に** SQLインジェクション**にオープンしています。 – rdlowrey

+0

変数はPHPでは大文字と小文字が区別されるので、2行目は '$ _GET ['id'];' –

+0

'$ result'でダンプするとどうなりますか? –

答えて

1

あなたのスクリプトにはいくつかの誤りがあります。開発中にエラーを有効にして、スクリプトで何が動作していないかを確認する必要があります。

まず、変数は大文字と小文字を区別し、リンクがout.php?id=36の場合は、$_GET['id']で、$_GET['ID']ではなく、使用する必要があります。

2番目:表示されていないURLにリダイレクトしています。ヘッダータグを次のように編集する必要があります。header("Location: " . $row['Url']);

また、SQLインジェクションにも注意して、それらを処理する方法をお読みください。

+0

Doh。ありがとう、たくさんありがとう:) – elzi

+0

これはSQLインジェクションから保護するいくつかの方法ですが、SQLインジェクションから保護する方法はいくつかあります。あなたが読むことができるものがあります:http://stackoverflow.com/questions/60174/best-way-to-stop-sql-injection-in-php –

+0

優れています。助けてくれてありがとう。 – elzi

関連する問題