こんにちは。
やりたいことは 以下のことです。
1.サンプルを他のサンプル(TPLもしくはPHP)から起動。サンプルは別途添付。
2.ユーザー名を渡してやる(今回パラメーター渡しでやってみました)
3.サンプルで以下のことを行いたい
htdocs\data\ユーザー名 のフォルダーを作成
htdocs\data\ユーザー名 のフォルダーにファイルを
アップロード・ダウンロード
htdocs\data\ユーザー名 のフォルダーにファイルの一覧を表示
問題点
パラメーター渡しで行ってみましたがうまくいきませんでした。
下記のサンプルでは認証の部分をコメントにして、
ユーザー名をサンプル内で便宜上固定してみましたが、うまくいきません。
以下のようになります。
1.最初に起動
data/ユーザー名フォルダーにいく ( ok )
2.一覧表示
data/ユーザー名フォルダーを見に行く( ok )
3.アップロード
data フォルダーを見てしまう (なぜユーザーのフォルダーを見に行かない?)
サンプル単体で動かしたときに どうしてユーザーのフォルダへアップロードできないのか いろいろ見たのですが わかりません。
単純に $userを $usernameに入れればすむと思ったのですが。。。
もしわかる方いらっしゃいましたら アドバイスいただけると ありがたいです。
また、他のtplもしくは phpから このサンプルを起動する場合、
セッションとパラメーター渡しでの違いはあるのでしょうか?
実際 渡す必要があるのはユーザー名だけなのと、
私自身がセッション渡しにする場合のやり方を まだ理解できていないもので。。よろしくお願いいたします。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
具体的なソースを提示した方が回答がつきやすいかと。
この回答への補足
分割しないといけない長さなので 要点をカットします。
(分割掲載は許されていないようなので。。)
sample.phpには ユーザー認証ユーザー名とパスワードの部分があるのですが、
それは別のphpで行うので ユーザー名を外部から与えてやって、
このsample.phpは認証部分をカットしたいのです。
しかし手を加えたらユーザーのフォルダーにアップロードできなくなりました。
.../data/ユーザー名 に行かないで .../dataへアップされてしまう。。
手を加えたのは (1)と(2)の部分だけなのですが。。。
すみませんがよろしくお願いいたします。
-- 以下 sample.php 抜粋 --
// とりあえずユーザー名固定にして確認
$user="test.user1"; $pass="testuser1";
// (1)認証部分は カット
//function authenticate()
//{
//global $user,$pass;
//
//if (!isset($_SERVER['PHP_AUTH_USER'])) {//初回認証時
//header("WWW-Authenticate: Basic realm=\"PHP Web Storage\"");
....
//while(isset($user[$cnt])){//入力されたアカウントをチェック
//if($_SERVER['PHP_AUTH_USER']==$user[$cnt] &&
///$_SERVER['PHP_AUTH_PW']==$pass[$cnt]){
//}
//ファイルをリストアップする
function listup($dirname,$key)
{
$dir="./data/$dirname";
if(!file_exists($dir)){mkdir($dir);}//ディレクトリが無い場合は作成
$d = dir($dir);//ディレクトリを開く
while(($entry = $d->read())){//ディレクトリを検索して配列に格納
if(ereg("txt",$entry)){//テキスト形式を見つけ
$lines=file($dir."/".$entry);//ファイル読み込み
...
<form action="storage.php?mode=listup">
<tr><td colspan="4">「{$dirname}」さんのファイル一覧 ($count)
.....
//アップロードする
function showuploadform()
{
global $option,$maxsize,$_COOKIE;
<form enctype="multipart/form-data" action="storage.php" method="POST">
......
<td><input type="submit" name="cmd" value="upload"> (最大 $maxsize byteまで)</td>
</tr>
....
//メニューを表示する
function showmenu()
<a href="storage.php?mode=listup">一覧表示</a>
<a href="storage.php?mode=upload">アップロード</a>
//ファイルの詳細を表示するファイル読み込み
function showinfo($dirname,$target)
{
$fn="./data/$dirname/".$target.".txt";
$url="download.php?target=$target";
///////////////////////////////////////////////////////////
$mode=$_GET["mode"];
if($mode==""){$mode="listup";}
if(isset($_GET["target"])){$target=$_GET["target"];}
if(isset($_POST["target"])){$target=$_POST["target"];}
$key=$_GET["key"];
// (2)認証をカットしたので、以下の2行をコメント
//if($_POST["cmd"]!="upload"){authenticate();}
//$username=$_SERVER['PHP_AUTH_USER'];
// 上のコメントの2行にかえて 以下の1行追加
if($_POST["cmd"]!="upload"){$username=$user;}
....
//アップロードされた場合
if($_POST["cmd"]=="upload" && isset($_POST["title"])){
setcookie ("name",$_POST["name"],time()+3600000);
setcookie ("title",$_POST["title"],time()+3600000);
setcookie ("kind",$_POST["kind"],time()+3600000);
$dir=getcwd();
$dir.="/data/$username";
$fn=uniqid("");
$bfn=$dir."/".$fn.".bin";
$tfn=$dir."/".$fn.".txt";
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $bfn)) {
$memo=str_replace("\r\n","#rc#",$_POST["memo"]);
$str=sprintf("%d\n",time());
$str.="{$_POST["title"]}\n{$_POST["kind"]}\n";
$str.="{$_POST["name"]}\n$memo\n";
$str.="{$_FILES["userfile"]["name"]}\n{$_FILES["userfile"]["size"]}\n";
$str.="{$_FILES["userfile"]["type"]}\n\n";
$str=htmlspecialchars($str, ENT_QUOTES,"SJIS");
$fp=fopen($tfn,"wb");//ディスクに保存
fputs($fp,$str);
fclose($fp);
}else {echo"failed to upload...";exit;}
}
...
showmenu();//メニュー表示
if($mode=="listup"){listup($username,$key);}//一覧表示
if($mode=="upload"){showuploadform();}//アップロード
if($mode=="showinfo"){showinfo($username,$target);}//一覧表示
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java jdk17.06のインストーラーが起動しない 1 2023/03/27 21:58
- Windows 10 windowsセキュリティーでパスワードエラー 1 2022/06/14 19:49
- Excel(エクセル) Excel VBA 3 2023/04/22 10:46
- UNIX・Linux ファイル・フォルダーの削除方法 2 2022/05/19 14:04
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Word(ワード) Word 2016のマクロを Word 2021のWordでキー動作させたい 3 2023/04/12 16:14
- Windows 10 パソコンの操作ができません。。。 4 2022/06/02 18:38
- その他(ブラウザ) 自分のデフォルトゲートウェイをアドレスバーに入力し、Enterキーを押します。(一般的なデフォルトゲ 4 2022/05/30 22:43
- Excel(エクセル) ユーザー関数の自動計算(excel2003) 1 2023/02/06 06:46
- Visual Basic(VBA) あるフォルダーのファイルを違う親フォルダーのサブフォルダーに移したい 11 2023/02/15 19:00
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語でCSVファイルの行数を読...
-
stdClass Objectを連想配列のよ...
-
複数ファイルで、それぞれの行...
-
別ファイルの構造体の値を読み...
-
変数で来た指定日に対して、+3...
-
CSVデータの行数カウントをした...
-
stream_get_contentsの代替関数
-
エラーメッセージ(無効な間接...
-
PHPのfputcsv を使わずにCSVに...
-
自動で番号を振りたい
-
PHPでCSVの一部の行を編集したい
-
マッチング処理(1:N)
-
foreachのなかで次のキーを参照...
-
特定の文からメールアドレスの...
-
ファイルの逆読みってできますか?
-
プログラミングのPythonのnoteb...
-
スカラーのベクトル微分
-
CArrayの要素としてCStringArra...
-
PHPで変数名にハイフンを使うに...
-
配列を回すとき、最後の要素だ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
複数行のデータのPOST処理に関して
-
Resource id #3 と表示されま...
-
別ファイルの構造体の値を読み...
-
バイナリファイルの内容を、そ...
-
PHPでCSVの一部の行を編集したい
-
CSVファイルの最終行のデー...
-
ヒアドキュメントの中のfor文
-
stdClass Objectを連想配列のよ...
-
◆速い、ファイル読み込みは?
-
C言語でCSVファイルの行数を読...
-
phpでCSVファイルの中身を多次...
-
rubyで複数列のデータを一行に...
-
多次元配列の一次元目の最大値...
-
行数が30万件ほどあるCSVから、...
-
配列同士の足し算のループ処理
-
FortranのOPEN文
-
自動で番号を振りたい
-
csvの内容を行単位で削除したい
-
CSVデータの行数カウントをした...
-
While文を使って配列の中身を全...
おすすめ情報