-2

ファイルの入力にバグがあります。確かに、画像はサーバーのフォルダーに移動されます - isset($_FILES['avatar']), は問題ありません - しかし、user_avatar のフィールドにはあなたの名前が入力されていません。データベース上では「default_130x130.png」という名前になっています。「$user_avatar」変数を、upload_image.php から new_user.php に送信するにはどうすればよいですか?


ja/users/new.html

    <form id="avatar_file_upload_form" action="../../utils/upload_image.php" method="post" enctype='multipart/form-data'style="position:absolute;z-index:-10;height:1px;width:1px;overflow:hidden;visibility:hidden;">
        <input type="file" name="avatar" id="avatar_file_upload_field" accept="image/jpeg,image/pjpeg,image/bmp,image/gif,image/jpeg,image/png"/>
        <input type="submit" />
    </form>

ユーティリティ/upload_image.php

<?php
ob_start();
$mimeExt = array();
$mimeExt['image/jpeg'] ='.jpg';
$mimeExt['image/pjpeg'] ='.jpg';
$mimeExt['image/bmp'] ='.bmp';
$mimeExt['image/gif'] ='.gif';
$mimeExt['image/x-icon'] ='.ico';
$mimeExt['image/png'] ='.png'; 
if(isset($_FILES["avatar"])) { 
     //Begins image upload
        $user_avatar = md5(uniqid(time())).$mimeExt[$_FILES["avatar"]["type"]]; //Get image extension
        $user_avatar_dir = "../img/".$user_avatar; //Path file
        move_uploaded_file($_FILES["avatar"]["tmp_name"], $user_avatar_dir); 

} else {
    $user_avatar = "default_130x130.png";
}
?>

new_user.php

<?php
ob_start();
include "config.php";
include "utils/upload_image.php";
$sql = mysql_query("insert into user(user_avatar) values('$user_avatar')", $db_connection) or die("Error: ".mysql_Error());
ob_end_clean();
mysql_close($db_connection);
?>

注: 「config.php」ファイルは完全に機能します。

4

2 に答える 2

0

フォーム アクションはコードであり、フローはフォーム アクションをファイルutils/upload_image.phpに設定する必要があることを示しています。new_user.php

utils/upload_image.phpまた、ページへの送信が行われたため、挿入クエリが機能する理由がわかりませんutils/upload_image.php. new_user.php..この場合、挿入クエリは機能しません。

更新

どうすれば真の挿入を行うことができますか?

フォームを new_user.php に移動させ、action="../../new_user.php"

<form id="avatar_file_upload_form" action="../../new_user.php" method="post" enctype='multipart/form-data'style="...">

</form>
于 2013-10-17T14:49:06.067 に答える
0

フォームのアクション属性を に設定する必要があると思いますnew_user.php。現在、あなたはそれをルーティングしていますが、その後upload_image.phpどのようにロードするのかわかりません. そのページに送信されたファイルがない場合、new_user.php実際には含まupload_image.phpれています。new_user.php

これは HTML である必要があります。

<form id="avatar_file_upload_form" action="new_user.php" method="post" enctype='multipart/form-data'style="position:absolute;z-index:-10;height:1px;width:1px;overflow:hidden;visibility:hidden;">
    <input type="file" name="avatar" id="avatar_file_upload_field" accept="image/jpeg,image/pjpeg,image/bmp,image/gif,image/jpeg,image/png"/>
    <input type="submit" />
</form>

これはあなたのはずですupload_image.php

<?php
$mimeExt = array();
$mimeExt['image/jpeg'] ='.jpg';
$mimeExt['image/pjpeg'] ='.jpg';
$mimeExt['image/bmp'] ='.bmp';
$mimeExt['image/gif'] ='.gif';
$mimeExt['image/x-icon'] ='.ico';
$mimeExt['image/png'] ='.png'; 
if(isset($_FILES["avatar"])) { 
     //Begins image upload
        $user_avatar = md5(uniqid(time())).$mimeExt[$_FILES["avatar"]["type"]]; //Get image extension
        $user_avatar_dir = "../img/".$user_avatar; //Path file
        move_uploaded_file($_FILES["avatar"]["tmp_name"], $user_avatar_dir); 

} else {
    $user_avatar = "default_130x130.png";
}
?>

そして、これはあなたのはずですnew_user.php

<?php
ob_start();
include "config.php";
include "utils/upload_image.php";
$sql = mysql_query("insert into user(user_avatar) values('$user_avatar')", $db_connection) or die("Error: ".mysql_Error());
ob_end_clean();
mysql_close($db_connection);
?>
于 2013-10-17T14:40:00.920 に答える