現在phpとMysqlで認証後、認証時に入力したID名のディレクトリを自動で作るシステムを作っています。
しかし、ID名のディレクトリにファイルをアップロードしたいのですが、なぜか指定よりひとつ上の階層にファイルが保存されてしまいます。
考えられることを以下に記します。
1、セッションがうまく渡ってきておらず、指定先のセッション変数が空である。
2、関数の使い方が間違っている。
この他に理由があるのかもしれません。
アップロード指定ディレクトリは以下のように指定しています。
$username = $_POST['user'];
$_SESSION['username'] = $_POST['user'];
$file_dir = "c:/xampp/htdocs/report/$username";
ちなみに認証時のID名のディレクトリを作るプログラムは以下の通りです。
<?php
session_start();
$dirname = $_POST['user'];
$_SESSION['dirname'] = $_POST['user'];
$path = "c:/xampp/htdocs/report/$dirname";
if(!file_exists($path)){mkdir($path);}
?>
こちらもセッション変数を利用しているので同じようにしたら
大丈夫だと思っていたのですが・・・
お分かりになる方ご回答お願いいたします。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
認証時のID名のディレクトリを作るプログラム
<?php
session_start();
$_SESSION['dirname'] = $_POST['user'];//ユーザー名をディレクトリ名として使用するため、SESSIONに保存する。
※1-Start
$dirname = $_SESSION['dirname'];//意味を明確にするため、保存したSESSION変数から値を取得に変更。
$path = "c:/xampp/htdocs/report/$dirname";
※1-End
※1部分を↓のように、わざわざ$dirnameを経由しない方法も考えられます。
$path = "c:/xampp/htdocs/report/{$_SESSION['dirname']};
アップロード指定ディレクトリ
$username = $_POST['user'];
$_SESSION['username'] = $_POST['user'];
$file_dir = "c:/xampp/htdocs/report/$username";
以下のように変更
session_start();//セッションへの再接続(※事前に実行していた場合不要)
$dirname = $_SESSION['dirname'];
$file_dir = "c:/xampp/htdocs/report/$dirname";
おそらくファイルアップロードの際には、$_POST['user']を送っていないのだと思います。
$_SESSION[]は、サーバー上に継続的に保存する変数(及び値)と考えてください。
session_start()で、存在しない場合新規作成、存在した場合は接続して値を取得します。
デフォルトでは、クッキー内にセッションIDを保存して、自動でそのIDを元にサーバー上の変数を読み取り、変数を継続してくれます。
せっかく保存してくれている変数を使用していないので、おかしなことになっていると思われます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP ファイルアップロードに関してのセキュリティについてアドバイスお願い致します 1 2023/08/20 00:25
- PHP php ログイン 1 2022/11/01 00:24
- その他(プログラミング・Web制作) pythonでクラスで複数のメソッドを利用する方法 2 2022/04/15 04:17
- PHP imageフォルダに、画像をリサイズして保存する時のファイル名を変更したい 1 2023/05/30 11:39
- その他(プログラミング・Web制作) 図に示す階層構造で,現在のディレクトリ(カレントディレクトリという)が*印のディレクトリであるとき, 2 2022/11/16 10:55
- PHP PHPで入力フォームでデータを確認表示画面まで送る流れを日本語で理解したいのです。 1 2023/05/29 19:12
- その他(開発・運用・管理) フォルダの中にファルダを作成してファイルを格納するバッチコマンド 1 2022/06/30 11:39
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- Windows 10 バッチファイルの記述法とルールについてアドバイスをお願いいたします。 1 2022/04/13 10:50
- その他(開発・運用・管理) 【至急】.htaccessによるディレクトリ単位でのリダイレクト 2 2023/08/10 13:46
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッチを用いたフォルダの自動移動
-
現在位置より2つ上のディレク...
-
CFileDialogの最初のディレクト...
-
VB2008でFTPでのディ...
-
visualstudioでc#のdllができない
-
Subversionのリポジトリの削除
-
図に示す階層構造で,現在のデ...
-
/usr/local/lib/phpとはどうい...
-
rmdirでフォルダが消せません
-
FTPコマンドでディレクトリごと...
-
変数のなかみを辿る方法(Python)
-
includeが出来ない訳とは?
-
makefile でファイルをコピーす...
-
$_SERVER["HTTP_HOST"]と、$_SE...
-
fopenでファイルが開かない場合...
-
ファイル・ディレクトリ削除を...
-
上位ディレクトリ名(フォルダ...
-
SHGetSpecialFolderLocation
-
VB.NET 最下位のディレクトリ名...
-
ファイルアップロードに関して...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
FTPコマンドでディレクトリごと...
-
バッチを用いたフォルダの自動移動
-
CFileDialogの最初のディレクト...
-
現在位置より2つ上のディレク...
-
Subversionのリポジトリの削除
-
fopenでファイルが開かない場合...
-
makefile でファイルをコピーす...
-
VB.NET 最下位のディレクトリ名...
-
rmdirでフォルダが消せません
-
visualstudioでc#のdllができない
-
ファイルアップロードに関して...
-
絶対パス?絶対アドレス?意味...
-
MkDir関数
-
拡張子を隠すのは良い事なので...
-
Subversionで、ファイルをリネ...
-
powershell で書いたプログラム...
-
コマンドプロンプトを指定のデ...
-
ファイル選択ダイアログで選択...
-
aspのページが表示できません
-
JAVA内で複数のファイルを削除...
おすすめ情報