2013-08-29 60 views
1

此的代碼,加載好而不在頁面頂部添加功能添加任何功能不允許頁面加載

<?php 


    if (!logged_in()) { 
    header('Location: index.php'); 
    exit(); 
    } 


    ?> 

    <h3>Upload image</h3> 

    <?php 

    if (isset($_FILES['image'], $_POST['image_n'], $_POST['image_description'])) { 
    $image_name = $_FILES['image']['name']; 
    $bytes = $_FILES['image']['size']; 
    $image_temp = $_FILES['image']['tmp_name']; 
    $image_n = $_POST['image_n']; 
    $image_description = $_POST['image_description']; 

    $allowed_ext = array('jpg', 'jpeg', 'png', 'gif', 'rar', 'pdf'); 
    //$image_ext = strtolower(end(explode('.', $image_name))); 

    $image_ext = pathinfo($image_name, PATHINFO_EXTENSION); 

    $album_id = $_SESSION['varname']; 

    $errors = array(); 

    if (empty($image_name) || empty($album_id) || empty($image_n) ||  empty($image_description)) { 

     $errors[] = 'Something is missing'; 
    } else { 

    if (strlen($album_name) > 55 || strlen($album_description) > 255) { 
      $errors[] = 'One or more fields contains too many characters'; 
     } 

    if (in_array($image_ext, $allowed_ext) === false) { 
     $errors[] = 'File type not allowed'; 

    } 

    //if ($image_size > 2097152) { 
    // $errors[] = 'Maximum file size is 2mb'; 
    //} 

    if (album_check($album_id) === false) { 
     $errors[] = 'Couldn\'t upload to that album'; 
    } 

    } 

    if (!empty($errors)) { 
     foreach ($errors as $error) { 
      echo $error, '<br />'; 
     } 

    } else { 
     $byte = formatSizeUnits($bytes); 
     upload_image($image_temp, $image_ext, $album_id, $image_n, $image_description, $byte); 
     header('Location: view_album.php?album_id='.$album_id); 
     exit(); 
    } 
    } 


    ?> 

    <form action="" method="post" enctype="multipart/form-data"> 
    <div class="choose"> 
     <p>Choose a file:<br /><input type="file" name="image" /></p> 
     </div> 
      <div class="des"> 
      <p>Name*:<br /><input type="text" name="image_n" maxlength="55"/> </p> 
      <p>Description*:<br /><textarea name="image_description" rows="6" cols="35" maxlength="255"></textarea></p> 


     <p><input type="submit" value="Upload" /></p> 
     </div> 
    </form> 
<div class="foot"> 
<?php 

//include 'template/footer.php';  
?> 
</div> 

,但是當我在頂部後添加這樣的函數PHP如果!登錄..之前的頁面的它不起作用

function formatSizeUnits($bytes) 
    { 
     if ($bytes >= 1073741824) 
     { 
      $bytes = number_format($bytes/1073741824, 2) . ' GB'; 
     } 
     elseif ($bytes >= 1048576) 
     { 
      $bytes = number_format($bytes/1048576, 2) . ' MB'; 
     } 
     elseif ($bytes >= 1024) 
     { 
      $bytes = number_format($bytes/1024, 2) . ' KB'; 
     } 
     elseif ($bytes > 1) 
     { 
      $bytes = $bytes . ' bytes'; 
     } 
     elseif ($bytes == 1) 
     { 
      $bytes = $bytes . ' byte'; 
     } 
     else 
     { 
      $bytes = '0 bytes'; 
     } 

     return $bytes; 
    } 

任何想法是什麼問題,如何解決?

+4

在代碼開始處將'error_reporting'設置爲'E_ALL'。 – Dave

+1

服務器上的錯誤日誌說什麼? – 2013-08-29 20:08:27

+0

你的標題在哪裏? 等 – Tatarin

回答

3

它不工作的原因是因爲在致電header()之前您不能有任何輸出。你不能這樣做的原因是因爲PHP會拋出頭文件已經發送的錯誤。

if (!logged_in()) { 
    header('Location: index.php'); 
    exit(); 
} 

你不能有這個header()語句之前任何輸出,所以把你的新代碼後,來避免任何問題。另外,請確保您在打開php標記之前沒有任何HTML。

我還建議刪除開放PHP標記和第一個if語句之間的空行。

+2

在此之前,您不能放置任何*輸出*,但您可以放置​​儘可能多的代碼(只要它不打印/回顯任何輸出)。這有點微妙,因爲'<?php'標籤之外的任何內容(例如HTML代碼)也會被輸出。也許這就是你的意思。 – Dave

+0

天才:D ..... – user2687618

+0

謝謝戴夫,你是對的。 上帝保佑:) –