在 HTML 内创建 PHP 代码

Creating PHP code within HTML

我正在尝试在 HTML 中创建一个 PHP 代码块,这样当用户加载页面时,它会显示他们的 IP 地址和 time/date 作为用户电子邮件地址。

我在 fedora21 上使用 apache,并启用了 PHP(在同一个 HTML 文件中使用 phpinfo() 函数测试)。

这是我要执行的代码:

<? echo '<a href="mailto:'.$REMOTE_ADDR.'_'.date('y-m-j').'-@example.com"  title="There is no spoon">For stupid spambots'; ?>

它只打印 For stupid spambots'; ?> 而没有打印生成的电子邮件地址。

<? echo '<a href="mailto:'.$_SERVER['REMOTE_ADDR'].'_'.date('y-m-j').'-@example.com"  title="There is no spoon">For stupid spambots</a>'; ?>

首先需要关闭 <a href,如果您想要 return IP 其 $_SERVER['REMOTE_ADDR'] 而不是 $REMOTE_ADDR,除非您之前定义了该变量。

您使用了错误的 html 锚点语法。考虑一下:

<?php 
$address = sprintf('%s_%s-@example.com', $_SERVER['REMOTE_ADDR'], date('y-m-j'));
echo sprintf('<a href="mailto:%1$s" title="%2$s">%3$s: %1$s</a>', 
             $address,
             'There is no spoon',
             'For stupid spambots'); 
?>

如果您希望地址可见,则必须将地址打印到锚定义的可见文本内容中。您只需要显示其中的 "For stupid spambots" 字符串即可。

(请注意,我只是使用 sprintf() 调用来保持行的简短和可读性。显然这也适用于传统的字符串连接。)

从您可以看到关闭 ?> 的事实来看,我推断您的 PHP 代码根本没有 运行 并且被解释为常规 HTML .

可能有几个原因(Apache 配置不当就是其中之一),但我的主要怀疑是您禁用了短 PHP 标签。尝试使用 <?php 而不是 <?.