1

我开始制作自己的个人资料系统,用户可以在其中存储用户名、密码、名字、姓氏、年龄和个人资料图片。

通过此过程上传图像存在问题。代码出现错误,我不明白为什么。为英语道歉,我来自丹麦(注:编辑免费翻译)

这是我的代码

<?php
    include ("inc/db/db.php");
    if (isset($_POST["godkendt_bruger"]))
    {
        $query = 'SELECT NULL FROM `bruger` WHERE `brugernavn` = ?';
        if ($stmt = $mysqli->prepare($query))
        {
            $stmt->bind_param('s', $brugernavn);
            $brugernavn = $_POST["brugernavn"];
            $stmt->execute();
            $stmt->store_result();
            $count = $stmt->num_rows;
            $stmt->close();

            if ($count > 0)
            {
               $user_found = 1;
            }
        }

        if (!isset($user_found))
        {
            if ($_POST["pass"] != $_POST["gentag"])
            {
                $errors = 1;
                echo "<li id=\"check_not\">Angive ens password på siden..</li>";
            }

            if (empty($_POST["pass"]) && empty($_POST["gentag"]))
            {
                $errors = 1;
                echo "<li id=\"check_not\">Angive et password på siden..</li>";
            }

            if (empty($_POST["navn"]))
            {
                $errors = 1;
                echo "<li id=\"check_not\">Angive et Fornavn</li>";
            }

            if (empty($_POST["efternavn"]))
            {
                $errors = 1;
                echo "<li id=\"check_not\">Angive et Efternavn</li>";
            }

            if (!isset($errors))
            {
                $pb = null;
                include "inc/img/class.upload.php";
                $handle = new Upload($_FILES["file"]);

                if ($handle->uploaded)
                {
                    //lidt mere store billeder
                    $handle->image_resize = true;
                    $handle->image_ratio_y = true;
                    $handle->image_x = 220;
                    $handle->Process("profil/store");

                    //til profil billede lign..
                    $handle->image_resize = true;
                    $handle->image_ratio_crop = true;
                    $handle->image_y = 115;
                    $handle->image_x = 100;
                    $handle->Process("profil");

                    //til profil billede lign..
                    $handle->image_resize = true;
                    $handle->image_ratio_crop = true;
                    $handle->image_y = 75;
                    $handle->image_x = 75;
                    $handle->Process("profil/lille");
                    $pb = $handle->file_dst_name;
                }
                else
                {
                    echo 'Der opstod en fejl i erklæringen: - upload ' . $mysqli->error;
                }
            }

            //Lukker $errors
            if (!isset($user_found))
            {
                $query = 'INSERT INTO `bruger` '
                       . '(`Brugernavn`, `password`, `profilbillede`, '
                       . '`navn`, `efternavn`, `alder`) '
                       . 'VALUES (?, ?, ?, ?, ?, ?)';
                if ($stmt = $mysqli->prepare($query))
                {

                $stmt->bind_param(
                    'sssssi', 
                    $brugernavn, 
                    $password, 
                    $profilbillede, 
                    $navn, 
                    $efternavn, 
                    $alder
                );

                $brugernavn    = $_POST["brugernavn"];
                $password      = $_POST["pass"];
                $profilbillede = $pb;
                $navn          = $_POST["navn"];
                $efternavn     = $_POST["efternavn"];
                $alder         = $_POST["alder"];

                $stmt->execute();
                $stmt->close();

            }
            else
            {
                /* Der er opstået en fejl */
                echo 'Der opstod en fejl i erklæringen til ligge i databasen: ' . $mysqli->error;
            }
        }
    }
    else
    {
        echo "<li id=\"check_not\">Dette brugernavn er optaget!!</li>";
    }
}
else
{
    echo "<li id=\"check_opret\">Indtast dine oplysninger herunder for at opret en bruger </a></li>";
}

?>

似乎错误在此块中

if ($handle->uploaded)
{
    //lidt mere store billeder
    $handle->image_resize = true;
    $handle->image_ratio_y = true;
    $handle->image_x = 220;
    $handle->Process("profil/store");

    //til profil billede lign..
    $handle->image_resize = true;
    $handle->image_ratio_crop = true;
    $handle->image_y = 115;
    $handle->image_x = 100;
    $handle->Process("profil");

    //til profil billede lign..
    $handle->image_resize = true;
    $handle->image_ratio_crop = true;
    $handle->image_y = 75;
    $handle->image_x = 75;
    $handle->Process("profil/lille");
    $pb = $handle->file_dst_name;

}
else
{
    echo 'Der opstod en fejl i erklæringen: - upload ' . $mysqli->error;
}

错误是:Der opstod en fejl i erklæringen: - 上传声明中有错误),没有别的。数据不存储在数据库中。

这是我的 html 她;

<form name="opret_bruger" method="post" action="#" enctype="multipart/form-data">
<tr>
    <td><p>Brugernavn</p></td>
    <td><input type="text" name="brugernavn"></td>
</tr>
<tr>
    <td><p>Password</p></td>
    <td><input type="password" name="pass"></td>
</tr>
<tr>
    <td><p>Password gentag</p></td>
    <td><input type="password" name="gentag"></td>
</tr>
<tr>
    <td><p>Fornavn</p></td>
    <td><input type="text" name="navn"></td>
</tr>
<tr>
    <td><p>Efternavn</p></td>
    <td><input type="text" name="efternavn"></td>
</tr>
    <tr>
    <td><p>Alder</p></td>
    <td>
        <select name="alder_1">
    <?php
    if ($stmt = $mysqli->prepare('SELECT `alder` FROM `alder`')) { 
        $stmt->execute();

        /* Bind resultatet */
        $stmt->bind_result($alder);

        /* Hent rækker og udskriv data */
        while ($stmt->fetch()) {
        ?>
            <option><?php echo $alder;?></option>
        <?php
        }

            /* Luk statement */
            $stmt->close();

        } else {
            /* Der er opstået en fejl */
            echo 'Der opstod en fejl i erklæringen: ' . $mysqli->error;
        }
        ?>
        </select>
    </td>
</tr>
<tr>
    <td><p>Upload Profilbillede</p></td>
    <td><input type="file" name="profilbillede"></td>
</tr>
<tr>
    <td></td>
    <td><input type="submit" name="godkendt_bruger"></td>
</tr>
</form>

如果您有任何建议,我会欢迎他们,甚至更好地处理代码,以便可以存储图像。

Jesper -丹麦

4

2 回答 2

0

您的文件上传字段实际上命名为profilbillede

                     <td><input type="file" name="profilbillede"></td>
                                                  ^^^^^^^^^^^^^

这意味着它将是$_FILES['profilbillede'],而不是$_FILES['file']您正在使用它。

于 2012-09-16T02:00:23.353 回答
0

几个建议:

检查文件的上传路径。我假设

$handle->Process("profil/store");

是存储文件的位置。只需检查那里的文件权限,以防文件未上传。

另外,下面的代码有效吗?我可能错了,但不应该在绑定之前设置参数吗?IE

            $query = 'INSERT INTO `bruger` '
                   . '(`Brugernavn`, `password`, `profilbillede`, '
                   . '`navn`, `efternavn`, `alder`) '
                   . 'VALUES (?, ?, ?, ?, ?, ?)';
            if ($stmt = $mysqli->prepare($query))
            {

            $brugernavn    = $_POST["brugernavn"];
            $password      = $_POST["pass"];
            $profilbillede = $pb;
            $navn          = $_POST["navn"];
            $efternavn     = $_POST["efternavn"];
            $alder         = $_POST["alder"];

            $stmt->bind_param(
                'sssssi', 
                $brugernavn, 
                $password, 
                $profilbillede, 
                $navn, 
                $efternavn, 
                $alder
            );

我希望这会有所帮助。

于 2012-09-16T17:28:55.623 回答