制作一个多功能文件

时间:2013-08-06 16:34:01

标签: php

好的,我正在制作一个多功能的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;
    }           

 ?>

2 个答案:

答案 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.";
}