2013-05-07 100 views
1

我的代码:保留文本框的值

<html> 
<head> 
<title>A BASIC HTML FORM</title> 

<?PHP 
if (isset($_POST['Submit1'])) { 
$username = $_POST['username']; 
} 
?> 
</head> 
<body> 
<Form name ="form1" Method ="POST" Action ="basicForm.php"> 
<Input Type = "text" Value ="<?PHP print $username ;?>" Name ="username"> 
<Input Type = "Submit" Name = "Submit1" Value = "Login"> 
</FORM> 
</body> 
</html> 

问题:PHP代码被显示在文本框,而不是实际值

Demonstration

+2

这听起来像服务器没有安装PHP,或配置正确,因为代码被解释为纯文本 – fullybaked 2013-05-07 11:13:44

+2

尝试'<?= $ username; ?>'或'<?php echo $ username; ?>'。 – Pietu1998 2013-05-07 11:14:33

+0

可能是你的文件不是php – qisho 2013-05-07 11:17:16

回答

3

这句法是正确的(虽然容易XSS) 。

如果它不起作用,那么您没有使用支持PHP的服务器来载入您正在加载的文件。

PHP,在WWW上,只能当页面被访问:

  • 通过有PHP安装
  • ,知道你是加载该文件包含PHP,应该在Web服务器
  • 由PHP引擎处理(通常通过给它一个.php文件扩展名来完成)。

更新:您已编辑您的问题以包括屏幕抓取。这证实了这个答案。您正尝试从您的文件系统直接将PHP加载到浏览器中(使用file:/// URI)。您需要通过网络服务器访问它(具有http:// URI)。


正如@CORRUPT在评论中指出的那样。您不会将$username设为默认值,因此如果未设置POST数据,您将收到错误消息。我建议在if (isset($_POST['Submit1'])) {行之前将其设置为空字符串。

+0

'<?php print isset($ username)? $ username:''; ?>' - >仍然需要修复。在OP的版本'<?PHP'中,而不是'<?php'。 – BlitZ 2013-05-07 11:15:56

+0

@Binoj还要确保你的文件被称为'something.php'而不是'something.html' – 2013-05-07 11:17:24

0

试试下面的代码:

<html> 
<head> 
<title>A BASIC HTML FORM</title> 

<?PHP 
if (isset($_POST['Submit1'])) { 
$username = $_POST['username']; 
}else{ 
$username=''; 
} 
?> 
</head> 
<body> 
<Form name ="form1" Method ="POST" Action ="basicForm.php"> 
<Input Type = "text" Value ="<?PHP print $username ;?>" Name ="username"> 
<Input Type = "Submit" Name = "Submit1" Value = "Login"> 
</FORM> 
</body> 
</html> 
0

写这个函数在PHP块:

function prepopulate($name) { 
if(isset($_POST[$name])) { 
    return $_POST[$name]; 
} 
else { 
    return ""; 
} 
} 

,然后在HTML部分

<FORM NAME ="form1" METHOD ="POST" ACTION = ""> 
<input name="fname" type="text" value="<?php echo prepopulate('fname');?>"> 
<input name="lname" type="text" value="<?php echo prepopulate('lname');?>"> 
</FORM> 

你只需将名字传下去文本框的功能预填充表单提交后保留它。