2013-03-03 45 views
1

我使用下面的代码:创建文本图片用PHP

<?php 
$im = ImageCreate(350, 70); 
$white = ImageColorAllocate($im, 0xFF,0xFF,0xFF); 
$fontColor = ImageColorAllocate($im, 0xF2,0x67,0x22); 
ImageTTFText ($im, 20, 0, 10, 40, $fontColor, '/home/squareli/public_html/cookingessence.com/fonts/TektonPro-BoldExt.otf', $text); 
Header('Content-Type: image/png'); 
ImagePNG($im); 
?> 

我想利用这个代码并保存在自己的PHP文件。我希望能够通过我网站上的其他页面访问此文件。我想为每个页面分配$ text不同的变量。这可能吗?

我目前使用的是能够通过其他页面访问PHP代码:

<img src="code-page-name.php"> 

我的问题是我无法找到一个方法来分配为$文本的变量。我能够做到这一点的唯一方法是将名称直接放入上面的代码中,或者加载特定的页面并在URL /code-page-name.php?text=Name%On%The%Page中添加变量

回答

0

你可以通过get发送文本。

code-page-name.php?text=blah 

比你可以访问它,以便

$_GET[text] 

你采的网址发送什么都可以通过$ _GET访问,你可以发送一个以上的变量。例如code-page-name.php?text=blah&color=red&color2=green

+0

我曾尝试过这种方法,但无法使其正常工作。没有文字只显示白色背景,所以变量没有经过。 – 2013-03-04 06:26:12

0

是的,使用会话。这将像captcha一样。您可以使用$ text作为变量,并将其作为图像一次写入。

#file1.php 
session_start(); 
$text = $_SESSION['text']; 
//draw the image here 

#file2.php 
session_start(); 
echo $_SESSION['text']; 
+0

会话不是一个好主意,因为它不可靠,并且可以在任何时候消失。如果你真的想使用会话,请将其保存在数据库中。我总是会有不愉快的经历。 – khuderm 2013-03-03 09:13:24

+0

这似乎不起作用。我收到以下错误: 警告:session_start()[function.session-start]:无法发送会话缓存限制器 - public_html/inc/index.inc中已发送的头文件(输出开始于public_html/template.php:17)第二行是.php。 第二行是:session_start(); – 2013-03-04 06:30:40

+0

添加在脚本的顶部ob_start();那么它将工作 – 2013-03-04 08:30:06

0

因为$_SESSION是不可靠的。但这是最好和最简单的解决方案。

代码页name.php

<?php 
session_start(); 
if(isset($_SESSION["text"])) { 
$text = $_SESSION["text"]; 
} 
else { 
$text = "Default Text"; 
} 
$im = ImageCreate(350, 70); 
$white = ImageColorAllocate($im, 0xFF,0xFF,0xFF); 
$fontColor = ImageColorAllocate($im, 0xF2,0x67,0x22); 
ImageTTFText ($im, 20, 0, 10, 40, $fontColor, '/home/squareli/public_html/cookingessence.com/fonts/TektonPro-BoldExt.otf', $text); 
Header('Content-Type: image/png'); 
ImagePNG($im); 
?> 


其它页面name.php

<?php 
session_start(); 
$_SESSION["text"] = "WhatEver"; 
?> 
<img src="code-page-name.php" /> 

记得把session_start()功能的HTML标签之前。