View Full Version : [PHP] - help attributo REPLACE
RagingBull
12-03-2007, 16:23
a causa della stringa "include ("header.inc.php");" lo script che vedete di seguito mi restituisce questo errore:
Cannot modify header information - headers already sent by (output started at D:\Server\ragingbull_v2\header.inc.php:10) in D:\Server\ragingbull_v2\show.php on line 19
ho letto sul sito php.net che devo modificare l'istruzione "header ("Content-type: ".$type);" aggiungendogli l'attributo replace....ma sinceramente è la prima volta che utilizzo questa funzione e non ho capito come fare.
<?php
include ("config.inc.php");
include ("header.inc.php");
if (isset($_GET['id']))
{
$id = $_GET['id'];
$sql = "SELECT id,type,immagine FROM immagini WHERE id='$id'";
$result = @mysql_query($sql) or die(mysql_error ());
$row = @mysql_fetch_array($result);
$id_img = $row['id'];
$type = $row['type'];
$img = $row['immagine'];
if (!$id_img)
{
echo "Id sconosciuto";
}else{
header ("Content-type: ".$type);
echo $img;
}
}else{
echo "Impossibile soddisfare la richiesta.";
}
include ("footer.inc.php");
?>
ho letto sul sito php.net che devo modificare l'istruzione "header ("Content-type: ".$type);" aggiungendogli l'attributo replace....ma sinceramente è la prima volta che utilizzo questa funzione e non ho capito come fare.Facciamo una premessa: gli header vanno inviati prima di aver inviato qualunque byte del contenuto del documento.
È del tutto inutile specificare un replace a header() se hai già inviato al client anche solo 1 byte del documento.
Dal tuo script deduco che tu devi inviare al client una immagine memorizzata nella tabella. In questo caso non devi mandare in output alcun header/footer di pagina. Anche perché non avrebbe senso. La richiesta ti arriva molto probabilmente da un tag <img>, quindi è inutile inviare stringhe di errore o qualunque altra cosa. Avrebbe forse senso se fosse un link ad una immagine, allora se qualcosa fallisce almeno mostra "Impossibile soddisfare la richiesta.".
RagingBull
12-03-2007, 17:08
uhm...a questo punto mi sto impapokkiando più di prima :muro:
includere header e footer mi serve per visualizzare la struttura del sito attorno all'immagine ke preleva dal DB e ovviamente di tag <img> ce ne sono parekki nell'header
l'immagine la preleva cmq dal databasa ma invece del formato "grafico" mi restituisce una lunghissima stringa di caratteri
includere header e footer mi serve per visualizzare la struttura del sito attorno all'immagine ke preleva dal DB e ovviamente di tag <img> ce ne sono parekki nell'headerUna cosa è inviare il documento html e una cosa è inviare i dati binari della immagine. Sono 2 richieste diverse fatte dal client.
Il tuo script che invia i dati dell'immagine deve preoccuparsi solo di questo e basta. Il documento sarà già stato inviato a seguito di una precedente richiesta HTTP.
Non so se mi sono spiegato: tu hai pagina.php che invia il documento html generato. In un tag <img> avrai che magari punta a immagine.php. Bene, quest'ultimo script deve inviare solo i dati binari della immagine.
RagingBull
12-03-2007, 17:27
in conclusione mi posso scordare di visualizzare l'immagine nella struttura del sito...ok passo alla seconda opzione...apro il tutto in una popup
in conclusione mi posso scordare di visualizzare l'immagine nella struttura del sito...ok passo alla seconda opzione...apro il tutto in una popupNo .... forse non hai capito. Ecco l'esempio di un possibile scenario:
a) Il client (browser) fa una richiesta HTTP al server per richiedere la pagina http://www.miosito.com/pagina.php
b) Il server esegue lo script pagina.php, genera la pagina HTML e la invia al client.
c) Nella pagina c'è ad esempio:
....
<img src="immagine.php?id=1234">
....
d) Il client fa una nuova richiesta HTTP al server per ottenere l'immagine.
e) Il server esegue lo script immagine.php, che fa le seguenti cose:
- prende il parametro 'id' tramite $_GET
- apre il db, esegue la/e query necessaria/e
- imposta l'header Content-type a seconda del tipo di immagine
- invia i dati binari della immagine.
Ti è più chiaro adesso? Il contenuto della immagine non lo si manda insieme alla pagina html. Ma a seguito di una richiesta a sé stante.
RagingBull
13-03-2007, 20:03
vero!! funziona!!!
mi sono lasciato ingannare dal fatto ke non avendo un file immagine non potessi usare il tag <img> :doh:
sta volta ti ho fatto davvero penare per riuscre a farmi capire l'errore. :p
grazie per l'ennesima delucidazione...come sempre preparatissimo ;)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.