PHPで掲示板を作っています。
【開発環境】
win10
xammp7.2.13
PHP7
画像をtmpフォルダからuser_pictureフォルダに移したいのですがうまくいきません。
<?php session_start(); require('dbconnect.php'); if(isset($_SESSION['id']) && $_SESSION['time'] + 3600 > time()){ $_SESSION['time'] = time(); $members = $db->prepare('SELECT * FROM members WHERE id=?'); $members->execute(array($_SESSION['id'])); $member = $members->fetch(); }else{ header('Location: login.php'); exit(); } if(!empty($_POST)){ if($_POST['message'] !== ''){ //メッセージをDBへ挿入 $message = $db->prepare('INSERT INTO posts SET member_id=?, message=?'); $message->execute(array( $member['id'], $_POST['message'] )); } header('Location: index.php'); exit(); } if(!empty($_POST)){ if($_POST['image'] !== ''){ //ファイルの検査 $filename = $_FILES['image']['name']; if(!empty($filename)){ $exe = substr($filename, -3); if($exe != 'jpg' && $exe != 'gif' && $exe != 'png'){ $error['image'] = 'type'; }else{ //ファイルをアップロード $image = date('YmdHis') . $filename; move_uploaded_file($_FILES['image']['tmp_name'], 'user_picture/' . $image); $images = $image; //写真をDBへ挿入 $pic = $db->prepare('INSERT INTO posts SET member_id=?, picture=?'); $pic->execute(array( $member['id'], $_POST['image'])); } } } header('Location: index.php'); exit(); } $posts = $db->query('SELECT m.name, p.* FROM members m, posts p WHERE m.id=p.member_id ORDER BY p.id DESC'); ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>掲示板</title> <link rel="stylesheet" href="style.css" /> </head> <body> <div id="wrap"> <div id="head"> <h1>掲示板</h1> </div> <div id="content"> <div style="text-align: right"><a href="logout.php">ログアウト</a></div> <form action="" method="post" enctype="multipart/form-data"> <dl> <dt><?php print(htmlspecialchars($member['name'], ENT_QUOTES)); ?>さん、メッセージをどうぞ</dt> <dd> <textarea name="message" cols="50" rows="5"></textarea> <input type="hidden" name="reply_post_id" value="" /> </dd> <dd> <input type="file" name="image" size="35" value=""> <?php if($error['image'] === 'type'): ?> <p class="error">* 画像は「.jpg」「.gif」「.png」を指定してください</p> <?php endif; ?> </dd> </dl> <div> <p> <input type="submit" value="投稿する" /> </p> </div> </form> <!-- 投稿一覧 --> <?php foreach ($posts as $post): ?> <div class="msg"> <p><?php print(htmlspecialchars($post['message'], ENT_QUOTES)); ?><span class="name">(<?php print(htmlspecialchars($post['name'], ENT_QUOTES)); ?>)</span>[<a href="index.php?res=">Re</a>]</p> <?php if($images !== ''): ?> <p><img src="user_picture/<?php print(htmlspecialchars($post['picture'], ENT_QUOTES)); ?>" width="48" height="48" alt="" /></p> <?php endif; ?> <p class="day"><a href="view.php?id="></a> <a href="view.php?id="> 返信元のメッセージ</a> [<a href="delete.php?id=" style="color: #F33;">削除</a>] </p> </div> <?php endforeach; ?> <ul class="paging"> <li><a href="index.php?page=">前のページへ</a></li> <li><a href="index.php?page=">次のページへ</a></li> </ul> </div> </div> </body> </html>
データベースはbbsにmembersとpostsのテーブルがあります。
create table members( id int, name varchar(255), email varchar(255), password varchar(100) );
create table posts( id int, message text, member_id int, replay_message_id int, picture varchar(255) );
なぜアップロードされたファイルが移動しないのかわかりません。
回答よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー