• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Cannot modify header information

Sasch

New member
Hallo,

ich würde gerne in eine Facebook App den die Funktion Imagecreate benutzen.

Hier mal mein Code

HTML:
<?php

require 'src/facebook.php';

$facebook = new Facebook(array(
  'appId'  => '42606515xxxx',
  'secret' => 'a286a1b4a1376c670xxxxx',));

// Get User ID
$user = $facebook->getUser();

// We may or may not have this data based on whether the user is logged in.
//
// If we have a $user id here, it means we know the user is logged into
// Facebook, but we don't know if the access token is valid. An access
// token is invalid if the user logged out of Facebook.

if ($user) {
  try {
    // Proceed knowing you have a logged in user who's authenticated.
    $user_profile = $facebook->api('/me');
    $friends = $facebook->api('/me/friends');
    
  } catch (FacebookApiException $e) {
    error_log($e);
    $user = null;
  }
}

// Login or logout url will be needed depending on current user state.
if ($user) {
  $logoutUrl = $facebook->getLogoutUrl();
} else {
  $statusUrl = $facebook->getLoginStatusUrl();
  $loginUrl = $facebook->getLoginUrl();
}

// This call will always work since we are fetching public data.
$naitik = $facebook->api('/naitik');

?>
<!doctype html>
<html xmlns:fb="http://www.facebook.com/2008/fbml">
  <head>
    <title>php-sdk</title>
    

  </head>
  <body>
    <h1>php-sdk</h1>

    <?php if ($user): ?>
      <a href="<?php echo $logoutUrl; ?>">Logout</a>
    <?php else: ?>
      <div>
        Check the login status using OAuth 2.0 handled by the PHP SDK:
        <a href="<?php echo $statusUrl; ?>">Check the login status</a>
      </div>
      <div>
        Login using OAuth 2.0 handled by the PHP SDK:
        <a href="<?php echo $loginUrl; ?>">Login with Facebook</a>
      </div>
    <?php endif ?>

    <h3>PHP Session</h3>
    <pre><?php print_r($_SESSION); ?></pre>

    <?php if ($user): ?>
     

<?php

// Header setzten
header('Content-type: image/jpeg');
 
// Bilder laden
$imgsrc = imagecreatefrompng('weihnachttest.png');
$imgzeichen = imagecreatefromjpeg('bild1.jpg');
$imgzeichen1 = imagecreatefrompng('weihnachttest.png');
 
// Bild Infos
$width = imagesx($imgsrc);
$height = imagesy($imgsrc);
 
// Bilder erzeugen
$img = imagecreatetruecolor($width, $height);
 
// Bild einfügen
imagecopy($img, $imgsrc, 0, 0, 0, 0, $width, $height);
 
// Wasserzeichen einfügen
imagecopy($img, $imgzeichen, 7, 7, 0, 0, 50, 50);
 
imagecopy($img, $imgzeichen1, 0, 0, 0, 0, $width, $height);
// Bild anzeigen
imagejpeg($img);
 
// Speicher freigeben
imagedestroy($img);
?>



<br>

    <?php else: ?>
      <strong><em>You are not Connected.</em></strong>
    <?php endif ?>
  </body>
</html>


um das Bild mit Imagecreate zu erzeugen muss ich einen Header setzen

Code:
// Header setzten
header('Content-type: image/jpeg');

Dieser wird aber schon in Zeile 52 aufgerufen.
Warning: Cannot modify header information - headers already sent by (output started at /users/prozent/www/index9.php:52)


Wie kann ich das in meinem Code bewerkstelligen?

Besten Dank und schönes Wochenende
 
Nochmal gegoogelt und alles gefunden.

Bilder generieren
Bild speichern
Bild per img tag ausgeben.

Trotzdem Danke :D
 
@dertypdernixkan: es kann in gewissen Situationen schon Sinn ergeben, die header()-Angaben später im Programmfluss zu setzten - wenn man z.B. mal einen Header in Abhängigkeit von einer gewissen Logik ändern will. ABER du hast natürlich Recht, dass die Header vor allem Anderen gesendet werden müssen und deswegen vor den header()-Angaben weder echos noch andere Dinge stehen dürfen, die eine Ausgabe generieren.

@Sasch: du hättest theoretisch auch mit Daten-URLs die Bilder direkt ins HTML einbinden können - ist aber nicht wirklich elegant und effektiv. Dein Weg ist sauberer... wobei er natürlich ev. den Serverspeicherplatz zumüllt; je nachdem, wie du's genau gemacht hast.
 
Zurück
Oben