- 締切済み
変数を他の変数に代入したいが。。
こんにちは。 やりたいことは 以下のことです。 1.サンプルを他のサンプル(TPLもしくはPHP)から起動。サンプルは別途添付。 2.ユーザー名を渡してやる(今回パラメーター渡しでやってみました) 3.サンプルで以下のことを行いたい htdocs\data\ユーザー名 のフォルダーを作成 htdocs\data\ユーザー名 のフォルダーにファイルを アップロード・ダウンロード htdocs\data\ユーザー名 のフォルダーにファイルの一覧を表示 問題点 パラメーター渡しで行ってみましたがうまくいきませんでした。 下記のサンプルでは認証の部分をコメントにして、 ユーザー名をサンプル内で便宜上固定してみましたが、うまくいきません。 以下のようになります。 1.最初に起動 data/ユーザー名フォルダーにいく ( ok ) 2.一覧表示 data/ユーザー名フォルダーを見に行く( ok ) 3.アップロード data フォルダーを見てしまう (なぜユーザーのフォルダーを見に行かない?) サンプル単体で動かしたときに どうしてユーザーのフォルダへアップロードできないのか いろいろ見たのですが わかりません。 単純に $userを $usernameに入れればすむと思ったのですが。。。 もしわかる方いらっしゃいましたら アドバイスいただけると ありがたいです。 また、他のtplもしくは phpから このサンプルを起動する場合、 セッションとパラメーター渡しでの違いはあるのでしょうか? 実際 渡す必要があるのはユーザー名だけなのと、 私自身がセッション渡しにする場合のやり方を まだ理解できていないもので。。よろしくお願いいたします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- yambejp
- ベストアンサー率51% (3827/7415)
具体的なソースを提示した方が回答がつきやすいかと。
お礼
誰からも コメントがないので クローズします。
補足
分割しないといけない長さなので 要点をカットします。 (分割掲載は許されていないようなので。。) 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);} //一覧表示