【问题标题】:Storing a Specific Generated Random number as a Variable (PHP)将特定生成的随机数存储为变量 (PHP)
【发布时间】:2019-06-04 15:37:51
【问题描述】:

我正在尝试使用随机数来存储上传图像的图像名称,效果很好。现在,我必须在另一个函数中使用该数字,但在另一个函数中使用时它会改变。

$rand = rand() . '.png';  

if(isset($_POST["image"])){
    $data = $_POST["image"];
    $image_array_1 = explode(";", $data);
    $image_array_2 = explode(",", $image_array_1[1]);
    $data = base64_decode($image_array_2[1]);
    file_put_contents( $rand, $data);
    echo '<img src="includes/'.$rand.'" class="img-thumbnail" />';
}

这是为了在上传之前显示裁剪后的图像并为其命名。现在上传:

if(isset($_POST["submit"])){
    $pic = $rand; 
    $sql = "INSERT INTO users (pic) VALUES ('$pic');
}

我希望在第二个函数中使用 $rand 时,生成的数字是相同的。

【问题讨论】:

  • 他们点击了提交并进入了新页面?那个全局不存在,也许你想要会话? php.net/manual/en/reserved.variables.session.php
  • 请向我们展示这些方法如何相互关联的流程。他们怎么称呼?
  • 流程就是你看到的样子。这两个函数之间没有任何内容。

标签: php random


【解决方案1】:

首先,这个

$sql = "INSERT INTO users (pic) VALUES ('$pic');

应该是这个(结束双引号)

$sql = "INSERT INTO users (pic) VALUES ('$pic')";

这应该适合你:

$image_name = prepareImage();

if($image_name !== false) {
    $sql = createSql($image_name);
} else {
    $sql = false;
}

function prepareImage() {
    if (isset($_POST["image"])) {
        $rand = rand() . '.png';
        $data = $_POST["image"];
        $image_array_1 = explode(";", $data);
        $image_array_2 = explode(",", $image_array_1[1]);
        $data = base64_decode($image_array_2[1]);
        file_put_contents($rand, $data);
        echo '<img src="includes/' . $rand . '" class="img-thumbnail" />';
        return $rand;
    } else {
        return false;
    }
}

function createSql($image_name) {
    if (isset($_POST["submit"])) {
        $pic = $image_name;
        return "INSERT INTO users (pic) VALUES ('$pic')";
    } else {
        return false;
    }
}

prepareImage 是您的第一个函数,如果未发布图像并因此无法设置名称,则会出现错误捕获。它返回 false 或图像名称。

第二个函数使用图像名称来创建您的 sql 行,并在成功时返回 sql 或在失败时返回 false。我将 false 设置为 return,以便您稍后检查。

顶部的代码首先尝试显示/获取您的图像名称。下一位会对此进行检查,并在可能的情况下生成您的 SQL。

【讨论】:

  • Zachary,您的代码很棒,只是插入查询不起作用。我也试过直接提升你的代码,但它返回了一个没有错误的空白页面。
  • 是的,它是为内部检查而构建的,所以它不会回显任何内容,替换第一个“return false;”与“回声'图像未设置';”第二个是“echo 'submit not set';”
  • 如果它不起作用,它将是这两个没有传递到服务器之一
  • 它与“提交未设置”相呼应
  • 这意味着 $_POST["submit"] 不存在,您的表单中是否有名称/id 设置为“提交”的输入?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-21
  • 1970-01-01
  • 2019-02-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多