2012-01-21 9 views
-1

誰かがなぜこれが起こっているのか説明できますか?ここに完全なコードがあります。PHPとMySQL T_CONSTANT_ENCAPSED_STRINGエラー

<?php 
$country = "UNKNOWN"; 
if ($_REQUEST['id'] == "register") { 
    $name = $_POST['Name']; 
    if ($_POST['Email'] == $_POST['emailrepeat']) { 
     $email = $_POST['Email']; 
    } 
    $username = $_POST['username']; 
    if ($_POST['password'] == $_POST['PasswordAgain']) { 
     $password = $_POST['password']; 
    } 
    $address = $_POST['Address']; 
    $county = $_POST['billingState']; 
    $city = $_POST['city']; 
    $zip = $_POST['Zip']; 
    $code = rand(11212,123243132); 
    mysql_connect("extraterrestrial.x10.mx","extrater","*******"); 
    mysql_select_db("extrater_keys"); 
    $moi = "VALUES ("$name","1","0","$password","$_SERVER['REMOTE_ADDR']","0","$country","0","$county","$country","$city","$email","$zip","$address","$code")"; 
    $query = "('INSERT INTO info (name, points, isvalidated, password, ip, banned, cc, paypal, state, country, city, email, fullname, zipcode, address, code)"; } 
    mail($email, "Le Prizes Confirmation E-Mail", "Thank you for registering with us! Your confirmation link is as follows. \n http://extraterrestrial.x10.mx/confirm.php?code=" + $code + " Happy Earning!"); 
header("Location: thanks.php"); 
?> 

これはGPTプロセススクリプトで、ユーザーを登録します。それは私によって作られています。

+0

Sのための完全なスクリプトQL注入。 – stryba

+0

ありがとう?どうすればそれを修正することができます、私はあなたが私のサイトの管理者にすることができますあなたがそれを安全にする手助けする! –

答えて

2
mail($email, "Le Prizes Confirmation E-Mail", "Thank you for registering with us! Your confirmation link is as follows. \n http://extraterrestrial.x10.mx/confirm.php?code=" . $code . " Happy Earning!"); 

これを最初に試してみてください。結合する代わりに$codeを追加してください。他のラインがエスケープされていない「内」だったので、文字列の各時間を終了したため

さらに

$moi = "VALUES ('$name','1','0','$password','" . $_SERVER['REMOTE_ADDR'] . "','0','$country','0','$county','$country','$city','$email','$zip','$address','$code')"; 

は、あなたが前に持っていたものよりも優れラインです。

また、SQLインジェクションを忘れないようにしましょう!あなたの入力をデータベースに挿入する前にサニタイズしてください。

+0

また、 '$ moi'も正しく定義されていません。これらの変数は実際には文字列に連結されません。 – Josh

+0

'$ moi'の何が問題なのですか –

+0

私の編集をご覧ください。 – Cyclone

0

$moiに割り当てるときは、(特に)引用符を使用しています。

+0

どうすれば修正できますか?どのような引用符を削除しますか? –

+0

実際にあなたのコードを読もうとしましたか? –

+0

スマートな口にする必要はありません.. –

1

このライン:

$moi = "VALUES ("$name","1","0","$password","$_SERVER['REMOTE_ADDR']","0","$country","0","$county","$country","$city","$email","$zip","$address","$code")"; 

がエラーを解析含まれています。サイクロンはあなたのMySQLサーバに送信する前に、あなたのデータをもサニタイズすべき言及したよう

$moi = "VALUES ('$name','1','0','$password','{$_SERVER['REMOTE_ADDR']}','0','$country','0','$county','$country','$city','$email','$zip','$address','$code')"; 

:で、それを変更します。

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

をmysql_real_escape_stringの使用と、あまりにも代わりのMySQL mysqliのを使用することを考慮可能性を取る:

http://es.php.net/manual/en/book.mysqli.php

あなたはエスケープ文字と単一引用符 'をエスケープする必要がありますので、サニタイズが義務付けられています$ name、$ password、$ _SERVER ['REMOTE_ADDR']、$ country、$ county、$ city、$ email、$ zip、$ address、$ code

関連する問題