当我在img标签中使用#this时,随机php会话会导致不同的值,比如<;img src=“#">;


Random php session causes different value when i use # this in img tag like <img src="#">

在我的项目中,我有一个文本编辑器,并有一个图像上传规范,它将根据$_SESSION['imagesID']和$_SESSION['userID']上传图片,完成后,它将在我的编辑器iframe中显示该图片。

注意:对于上传图片,我使用了弹出窗口和另一个php文件,如uploader.hp.

在我尝试为文本编辑器添加预览部分之前,每个ting都运行良好。然后我一个接一个地检查我的预览代码,我发现了问题。它只是#,在img标签src="#"中。它导致我的uploader.php中的$_SESSION['imageID']值与texteditor.php中的不同。

导致此问题的原因代码如下:

texteditor.php

<?php
session_start();
include 'function.php';
$_SESSION['imageID']=rast(); 
echo "Image ID :".$_SESSION['imageID'];?>
<img class="preview_image" src="#"/>

上传.php

<?php
session_start();
echo "Image ID :".$_SESSION['imageID'];
?>

例如这样的输出:

来自texteditor.php

Image ID :vKF8Ro6hI2VpyYX

从上传.php

Image ID :O5cg7Ro0vo882FP 

注:rast();给了我从a到z,从a到z,从0到9和日期的随机15个租船合同。

问题是,当我在img标记中使用"#"this时,为什么我的$_SESSION['imageID']在我的uploader.php中导致的值与texteditor.php中的值不同,比如<img src="#"/>那个?

经过一番折腾,我终于弄明白了。

当您将图像的源设置为#时,浏览器会将其转换为http://www.somesite.com/texteditor.php#

  • 这样,如果您编写了#content,浏览器就会滚动到id为content的元素

在浏览器转换了src标记之后,它会尝试加载页面http://www.somesite.com/texteditor.php#,因为它认为它将接收图像。

因此,浏览器加载页面两次,rast()函数调用两次。