我正在尝试在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'; ?>
而不打印生成的电子邮件地址。
答案 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()
调用来保持行简短和可读。显然,这也适用于传统的字符串连接。)