הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   [PHP] עזרה בקשר ל GD (https://hosts.co.il/forums/showthread.php?t=29805)

Elad-A 29-08-06 10:34

[PHP] עזרה בקשר ל GD
 
שלום,

רציתי לדעת למה אי אפשר להדפיס כלום אחרי הפלט של התמונה?

זה הקוד:

ככה אני שולף:
PHP קוד:

require('gd.php');
session_start();
$x $image->gd();
echo 
"<img src=gd.php?$x>" ;
echo 
"{$_SESSION['icode']}"

וזה הדף gd.php :

PHP קוד:


session_start
();
$image = new SecurityImage;
class 
SecurityImage 
{

function 
gd()
{
global 
$image;
header ("Content-type: image/png");
$this->iName $filename 're.png';
$this->iCreate $im imagecreatefrompng($filename);
$this->iCreateCode $RandSec strtoupper(substr(md5(rand(1,999999)),0,6)); //Making the 6 Characters Security Code , using MD5 And Rand()
$_SESSION['icode'] = $RandSec;
$this->iColor $textcolor imagecolorallocate($im,0,0,0); //White
$this->iImgString imagestring($im6,10,4$RandSec,$textcolor);
$this->iGetCode imagepng($im);
}


תודה.

Unknown 29-08-06 11:17

כמה דברים:
קודם כל, באחד מן הקבצים תוריד את הSESSION START כי הGD כבר התחיל אותה
דבר שני, למה $X מקבל את הקוד של התמונה, ובסוף אתה מדפיס:
קוד:

gd.php?$x
תעשה בIMG רק את הGD ותבדוק

Elad-A 29-08-06 11:26

ניסיתי ככה:

gd.php:
PHP קוד:

<?php
session_start
();
function 
gd()
{
header ("Content-type: image/png");
$filename 're.png';
$im imagecreatefrompng($filename);
$RandSec strtoupper(substr(md5(rand(1,999999)),0,6)); //Making the 6 Characters Security Code , using MD5 And Rand()
$_SESSION['icode'] = $RandSec;
$textcolor imagecolorallocate($im,0,0,0); //White
imagestring($im6,10,4$RandSec,$textcolor);
imagepng($im);
}
?>

index.php:

PHP קוד:


require("gd.php");
echo 
"<IMG SRC=".gd()." name=secimg>";
echo 
"test"

את התמונה עצמה זה מציג אבל מה שאחרי זה לא מציג.

Unknown 29-08-06 11:31

תנסה להוציא את זה מהפונקציה
כי אתה צריך לקרוא לקובץ, לא לשלוח לIMG את המידע של התמונה

Elad-A 29-08-06 11:37

ככה זה אכן עובד אבל אני רוצה לקבל את המשתנה של $RandSec ואני לא יכול לעשות require
אני אמור לעשות שאם הקוד שהקלידו תואם למה ששמור בסיישן.

RS324 29-08-06 12:59

תוסיף ob_flush אחרי שקראת לפונקציה, מכיוון שהגדרת HEADER זה מה שהוא מראה

FLUSH מרענן אותו...

meshuga 29-08-06 13:13

אתה לא יכול להדפיס תמונה וHTML באותו דף..בגלל שכשאתה מוציא header של תמונה הדפדפן מזהה את זה כתמונה ולא כדף HTML.
אתה צריך להוציא את הפלט של התמונה למשל בדף image.php ובדף שאתה רוצה להדפיס HTML לעשות
HTML קוד:

src="image.php"

Elad-A 29-08-06 13:20

כן רשמתי כבר שניסיתי ככה

הדף gd.php:

PHP קוד:


<?php
session_start
(); 
header ("Content-type: image/png"); 
$filename 're.png'
$im imagecreatefrompng($filename); 
$RandSec strtoupper(substr(md5(rand(1,999999)),0,6)); //Making the 6 Characters Security Code , using MD5 And Rand() 
$_SESSION['icode'] = $RandSec
$textcolor imagecolorallocate($im,0,0,0); //White 
imagestring($im6,10,4$RandSec,$textcolor); 
imagepng($im); 
?>

ובאינדקס:

PHP קוד:


<?
echo "<IMG SRC="gd.php" name=secimg>"
echo 
"test";
?>

ככה זה עובד! אבל... אני צריך לעשות התאמה בין הסיישן שנשמר בדף gd.php לבין התמונה שאני מציג באינדקס.
אבל בשביל זה אני צריך לעשות require לדף GD.PHP ואם אני עושה את זה אז זה מציג רק את התמונה בלי מה שאמור להיות מתחת לזה.

הנה דוגמא פה:
http://elad.fire-serv.net/gd/elad.php
תראו את האי התאמה בין התמונה לסיישן.

meshuga 29-08-06 13:26

אבל הסשן נוצר בכל מקרה....אז מזה משנה?
בדף אימות של התמונה והקוד שהכניסו אתה מאמת את התוכן של הסשן לעומת מה שהכניסו.

עריכה:
מוזר שזה ככה, תנסה אחרי שאתה עובר דף לבדוק את זה..

Elad-A 29-08-06 13:28

אז זהו שאני לא יכול לבדוק. כי זה בטוח ירושם שהפרטים לא נכונים. למה? כי הסיישן והתמונה לא תואמים.


כל הזמנים הם GMT +2. הזמן כעת הוא 20:50.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ