php
  • mysql
  • 2012-02-21 4 views 0 likes 
    0

    は文句を言わない、この作品には、スペース・ノー出力を自分ではありませんが、まだ私はちょうどヘッダの位置PHPなぜ地球上の理由がない空白

    <?php 
        require('configuration.php'); 
        $voucher = $_SESSION['voucher'] ; 
        $result = mysql_query("SELECT used FROM codes where code='".$voucher."'"); 
        $row =mysql_fetch_row($result); 
        if ($row['used'] == "1") { 
         header('Location: invalid.php'); 
         exit; 
        } 
        if ($row['used'] == "0") { 
         header('Location: valid.php'); 
         exit; 
        } 
    ?> 
    
    +0

    **警告**あなたのコードはSQLインジェクション攻撃に惑わされる可能性があります。 –

    +0

    'configuration.php'の内容は何ですか? –

    +0

    最終的なphpタグ '?>' COUNTSを出力として(私が知る限り)空白スペースにも注意してください。ですから、 'configuration.php'をチェックすると、それもチェックしてください。 – horatio

    答えて

    2

    チャンスを与えるもの、私のDB接続を保持しているconfiguartionの.phpの前だけでリダイレクト入れますconfiguration.phpに何かが出力されています。 (その時点で何も出力する必要があることを覚えておいてください。そのため、その時点で空白または文字も出力されます)。好奇心のうち

    次の操作を行う場合、それは動作しません:

    <?php 
        ob_start(); 
        require('configuration.php'); 
    
        // your code with header(...); 
    
        ob_end_flush(); 
    

    をそれはconfiguration.phpが何かを出力している場所でob_start/ob_end_flush呼び出し、で動作する場合。しかし、注意すべきいくつかのもの:

    • は、SQLに直接($_GET/$_POST/$_SESSION経由で)クライアントから入ってくるデータを送信することはありません。セッションデータを設定している場合でも、どこから来るかによって(クッキーなど)、データベースを掘り起こすのは非常に簡単です。
    • Locationは完全修飾パスでなければなりません(http://mydomain.com/myfile.phpだけではなくmyfile.php
    1

    $行が[「使用」]場合はあなたのコードだけ考えて、それは全く存在しない場合は0または1ではありません。 $ rowをvar_dumpして何を得ることができますか?

    関連する問題