Php 为什么这个代码不起作用?

Php 为什么这个代码不起作用?,php,image,onerror,Php,Image,Onerror,有人能告诉我为什么这个代码不起作用吗 <?php $err=1; ?> <img src="334234234234234.gif" onError="<?php $err=0; ?>" /> <?php echo "<br />" . $err; ?> 即使映像存在,onerror仍会执行。为什么?HTML无法设置PHP变量。这些只能在服务器上设置。IMG标记的onError方法无法访问PHP变量 页面生命周期: 服务器服务器构

有人能告诉我为什么这个代码不起作用吗

<?php $err=1; ?>

<img src="334234234234234.gif" onError="<?php $err=0; ?>" />

<?php echo "<br />" . $err; ?>

即使映像存在,onerror仍会执行。为什么?

HTML无法设置PHP变量。这些只能在服务器上设置。IMG标记的onError方法无法访问PHP变量

页面生命周期:

服务器服务器构建页面处理变量等 服务器->客户端服务器将页面发送到客户端计算机 客户端加载html,运行javascript,并引发任何错误。 注意,您正在尝试将项3与项1合并,这在语义上是无法实现的


执行您正在尝试的操作的唯一方法是将javascript方法附加到该事件,并在运行OneError方法时与服务器通信。但这可能会比您习惯的要复杂一些。

因为php是服务器端代码,所以无论是否真的发生了错误,都会执行。您需要使用其他方法、Javascript或其他客户端代码来实现这一点

如果您只想在图像未加载时将变量打印到屏幕上,则可以使用onError=alert'ERROR:image not load';要创建弹出框,或者您可以使用javascript修改页面上的html,但如果您想与服务器对话,则必须使用javascript提交表单或使用AJAX方法。

您的代码将始终生成以下输出:

<img src="334234234234234.gif" onError="" />
<br />0
OneError JavaScript处理程序为空,因为其中的php代码不生成任何输出


您发布的代码是实际代码还是简化代码?现在还不清楚您想要完成什么。

如果您正在检查文件是否存在,PHP提供了一个很好的功能

修改了第页的示例

<?php
$filename = '/path/to/334234234234234.gif';

if (file_exists($filename)) {
    echo "<img src='334234234234234.gif'/>";
} else {
    echo "The file $filename does not exist";
}
?>
回答你的问题

即使图像存在,也会 onerror仍在执行中。为什么?


一个错误永远不会被执行。它之所以执行,是因为您在脚本末尾显式输出了$err变量。如果您使用上述代码,就可以实现我认为是预期的结果,而无需依赖JavaScript事件

你们为什么要投反对票?我记得在开始使用PHP时犯了同样的错误——这是一个诚实的错误。不要气馁新来者。我知道我对php真的很陌生。你说的诚实的错误是什么意思?请你澄清一下。我所说的诚实的错误,是指你不是白痴。你只是一个编程新手,你会犯我们刚开始时犯的同样的错误。-顺便问一下,你能接受这个问题的答案吗不会。OneRor中的php代码将始终按照上面2个答案执行。php代码在服务器上执行,OneRor处理程序将始终为空,如我所说。