【问题标题】:Pass variable from image to next page将变量从图像传递到下一页
【发布时间】:2009-12-03 05:07:28
【问题描述】:

嘿,我使用 imagecreate() 开始创建动态图像,并且生成了随机值,我想将该随机数传递给一个变量,并在我使用图像源的页面内使用该变量。

图像在 random.php 上,如果重要的话,我在 page index.php 上使用<img src="random.php" />,我想从 random.php(图像)传递到 index.php。我已经尝试过会话和 cookie,但是当我刷新时,它总是比图像生成的内容落后 1 步...

我使用 for 循环来回显随机数,我需要将这些数字传递给变量。基本上,我如何实时获取图像之外的数字,而不是退后一步。

【问题讨论】:

  • 还需要更多解释您想要完成的任务。

标签: php image text variables


【解决方案1】:

使用临时会话变量怎么样?

在你的第一页,

<?php
    session_start();
    $_SESSION['mykey'] = 'myrandomval';
    session_write_close(); // Helpful if you're using a header redirect
?>

在第二页

<?php

    session_start();
    $value = $_SESSION['mykey'];

?>

【讨论】:

  • 我同意这一点——唯一的方法是在 index.php 加载中设置随机数据,而不是在 random.php 加载中。您可以将其设置为会话变量,并让 random.php 使用该变量。 random.php 基本上变成了 image-generator.php,因为随机逻辑现在应该在 index.php 中。唯一的其他解决方案是在生成图像后使用 ajax 来获取随机值,但这听起来太多了。
【解决方案2】:

您遇到的问题是请求了index.php,然后浏览器意识到需要random.php,所以-是的,random.php 将是 index.php 之后的一个步骤...

如果您切换“随机创建”逻辑,(让索引创建存储在会话中的密钥,然后可以从 random.php 中读取)它可能会解决您的问题。

【讨论】:

  • 我知道你在说什么,但在这种情况下这行不通。我使用了一个 for 语句,我尝试了一些类似于你所做的事情,最终得到了相同的结果,我在显示图像的页面上进行了随机操作。还有其他想法吗?
【解决方案3】:

您可以在两个脚本上将随机数生成器种子设置为相同的值,而不是将变量从页面传递到图像。这是一个完整的示例:

<?php

function randomcolor()
{
    srand( $_SERVER['REQUEST_TIME'] );
    $colors = array('red', 'green', 'blue', 'black', 'orange');
    return $colors[ array_rand($colors) ];
}

$color = randomcolor();

if(isset( $_GET['image'] ))
{
    header('Content-type: image/png');
    $im = imagecreate(75, 50);
    imagecolorallocate($im, 0xee, 0xee, 0xee);
    $black = imagecolorallocate($im, 0, 0, 0);
    imagestring($im, 2, 10, 10, $color, $black);
    imagepng($im);
    exit;
}

?>

<p>color: <?php echo $color; ?></p>
<img src="test5.php?image=1" />

这是使用REQUEST_TIME 播种的两个单独请求,这意味着array_rand 将返回相同的值。

【讨论】:

    猜你喜欢
    • 2013-09-14
    • 2010-10-26
    • 1970-01-01
    • 1970-01-01
    • 2012-05-16
    • 2023-03-30
    • 2021-06-28
    • 2015-12-02
    相关资源
    最近更新 更多