2016-08-20 9 views
0

こんにちはスタッカー、PHP、番号が必要ですが、それは

私は私のPHPコードの小さな問題を抱えている得ることはありません。ボールトゲームのクラックですが、終わっていません。しかし、問題があります。私は変数$needednumberを持っています。これは、変数$vaultselectionに保存されている選択に基づいて、ユーザが別の試行をしているかどうかを確認する必要があります。

$needednumber変数をエコーすると、結果が得られないので、彼が正しくチェックしていないと思います。私は0試行に自分自身を設定しましたが、それでもチェックを通過します。

私は間違っていますか?

vault.php

// Activate only when SET 
    if(isset($_POST['crack_vault'])){ 

    // Get our cracker user id. 
    $cracker = $user['id']; 
    $cracktries = $user['try_vault']; 

    // Get the Vault selection 
    $vaultselection = $_GET['vaultoptions']; 
    echo $vaultselection; 

    // Check how many tries the cracker needs 
    if($vaultselection = "mainvault"){ 
     $needednumber = "1"; 
    }else if($vaultselection == "bonusvault"){ 
     $needednumber = "2"; 
    } 

    // Check if the cracker may try a crack, or else Continue 
    if($cracktries < $needednumber){ 
     $error = "<div class='geenTeamlid' style='margin-bottom: 5px;'>Sorry, het is je <strong>niet</strong> gelukt iets uit de kluis te kraken!</div>"; 

    }else{ 

    // Get our beloved cracker his/her data. 
    $vault_type = htmlentities($_POST['vault_picker']); 
    $vaultnumber_one = htmlentities($_POST['vault_1']); 
    $vaultnumber_two = htmlentities($_POST['vault_2']); 
    $vaultnumber_three = htmlentities($_POST['vault_3']); 
    $vaultnumber_four = htmlentities($_POST['vault_4']); 

    // Get one string of four values. The final Vaultnumber. 
    $vaultnumbers = array($vaultnumber_one, $vaultnumber_two, $vaultnumber_three, $vaultnumber_fout); 
    $vaultnumber = implode("|", $vaultnumbers); 

    // Let us check this shit. Can we find a match? 
    if($vaultselection = "mainvault"){ 
      $check_codes = mysql_query("SELECT * FROM magical_gamevault WHERE (crackvalue = '".$vaultnumber."' AND vault = 'normal')"); 
    }else if($vaultselection = "bonusvault"){ 
      $check_codes = mysql_query("SELECT * FROM magical_gamevault WHERE (crackvalue = '".$vaultnumber."')"); 
    } 

    // Get a final number as result. YES! 
    $prizecount = mysql_num_rows($check_codes); 

    // Show the user the result! 
    if($prizecount < 1){ 
    $error = "<div class='geenTeamlid' style='margin-bottom: 5px;'>Jij hebt ".$cracktries." || Jij hebt nodig " .$needednumber. " || Jij koos " .$vaultselection. ".</div>"; 

    }else if($prizecount < 2){ 

    } 

    // End the if enough cracks check. 
    } 

    // End the set when someone posted a thing! 
    } 
+2

'$ vaultselection =" mainvault "'に '='がありませんか?編集:複数の '='あなたのすべての 'if'ステートメントで? – Marvin

+0

'$ _GET'は本当に間違っていました。 '= 'も追加しましたが、これで問題は解決されませんでした。 –

+1

ああ、うわー。あなたのSQLとHTMLの注入をお楽しみください。 – melpomene

答えて

3

としては、変数とその意志を設定している==がなければ、マービンによって

if($vaultselection == "mainvault"){ 
    $needednumber = "1"; 
} elseif($vaultselection == "bonusvault"){ 
    $needednumber = "2"; 
} else { 
    # missing? security issue as $_GET data is easily manipulated 
    # Setting this to 3 for could example would cause an SQL error 
    $vaultselection = "mainvault"; 
    $needednumber = "1"; 
} 

そして...

if($vaultselection == "mainvault"){ 
    $check_codes = mysql_query("SELECT * FROM magical_gamevault WHERE (crackvalue = '".$vaultnumber."' AND vault = 'normal')"); 
} elseif($vaultselection == "bonusvault") { 
    $check_codes = mysql_query("SELECT * FROM magical_gamevault WHERE (crackvalue = '".$vaultnumber."')"); 
} else { 
    die('unknown vault selection'); 
} 

を指摘常に真実だから最初の声明だけl使用する。

また、私が他のコメントで指摘したことは、ユーザーが送信したデータが無効であると常に期待しています。 else文を使用すると、それ以上のスクリプトの実行を妨げたり、データを修正してデフォルト設定を強制することができます。

+0

おかげさまで、よく見た後、私は '='が見つからないことを発見しました。セキュリティに関するヒントを含め、IF文を修正します。ありがとう! –

1

vaultoptionsが設定されているかどうかを判断する必要があります。使用可能な値を割り当ててください。また、一部のhteコードでは$ _GET、他の部分では$ _POSTを使用しています。それは全体を通してどちらか一方であるべきですか?

if(isset($_GET['vaultoptions'])){ 
    $vaultselection = $_GET['vaultoptions'];} 
else{ $vaultselection = "Not Selected";} 
echo $vaultselection; 

あなたの比較では、 "=="という代入 "=="演算子を使う必要があります。

if($vaultselection == "mainvault"){ 
    $needednumber = "1"; 
}else if($vaultselection == "bonusvault"){ 
    $needednumber = "2"; 
} 
関連する問題