
送り側(file_upload.php)
header("Location: bbs_test.php?photo=$upfilename");
受け側(bbs_test.php)
$photo = $_GET['photo'];
var_dump($photo);
を実行すると、var_dump()の値がNULLになってしまい、
$upfilenameが、GET渡しできません。
ちなみに、$photo = $_GET['photo']; var_dump($photo); の、この2文は、
function()disprecords{ } という関数の中にあるのですが、
なぜ、var_dump($photo); の値がNULLになってしまうのか、どうすれば、
$upfilnameの値を渡せるのか、ご指導いただきたいです。
よろしくお願いします。
A 回答 (7件)
- 最新から表示
- 回答順に表示
No.7
- 回答日時:
他のやり方としては、cookie(セッション)を使うのが順当な所ではないでしょうか。
JavaScriptがわかるならJavaScriptでもできますが。
この回答への補足
すみません。大変恐縮ですが、JavaScriptを利用した方法を
ご指導いただけませんでしょうか><
セッション変数は、自分なりに試みたことがあるのですが、
確かNULLだったような記憶があります。できましたら、
cookieを利用した方法も、重ねてご指導いただければ
幸いです。
No.6
- 回答日時:
HTTPの規格(RFC)では、Locationヘッダ(302ステータスコード)でリダイレクトした場合、POSTで送信した内容をGETで送り直すことになっています。
Locationヘッダの中にクエリー文字列が含まれている場合、どのような扱いになるかは、RFCでは未定義なようです。
もしかすると、何も送られていないのかもしれませんし、最初のPOSTの内容が送られているかもしれませんし、"photo=$upfilename"が送られてるけれども受け取り方に不備があるのかもしれません。
ご参考まで。
この回答への補足
(1)昨日、「$_GET["upfilename"]が空文字列ではないでしょうか。」というお話でしたが、確かにその通りでして、talooさんのご指摘をふまえて、現在は下記のようにスクリプトを書くと、ログファイルには、期待したファイル名が入ってました。
----------------------------------------------------
送り側(file_upload.php)
<?php
$upload_dir = './files/';
$filename = $_FILES['sendfile']['name'];
$upfilename = $upload_dir.urlencode($filename);
file_put_contents('log.txt', $upfilename);
print "Location: bbs_test.php?photo=".$upfilename;
exit;
}
?>
------------------------------------------------
(受け側)bbs_test.php
function disp_records(){
$photo = $_GET['photo'];
var_dump($photo); ⇒NULL です。
~
}
どうすればdisp_records(){ }の$photo変数に添付画像ファイル名が入ってくるのでしょうか?
header(Location:)関数でのGET渡しにこだわっているわけではありませんので、なんらかの良い方法があれば、ご指導願えませんでしょうか。
ちなみにFTPサーバーへのアップロード部分は先ほども申しましたが、期待通りのファイルが事実FTPサーバーの、/files/直下にアップされております。あとはFTPサーバーにアップした画像を、disp_records(){}関数で表示させたいだけなのですが。
(2)また、これはGoogle検索したのですが、
画面遷移なしで、ファイルをアップロードする方法という
文面を見つけまして、こういうjavascriptが添えられていたのですが、このスクリプトが何をしているのか、わかりません。(今、javascript勉強中です。)このスクリプトをうまく活用する方法はあるのでしょうか?
<script type="text/javascript"><!--
var container = parent.document.getElementById('container');
image = parent.document.createElement('img');
image.src = './<?php print($filename);?>';
container.appendChild(image);
//--></script>
</body></html>
No.5
- 回答日時:
送り側の$upfilenameには期待された値が入ってますか?
たとえば動的に値を生成するのではなく、直接記述してみたり、
送り側(file_upload.php)
header("Location: bbs_test.php?photo=photo.jpg");
ログファイルに書きだして確認してみるとどうでしょうか。
送り側(file_upload.php)
file_put_contents('log.txt', $upfilename);
header("Location: bbs_test.php?photo=$upfilename");
No.1補足のとおりなら
>前略
>$upfilename = $upload_dir.$filename;
>$upfilename=urlencode($_GET["upfilename"]);
>header("Location: bbs_test.php?photo=$upfilename");
>後略
$_GET["upfilename"]が空文字列ではないでしょうか。
投稿時のコピーミスでなければ。
この回答への補足
今、ログファイルに$upfilnameを書き出したところ、
./files/画像ファイル名(.jpg)
と、値がちゃんと入っておりました。
しかし、受け側(bbs_test.php)で、var_dump()したところ
NULLと表示されます。
header()関数でbbs_test.phpにクエリー文字列を
連れて、リダイレクトした場合、bbs_test.phpの
どの関数ブロック内からでも、$_GET['photo']で参照できるのでしょうか?そこらへんがちょっとよく理解できておりません。
No.4
- 回答日時:
何か見落としている気がするのですが・・・
とりあえず
>if(move_uploaded_file($tmpname, $upfilename)){
>header("Location: bbs_test.php?photo=".$upfilename);
>exit;
>}
のところを
if(move_uploaded_file($tmpname, $upfilename) and !empty($upfilename)){
print "Location: bbs_test.php?photo=".$upfilename;
exit;
}
にしてみてください。
それでだめならbbs_test.php側で
print_r($_GET);
とかでチェックするとか・・・
この回答への補足
とりあえず、ご報告を。
file_upload.php側で、yambe.jpさまのように書いてみたのですが、やはり、NULLでした。
そして、bbs_test.php側でも、print_r($_GET); を試させていただいたのですが、Array ( ) NULL と表示されました。
何かを見落としてる可能性がありますので、yambe.jpさまの
書かれたソースをもう一回じっくり拝見いたします。
No.3
- 回答日時:
思いなおしてurlencodeの位置を変えてみました
これでもダメでしょうか?
その場合phpのバージョンはなにをお使いでしょうか?
<?php
$upload_dir = './files/';
$filename = $_FILES['sendfile']['name'];
$upfilename = $upload_dir.urlencode($filename);
$tmpname=$_FILES['sendfile']['tmp_name'];
if(move_uploaded_file($tmpname, $upfilename)){
header("Location: bbs_test.php?photo=".$upfilename);
exit;
}
?>
<form enctype="multipart/form-data" method="post">
<input type="file" name="sendfile">
<input type="submit" value="go">
</form>
No.2
- 回答日時:
細かいtypoとかですかね
以下テストしてみてください
もちろん「$upload_dir」で指定されるディレクトリに書き込み属性がないと
move_uploaded_file()は失敗しますね
<?php
$upload_dir = './files/';
$filename = $_FILES['sendfile']['name'];
$upfilename = $upload_dir.$filename;
$tmpname=$_FILES['sendfile']['tmp_name'];
if(move_uploaded_file($tmpname, $upfilename)){
header("Location: bbs_test.php?photo=".urlencode($upfilename));
exit;
}
?>
<form enctype="multipart/form-data" method="post">
<input type="file" name="sendfile">
<input type="submit" value="go">
</form>
この回答への補足
typo というのはわかりませんが、簡易BBSです。
※move_uploadは成功しており、./filesディレクトリに
アップされてはいるのですが、FTPサーバーにアップした
画像ファイルをbbs_test.php側で表示したいのですが、
できません。($photo の中身がNULLなので。)
送り側
header("Location: bbs_test.php?photo=".urlencode($upfilename));
を使わせていただいたのですが、やはり受け側で
$photo = $_GET['photo'];
var_dump($photo);
がNULLになります。どこか間違ってるのでしょうか?
No.1
- 回答日時:
意味がよくわからない
file_upload.php?upfilename=hogehoge.jpg
で受けたものを
//file_upload.php
<?PHP
$upfilename=urlencode($_GET["upfilename"]);
header("Location: bbs_test.php?photo=$upfilename");
exit;
?>
のような感じで処理しているということ?
そうでなければ$upfilenameが渡らないから当然bbs_test.phpでは
nullしか返らないと思いますが
この回答への補足
file_upload.php(送り側)
<?php
$upload_dir = './files/';
$filename = $_FILES['sendfile']['name'];
var_dump($filename);
if(move_uploaded_file($_FILES['sendfile'] ['tmp_name'], $upload_dir.$filename)){
$upfilename = $upload_dir.$filename; $upfilename=urlencode($_GET["upfilename"]);
header("Location: bbs_test.php?photo=$upfilename");
exit;
}
?>
----------------------------------------------------
bbs_test.php(受け側)
function disp_records(){
$photo = $_GET['photo'];
var_dump($photo);
~
}
こういう感じで作ってるんですが、
これでも、まだ var_dump($photo) がNULLとなり、
$upfilename が渡っていませんでした。
どこがいけないのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- オープンソース Coinmarketcap api 1 2022/05/30 15:47
- Android(アンドロイド) 【google One】グーグルワンの無料の15GBの容量が不足しています。スマホ内 7 2023/02/05 06:30
- Google Drive Google Photo 5 2022/03/23 09:39
- 画像編集・動画編集・音楽編集 pixel7proで撮った動画をPCで再生すると色が悪い 2 2023/02/28 18:32
- iPhone(アイフォーン) 『おもいでばこ』で保存したiPhoneのLive Photo、動画はiPhoneで再生出来ますか? 1 2022/10/31 23:26
- JavaScript ソースコードのいじる場所が分かりません。 1 2022/12/23 02:06
- Google+ Google Photoの手ぶれ補正機能はどうやったら使えますか?iPhoneです。 2 2023/05/25 01:10
- JavaScript 定積分の近似値を計算する関数composite_newton_cotesをつくりたい 1 2023/01/18 14:09
- 英語 サル痘の記事について 2 2022/07/24 07:07
- その他(趣味・アウトドア・車) 新型インプレッサはかっこいいのでしょうか? 2 2023/01/21 22:00
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ユーザーに入力してもらった値...
-
phpについて
-
htaccessで指定したURLが含まれ...
-
引数を正しく読み込む方法
-
データベース接続 ログインフ...
-
header.locationで、画面遷移、GET
-
phpをオフラインで動かしたい
-
phpでお問い合わせフォームを作...
-
if文が入れ子の場合の条件の解釈
-
PHPがどうしても反映されません
-
Content-Typeが機能していない?
-
PHP関数mb_send_mailで送信する...
-
ApacheとPHPの連携
-
header関数について
-
初めまして、
-
ファイルシステム関数関係
-
下記のコードなのですが「C:\\H...
-
ブラウザのページキャッシュ機...
-
プログラミング作業効率を上げ...
-
マルチバイト関数
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
データ送信をボタンを押さずに...
-
form actionで二つ送信先を指定...
-
inputタグでphpを呼び出す際、...
-
【PHP】ページを更新すると勝手...
-
PHP table内、<a href使って su...
-
ボタンのクリック数を合計保存...
-
フレームを二つ同時に変更する
-
PHPにおけるCookieの挙動につい...
-
PEAR Image_QRCodeのエラー
-
phpでcookieをセットする方法
-
PHP,HTMLの値の引き渡しについて
-
携帯サイトでフォームタグとラ...
-
xamppでformによるデータの送信...
-
PEARのAuthを勉強中です
-
WORDPRESS カスタム投稿 カス...
-
Winsockでステータスコードを受...
-
GET変数の区切り文字について
-
セキュリティについて
-
テキストボックスにデータベー...
-
phpのプリペアドステートメント...
おすすめ情報