2012-09-04 35 views
1

我使用content-type:image/jpeg創建了一個頁面「student_picture.php」。有問題,當我想在同一頁面中添加其他文本..如何正確使用content-type:image/jpeg?

IM這裏是我的代碼示例:

<?php 
session_start(); 

if(!isset($_SESSION["StudentNo"])){ 
    header("location:login.php"); 
} 

$StudentNo = $_SESSION['StudentNo']; 

require("includes/connection.php"); 

$sql = "SELECT StudentPicture from dbo.Students where StudentNo = '$StudentNo'"; 
$stmt = sqlsrv_query($conn, $sql); 

if($stmt === false) { 
    die(print_r(sqlsrv_errors(), true)); 
} 

while($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) { 
    $img = $row['StudentPicture']; 

    if ($img == null) { 
     echo "<img src='img/default_pic.gif'>"; 
    } else { 
     $img = trim($img); 
     header('Content-Type: image/jpeg'); 
     echo $img; 
    } 

    echo $StudentNo; 
} 
?> 

的圖像顯示成功,但回聲$ StudentNo沒有顯示..任何人都可以幫我解決我的問題嗎?提前致謝。

+0

請參閱相關的問題http://stackoverflow.com/questions/2428004/how-can-i-use-multiple-php-header-content-類型在同一頁上,這是可能的 –

回答

0

您必須exit您的腳本,因爲header被髮送到客戶端瀏覽器。如果$_SESSION["StudentNo"]不存在,腳本將處理並將嘗試輸出您的圖像。

<?php 
    session_start(); 
    if(!isset($_SESSION["StudentNo"])){ 
     header("location:login.php"); 
     die(); 
    } 

而且這不是一個正確的方式來輸出圖像,echo "<img src='img/default_pic.gif'>";header('Content-Type: image/jpeg');也不行,要麼你回到沒有這個頭,或者你閱讀的圖像:

if ($img == null){ 
    $img = 'img/default_pic.gif'; 
} else { 
    $img = trim($img); 
} 

header('Content-Type: image/jpeg'); 
readfile($img); 

,或者你失去了頭標籤

if ($img == null){ 
    $img = "<img src='img/default_pic.gif'>"; 
} else { 
    $img = "<img src='".trim($img)."'>"; 
} 
echo $img; 

所以,你的腳本可以是:

<?php 
    session_start(); 
    if(!isset($_SESSION["StudentNo"])){ 
     header("location:login.php"); 
     die(); 
    } 
    $StudentNo = $_SESSION['StudentNo']; 

    require("includes/connection.php"); 

    $sql = "SELECT StudentPicture from dbo.Students where StudentNo = '$StudentNo'"; 
    $stmt = sqlsrv_query($conn, $sql); 
    if($stmt === false) { 
     die(print_r(sqlsrv_errors(), true)); 
    } 

    while($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) { 
     $img = $row['StudentPicture']; 
     if ($img == null){ 
      $img = "<img src='img/default_pic.gif'>"; 
     } else { 
      $img = "<img src='".trim($img)."'>"; 
     } 
     echo $img; 
     echo $StudentNo; 
    } 
?> 

我不知道你的數據庫連接裏面的功能,但我認爲你應該使用類似$row = sqlsrv_fetch_row($stmt, SQLSRV_FETCH_ASSOC);並沒有這種while

+0

謝謝你的建議。我會嘗試你所說的。感謝很多 – user1645213

+0

我不能輸出圖像沒有內容類型:image/jpeg ..我只會得到沒有它的原始數據.. 我也有你的代碼與readfile($ img)的錯誤; – user1645213

+0

我清楚地解釋了你應該如何輸出圖像,'readfile'必須有一個有效的圖像路徑 –

0

當它在數據庫中找到您的輸出圖像,你要麼需要通過

<img src="anotherscript.php"> 

包括動態IMG或生成使用內置圖像庫中並存儲在該數據庫文件名,而不是保存原始數據的一個jpg文件

1

我認爲在使用,image/jpeg或我知道的任何其他類型的圖像格式時,您不能顯示文字。文本只能用text/?或其他例外(如application/pdf)顯示。

如果你不知道如何在單獨的頁面上顯示圖像,同時使用PHP文件,只需使用:

<img src="path/to/yourphpfile.php" /> 

就像任何其他的圖像。

希望有幫助。

+0

是的,我認爲是這樣。我在使用content-type:image/jpeg時無法添加文本。我想我需要調用顯示來自另一個頁面的圖像的頁面。問題是我不知道該怎麼做:( – user1645213

+0

@ user1645213我更新了我的答案,看一看 – think123

3

您可能需要使用下面的代碼:

<?php 

$image = 'http://www.example.com/image.jpg'; 

$info = getimagesize($image); 

header('Content-Type: '.$info['mime']); 

echo file_get_contents($image); 

exit; 

?>