2012-02-21 48 views
0

爲什麼地球上不會這項工作他們是沒有空格沒有產出,但尚未我把重定向只是configuartion .PHP前剛剛對我的數據庫連接是什麼賦予了頭位置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注入攻擊是可以接受的。 – 2012-02-21 21:20:24

+0

'configuration.php'的內容是什麼? – 2012-02-21 21:24:29

+0

還要注意(據我所知)在最後的php標籤'?>'COUNTS作爲輸出之後的空格。所以當檢查'configuration.php'時也檢查。 – horatio 2012-02-21 22:51:19

回答

2

機會有configuration.php有輸出。 (請記住,要求/包括在該時間點輸出任何內容,因此當時也會輸出任何空格或字符)。

出於好奇,如果你做到以下幾點它的工作原理:

<?php 
    ob_start(); 
    require('configuration.php'); 

    // your code with header(...); 

    ob_end_flush(); 

如果它以代替ob_start/ob_end_flush電話工程,configuration.php是輸出的東西。然而,需要注意以下幾點:

  • 從不(通過$_GET/$_POST/$_SESSION)直接發送數據從客戶端進來的SQL。即使您可能正在設置會話數據,具體取決於它的來源(例如Cookie),您可以很容易地在數據庫中查找數據。
  • Location應該是一個完全合格的路徑(http://mydomain.com/myfile.php不僅僅是myfile.php
1

如果$行[「使用」]爲0或1。若它不存在於所有的代碼只考慮。你可以var_dump $ row來看看你得到了什麼?

相關問題