1 (edited by Donatas 2011-02-22 20:50:01)

Topic: headerio problema

Sveiki

bandau isvesti i ekrana stai toki reikaliuka

  $sk1 = rand(0, 9);
  $sk2 = rand(0, 9);
  $sk3 = $sk1+$sk2;
  
  $string = '  ' . $sk1 .' + '. $sk2 . ' =  ';

  $font  = 4;
  $width  = ImageFontWidth($font) * strlen($string);
  $center = ceil(ImageFontHeight($font)/2);
  $height = ImageFontHeight($font)*2;

  $im = @imagecreatetruecolor ($width,$height);

  $bgcolor = imagecolorallocate ($im, 255, 255, 255);

  $text_color = imagecolorallocate ($im, 0, 0, 0);

  imagestring ($im, $font, 0, $center,  $string, $text_color);

  imagejpeg ($im);
  imagedestroy($im);

Kad php paisytu paveiksliuka reikia isvesti headeri

<? header("Content-type: image/jpg"); ?>

Jeigu headery isvedu pries

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>

Gaunu visiskai tuscia ekrana, t.y. Nerodo nieko

o jei koda patalpinu po eilutes

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

svetaine rodo normalei bet ismeta uzrasa kad headerei jau issiusti.
ir vieto to kad sugeneruotu paveiksliuka gaunu tik

&#65533;&#65533;&#65533;&#65533;JFIF

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>

&#65533;&#65533;>CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), default ir t.t.

tai kada isiust man ta headeri reikia?

ai dar pries


yra php codas jungimosi prie duomenu bazes duomenys session_start keli ifai. bet kad ir pries ta php coda idedu i pirma eilute vistiek gaunu tusica ekrana...

2 (edited by qutwala 2011-02-23 00:11:31)

Re: headerio problema

header("Content-type: image/jpeg");
  $sk1 = rand(0, 9);
  $sk2 = rand(0, 9);
  $sk3 = $sk1+$sk2;
  $string = '  ' . $sk1 .' + '. $sk2 . ' =  ';
  $center = ceil(ImageFontHeight($font)/2);
$im = imagecreate(120, 100);
$background_color = imagecolorallocate($im, 0, 0, 0);
$text_color = imagecolorallocate($im, 255, 255, 255);
imagestring($im, $font, 20, $center,  $string, $text_color);
imagejpeg($im);
imagedestroy($im);

Klaida:

  $width  = ImageFontWidth($font) * strlen($string);
  $center = ceil(ImageFontHeight($font)/2);

Be to nematau prasmės daryti šiame kode tokių auto ilgių, dydžių. Pas tavęs šis bet kokiu atveju nekis, kadangi darai:

 $sk1 = rand(0, 9);
  $sk2 = rand(0, 9);

T.y.:
1) simbolių skaičius nekinta.
2) font'o dydis visuomet yra pastovus.

3 (edited by Donatas 2011-02-23 01:19:38)

Re: headerio problema

sis skriptas buvo pritaikytas generuoti email adresa i paveiksliuka. as tik ji greituoju budu persidariau i mazdauk to ko reikia man. Paveiksliuko ilgis nesikeis galiu ir neskaiciuot pagal ideja.

Visa skripta patalpinus naujame dokumente

ir atidarius paprastai faila per adresa daleiskim www.kazkur.lt/image.php

skriptas suveikia kuo puikiausiai

<?php
  header("Content-type: image/jpg");

  $sk1 = rand(0, 9);
  $sk2 = rand(0, 9);
  $sk3 = $sk1+$sk2;
  
  $string = '  ' . $sk1 .' + '. $sk2 . ' =  ';

  $font  = 4;
  $width  = ImageFontWidth($font) * strlen($string);
  $center = ceil(ImageFontHeight($font)/2);
  $height = ImageFontHeight($font)*2;

  $im = @imagecreatetruecolor ($width,$height);

  $background_color = imagecolorallocate ($im, 255, 255, 255);

  $text_color = imagecolorallocate ($im, 0, 0, 0);

  imagestring ($im, $font, 0, $center,  $string, $text_color);

  imagejpeg ($im);
  imagedestroy($im);
  

  ?>

bet jei tik sita failiuka darau

<?
include(./iskazkur/image.php);
?>

prasideda anksciau mineta problema su headeriu issiuntimu ir nesugalvoju kurioje vietoje patalpinti header("Content-type: image/jpg"); kad sugeneruotu paveiksliuka.

4 (edited by qutwala 2011-02-23 01:37:48)

Re: headerio problema

Kaip pastebėjai GD turinys yra siunčiamas header'iu, o tai reiškia jog šis turinys privalo būti išvedamas prieš betkokį vaizdinį, grafinį turinį.
Pavyzdžiui jeigu reikia kažką išvesti tai eiliškumas:
sessions, header'iai, ir include, kiti duomenys. Nors include galima kišti į antrą poziciją jeigu includiname faile nėra jokio išvedamo turinio į ekraną. Na, bent jau man tokiu eiliškumu viskas veikia. :)

Re: headerio problema

Paveiksliukai gi įdedami ne tiesiai į html'ą... Tam yra img tagas, kuriame nurodai adresą į paveiksliuką.

MongoDB Certified Developer
MongoDB Certified DBA
Zend Certified Engineer

Re: headerio problema

Kas teisybė tas ne melas.
Beja, Donatai, nepamiršk, kad tekstą turi į $_SESSION dėti jeigu nori jį išgauti.
O kaip žygis ir užsiminė tai patį paveiksliuką dedi į img tag'ą. T.y. susikuri failą pvz: img.php i jį įdeti paveiksliuko kodą, o atvaizduojant, kaip šaltinį tag'e nurodai img.php

Re: headerio problema

dekui padejo :) padarius image tag`e suveike kuo puikiausiai

8 (edited by Donatas 2011-02-26 00:17:16)

Re: headerio problema

header("Content-type: image/jpg");
$sk1 = rand(0, 9);
  $sk2 = rand(0, 9);
  $sk3 = $sk1+$sk2;
  $_SESSION['sk3'] = $sk3;
  
  $string = '  ' . $sk1 .' + '. $sk2 . ' = ?  ';

  $font  = 4;
  $width  = ImageFontWidth($font) * strlen($string);
  $center = ceil(ImageFontHeight($font)/2);
  $height = ImageFontHeight($font)*2;

  $im = @imagecreatetruecolor ($width,$height);

  $bgcolor = imagecolorallocate ($im, 255, 255, 255);

  $text_color = imagecolorallocate ($im, 0, 0, 0);

  imagestring ($im, $font, 0, $center,  $string, $text_color);

  imagejpeg ($im);
  imagedestroy($im);

ir dar papildysiu klausima :)
iskilo problema
visa sita informacija ideta i image.php faila atvaizduoju per img taga

<img src=./files/image.php />

bet kazkodel kintamojo $_SESSION[sk3] neuzregisruoja padarius echo $_SESSION[sk3] jis tiesiog nieko neatvaizduoja.
bandant i atvaizduojama paveiksliuka ikisti duomenis is isores daleiskim

failas 1.php

$_SESSION[sk1] = rand(0, 9);
$_SESSION[sk2] = rand(0, 9);
$_SESSION[sk3] = $_SESSION[sk1]+$_SESSION[sk2];

]image.php

header("Content-type: image/jpg");
$string = '  ' . $_SESSION[sk1] .' + '. $_SESSION[sk2] . ' = ?  ';

ir t.t.

atvaizduojant paveiksliuka isveda tik '  +  =  ?  ' isisores kintamuju ir nepasiima.
tai kaip man isgauti kintamaji $sk3? kad galeciau veliau daryt tikrinima...

Re: headerio problema

Donatas wrote:

bet kazkodel kintamojo $_SESSION[sk3] neuzregisruoja padarius echo $_SESSION[sk3] jis tiesiog nieko neatvaizduoja.

Jei $_SESSION neatprintina tai arba klaida kažkur nubyrėjus arba session_start() nepanaudojai

No warning? No action? I hate this situation!

Re: headerio problema

sesion start panaudojau index.php faile pacioje pirmoje eiluteje.

netgi pabandymui sukuriau atskira faila

file.php

<?php
session_start();

echo '<img src=./image.php />';

echo "<br> testas".$_SESSION[sk3];

?>

image.php

<?php
 
 header("Content-type: image/jpg");
 $sk1 = rand(1,9);
 $sk2 = rand(1,9);
 $sk3 = $sk1+$sk2;
 $_SESSION[sk3] = $sk3;
 $string = '  ' . $sk1 .' + '. $sk2 . ' =  ? ';

  $font  = 4;
  $width  = ImageFontWidth($font) * strlen($string);
  $center = ceil(ImageFontHeight($font)/2);
  $height = ImageFontHeight($font)*2;
  $im = @imagecreatetruecolor ($width,$height);

  $background_color = imagecolorallocate ($im, 255, 255, 255);

  $text_color = imagecolorallocate ($im, 255, 255, 255);
  
  imagestring ($im, $font, 0, $center,  $string, $text_color);

  imagejpeg ($im);
  imagedestroy($im);
  

?>

ir vistiek $_SESSION[sk3] neatvaizduoja

Re: headerio problema

$_SESSION[sk1] = rand(0, 9);
$_SESSION[sk2] = rand(0, 9);
$_SESSION[sk3] = $_SESSION[sk1]+$_SESSION[sk2];

Ne nuo to galo pradedi..
Prieš bet ką pradėdamas konstruoti būk malonus ir atsiversk manual'ą ir įsijunk error reporting'ą.
Ką čia šitie reiškia:

sk1 ???
sk2 ???
sk3 ???

Konstantos? Iš kur?

Re: headerio problema

kokios konstantos?
galiu sudet kabutes esmes nepakeis

is to pavyzdzio uzregistruotus kintamuosius atvaizduoja per echo.

13 (edited by Donatas 2011-02-26 10:52:16)

Re: headerio problema

i image.php failiuka idedu $session_start

bandau per file.php faila ziureti kas gaunasi :)
o ten vel chiudas
pradeda atvaizduoti $_SESSION[sk3] bet paveluotai.

pvz paleidau file.php faila gavau reiksmes 4 + 5 = ?
$_SESSION[sk3] per echo nerodo
tada refreshinu langa gaunu reiksmes 9 + 4 = ?
ir isveda $_SESSION[sk3] reiksme 9 ankstesne :)

14

Re: headerio problema

visada $_SESSION POST GET ir visi kiti masyvai rašomi tarp kabčių -  $_SESION['sk3']

Kiek maigyklių sudėvėjai ?