【发布时间】:2017-11-30 15:56:22
【问题描述】:
首先对不起我的英语不好 第二:问题都出在我的表单上,当 sumbit 他没有在同一页面或另一页面上发布插入的数据时。 填写字段时,我需要将其发布在同一页面或其他页面上 并且需要有可能在不同页面上显示发布的内容,而不能让其他人填写字段,但只能查看/阅读。
<?php
mysql_connect("sql.domain.com", "database", "password");
mysql_select_db("database");
$Username = $_POST['Username'];
$Password = $_POST['Password'];
$eMail = $_POST['eMail'];
$eMailPw = $_POST['eMailPw'];
$submit = $_POST['submit'];
$dbLink = mysql_connect("sql.domain.com", "database", "password");
mysql_query("SET character_set_client=utf8", $dbLink);
mysql_query("SET character_set_connection=utf8", $dbLink);
if($submit) {
if($Username && $Password && $eMail && $eMailPw) {
$insert = mysql_query("INSERT INTO commenttable (Username,Password,eMail,eMailPw) VALUES ('$Username','$Password','$eMail','$eMailPw') ");
echo "<meta HTTP-EQUIV='REFRESH' content='0; url=TEST2.php'>";
} else {
echo "please fill out all fields";
}
}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>TEST 2</title>
</head>
<body>
<center>
<form action="TEST2.php" method="POST" >
<table border="0" cellspacing="8" cellpadding="0" >
<tr>
<td>Username</td>
<td><input type="text" name="Username" size="30" ></td>
</tr>
<tr>
<td>Password</td>
<td><input type="text" name="Password" ></td>
</tr>
<tr>
<td>eMail</td>
<td><input type="text" name="eMail" ></td>
</tr>
<tr>
<td>eMail Password</td>
<td><input type="text" name="eMailPw" ></td>
</tr>
</table>
<input type="submit" value="Submit">
</form>
<?php
$dbLink = mysql_connect("sql.domain.com", "database", "password");
mysql_query("SET character_set_results=utf8", $dbLink);
mb_language('uni');
mb_internal_encoding('UTF-8');
$getquery = mysql_query("SELECT * FROM commenttable ORDER BY id DESC");
while($rows = mysql_fetch_assoc($getquery)) {
$id = $rows['id'];
$Username = $rows['Username'];
$Password = $rows['Password'];
$eMail = $rows['eMail'];
$eMailPw = $rows['eMailPw'];
echo $Username . '<br/>' . '<br/>' . $Password . '<br/>' . '<br/>' . $eMail . '<br/>' . '<br/>' . $eMailPw . '<br/>' . '<br/>' . '<hr size="1"/>';
}
?>
</body>
</html>
【问题讨论】:
-
Little Bobby 说 you may be at risk for SQL Injection Attacks。通过parameterized queries 了解Prepared Statements。我推荐
PDO,我推荐wrote a class for,使其比使用非参数化查询更容易、更干净、更安全。此外,This article 可以帮助您在MySQLi和PDO之间进行选择 -
请将您的代码缩小到具体问题
-
危险:您使用的是 an obsolete database API,它是 PHP 中的 removed。您应该选择modern replacement。您很容易受到SQL injection attacks的影响,现代 API 可以让您更轻松地从 defend 中获得。
-
@GrumpyCrouton 你们是每次都写出来还是在任何地方都有复制/粘贴预设?
-
除了对 SQL 注入开放并使用过时的 mysql 函数。您可能还想查看this,因为看到密码的输入类型“文本”会伤害我的眼睛。