在HTML中创建PHP代码

时间:2015-01-18 18:52:48

标签: php apache spam-prevention

我正在尝试在HTML中创建一个PHP代码块,以便当用户加载页面时,它会以电子邮件地址中的用户身份显示其IP地址和时间/日期。

我在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'; ?>而不打印生成的电子邮件地址。

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

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

可能有几个原因(配置错误的Apache就是其中之一),但我的主要怀疑是你已经禁用了短PHP标签。尝试使用<?php代替<?

答案 2 :(得分:0)

你使用了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()调用来保持行简短和可读。显然,这也适用于传统的字符串连接。)