好的,我正在制作一个多功能的php文件。 该文件名为functions.php,并具有switch-case。
首先,我只有一个简单的register.php文件发送到functions.php。 这是我得到的错误: -
Notice: Undefined index: action in C:\Program Files (x86)\EasyPHP-DevServer-13.1VC9\data\localweb\transfer\functions.php on line 5
?的functions.php用户名= 223安培;密码= 223安培;行动=注册
这是非常不安全的..我只是想表现出行动......比如functions.php?action = register
我对脚本做了哪些更改? 这是代码: -
register.php
<form action="functions.php" name="post">
<table>
<tr>
<td>Username : </td>
<td><input type="text" name="username"/></td>
</tr>
<tr>
<td>Password : </td>
<td><input type="password" name="password"/></td>
</tr>
<tr>
<td><input type="submit" name="action" value="register"></td>
</tr>
</table>
</form>
的functions.php
<?php
session_start();
$db = mysql_connect('127.0.0.1', 'root', 'akshay!@#') or die (mysql_error($db));
mysql_select_db('transfer', $db);
switch($_POST['action'])
{
case 'register':
$username = (isset($_POST['username'])) ? $_POST['username'] : '';
$password=(isset($_POST['password'])) ? $_POST['password'] : '';
$username=mysql_real_escape_string($username, $db);
$password = md5($password);
$password = mysql_real_escape_string($password);
$query = "select * from users where user_name = '" . $username . "'";
$result = mysql_query($query, $db) or die (mysql_error($db));
if(mysql_num_rows($result) > 0)
{
echo "Username already exists, redirecting";
header('Refresh: 3; URL=register.php');
die();
}
if(empty($username) || empty($password))
{
echo "Fields cannot be empty, redirecting";
header('Refresh: 3; URL=register.php');
}
else
{
$query2 = "insert into users(user_id, user_name, user_pass)
values
(NULL, '" . $username . "', '" . $password . "')";
$result2 = mysql_query($query2, $db) or die (mysql_error($db));
if($result2)
{
echo "Registration successful";
}
else
{
echo "Cannot register";
}
}
break;
}
?>
答案 0 :(得分:0)
这意味着$_POST['action']
未设置。
在您的示例中,您将其传递到网址中,因此应使用$_GET['action']
代替。
答案 1 :(得分:0)
基于查询字符串(“functions.php?username = 223&amp; password = 223&amp; action = register”),您似乎正在使用GET
发送数据,而不是POST
。
您应该寻找$_GET['action']
,而应使用
isset($_GET['action'])
检查是否设置了操作。
如果你开始使用POST
,你应该为这种类型的应用程序做准备,那么你需要更改你的表单:
<form action="functions.php" name="post" method="post">
此外,您还需要为action
参数使用隐藏字段,而不是使用提交按钮:
<td>
<input type="hidden" name="action" value="register" />
<input type="submit" name="submit" value="Submit" />
</td>
method="POST"
属性可确保您的数据使用functions.php
传输到POST
。这样,数据就不会显示在URL中。
然后,您的functions.php
可以包含:
if (isset($_POST['action'])) {
switch($_POST['action']) {
case 'register':
$username = (isset($_POST['username'])) ? $_POST['username'] : '';
// And so on
}
}
else {
echo "No action specified.";
}