【PHP】下らねぇ質問はここに書き込みやがれ 24
1 :
nobodyさん :
2006/07/07(金) 14:54:53 ID:KnVubDvE
・part17よりテンプレ化 extractは極力使わないほうがいいと思います。 例えば、 hoge.php?_SESSION[user_pw]=hogehoge って形で送られてきたとします。これを extract($_GET) しちゃうと、$_SESSION['user_pw']の値が、 "hogehoge"に変更されてしまいます。 もし事前にユーザのパスワードを、$_SESSION['user_pw']に 保持してたとしたら、勝手に書き換えられてしまうことになります。 それを避けるために extract($_GET, EXTR_SKIP) ってやって上書きを避けたとしても、 このままでは変数の初期化を忘れる危険性があります。 extract($_GET, EXTR_PREFIX_ALL, "get") と、接頭辞をつけるのが一番安全な気はしますが、 それなら最初から $hoge = $_GET['hoge']; ってやるのと手間が変わらないと思いますし、可読性も増します。 確かにextractするのは楽だと思いますけど。
◆質問する場合の注意 1. 自分のIDを表示させること。(メール欄には何も記述しないでください) 2. ハードウェア、OSのバージョン等を明記すること。 3. 己の行った操作、変更などを詳しく明記すること。 4. エラーメッセージはそのまま表記すること。 5. 質問者としても態度をわきまえること。 ◆質問後の注意 ・質問者は必ずIDを表示させてください。 書き込む場合はメール欄に何も記述しないでください。 ・2回目以降は最初に質問した際のレス番号を名前欄に入れてください。 (逆に回答者は質問者に対して>>(アンカー)をつけて答えてください。) ・解決しなくても回答をもらった場合はお礼を言う。 (荒らし、煽りは除く) 【その他諸注意】 ・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ ・SQLについての質問はデータベース板(PCカテゴリ)の各スレで ・オブジェクト指向については良スレがないから本を買え ・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
8 :
nobodyさん :2006/07/07(金) 19:52:41 ID:IzLRE9l5
いまapache2.2を使うのは危険ですか?
早速ですが、お願いします。 <? require("function.php"); open(); reverse($log_data,$member_data); ?> function.php <? define('LOG_DATA',"./data/log".$_GET['id'].".cgi"); define('MEMBER_DATA',"./data/member".$_GET['id'].".cgi"); function open(){ $log_data= file(LOG_DATA); $memberg_data= file(MEMBER_DATA); return $log_data; return $member_data; } function reverse($log_data,$member_data){ $log_data= array_reverse($log_data); $member_data= array_reverse($memberg_data); } ?> こういうのを作ったのですが、$log_dataと$member_dataに変数が入らないらしく array_reverse() [function.array-reverse]: The argument should be an array といエラーが返されます。 どうすれば、変数を格納できるのでしょうか?
ユーザ定義関数について勉強し直すのが一番良いと思うよ
それ以前にスクリプトについて勉強し直すのが一番良いと思うよ
12 :
9 :2006/07/07(金) 21:16:54 ID:???
>>10-11 すみません、良かったら教えてください。
function関数使うの初めてなので
14 :
9 :2006/07/07(金) 21:29:53 ID:???
なるほど 最初にglobalで、使う変数を宣言しておかないといけないのですね
15 :
9 :2006/07/07(金) 21:33:20 ID:???
<? define('LOG_DATA',"./data/log".$_GET['id'].".cgi"); define('MEMBER_DATA',"./data/member".$_GET['id'].".cgi"); //データfileで開く function open(){ global $log_file,$member_file; $log_data= file(LOG_DATA); $member_data= file(MEMBER_DATA); return array($log_data,$member_data); } //fileで開いたデータをリバース function reverse(){ global $log_data,$member_data; $log_data= array_reverse($log_data); $member_data= array_reverse($member_data); return array($log_data,$member_data); } ?> としたら解決しました。ありがとうございました。
16 :
nobodyさん :2006/07/07(金) 21:53:35 ID:d9ruQecq
<?php $str = 'This is an 自民'; $enc = urlencode( $str ); $dec = urldecode( $enc ); print("str = $str<br>"); print("enc = $enc<br>"); print("dec = $dec"); ?> この実行結果は str = This is an 自民 enc = This+is+an+%E8%87%AA%E6%B0%91 dec = This is an 自民
17 :
nobodyさん :2006/07/07(金) 21:54:29 ID:d9ruQecq
>>16 の続きです
でも「自民」っていう文字列をFORMで受けて表示すると
<?php
$str = "This is an ".$_POST['tag'];
$enc = urlencode( $str );
$dec = urldecode( $enc );
print("str = $str<br>");
print("enc = $enc<br>");
print("dec = $dec");
?>
str = This is an 自民
enc = This+is+an+%8E%A9%96%AF
dec = This is an 自民
こんな風に同じデコードでも違って表示されるみたい
これを同じにするにはどうすればいいですか?
文字コード
19 :
nobodyさん :2006/07/07(金) 22:14:55 ID:d9ruQecq
>>18 すみません、良かったら教えてください。
当方初心者なもので
21 :
9 :2006/07/07(金) 22:28:06 ID:DAs/sE57
22 :
nobodyさん :2006/07/07(金) 22:36:42 ID:d9ruQecq
すみません 20です 9の方とは違います 今年女子大を卒業してプログラマーになった者です 明日までにできないと上司に怒られます 教えてください お願いします
24 :
nobodyさん :2006/07/07(金) 22:46:33 ID:d9ruQecq
そんなこといわないで〜
>>ID:d9ruQecq 初心者なのかプロなのかどっちなんだよ 嘘つくぐらいなら自分で調べろハゲ
26 :
nobodyさん :2006/07/07(金) 22:51:40 ID:d9ruQecq
ひどい・・・
ほんとくだ質で申し訳ないんですがお願いします やりたい事はテキストをUTF-8に変換して保存したいだけなんですが ↓をブラウザから実行するとテキストが文字化けで表示されるだけで終わります $jis = readfile('jis.txt'); $str = mb_convert_encoding($jis, "UTF-8", "auto"); touch("utf.txt"); $fp = fopen("utf.txt", 'w'); fputs($fp, $str); fclose($fp); なんか勘違いしてますでしょうか?
28 :
9 :2006/07/07(金) 23:07:10 ID:DAs/sE57
>>20 自分も20ですよ。
今は専門学生で、来年卒業です。
また変なのがきた コンビネーション荒らし?
>>27 readfile関数はファイルから読み込んで標準出力に吐き出す。
ファイルの内容は返されない。
fopenしてから1行づつfgetsで読み込むのが正解。
若しくはfileで配列に入れてから改行文字でimplodeもありだな。
\nでimplodeしたら改行が一個余分に付きました。
>>30-31 有り難うございます。↓はちゃんとコピーされるんですが
touch("./dat/utf.txt");
$handle = fopen ("jis.txt", "r");
$fp = fopen("./dat/utf.txt", 'w');
while (!feof ($handle)) {
$buffer = fgets($handle, 4096);
fputs($fp, $buffer);
}
↓にすると空のテキストが出来て止まっちゃうみたいです
$handle = fopen ("jis.txt", "r");
$str = mb_convert_encoding($handle, "UTF-8", "auto");
$fp = fopen("./dat/utf.txt", 'w');
while (!feof ($str)) {
$buffer = fgets($str, 4096);
fputs($fp, $buffer);
}
↓みたくmb_convert_encodingの位置を変えても同じでした
while (!feof ($handle)) {
$buffer = fgets($handle, 4096);
$str = mb_convert_encoding($buffer, "UTF-8", "auto");
fputs($fp, $str);
今度はfile使ってみます
>>34 真ん中は$handleの扱いが変(コピーできている上のと比較してみよう)
下は動きそうなもんだけどな・・・前後が分からんので分からんが
>>27 のreadfileをfile_get_contentsに変えるのが簡単だと思うけどな
つかreadfileや他の関数の動作を理解していない点からしてもマニュアル読め
setcookie("test","abc",time()+600); セットしたクッキーはどこに保存されるのでしょうか? timeを設定していなかったらずっと残るわけですよね?
>>37 保存してるのはクライアント。
クッキーの仕組みを学びなおせ
>>37 保存してるのは工場。
クッキーの原材料から学びなおせ
>>36 書いてるのはこれだけです。これでmb_convert_encodingの行抜くと
普通にコピー出来るんですが
<?php
touch("./dat/utf.txt");
$fp = fopen("./dat/utf.txt", 'w');
$handle = fopen ("jis.txt", "r");
while (!feof ($handle)) {
$buffer = fgets($handle, 4096);
$str = mb_convert_encoding($buffer, "UTF-8", "auto");
fputs($fp, $str);
}
fclose($fp);
fclose($handle);
?>
これでもブラウザに何も表示されないです
$jis = file_get_contents('jis.txt');
$jis = mb_convert_encoding($jis, "UTF-8", "auto");
echo $jis;
フレームを使って作っています。 index.phpにunset($str); frame1.phpに$str="テスト"; これをフォームでframe2.phpに送っています。 frame2でecho $str; これをリロードさせても、index.phpのunset($str);で変数が消されず、 frame2で$strがそのまま表示されます。 更新すると、index.phpが読み込まれるのではなく、frame1と2が読み込まれるだけなのでしょうか?
43 :
nobodyさん :2006/07/08(土) 00:52:33 ID:fMTjXb+R
php.iniに問題があるような気ガス
44 :
42 :2006/07/08(土) 00:54:01 ID:???
>>43 すみません、何方に対しての発言でしょうか。
私でしたら嬉しいのですが。
>>41 それは明らかにおかしい
$buffer = fgets($handle, 4096); // ←$bufferに読み込んでいる
$str = mb_convert_encoding($buffer, "UTF-8", "auto");
fputs($fp, $str); // ←$strを書き込んでいる
mb_convert_encodingの「行を抜いたら」、$strはundefinedになるはず
質問の仕方が悪すぎ。とりあえず
>>5 釣りならよそでやってくれ
46 :
43 :2006/07/08(土) 01:13:19 ID:???
幾らくだしつでもマニュアルぐらい最低限読めよな。
50行ぐらいあるfunction関数の、上の数行を使うために わざわざrequireで呼び出すとやっぱり重たくなりますか?
49 :
27 :2006/07/08(土) 03:10:14 ID:???
いくらやってもおかしいのでphp.iniから見直していったら 結局mbstring自体が入って無い事がわかりました んでphp_mbstring入れたらあっさり解決しました いやほんと申し訳なかったです レスくれた方有り難うございましたm(_ _)m
50 :
43 :2006/07/08(土) 03:19:09 ID:???
んなことだろーと思ったよ。
>>48 5000行とかいうならともかく50行くらいでは普通気にしない。
500行でもほとんどの場合は気にするほどじゃない。
>>41 1行目に
mb_language( 'Japanese' );
入れるとか?
あ、解決済みだった…。orz
$a['a']['b']['c']という変数から変数を構成しているキーを抜き出す事は出来ますでしょうか?
変数を構成しているキーってなんだ? array_keys で違うんなら具体的に例をあげてくんろ
56 :
54 :2006/07/08(土) 09:45:50 ID:???
$a['a']['b']['c']から例えばarray('a','b','c')という結果を得たいのです。 $a['a']['b']['c']の1つ上の$a['a']['b']にどうにかしてアクセスしたいと考えております。
>>56 >$a['a']['b']['c']から例えばarray('a','b','c')という結果を得たいのです。
$a['a']['a']['a']
$a['a']['a']['b']
$a['a']['a']['c']
$a['a']['b']['a']
$a['a']['b']['b']
$a['a']['b']['c']
$a['a']['c']['a']
$a['a']['c']['b']
$a['a']['c']['c']
こんな配列だった場合はどういう風に欲しいの?
>$a['a']['b']['c']の1つ上の$a['a']['b']にどうにかしてアクセスしたいと考えてお
こんな風に普通にアクセスできるよ
echo $a['a']['b'];
>>54 func($a['a']['b']['c']) で戻り値にarray('a','b','c')を返したいとかいう話?
無理だろ。
再帰で関数つくれば出来るけど標準にはない
$a['a']['b']['c'] と書いた時点で、もうキーが何か分かっている。
分かってないと 'a','b','c'のように具体的に書けないから。
一方 $a['a']['b']['c'] = 'αβγ'; のように値が入っていたとして、
'αβγ'という文字列から変数名(あるいは配列名、キー名)を調べることはできない。
>>56 の説明にあるような要求がでてくる場面が想像できない
61 :
54 :2006/07/08(土) 13:20:35 ID:???
>>57-59 58さんのおっしゃる事がそうだと想います(^^;。
フォルダでいう所の1つ上のフォルダにアクセスしたい感じですがやはり無理ですか・・・。
$dat[$a][$b][$c]で$aから$cまでの変数が不定である場合の$aと$bを知る方法があれば
知りたかったのです。$datだけ固定なのでやはりここから作って行くしかないですね。
62 :
54 :2006/07/08(土) 13:24:07 ID:???
$aから$cまでの変数が不定というのも変ですね(^^;。とにかく値からキーを習得したかった感じです。
>>62 その値が配列の中で一意なのであれば検索は可能。
同じ値が複数ある場合はキーの特定が不可能。
>>61 そもそもその$dat[$a][$b][$c]にどういう形でアクセスしてるときに
第二階層をアクセスしたいのか、もうちょっと具体的に示せ。
フォルダ云々言ってるけど、$dat[$a][$b][$c]を引数で渡したときってのは
中身を別のまっさらなディスクにコピーした状態になってるから
そもそも上のフォルダとかいうもの自体が無くなってしまってる。
予想するに、ツリー(ネスト)状態になっている配列の親の配列キーが知りたいって事とか。
66 :
54 :2006/07/08(土) 14:23:55 ID:???
>>65 どうやって説明しようか迷っていたのですが、その通りです!!。このツリー状になっている配列は
Web上で利用するユーザーが好き勝手に変更できる仕様なので階層も決まっておらず、毎回検索
するのも効率が悪いので何とか効率よくできないものかと・・・。今はキーをインデックス化しており、
そこから割り出しているのですが処理によっては1つ上の親の配列が必要になったりするので
配列変数をLinuxのディレクトリみたいに「cd ..」なんて出来ないかと安易に考えた次第です。
データベースに放り込んで毎回検索した方が良いんじゃねーの?
>>66 それはキーそのものを情報として持って処理するしかないと思う。
ディレクトリだって、自分が親の位置情報を持ってるわけじゃなく、
自身のフルパスとして全階層のキーに該当する情報を持ってるだけだし。
69 :
nobodyさん :2006/07/08(土) 16:32:23 ID:Y8id9cd8
<? $array[1] = 9; $array[2] = 6; $array[3] = 10; asort($array); print_r($array); ?> Array ( [2] => 6 [1] => 9 [3] => 10 ) ←出力されます これを、小さい順に $a、$b、$cに格納したいのですが、どうすれば良いのでしょうか? list($a,$b,$c) = asort($array); としてみたいのですが、ダメでした。
70 :
69 :2006/07/08(土) 16:41:47 ID:Y8id9cd8
resetとcurrent、nextで解決できました。 ありがとうございます。 しかし、こんな面倒くさい方法じゃなく、 変数をまた最初から番号付けするような便利な関数はないのでしょうか。。。
71 :
nobodyさん :2006/07/08(土) 17:22:50 ID:qcW5njj8
mb_output_handlerを使ってSJISのデータをUTF-8で出力しようとしています。 以下のスクリプトを実行したのですが、 <?php mb_http_output("UTF-8"); mb_output_handler("UTF-8"); ob_start("mb_output_handler"); ?> test <?php ob_end_flash(); ?> Warning: mb_output_handler() expects exactly 2 parameters, 1 given Warning: Wrong parameter count for mb_output_handler() Fatal error: Call to undefined function: ob_end_flash() といったエラーになってしまいました。 どこがいけないのか解らないのですが、マニュアル通りに指定したつもりです。 どうすればUTF-8で出力されるでしょうか? PHP4.4.0を使用していて、mb周りの設定値は以下になります。 mbstring.detect_order no value mbstring.encoding_translation Off mbstring.func_overload 0 mbstring.http_input pass mbstring.http_output pass mbstring.internal_encoding SJIS mbstring.language neutral mbstring.substitute_character no value
何故エラーメッセージを読まない?
73 :
71 :2006/07/08(土) 17:42:41 ID:???
読んだのですが、どこが違うのか解りませんでした。 パラメーターがおかしいのは解るのですが、UTF-8以外に指定できるのでしょうか? そこがわかりません。。
74 :
nobodyさん :2006/07/08(土) 18:01:53 ID:4HW/BEu5
C言語でのifdefはPHPにはありますか?
ないよ
実装でカバーできるけど冗長になりがち
なんちゃって あるに決まってるだろ
78 :
nobodyさん :2006/07/08(土) 18:27:45 ID:4HW/BEu5
デバッグコードを埋め込みたいのです。
>>73 Fatal error: Call to undefined function: ob_end_flash()
致命的エラー:ob_end_flash()だぁ? んな関数ねぇよハゲ。
× flash
○ flush
もう一度聞くが、何故エラーメッセージを読まない?
>>73 mb_output_handler("UTF-8");
...
Warning: mb_output_handler() expects exactly 2 parameters, 1 given
Warning: Wrong parameter count for mb_output_handler()
...
どこがいけないのか解らないのですが、マニュアル通りに指定したつもりです。
なんのマニュアルを読んだんだろうねー
>>78 ないから、あきらめる
どうしてもっていうなら、makeを使ってプリプロセッサを通せ
>>70 asort($array);
list($a, $b, $c) = $array;
ってことじゃなくて??
auの携帯へ、header()を使ってcookieを送りたいのですが、 どう記述すればいいのでしょうか?よろしくお願いします。
>>83 いえいえこちらこそよろしくお願いいたします。
特定のRSSを取得して、毎日1回HTMLを生成するスクリプトってかけますか? ニュースサイトのRSSを購読すると、三日前のニュースとかは取得できないので不便なんです。 だったら自分で契約してるサーバにスクリプトを設置して、タイトルとリンクをHTML化して毎日一回保存してしまおうかと だめでしょうか? cronもつかえるという前提だとどうでしょう
書けるよ
空メールを送ってもらい送られてきたメールアドレスをデータベースに保存する といった会員登録サイトを作ろうと思い、調べた結果とりあえず空メールが あったら返信をするというのはvacationで出来るというところまでは 調べる事は出来たのですが、そこからどの用にメールアドレスだけを取得し PHPに持っていけばいいのかが分かりません
>>87 vacationなんぞ使わずに、自作の処理スクリプト(PHP)に渡して
そこで処理をする。forwardで渡すのは同様。
空メールなのかとか、そのメールからアドレスをどうやって取るかは
実験してみな。単なる文字列の処理だけだから。
setcookieとsession_startは同じPHPには書けないのでしょうか?
んー。そういう質問をするってことは、できなかったんだよね? 再現できるソースきぼんぬ
>>87 PHPをcronなどで一定間隔で動かしてPOPサーバーに接続してメールを取得、
もしくはsendmailのforward設定で受信時にメールを食わせて自動的にPHPを実行させ、
あとはメールの中身を1行ずつ読み込んでってFrom:行からアドレス抜くだけ。
>>69-70 >しかし、こんな面倒くさい方法じゃなく、
>変数をまた最初から番号付けするような便利な関数はないのでしょうか。。。
結局キーは捨てるのに、なんでわざわざasort使ってんの?
マニュアル読んでないよね?
週末はいつもこんな感じだよね
phpで外部サイトの内容を取得するのは readfileだけでしょうか? 外部サイトの、<body>以下だけを出力すると言った方法は可能ですか?
>>96 外部ファイルを手軽に扱うための関数(fopen_wrapperの設定に依存)
readfileやinclude、fopen etc.
細かい制御ができるが、その分よく面倒を見る必要あり
fsockopen
後半は、ファイル全体を取得してから自力で切り出すしかないやね。
PHPには文字列を操作する関数があるので、可能っちゃー可能
100 :
nobodyさん :2006/07/09(日) 13:04:23 ID:vWh3Ts67
Vodafoneの固体シリアルを切り出すために $ua = 'Vodafone/1.0/V802N/NJ001[test_serial] Browser/UP.Browser/7.0.2.1.307 Profile/MIDP-2.0 Configuration/CLDC-1.1 Ext-J-Profile/JSCL-1.2.2 Ext-V-Profile/VSCL-2.0.0'; if ( ereg ("\[(.+)\]", $ua, $serial) ) { print $serial[0]; }else{ print "error!"; } って感じで書いたんだが、[]も代入されてしまう。 \[(.+)\]の()の中だけを代入するにはどうすればいい? Perlやってたからよくわからねぇ。
>>100 確か$_SERVER['??_JHONE_NO']みたいな配列に送られてくるはずだが…
print_r($_SERVER)すればわかるかも。
103 :
nobodyさん :2006/07/09(日) 14:25:29 ID:vWh3Ts67
質問です。 子プロセスの方で関数を動かして、 その返り値を子プロセス終了後に 親プロセスの方でチェックしようとしたら空になってました。 子プロセス内で得た返り値を 親プロセスの方でチェックすることは無理ですか?
105 :
nobodyさん :2006/07/09(日) 16:11:23 ID:U99SwNUH
BBSを10件ずつ表示させて次ページへ進めるようにしたいのですがどういう処理が必要なのでしょう? ログはテキストで取っていてSQLは使用していません。
>>104 ソースは?
>>105 そういうのを丸投げといふ。まずは自分で考えてわからないとこを質問
PHPでクッキーを削除するにはどうしたらいいですか? setcookie("cookiename"); でやっても削除されないのですが、ほかのやり方あったら教えてください。 よろしくお願いします。
108 :
107 :2006/07/09(日) 16:34:25 ID:66lL3jio
解決しますた。
>>105 暇だからSQLの方法を出してやろう
*.php?page=1
$page = $_GET['page'];
$limit = $page * 10;
$sql = "SELECT * FROM BBS LIMIT $limit, 10";
$res = mysql_query($sql);
while ( $row = mysql_fetch_array($res) ) { print( $row[0] . "<hr>" ); }
>>105 次ページで表示する10件分のテキストを読み込んで表示する。
10件に足りない場合の処理も盛り込むこと。
file()でローカルのスクリプトを実行した状態で取り込みたいのですが可能でしょうか。
例えばBBS.CGIというスクリプトをソースではなくてそれを実行したHTMLを取り込もうとしています。
試しに file(BBS.cgi) と file(
http://~~~/BBS.CGI ) を試しましたがどちらもソースが返ってきてしまいました。
phpにて実行結果の状態で取得することは可能なのでしょうか よろしくお願いします。
>>113 該当のファイルをブラウザで直に表示させるとちゃんとスクリプトが実行されるようです。
ちなみにバージョンは4.3.11です。 蛇足ですがロリポ鯖です。
ファイル構成は
/aaa/index.php - 呼び出し元
/aaa/BBS.CGI -呼び出し先
同じディレクトリへ入れてるのが原因なのでしょうか。
それとも普段はphp5を使っていましてこれはphp4特有の仕様か何かでしょうか。
よろしくお願いします
>>114 帰ってきたソースってHTMLソースじゃないよな?
file関数使ったらもちろんソースが帰ってくるぞ。
取ってきたものをどうしたいんだ?表示したいのか保存したいのか?
<?php
function myfunc( ) {
// あーだこーだ
return ( 0 );
}
$pid = pcntl_fork();
if ( $pid == -1 ) {
die( 'could not fork' );
} else if( $pid ) {
// 親
pcntl_waitpid( $pid, $status, WUNTRACED );
} else {
// 子
$r = myfunc( );
exit;
}
if( $r == 0 ) {
// 成功
} else {
// 失敗
}
?>
>>104 こんな感じの処理で、最後のifで$rの値を見て処理を分けたいけど、
$rは空になってしまってるんですよ。
そういうもんなんですか?
104じゃなくて
>>106 でした
104=116です
>>116 返値に関係なくexit; で終わってる気がする
>>118 exit は子を終わらせてるだけで、
その後はifの方にいくんですが、
「未定義の変数つかってんじゃねーよ」って怒られるんですよ。
子の中だと$rに0が入ってるのは確認できるんです。
ローカルサーバーではちゃんと動作するのに、 アップしたサーバーで動作すると動作が変なのです。 ちゃっとセッションが保存されないみたいなのですが、これは問い合わせた方が良いですかね?
121 :
120 :2006/07/09(日) 20:37:34 ID:NEYaW9zv
セッションは4.4.2と5.1.4で仕様変更とかありました?
>>114 ん?前者ならファイルの内容そのものを取得する機能だから
CGIとして実行されないでソースが表示されるのは当たり前。
>>119 親プロセスが返された場合
pcntl_waitpid( $pid, $status, WUNTRACED );
で$rは何も定義されていない
子プロセスの場合
$r = myfunc( );
exit;
でexit;しているからif($r==まで到達しない
じゃね?
>子の中だと$rに0が入ってるのは確認できるんです。
てのはexit;前での確認だよな?
状況説明は他人にわかるようにね。
124 :
nobodyさん :2006/07/09(日) 21:48:38 ID:QrRy9B/E
よろしければ解説おねがいします。 <?= $a ?> の<?= とはどういう意味なのでしょうか? ぐぐり方が悪く 全然見つかりません。
特に意味はないはずと思う そんな書き方もできるよっていう程度 <?php echo $a; ?>と同じ
126 :
124 :2006/07/09(日) 22:00:26 ID:QrRy9B/E
>>125 迅速な回答ありがとうございました。
echo や printで試してみます。
127 :
nobodyさん :2006/07/09(日) 22:24:52 ID:apK+YZH4
$msgには文字列が代入されているとします。 文字列が長すぎる(例えば700文字を超える)場合の処理は、mb_strlen () で長さを計るしかないのでしょうか? if (mb_strlen ($msg) > 700) { $err_msg = "長杉"; } もっとベターな方法があればお願いします。
Registered serializer handlers [ php php_binary wddx ] というのは何でしょうか? ローカルサーバーにはあるのですが、レンタルサーバーにはありません
>>127 基本的な発想はそれしかない
文字列の長さを調べる関数は少なくとも3つ
strlenとmb_strlenとmb_strwidthがあるけど
どれを選ぶかはケースバイケースだね
131 :
nobodyさん :2006/07/09(日) 23:08:30 ID:vjWeIelg
(例)$_POST["abc"]の値を削除するにはどうすればいいでしょうか?
>>128 マニュアルのセッションのページに書いてあるよ。
簡単に言うと、どういう形式でセッション情報を保持するかを指定するためのもの。
>>89 >>93 カメで申し訳ありません
ありがとうございます
お二人に指摘いただいたものでがんばってみます
134 :
nobodyさん :2006/07/10(月) 08:05:28 ID:pIRoiH69
135 :
nobodyさん :2006/07/10(月) 09:20:16 ID:DXTeExGF
>phpの場合は、内部エンコーディングがUTF-8になっているので、 >明示的指定がなければ文字化けすることはあります。 >エンコーディングを指定してください。 と言われたのですが、どうやって指定すれば良いのでしょうか?
>>135 何をしようとして、そういわれたのかがわからないが
php.iniの設定を変えれば、もしかしたら、君が望む結果が得られるかも
SJISで書いて文字化けしているだけではないかな
138 :
135 :2006/07/10(月) 10:14:35 ID:DXTeExGF
>>136 すみません、サーバーにアプロードして、
セッションに格納すると文字化けするのですよ。
それを報告したらそのような返答が返ってきました。
どうにかして、エンコーディングを指定する方法はないのでしょうか?
色々あるよ
140 :
nobodyさん :2006/07/10(月) 13:20:37 ID:pIRoiH69
.hなんとか
141 :
135 :2006/07/10(月) 14:35:25 ID:Q6XjtIhe
今学校から帰ってきました。
>>139 良かったら教えていただけませんか?
.htaccessは使えないみたいです
142 :
軟式PHP :2006/07/10(月) 15:51:50 ID:???
ini_setは?
143 :
135 :2006/07/10(月) 15:56:12 ID:Q6XjtIhe
>>142 実行中に適用させるのですよね。
ini_set("internal_encoding","sjis");
と書くだけで良いのでしょうか?
145 :
135 :2006/07/10(月) 16:01:17 ID:Q6XjtIhe
mbstring.detect_order 「no value 」「no value 」 mbstring.encoding_translation 「On」「 Off 」 mbstring.func_overload 「0 」「0 」 mbstring.http_input 「auto」「 pass 」 mbstring.http_output 「SJIS」「 pass 」 mbstring.internal_encoding 「SJIS」「 no value 」 mbstring.language 「Japanese」「 neutral 」 mbstring.substitute_characte 「no value 」「no value 」 何を変更して良いのかちょっとわからないです・・・。
>>145 学生って何学生だ? もうちょっと人に伝えよう・理解してもらおうと努力しーや。
> 何を変更して良いのかちょっとわからないです・・・。
知らんがな。
>>138 の
> どうにかして、エンコーディングを指定する方法はないのでしょうか?
に答えただけやがな。
そもそも
>>138 の
> セッションに格納すると文字化けするのですよ。
の解決策はそれで合っているのか自分で考えたか?
147 :
135 :2006/07/10(月) 16:30:53 ID:Q6XjtIhe
セッションに文字を格納すると文字化けする これを直したいだけなのですが、どうしていいかわからずさっぱりなのです。
148 :
asa :2006/07/10(月) 16:33:32 ID:my/rgI9c
ファイルダウンロードについて教えてください。
メールにあるURLを記載し、そのURLをクリックするとファイルをダウンロードできるというものを作成したいと思っています。
(urlは
http://www.hoge.com/moe/download.php?file_no=1という感じです )
しかし条件として、ブラウザを画面上に表示させないという制約があります(瞬間的に表示されるのはOKです)。
現在、下記のソースでファイルダウンロードを実行すると
1.IDが立ち上がる
2.ファイルダウンロードするかの選択ダイアログの表示される
3.『保存』を選択するとファイルはDLさせるが、IEの画面がそのまま残り
『取り消されたアクション Internet Explorer は、要求された Web ページにリンクできませんでした。
要求された Web ページは現在、利用できない可能性があります。 』という画面になる。
という流れになります。
ここで3)において、エラー(?)が表示されたブラウザを
閉じさせるということはできますでしょうか。
zipやlzhは、IEが一瞬だけ表示されすぐに消え理想的な動作をするのですが、
txt,pdf,docなどはIEが開かれたままになってしまいます。
わかるかたがいらっしゃいましたら
ご教授お願い致します。
$file_name="/usr/local/docs/hoge.txt";
$len = filesize($file_name);
//ファイルタイプにより処理を変更
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Content-Disposition: attachment ; filename=\"".basename($file_name)."\"");
header("Content-Length: ". $len);
header("Content-Type: application/octet-stream");
readfile($file_name); // ファイルを読み込んでHTTP出力
exit;
環境Linux9PHP4
>>147 それだけじゃ分からない。
文字化けする時は PHP ファイルの文字コードとか諸々の情報を提示しないと。
こんなやりとりが延々続くんだろうな…
自作のプログラムでapache_request_headersの結果得られる リクエストヘッダを取得する処理をしていました。 サーバを移行して、cgi版PHPになりました。 apache_request_headers以外でリクエストヘッダを獲得する方法ってありますか?
>>150 取得したいフィールドによるんじゃないかと。
152 :
135 :2006/07/10(月) 17:12:42 ID:Q6XjtIhe
>>149 お付き合い頂ければ幸いです。
各種PHPの保存する時の文字コードも関係するのですね。
Dreamweaver8で、デフォルトで保存しているのですが、どうやって調べれば良いのでしょうか?
153 :
150 :2006/07/10(月) 17:14:01 ID:???
AUの携帯ブラウザで ゲートウェイサーバから送信されるx-up-subnoフィールドです。 $_SERVERにも$_REQUESTにも引っかからないので さあ困ったなぁと。
154 :
135 :2006/07/10(月) 17:16:26 ID:Q6XjtIhe
すみません、ありました、 初期設定がシフトJISで、コードの方は全然いじっていません。 サーバーはUTS-8を使っているらしいので、設定をそれにして上書きすれば大丈夫ということですね?
>>153 HTTP_X_UP_SUBNO にも出ないんだ?
156 :
150 :2006/07/10(月) 17:28:02 ID:???
>>153 マジ感謝。$_SERVER["SERVER"]で出ました!
>>154 確認はいいから、つべこべ言わずやってみろや。
やる前に聞いたって無駄なんだよ。
青山君今度はこっちで聞くことにしたのかね?
159 :
135 :2006/07/10(月) 17:30:02 ID:Q6XjtIhe
チャレンジしてみたところ、 サーバーに上げると何も表示されなくなってしまいました。 UTS-8ではダメみたいです。 真剣に行き詰りました・・・
UTS-8ならそうなるのは当たり前
162 :
135 :2006/07/10(月) 17:36:57 ID:Q6XjtIhe
すみません、UTF-8です。
こうなると、スクリプト内は実際どうなってるのか疑問になる。 言われたことも間違ってやってそうな…
>セッションに文字を格納すると文字化けする うそっぽーい 自分で問題を絞り込むことができないから、こういう文章に なるんだな。 だいたい、こういう表現するやつに限ってセッションなんて 全く関係ないところでボンミスしてるにきまってる。 日本語使わなければ化けないだろうから即解決だよ。 それでいいじゃん。
165 :
135 :2006/07/10(月) 17:51:50 ID:Q6XjtIhe
$_SESSION['name'][$_GET['id']] = "アイウエオ"; echo $_SESSION['name'][$_GET['id']]; 出力すると文字化けします
166 :
164 :2006/07/10(月) 17:54:19 ID:???
echo "アイウエオ" でも化けてるんじゃないのー
167 :
135 :2006/07/10(月) 17:57:09 ID:Q6XjtIhe
>>166 「あああ」⇒「あああ」
「・・・」⇒「/font>」
.
>>167 下の例の意味が分からん。
言いたいことをちゃんと伝える努力をしなさい、ってさっき言ったでしょ。
169 :
135 :2006/07/10(月) 18:02:20 ID:Q6XjtIhe
すみません、上記のように文字化けするということです。
170 :
164 :2006/07/10(月) 18:02:34 ID:???
はぁ? 何が言いたいのか全く意味わからんぞ・・・ それで伝わるとおもってるのか?俺はエスパーか? ていうか、 echo "アイウエオ" で化けるのか?化けんのか? 俺が言ってることは伝わってるのか? あんたは宇宙人か?
171 :
135 :2006/07/10(月) 18:06:26 ID:Q6XjtIhe
>>170 すみません、アイウエオでは文字化けしません、
172 :
164 :2006/07/10(月) 18:10:23 ID:???
>> 165 の確認なんだが・・・ <?php $_SESSION['name'][$_GET['id']] = "アイウエオ"; echo $_SESSION['name'][$_GET['id']]; ?> では化けて <?php echo "アイウエオ"; ?> は化けないってことか? じゃぁ、 <?php $_SESSION['name'] = "アイウエオ"; echo $_SESSION['name']; ?> これは化けるのか?化けんのか? <?php $aaa = "アイウエオ"; echo $aaa; ?> これは化けるのか?化けんのか?
とにかく文字コードの情報が欠如している。 ・PHP から出力される HTML の文字コード ・HTML にて指定されている文字コード ・PHP スクリプトの文字コード はどうなっているのか、と。 内部エンコーディングの問題以前に、上記のミスマッチによっては化けるものは化ける。
174 :
135 :2006/07/10(月) 18:18:00 ID:Q6XjtIhe
$_SESSION['var1'] = "12345"; $_SESSION['var2'] = "ABCDE"; $_SESSION['var3'] = "あいうえお"; $_SESSION['var4'] = "管表示線銃"; $_SESSION['var5'] = "ァエオケム"; $var1 = "12345"; $var2 = "ABCDE"; $var3 = "あいうえお"; $var4 = "管表示線銃"; $var5 = "ァエオケム"; 全て正常に出力されました。 なぜ、他のではちゃんと出力されないか疑問です。
中学生だよな? ちょっと滅茶苦茶よ。
>>174 > $_SESSION['var1'] = "12345";
> $_SESSION['var2'] = "ABCDE";
> $_SESSION['var3'] = "あいうえお";
> $_SESSION['var4'] = "管表示線銃";
> $_SESSION['var5'] = "ァエオケム";
これと
> $var1 = "12345";
> $var2 = "ABCDE";
> $var3 = "あいうえお";
> $var4 = "管表示線銃";
> $var5 = "ァエオケム";
これの関連性が意味不明。何を例示しているつもり?
> なぜ、他のではちゃんと出力されないか疑問です。
「他」とは? 「ちゃんと出力されない」とは?
176 :
135 :2006/07/10(月) 18:27:18 ID:Q6XjtIhe
177 :
164 :2006/07/10(月) 18:28:46 ID:???
問題を整理する気あるのか? $_SESSION['name'][$_GET['id']] = "アイウエオ"; echo $_SESSION['name'][$_GET['id']]; を最初の始まりとするなら、 そこから少しずつ(1条件ずつ)簡易なものに書き換えて トライアンドエラーしないと意味無いだろ。 $_SESSION['name'][$_GET['id']] = "アイウエオ"; echo $_SESSION['name'][$_GET['id']]; を基点に原因探ってるのに、 >> 174 には "アイウエオ" が含まれてないのは おかしいだろ? 文字列が"アイウエオ"のときだけ起きる動作不良だったら みつけられないだろうが?
178 :
164 :2006/07/10(月) 18:34:01 ID:???
>> 176 >ローカルサーバーでは実行できるのに、アップしたら文字化けします。 おまえなぁ。。。 最初から質問の仕方まちがってるだろうがぁ!!!!!!!!!!!! ちなみに言わしてもらうなら、 「ローカルサーバでは*実行*できるのに」 ってなんなんだ? 「ローカルサーバでは期待通り文字化けせず出力されるのに」 だろうが? で、丸投げかよ・・・ こいつダメだな。。。
そりゃ
>>164 みたいなやつがいれば誰だって去るわなw
>>135 まぁ、所詮は2chだ、諦めろ
こんなクズはウヨウヨいる
他で聞くんだな
183 :
164 :2006/07/10(月) 20:37:27 ID:???
>>176 何?これを使って自鯖にチャットルームを設置せよとな?
関係ないけどコレ自分で作ったのか?
185 :
135 :2006/07/10(月) 21:07:08 ID:Q6XjtIhe
>>184 はい、全然未熟ですけど
あと、
>>164 さんみたいな方でも教えていただけると嬉しいです。
丸投げなやり方になってしまってすみません。
186 :
135 :2006/07/10(月) 21:08:50 ID:Q6XjtIhe
echo $name."<BR>"; echo $name_color."<BR>"; echo $com_color."<BR>"; echo $px."<BR>"; echo $log."<BR>"; echo $reload_time."<BR>"; $_SESSION['name'][$_GET['id']]= substr($name,0,20); $_SESSION['name_color'][$_GET['id']]= $name_color; $_SESSION['com_color'][$_GET['id']]= $com_color; $_SESSION['px'][$_GET['id']]= $px; $_SESSION['log'][$_GET['id']]= $log; $_SESSION['reload_time'][$_GET['id']]= $reload_time; echo $_SESSION['name'][$_GET['id']]."<BR>"; echo $_SESSION['name_color'][$_GET['id']]."<BR>"; echo $_SESSION['com_color'][$_GET['id']]."<BR>"; echo $_SESSION['px'][$_GET['id']]."<BR>"; echo $_SESSION['log'][$_GET['id']]."<BR>"; echo $_SESSION['reload_time'][$_GET['id']]."<BR>";
187 :
135 :2006/07/10(月) 21:09:27 ID:Q6XjtIhe
この辺りで文字化けが発生するみたいです。 あああ #FFFF00 #00FF00 16 20 40 ・BR># # 1 2 4 このように出力されました。(index.php) まだお答えいただける方がいれば嬉しいです
>>185 ローカルサーバがあるなら、セッション内部に保存されているデータの文字コードを確認しなっせ。
おまいら! DBに認証用のパスワード入れてるのかよ!
190 :
135 :2006/07/10(月) 21:23:38 ID:Q6XjtIhe
>>188 ローカルサーバーでは文字化けせずにスムーズに実行されるのですが、
サーバーにアップロードすると、どうしてもこの部分で文字化けがおきるのですよ
>>190 セッションファイルの中身を確認しろって言ってるの。
192 :
135 :2006/07/10(月) 21:30:57 ID:Q6XjtIhe
はい、tmpですよね。 全て中身は 「a|s:6:"あむろ";b|s:8:"ぶらいと";c|s:10:"きゃすばる";」 というのが書かれていました、
>>192 いや、だから、その文字コードを確認だって。
…え?
195 :
135 :2006/07/10(月) 21:35:44 ID:Q6XjtIhe
すみません、意味を取り違えてました。 SHIFT-JISでした。
どうみてもそのあむろ・ぶらいと・きゃすばるは
前々スレの
>>36 を実行した後の消し忘れです。
本当にありがとうございました。
本当は文字化けなんかじゃなくて、単にセッションに入ってねーんじゃねーの?
PHPのバージョンの違いによる問題だったりしてな 環境依存ってならエンコでもして入れとけば良いだろう
とにかくまずはprint_r($_SESSION)からすべきだと思う。 はっきり言って俺にはこれが文字化けの問題とは思えん。
200 :
135 :2006/07/10(月) 21:56:56 ID:Q6XjtIhe
>>199 //セッションに名前を全角10文字まで入力
$_SESSION['name'][$_GET['id']]= substr($name,0,20);
$_SESSION['name_color'][$_GET['id']]= $name_color;
$_SESSION['com_color'][$_GET['id']]= $com_color;
$_SESSION['px'][$_GET['id']]= $px;
$_SESSION['log'][$_GET['id']]= $log;
$_SESSION['reload_time'][$_GET['id']]= $reload_time;
print_r($_SESSION['name'][$_GET['id']]);
print_r($_SESSION['name_color'][$_GET['id']]);
print_r($_SESSION['com_color'][$_GET['id']]);
print_r($_SESSION['px'][$_GET['id']]);
print_r($_SESSION['log'][$_GET['id']]);
print_r($_SESSION['reload_time'][$_GET['id']]);
と、させてみたところ、出力は
#124
だけでした。
何がなんだかサッパリですorz
203 :
135 :2006/07/10(月) 22:13:39 ID:Q6XjtIhe
>>201-202 すみません、勘違いです
Array ( [log] => 20 2 [name] => あああ [name_color] => #FFFF00 # [com_color] => #00FF00 # [px] => 16 1 [reload_time] => 40 4 [pass] => )
と、出力されました。
中にはちゃんと入っているということは、出力時に文字化けするということでしょうか
アップロードした時点でスクリプトの文字コードが変わってるとかいう落ちだったりしてなw どのみち馬鹿とPHPが使えないのはハッキリしたな
>>203 試しに以下のコードを書いて実行してみたが、
<?php
$name = "0"; $name_color = "1"; $com_color = "2"; $px = "3";
$log = "4"; $reload_time = "5"; $g['id'] = "6";
$s['name'][$g['id']]= substr($name,0,20);
$s['name_color'][$g['id']]= $name_color;
$s['com_color'][$g['id']]= $com_color;
$s['px'][$g['id']]= $px;
$s['log'][$g['id']]= $log;
$s['reload_time'][$g['id']]= $reload_time;
print_r($s);
?>
結果として得られたのは以下だった。
Array (
[name] => Array ( [6] => 0 )
[name_color] => Array ( [6] => 1 )
[com_color] => Array ( [6] => 2 )
[px] => Array ( [6] => 3 )
[log] => Array ( [6] => 4 )
[reload_time] => Array ( [6] => 5 )
)
見て答える気も無い奴が偉そうに断言して自己満足するスレとなりました
PHPを使えないからって拗ねるなよ。
>>203 > 中にはちゃんと入っているということは、
それが本当にprint_r($_SESSION)の結果だとしたら、
$_SESSION[name][$_GET['id']]であるべきものが$_SESSION[name]になってないか?
$_SESSION[name][$_GET['id']]が$_SESSION[$_GET['id']][name]の間違いで
さらにprint_r($_SESSION[$_GET['id']])でも見たならまた別だろうが、
それでも妙なゴミデータがくっついているように見える。
もう諦めて丸投げスレにでも行った方が良いと思う。
210 :
164 :2006/07/10(月) 23:36:16 ID:???
<?php echo "phpversion(): ". phpversion() . "<br />"; echo "php_sapi_name(): ". php_sapi_name() . "<br />"; echo "php_uname(): ". php_uname() . "<br />"; echo "zend_version(): ". zend_version() . "<br />"; echo "<hr />"; echo "get_loaded_extensions(): <br />"; foreach (get_loaded_extensions() as $name) { echo $name . ", "; } echo "<hr />";
211 :
164 :2006/07/10(月) 23:37:33 ID:???
echo "mbstring.language: ". ini_get("mbstring.language") . "<br />"; echo "mbstring.detect_order: ". ini_get("mbstring.detect_order") . "<br />"; echo "mbstring.http_input: ". ini_get("mbstring.http_input") . "<br />"; echo "mbstring.http_output: ". ini_get("mbstring.http_output") . "<br />"; echo "mbstring.internal_encoding: ". ini_get("mbstring.internal_encoding") . "<br />"; echo "mbstring.script_encoding: ". ini_get("mbstring.script_encoding") . "<br />"; echo "mbstring.encoding_translation: ". ini_get("mbstring.encoding_translation") . "<br />"; echo "mb_regex_encoding(): ". mb_regex_encoding() . "<br />"; echo "get_magic_quotes_gpc(): ". get_magic_quotes_gpc() . "<br />"; echo "get_magic_quotes_runtime(): ". get_magic_quotes_runtime() . "<br />"; echo "<hr />";
212 :
164 :2006/07/10(月) 23:38:41 ID:???
$teststr = "あいうえお"; $src_encoding = mb_detect_encoding($teststr, "auto"); echo "mb_detect_encoding(): $src_encoding <br />"; echo "<hr />"; echo "$src_encoding -> EUC-JP: " . mb_convert_encoding($teststr, "EUC-JP", $src_encoding) . "<br />"; echo "$src_encoding -> SJIS: " . mb_convert_encoding($teststr, "SJIS", $src_encoding) . "<br />"; echo "$src_encoding -> UTF-8: " . mb_convert_encoding($teststr, "UTF-8", $src_encoding) . "<br />"; ?>
$arr = range('a', 'z'); array_rand($arr); // return $key array_rand($arr, 1); // return $key array_rand($arr, 2); // return array($key, $key); っておかしくね? 1はarray($key)になってほしくね? 欲を言えばarray_rand($arr, 0)もエラーじゃなくてarray()が返ってくれなきゃ使いづらくね?
値のほうを返してくれるランダム関数はないのかと切に思う
前スレでも書いたんですが、
前スレ900後半で思いっきり誰の目にも触れられずあぼーんしたので
再度書かせてください。
サーバからFTPにログインして、指定のファイルをブラウザに出力、
訪問者にダウンロードダイアログが出るようにしたいんですが、
どんな方法があるでしょうか?
content typeのlocationで直接
ftp://指定すれば 、とレスをいただきましたが、
ftp://をブラウザ経由でしてしまうとパスワードが流れてしまいますし 、
ブラウザの履歴にも残るので、
サーバーからlocalhostにftpに接続して、それをブラウザに出力、
という流れを取りたいと考えています。
この関数使え、とかのヒントでもいいので
教えて下さいませ
「設問者」なのにlocalhost?ftpd・httpd兼用サーバ? そんな奇怪な方法をどういう経緯で選んだのか前スレ読み返しても分からなかった。 無駄なことしてるというのは十分伝わって来るんだけど…
>>215 何がやりたいのかよくわからんからスルーされるんじゃね?
>この関数使え、とかのヒントでもいいので
1.ftp_*()でファイルを取得
2.header()で適切なヘッダを出し
3.readfile()でもして出力
サーバのFTPDにアクセスするのかね?
ファイルがファイルシステムで直接読めるなら
header();
readfile();
でオワリ
どんなヘッダを送るのかとかはphpの問題じゃないので省略。
最近自身をなくしちまったぜ・・・ なぁ、お前ら「良いプログラム」って何だ? PHPは確かにC言語チックな見た目でPerlなんかより全然見やすいコードが書けるけど それでも俺のコードは醜い気がする・・・
>>218 「良い」てーのはそれを見る相手や状況によって違うんじゃないか
xxが良いとかなんか無いの?
それにしても誰に何を言われたんだかw
・読みやすい ・理解しやすい ・再利用しやすい えーとそれから・・・なにがあったっけ?
何が醜いの?見にくいの? 人が理解しにくいとか?
>>145 mbstring.encoding_translation 「On」「 Off 」
これが原因じゃないかと思うけどね
223 :
135 :2006/07/11(火) 08:59:10 ID:BuTz0b5N
おはようございます。
>>222 自動でエンコーディングされるんですよね。
自分のローカルサーバーは両方Onになっています。
これは.htaccessで指定可能なのでしょうか?
224 :
135 :2006/07/11(火) 09:06:23 ID:BuTz0b5N
.htaccessが使えるようになったので、 全て自分の環境と同じにしようと思ったのですが、それは可能なのでしょうか?
226 :
225 :2006/07/11(火) 09:28:40 ID:???
後はマニュアル見て実際に試して見てから質問しろよ。
227 :
135 :2006/07/11(火) 09:34:49 ID:BuTz0b5N
まとめ。
$_SESSIONにはちゃんと変数が格納されている。
$_SESSIONを出力する時に文字化けが起きる。
.htaccessが使える。
エンコーディングはSJIS
phpinfo()⇒
>>145 サーバー管理者に問い合わせたところ、
「phpの場合は、内部エンコーディングがUTF-8になっているので、明示的指定がなければ文字化けすることはあります。
エンコーディングを指定してください。」と返ってきた。
228 :
軟式PHP :2006/07/11(火) 10:01:30 ID:???
230 :
135 :2006/07/11(火) 12:06:43 ID:BuTz0b5N
この鯖ではちゃんと実行できたので phpinfo()で見てみたところ mbstring.detect_order auto auto mbstring.encoding_translation On On mbstring.func_overload 0 0 mbstring.http_input auto auto mbstring.http_output SJIS EUC-JP mbstring.internal_encoding SJIS EUC-JP mbstring.language Japanese Japanese mbstring.script_encoding no value no value mbstring.substitute_character no value no value でした。 .htaccessでこっちと同じ設定にすればいいのかと思ったんですけど、 設定の仕方がわからず、挑戦しても500エラーが出るばかりです・・・。
>>230 まだやってたのか…
「.htaccess PHP mbstring」なりのキーワードでぐぐれ。
phpでスパイダを作りたいと思っています。 何か参考になる書籍やサイトはありませんか? それともperlを勉強しなければ難しいんでしょうか?
234 :
225 :2006/07/11(火) 13:03:18 ID:???
.htaccess に <IfModule mod_php5.c> php_value include_path ".:/usr/local/lib" php_admin_flag mbstring.http_output SJIS </IfModule> とやっていれたら500エラーになりました。
>>75-81 亀レスすみません。
開発者のみなさんは、デバッグコードは不要になったら
コメントアウトするなどしているのでしょうか。
>>235 「.htaccess 500」なりのキーワードでぐぐれ。
それと、
>>231 のぐぐった結果をもう一度ちゃんと読め。
コンパイルするタイプと違いphpスクリプトは完成系でもソースがそのまま残るからねー。 コメントアウトしてソースに残ってもいいというレベルなら、 スクリプト先頭で、 define("CONSTANT", "1"); これをコメントアウトさせる。 あとは IF (defined('DEBUG')){ // こにデバッグコードを書く }
define("'DEBUG'", "1");
>>237 php_value mbstring.http_output SJIS
とだけ1行入れてもエラーでした。
もちろん行末に改行は入れてます。
>>240 少しは自分で考えたら?
必要な情報提供も出来ないんだから。
・回答に必要な情報を出さない ・検索キーワードなどを教えられても検索しない ・参考URLを教えられても見ない ・質問する前に自分で試さない こういった質問者は完全にスルーしましょう 煽りや叩きも不要です 完全に存在を無視して下さい 不必要にレスすると永久ループに陥ります
特殊記号にマッチしたときエラーを返す場合 の正規表現を教えてください。 preg_match使うみたいだけどよくわかりません。。。
245 :
243 :2006/07/11(火) 15:16:58 ID:???
解決しますた。
>>245 自己解決したなら、一応方法も書くと親切だな
信号タイミング修正とはどういう意味か教えて下さい。
249 :
軟式PHP :2006/07/11(火) 15:30:45 ID:???
>>244 もしかしたら、文字コードの設定がおかしいのかも。
ちょっと下のコードを実行して表示されたものをレスしてくれ。
<?php
$strBuff = 'Pj4yNDSky6SipOuk6KSmpMuhoqSzpOykwKSxpOSkw6TGpOKk76SrpOmkzKGjDQqkxKTepOqhorvkpM/Hz7yvpMekoqTroaM=';
$strDec = base64_decode( $strBuff );
header( 'Content-Type: text/html; charset=EUC-JP' );
var_dump( $strDec );
?>
250 :
236 :2006/07/11(火) 15:31:10 ID:???
なるほど、ありがとうございます!
>>247 適宜を「てきせん」と読んでいるのに何故か変換出来ないという人が文章書いたんだろ。
>>251 うむしかしそのページの作者がわざとやっているようには見えない。むしろ天然だろう
253 :
244 :2006/07/11(火) 16:07:38 ID:???
解決しました。 .htaccess では設定できないみたいです。
ローカルでLAMP環境構築して色々開発してたけどプロバイダがOutbound Port25 Blocking始めやがった。 mb_send_mail使えなくなっちまったけど、これはもうどうしょうもない?
256 :
244 :2006/07/11(火) 16:27:42 ID:???
要約すると、 内部エンコーディングとhttp_outputはソース上から設定できるけど、 http_inputは設定できないので、 postやget等から得られたデータを、 てきせんoutputから内部エンコードにmb_convert_encodingする というので解決です。
>>256 > 1. 自分のIDを表示させること。(メール欄には何も記述しないでください)
を守らないのはわざとですか?
貴方をあぼーんしたいのですが、IDがないと登録しづらいのです。
自己弁護でも何でもこれ以上続けるなら、IDを表示させてください。
>>257 本人が解決ですって書いてるからもう解決して何もかかないのでは?
257の発言は皮肉にすぎない
259 :
257 :2006/07/11(火) 17:29:42 ID:???
>258 私も最初はそう思いましたが、今までの流れから考えると、 「煽られる→自己弁護」の繰り返しもあり得るかなと。 ですので、「これ以上続けるなら」と前置きを置いています。 135氏がこれ以上書かないのなら、それに越したことはないんですけどね。
どこが解決したのかさっぱり分からんのだが、 本人がこれで解決だと言ってるんだからもういいんだろう。 これでやっとスレに平和が戻る…。
>>255 誰もコメントしないからしとく。
ISP のメールサーバに転送すれば良いじゃない。
262 :
135 :2006/07/11(火) 18:14:40 ID:BuTz0b5N
>>231 遅レスすみません。
ググって文字コードをSJISにしたのですが、代わりはなかったです。
>>249 自分も試してみたところ
string(71) "
>>244 、ヒ、「、・隍ヲ、ヒ。「、ウ、・タ、ア、荀テ、ニ、筅・ォ、鬢フ。」、ト、゙、遙「サ荀マヌマシッ、ヌ、「、・」"
と表示されました。
try { $_135->teach(); // 失敗するのは分かっているが・・・ } catch (Exception $e) { // $_135->teachAgain(); // 永久ループになるのでやってはいけない throw $e; }
>>262 お前それブラウザの文字化け。
ちゃんとEUCはEUCとして読めよ。
265 :
232 :2006/07/11(火) 18:44:57 ID:???
>>233 やはりperlを勉強しなければならないようですね・・・
教えていただいてありがとうございます。
>>265 おいおい。PHP のサンプルもあるって書いてあったしょ?
まぁ、そうは言うけど、自分も Perl の方が良いと思う。こういう用途には。
268 :
135 :2006/07/11(火) 18:58:19 ID:BuTz0b5N
>>264 ブラウザの文字化けなのですか。
IEでもチェックしてみます
>>266 はい、別人です、
mbstring.detect_order auto auto
mbstring.encoding_translation On On
mbstring.func_overload 0 0
mbstring.http_input auto auto
mbstring.http_output SJIS EUC-JP
mbstring.internal_encoding SJIS EUC-JP
mbstring.language Japanese Japanese
mbstring.script_encoding no value no value
mbstring.substitute_character no value no value
上記の環境でちゃんと動作したので
.htaccessで
php_value mbstring.detect_order auto
php_value mbstring.http_input auto
php_value mbstring.http_output sjis
と指定したのですが、全く変わりません・・・。
サーバー側の問題の可能性はあるのでしょうか。。。
php_value mbstring.internal_encoding sjis
269 :
135 :2006/07/11(火) 19:00:31 ID:BuTz0b5N
>>264 IEでアクセスしたところ、同じ文字化けが発生しました。
タフなやつだな・・・ どこのサーバー使ってるんだ?
271 :
135 :2006/07/11(火) 19:16:00 ID:BuTz0b5N
272 :
135 :2006/07/11(火) 19:22:45 ID:BuTz0b5N
>>249 php_value mbstring.detect_order auto
php_value mbstring.http_input auto
php_value mbstring.http_output EUC-JP
php_value mbstring.internal_encoding EUC-JP
と設定したら
string(71) "
>>244 にあるように、これだけやってもわからぬ。つまり、私は馬鹿である。"
と表示されました。
しかし、他のページが全て文字化けしてしまいました。
全てのページをEUC-JPで統一してみます。
273 :
135 :2006/07/11(火) 19:30:36 ID:BuTz0b5N
コードかえまくってたら元々のファイルが文字化けしてしまったorz これはもうダメかもわかんね
まずは日本語の文字エンコーディングとブラウザの操作法について 勉強し直して来た方が良いと思うよ。
275 :
135 :2006/07/11(火) 19:46:20 ID:BuTz0b5N
サーバーが糞だということがわかりました。 今までお付き合いいただいてありがとうございました。
>>217 おお、readfile()なんて便利な関数があるんでつね!!
試してみます、
ありがとうございます
278 :
255 :2006/07/11(火) 20:04:24 ID:???
>>261 php.iniの
SMTPとかsmtp_portあたりをいじるってこと?
279 :
nobodyさん :2006/07/11(火) 20:12:16 ID:6Oy0SlMx
11 Jul 2006 20:08:20 +0900 これって「ユニックスタイム」みたいな名称あるの?
C++で書かれたライブラリをPHPで読み込むのはsoファイルをextension_dir下に置くだけでよい?
281 :
nobodyさん :2006/07/11(火) 21:24:28 ID:MzBGXnqG
質問です。 あるfunctionを書きまして、その中にはDB接続する処理が含まれています。 DB接続するためのfunctionは事前に書いていたので、そのfunctionの中で使ったら、うまく動きません。 function hogehoge { db();←別に定義されてるDBに接続するfunction 以下続く } こんな感じです。 functionの中でfunctionを使うにはどうすればいいでしょうか? functionは全てスクリプトとは別のファイルに書かれています。 順番的にはdb()を先に書いています。 よろしくお願いします。
>>281 ふつーは使えるよ。
db() の実装がへぼいだけじゃない?
283 :
nobodyさん :2006/07/11(火) 21:39:17 ID:htholvFi
ini_set()を使って、 "always_populate_raw_post_data"をOnにしたいのですが falseが返されてしまい設定できません。 ini_set('always_populate_raw_post_data' , ’On'); PHPマニュアルでは可能だと書かれているのですが…。 PHPマニュアルが間違ってるんでしょうか?
284 :
281 :2006/07/11(火) 21:42:52 ID:MzBGXnqG
すいません、半分自己解決?しました。 DB接続のfunctionはdbの名前とかが引数になっているんですが、 これらも全部function hogehogeに渡したら通ったんですが、 これで合っていますか?一応動くのですが、無駄なことしてそうで自信がないです...。
>>283 最近はなんで出来なかったらすぐ人のせいにするかねぇ…
286 :
281 :2006/07/11(火) 21:48:41 ID:MzBGXnqG
>282 レスありがとうございます。 DB()はDBサーバのアドレスとかの接続に必要な情報と、SQL文を一つを引数で渡して、その結果セットをreturnするというものなのです。 引数は全部で5個あるのですが、それを全部function hogehogeの引数に加えたら一応動作しました 挙動としては普通というか当たり前なのかもしれませんが、実装方法としてはあまり効率良くないでしょうか?
exam=COMPUTERSYSTEM&num=50GET to /~hoge/end.html not supported. Invalid method in request exam=COMPUTERSYSTEM&num=50GET /~hoge/end.html HTTP/1.1 とエラーコードがでます。 COMPUTERSYSTEMという文字列をポストして、それに合致するデータがDBに 無い場合は、end.htmlにheader("Location end.html")により 飛ばすようにしているのですが。 headerはpostのときのヘッダが残っていてLocationがくっついて、そんなヘッダ変だよとなって しまうのでしょうか。
>>287 いまいち何がなんだか分からんが、Location ヘッダには絶対 URL を指定しなければいけません。
>>283 PHPマニュアルを疑う前に自分を疑え。
百年早いわ。
291 :
nobodyさん :2006/07/11(火) 22:22:00 ID:s/pPSXDE
まずは〜について勉強し直してきた方が良いよ っていうの禁止にしません? つまんないしうざいだけ。 的を射たのはあるけどほとんどはずしてるし
的を得る
当を得る
>>291 お前が代わりに正しく導いてやれば良いだけのことじゃないか。
勝手に変なルールを作られてもつまんないしうざいだけ。
uniqidでもcryptでも、出てきた文字をsubstrで切り取ればいいのでは。 同じものが出る確率なんて0みたいなもんだ
297 :
nobodyさん :2006/07/12(水) 00:12:05 ID:67ROEMVu
変数名を動的に指定したいのですが可能でしょうか? 変数名を渡して値を取得する関数を作成しようとしていますが 方法がわかりません。。。 つぎのような感じの関数を作ろうとしています。 function getValue($variable) { $hoge_data = simplexml_load_file('hoge.xml'); return $article->$variable; }
なんと! PHPでは変数を使って変数を指定することができるのです。 $a = "hage"; $b = "a"; print ($$b);
>>296 プロセスIDと時間を組みあせる方法でも、まあ同じ値になることはないだろう
300 :
nobodyさん :2006/07/12(水) 01:01:27 ID:IbIRSqg8
PHP串ごしに画像掲示板に画像をUPしたいのですが テキストは送信できても画像がアップできません socketで送信するときのContent-Typeなどのかき方が悪いと思うんですが 画像はどうやって送ればいいんですか?
>>300 今のソース見せれ。
ちゃんとマルチパートを組み立ててんの?
$a = getValue('aaa'); とかやるくらいなら $a = $article->aaa; ってやりゃいいじゃん。
303 :
nobodyさん :2006/07/12(水) 01:22:40 ID:IbIRSqg8
>>301 画像は$upfileにパスが入ってます
こんな感じで送ってます
$length = "Content-type: application/x-www-form-urlencoded\n";
$length .= "Content-Length: ".strlen($buffer)."\n";
$gazou = "Content-Type: image/jpeg\n";
$gazou .= "Content-Length: ".filesize($upfile)."\n";
//socketで送るデータ
$dat = "$method $path HTTP/1.0\n";
$dat .= "User-Agent: $agent\n";
$dat .= "Referer: $d_ref\n";
$dat .= "Host: $host\n";
$dat .= "Connection: close\n";
$dat .= "$length\n";
$dat .= "$buffer\n\n";
$dat .= "$gazou\n";
$dat .= "$upfile\n\n";
>>303 …multipart/form-dataって知ってる?
>>302 単なる変数参照じゃなく前後に処理を挟みたいと思ったらメソッドがいるだろう。
298じゃだめなの?
.htaccessで設定したあと、それを変更できているか確認する方法はありませんか?
何を設定したんだい
Fatal error: Cannot unset string offsets in これはunsetできなかったってことですよね? なぜunsetできないのですか?
310 :
nobodyさん :2006/07/12(水) 03:55:24 ID:IbIRSqg8
>>304 独学なのでさっぱりでした
調べてみましたが
Content-Disposition: form-data; name="message"
こんな感じで送ればいいのでしょうか?
>>309 エラーだけ示されてもわかる訳ないでしょ?
昨日テストで答えが間違ってますって言われたんですが、どこがおかしいのでしょうか?
って言われて何と答えるよ?
掲示板スクリプトに書き込み内容のプレビューを付けようと思ってます。 フォームから受け取り、プレビューを表示した後の処理で、 プレビューのフォームにhiddenで内容を埋め込むか、セッションを使おうと 思ってますが他になんか良い方法ありますか?
>>314 プレビューにAjaxなんかいらんだろう。
そのデータはクライアント上にあるってのに。
>>283 PHP4.1.0-4.2.3なら可能
それ以降のバージョンでは出来ない
そっとしといてやれ。覚えたての知識をひけらかしたいだけだろう。 Ajaxが一体どういうものかも知らず、JavaScript=Ajaxと覚えてるだけとかな。
>>279 RFC****のdate formatとか
319 :
244 :2006/07/12(水) 08:33:55 ID:???
>>257 煽られたのでまたきました。
256 244 sage 2006/07/11(火) 16:27:42 ID:???
257 nobodyさん sage 2006/07/11(火) 17:10:33 ID:???
私が解決しましたと書き込んでから40分間以上書き込んでない状況に対して、
「これ以上続けるなら」とはどういう了見ですか?
まるであなたが話しをひっぱって続けているようにしか見えません。
322 :
312 :2006/07/12(水) 08:57:58 ID:???
>>313 d
今回はセッション使う事にしました。
コメントスパムツール対策にもなりそうなので
携帯もあるのでjsはパスです。書いとくべきでしたね。
>>320 反応するとまた書き込んでくるから、何も書かない方がいい。
反応さえしなければ無害だ。
多分お前の書き込みになにかレスしてくるぞ。
>>313 どっちがいいんですかね。
Webアプリ作るときいつもそれで迷いますね。。
>>323 にて、「多分お前の書き込みになにかレスしてくるぞ」
と、320にレスしてくるのを予言されたので、レスせざるをえませんでした。
>>320 誰にでもミスはあるんだ。だからミスを責めることはできない。
327 :
nobodyさん :2006/07/12(水) 12:11:09 ID:/vjOPwv1
mb_ereg_replace()を使用して、URLを<a>タグに置き換える処理を作っています。
そこで、URLの判別に次のようなルールの正規表現を作りたいんですが、なかなかうまく行きません…。
・URLを判定する正規表現
・ただし、「 :;」が含まれている場合は許可しない。
URLを判別する正規表現というのは、
(
http:|https: )(\/\/[-_.!~*\')a-zA-Z0-9;\/?:\@&=+\$,%#]+)
で行ってるのですが、「 :;」を除外できません。
どなたかご助言頂けるとありがたいです。
329 :
297 :2006/07/12(水) 12:42:04 ID:67ROEMVu
>>298 ありがとうございます。
そのまんま「$hoge_data->$variable」でよかったのですねorz
# $article を $hoge_data に置換し損ねていましたorz
330 :
nobodyさん :2006/07/12(水) 13:45:17 ID:xb5eEiQB
DB::connectの「::」ってなんですか?
>>330 特に必要ない、見やすいようにしてるだけ
DBconnectでも大丈夫
>>330 クラスとそのメンバを繋ぐ記号。
DBクラス内にある、connect という関数を実行せよということだな。
334 :
nobodyさん :2006/07/12(水) 13:53:19 ID:xb5eEiQB
「->」と「::」の違いはなんですか?
>>334 特に違いはない、気分で変えるだけ
m9(^Д^)でも大丈夫
注意しなければならいのが、 -> との違いだ。 Foo クラス内の、 func() という static関数を呼び出すときは、 Foo::static だが、 $foo = new Foo(); としたクラスからメソッドを呼び出すときは、 $foo->myFunc(); となる。これは、 $foo は作成されたオブジェクトの参照値(リファレンス)であり、 -> という記号は、デリファレンスすることをあらわす。
ここで質問するよりマニュアル読んだ方が多分早くて正確。
>>336 ようするにstaticな関数を呼び出したいときにつかうんですね。ありがとうございました。
>>333 2chの情報を鵜呑みにすんなよ・・・
金貰ってるわけじゃないから嘘言っても詐欺とかにならないんだぞ
名誉毀損とかなら別だが・・・
340 :
nobodyさん :2006/07/12(水) 16:12:26 ID:hqxdU0Dg
PHPを使って、 他のサーバにあるquicktimeファイル(.movとか)のサイズ(縦・横)を取得することは可能でしょうか? もし可能なら、教えてください。
可能
342 :
nobodyさん :2006/07/12(水) 16:38:42 ID:hqxdU0Dg
PHPを使って、 他のサーバにあるquicktimeファイル(.movとか)のサイズ(縦・横)を取得することは可能でしょうか? もし可能なら、その方法を教えてください。
>>342 可能。
quittimeファイルを読み込んで構造を解析して、縦と横のサイズを取得すればおk。
PHPを使って、 他のサーバにあるquicktimeファイル(.movとか)のサイズ(縦・横)を取得することは可能でしょうか? もし可能なら、その方法を教えてください。
可能。まずはサイズ小さめのmovファイルをメモ帳で開け。
347 :
nobodyさん :2006/07/12(水) 18:29:01 ID:BdFa9tBW
PHPを使って 指定したurlからhtmlソースを取得するAPIなどはありますでしょうか? ありましたら、そのAPI名を教えてください。
PHP を使って…、が流行ってるな。
>>347 最近見た話題なので、ログを一通り読めばあるはず。
349 :
nobodyさん :2006/07/12(水) 18:36:07 ID:BdFa9tBW
>347ですが、>348さんありがとうございました。
関数じゃなくてAPIでいいんか? それならPHP APIなんていいんじゃね?
351 :
nobodyさん :2006/07/12(水) 18:41:03 ID:BdFa9tBW
>350さん すみません。質問の仕方が悪かったです。 APIではなく、関数教えて頂けませんでしょうか?
セッションに文字列をキーとして値を代入すると 次のページで保存されてないのは仕様ですか?
間違えた、文字列ではなくて数字です
察してやれよ。
355 :
nobodyさん :2006/07/12(水) 20:44:26 ID:BdFa9tBW
「abcdefghijk」から「cdef」の文字列を取得する実現方法を 教えて頂けませんでしょうか?
くだらん質問ばかりするなよ 自分で考えろ
357 :
nobodyさん :2006/07/12(水) 21:11:44 ID:bxIkUHnK
俺様は優しいから教える substr ("abcdefghijk", 2, 4);
>>355 その質問は明らかに悪い
何がしたいのかがわからない
元データがはっきりとわかっていて、取得する文字列もはっきりとわかっているのなら
$foo = "cdef";
とか書かれても仕方ないぞ
全くだ。 「n桁目〜m桁目までを取り出したいんです」 なのか 「bからgまでの内容を取り出したいんです」 なのか 「cdefって文字があったら取り出したいんです」 なのか、まったくさっぱり。 きみたちゃ小学生レベルかと・・・
361 :
nobodyさん :2006/07/13(木) 00:38:26 ID:4CgVM/D8
レンジリクエストって言葉分かります?
>>361 PHP関係ないね。Apache辺りのWEBサーバーのスレ行ってみれば?
>>361 まずククレカレー。チキンラーメンはそれからだ。
367 :
nobodyさん :2006/07/13(木) 18:03:28 ID:4QScch9z
チキンラーメンうめーよ。
368 :
148 :2006/07/13(木) 18:58:37 ID:???
>>148 スレ違いだとは思いますが、開発言語がPHPなのでここで質問させてもらいました。
問題を解決するためにどのような情報(header関係だとは思うんですが・・・)を調べればいいのかわかりません。
ヒントだけでもいいのでどなたかわかる方いましたら宜しくお願いします。
この糞暑いのにチキンラーメンなんかくってられっかよ!
ファイルごとやディレクトリごとにアクセス権限が違うような 状況を想定しているのだろうな
>>372 それだとCookie無効時に不具合が生じるんじゃ?
セッションデータにユーザレベルなり何なりを組み込んで
そっちで判断した方が良いんじゃないかと思うが。
>>375 > それだとCookie無効時に不具合が生じるんじゃ?
あ"? そんなの /a/ と /b/ で分離するとかしないとかに関係ない話じゃん。
そもそも Cookie が無効でもセッション情報が扱えるように
URL に ID 付与とかあるわけで、今回の話題と何の関係が?
あの・・・素人にも分かりやすいように解説してください
ごめん。 × 補完 ○ 保管
おーなるほど。そいつはごめん。
384 :
369 :2006/07/13(木) 22:16:38 ID:???
>>369 です。
皆さんのご意見を参考に、セッションデータに格納するログイン判定用のデータを、
ディレクトリ毎に変えてみたら上手くいきました。
以下のような感じです。
$_SESSION['loginOK'] = "a-logined"; //「a」でログイン成功時に格納するログイン済みフラグ
$_SESSION['loginOK'] = "b-logined"; //「b」でログイン成功時に格納するログイン済みフラグ
今回のような事例に関しては、意外と気付かないでいる人も多いのではないでしょうか?
同じドメインでディレクトリやサブディレクトリ毎に別のWebアプリを置いていて、
ログイン判定データが同じだったら全部のログイン認証が筒抜け・・・というのは盲点でした。
一種のセキュリティ・ホール(?)になりうるので、このスレのテンプレにも入れたらいかがでしょうか?
385 :
nobodyさん :2006/07/13(木) 22:25:36 ID:dYQP4E5n
<form action="<? $_SERVER['PHP_SELF'];?>" method="post" enctype="multipart/form-data" name="form1" id="form1"> <label> <input type="file" name="upfile" size="35" /> </label> <label> <input type="submit" name="Submit" value="送信" /> </label> </form> <? if($_POST['Submit'] == "送信"){ echo $_POST['upfile']: } ?> アップローダーを作ろうと思っているのですが、 上記のようにしても、upfileには何も格納されないのです。 どうすれば格納されるようになるのでしょうか?
386 :
369 :2006/07/13(木) 23:03:37 ID:???
追記です。
さらに実験してみたところ、
仮にログイン判定用のセッション・データ(
>>384 で書いたログイン判定フラグ)が全く同じ場合でも、
session_name('a');
session_name('b');
などのようにsession_nameをディレクトリ毎に分けて設定する(毎回session_startの前にコールする)という方法でも
大丈夫だということが分かりました。
当たり前のように $_SESSION["siteA"]["色んな情報"] = ... $_SESSION["siteB"]["色んな情報"] = ... ってやってたけどこれじゃ何か問題あるの?
テキストファイルの最後の行1行だけ削除したいんですが 一度、全ての行を、変数にいれて、 最後の行だけを除いて、保存するというやり方しかないんでしょうか? テキストファイルがでかくなるとメモリの消費が辛いんですが、変数を節約するいい方法を教えて下さい
>>389 1行のデータ量が決まってるならシークしてやればいいがそうでないなら無理。
DB使え
>>389 やりようはあるよ
ftellで場所を記憶しながらfgetsで取得していって
最後にftruncateでいける。
行の長さがある程度予想つくならば、最初にfseekしてパフォーマンスを上げられる。
>>389 最終行の先頭位置さえ分かればftruncate()で以降を削除できる。
最終行の位置を探すには
1.頭から1行ずつ読み込んでいって行末のftell()を保持しながら最後まで探していく
2.fseek()でファイル末尾に移動して1文字ずつ後ろから読み込んでいって1つ前の行末を探す
3.fseek()でファイル末尾から1行以上の分量だけ戻った位置に移動してそこから行単位に読み込む
などのアルゴリズムが考えられる。
3番は1行の最大長が分かってる場合は比較的有効。これが全然不明だと
100バイト戻って探索→ダメだったらさらにもう100バイト戻って…みたいになって大変。
この辺は対象ファイルのでかさなどからどこまで手間をかけるべきかを自身で判断しる。
処理時間は問題にならず単に消費メモリ量だけの問題なら1番で十分対応できる。
この種の末尾削除処理が頻繁に発生するなら、そもそもファイル書き込みの段階で
各行の先頭位置をインデックスファイルとして別途保存するか
そもそもファイルなんてやめてDB使った方がいい。
>>389 あと、全部丸ごと変数に入れなくても、
1行読み込み→その行を別のファイルに出力
というのを行単位に繰り返していって、
最後に元ファイル削除&別のファイルをリネーム、
って手順でも単純ながらメモリはほとんど食わずに処理できる。
でも、分量が多いならftruncate()の方が処理が軽いけどね。
394 :
nobodyさん :2006/07/14(金) 04:07:43 ID:rjc2oM/K BE:208593465-#
マルチバイト文字をsjisコード(8進)に変換したいのですが、 どうやればいいでしょうか? "あ" を "202 240" "犬" を "214 242" というふうにです。 ご存じの方がいればよろしくお願いします。
>>394 $c = "あ";
$o = decoct((ord($c{0])) . " " . decoct(ord($c{1}));
echo $o;
>>384 、
>>386 言われてみて自分の管理してるサイト調べてみたら、
別々のシステムなのにログイン情報(セッションファイル)が共通になってた…orz
398 :
nobodyさん :2006/07/14(金) 11:50:58 ID:uuZ6ZGyp
$fp=fopen("test.txt","w"); fwrite($fp,'こんにちわ'); fclose($fp); 上記のようにファイルを作成する際に、 文字コードをUTF8に指定するには どう記述すればいいんでしょう???
>>398 「こんにちは」が UTF8 になっていれば UTF8 になる。
ファイルに文字コードという属性はない。
fwrite($fp, mb_convert_traditional('こんにちわ', 'UTF-8', '内部エンコード'));
401 :
394 :2006/07/14(金) 12:26:35 ID:???
>>395 ありがとうございました。後で試してみます。
それで、逆を聞くのを忘れていました。
"202 240" を "あ"
"214 242" を "犬"
というパターンです。よろしくお願いします。
ごめん。「ord」の方だった。
405 :
nobodyさん :2006/07/14(金) 12:56:23 ID:Gr8Njl8B
マルチバイト文字列関数で正規表現の検索を行う場合、 内部エンコーディングって何が適当ですか?
EUC-JP
407 :
nobodyさん :2006/07/14(金) 13:52:59 ID:mRNg6YQD
SJIS
UTF-8 例外が少ない
>>405 そのサーバで使えるならUTF-8が安定してていいと思う
使えなきゃEUC-JP
Shift-JISはカタカナのソとかで面倒だから使わない方がいい
ちなみにコレはPHP書くときの文字コードの話ね
正規表現使うときはデータに合わせて正規表現の文字コードを指定するよろし
PDOを継承したクラスHogePDOにて、DB1への接続に失敗したら DB2へ接続するといった処理を行わせようとしているのですが、 HogePDOのコンストラクタでPDOのコンストラクタを2回呼び出し ても問題ないでしょうか? class HogePDO extends PDO { //DB1接続挑戦 parent::__construct(DB1の設定); if( DB1接続失敗? ) { //DB2接続挑戦 parent::__construct(DB2の設定); } }
412 :
nobodyさん :2006/07/14(金) 16:55:10 ID:EKwqojz9
//www.sanseido.net/
あるけど有料しかねえよなあ、海外であったとしても日本語はサポートされてないだろうし てことで三省堂しか選択肢ないんじゃないかな
415 :
nobodyさん :2006/07/14(金) 17:35:29 ID:LYbOhGxK
Win2k+Apache2.2+PHP5.1.4で環境作ろうとしているのですが、
こういうのを参考にインストールしてみました。
http://www.bnote.net/windows/windows/win_php.shtml Apacheのhttpd.confの
LoadModule php5_module c:/php/php5apache2.dll
があると、Apacheが起動しません。
これをコメントアウトするとApacheが起動できて、htmlは見れます。
PHPはコマンドライン版は動くのですが、
起動しない理由のヒントをください。
417 :
415 :2006/07/14(金) 18:02:38 ID:???
>> 416 おおありがとう! > 注2)apache_2.x.x系は、今回は使用しません。 > PHP4とApache2の組み合わせは現時点ではお奨めできません。 PHP5を使いたいのにっ _| ̄|○ Apache2.2か!?Apache2.2がだめなのか!?
418 :
nobodyさん :2006/07/14(金) 19:41:12 ID:vYtz7wst
$lines = file($filename); をした後で、$linesにhogeという文字が入っている行のみを見つけ出すには どうすれば良いですか?正規表現を使うのかなぁという気がするのですが 正規表現を使った経験がなく、どうしたらよいのか方法を教えてください。
foreach ($lines as $line) { if (preg_match('/hoge/', $line)) { print("Hit!!\n"); } }
>>418 この質問、かれこれ10回近く見るぞ
釣りか?
421 :
ぬこえもん(=・ω・) ◆S715eQBvs6 :2006/07/14(金) 20:25:24 ID:Rg3ieVQg
どんどん語句に関する情報を追加していく辞書ツールみたいのをPHPで構築しようかと思ってるのですが 辞書順に配列するために何かよいアルゴリズムは無いでしょうか??
>>421 語句の格納先はDB?それともテキストファイルとか?
それとも独自のバイナリ?
htmlにアクセス解析を埋め込みたいのですが、 iframeを使うとリンク元がそのページになってしまいます。 何か良い方法はないのでしょうか? (スレ違いならすみません。)
425 :
ぬこえもん(=・ω・) ◆S715eQBvs6 :2006/07/14(金) 20:53:09 ID:Rg3ieVQg
>>422 ごめんなさい、言い忘れてました
テキストファイルだとかに生ファイルとして書き込みしようかと考えています。
それだとソフトウェアで再生することもできますし。
DBではこんなこと考えなくてもいいのかもしれませんね
>>424 ありがとうございます。
試してみたところ、カウントされる様子はないのですが・・・
>>425 textだとまず該当する語句がそのファイル内にあるかどうかの
真偽を判定しなきゃならんが、語句の数が多くなってくるとPHP標準の
関数で配列とかに読み込むとメモリ食うし、ソート処理も時間かかる。
DBにまかせた方がベター
どうしてもtextでやるんなら力任せ検索で真偽判定して偽であれば追加、
っていうのが面倒くさくなさそう。Boyer検索とかもあるけど。
>>423 リファラが欲しいなら、JavaScriptを使って
画像なりを出力するサーバースクリプトに引数として渡して呼び出すか
HTMLをPHPとして実行できるように設定するかの
どちらかかな。
429 :
426 :2006/07/14(金) 21:18:30 ID:???
ちなみにタグは <img src="./count/count.php" width="0" height="0" />です。
430 :
ぬこえもん(=・ω・) ◆S715eQBvs6 :2006/07/14(金) 21:50:14 ID:Rg3ieVQg
>>427 そうですか・・・・
やっぱりそれしかないのですね・・・・
構築できたらそれだけでDBソフトとして利用できそう
431 :
nobodyさん :2006/07/14(金) 21:53:15 ID:3oB/DzeI
え?何でiframeとか使うの?
>>430 ・単語単位にファイルを作る
とか
・記録は登録順にしておいて各単語の順番を保持するindexを作る
とか
・1行の長さを固定にするか行の位置をindexに記録しておいて自由に挿入削除可能にする
とか。
ちなみにテキストファイルじゃないけど固定長レコードで高速キー検索できるようにした
ファイルを使ったDBもどきとしてはdbmというのが既にある。Perl辺りじゃ標準装備。
>>420 同じ学校の生徒が揃って宿題片付けにきてるんじゃね?
>>402 彼らは「仕組みを知りたい」んじゃなく「こうやったらこうなる」という
結果が出てくる方法だけをケーススタディとして知りたいだけなんじゃないかなー。
WEBから入ってJavaScriptのサンプル集とかでしかプログラムしたことないやつには多そう。
もしも「そんなことはない!」というなら漏れなく消防レベルの知能指数と断定してやろうw
そんなことわない!
436 :
ぬこえもん(=・ω・) ◆S715eQBvs6 :2006/07/14(金) 23:17:25 ID:Rg3ieVQg
>>418 複雑な条件を探すんならともかく、単にhogeって単語を探すだけなら
正規表現は使わない方が速いし確実。
strpos()使え。
phpでhotmailの登録画面みたいな画像チェックコードを使用した認証みたいなものって 作れますでしょうか? phpですとなかなか資料が見当たらなくて・・ perlだと「ひみこーど」?というのがあるみたいですがphpで可能でしょうか
画像認証は視覚障害者にあまりにも不親切だからいずれ廃れると思うけどね。
>>418-419 preg_grep というすばらしい関数がある。
$mutches = preg_grep('/hoge/', $line);
grep は、perlだと、正規表現だけでなく条件の真偽を元に配列を返えす使い方もできるんだが、 PHPだと無理?
>>443 無理じゃね?PHPの関数はそういう本来の用途外に使うような汎用性は持たせない作りになってるし。
445 :
438 :2006/07/15(土) 11:03:38 ID:???
>>441 おおっありがとうございます!!!!
感謝です!
446 :
nobodyさん :2006/07/15(土) 12:13:33 ID:DUyjY8jk
ある条件(ゲームに勝つ等)をクリアした者だけにファイルをダウンロードさせるスクリプトを書こうとしてます。 phpをCGI(Suexec)で動かして、ダウンロードさせるファイルのパーミッションを400にし、↓のようなスクリプトでダウンロードさせようと考えています。 if(ある条件をクリアしたら){ header("Content-Disposition: inline; filename=\"".basename($path_file)."\""); header("Content-Length: ".$content_length); header("Content-Type: application/octet-stream"); if (!readfile($path_file)) { die("Cannot read the file(".$path_file.")"); } } この場合、ダウンロードさせるファイルは、99%不正にダウンロードされないと思っていいのでしょうか? あと、他にパフォーマンスやセキュリティ面で勝る方法があれば、教えていただけるとありがたいですm(_ _)m
>>446 $path_fileとかいうのがDOCUMENT_ROOT以下に置いてないんなら
まー不正ダウンロードされることはないっしょ。
あとはそのif条件を不正に成立されたりしないかくらいでないの?
>>447 レスありがとうございます
DOCUMENT_ROOT以下においた場合はかなり危険ですか?
>>448 パーミッション400なら大丈夫じゃないかな
ついでに.htaccessで制限しとけば
450 :
nobodyさん :2006/07/15(土) 12:46:12 ID:DUyjY8jk
>>449 安心しました。ありがとうございますm(_ _)m
念のため.htaccessも使おうと思います
451 :
nobodyさん :2006/07/15(土) 13:19:27 ID:dl9oNIQi
>>443 そういうのはarray_filterとかarray_reduceだと思うけど、grepと比べたら使い勝手は悪いかも。
つか、全般的にPHPの関数は融通という意味ではPerlほどの使い勝手は無いよ。 PHPの関数はあくまでC言語ライクだが、Perlの関数はシェルスクリプトライクなわけで。 でも、だからこそ誰が書いても比較的一定のコーディングスタイルを保ってられるんだと思うけどね。
453 :
nobodyさん :2006/07/15(土) 14:37:30 ID:RYeH9Y82
PHPの文字コードについて質問なのですが、どなたか教えて頂けますでしょうか。 環境は、SunCobaltRedHatLinux7.0+PHP5.0.4+nkf2.0.4です。 「ココ,ココリコ,ココ数」とだけ書いたsample1.csvをUTF-8(改行コードCR+LF) で作成します。そして、test1.phpというファイルをUTF-8(改行コードCR+LF)で 作成し、<input type="file"〜>でファイルアップロードが出来、fgetcsvで、 アップロードしたCSVファイルの要素を取得出来るように、test1.phpに記述します。 test1.phpに、 list($field1,$field2,$field3)=fgetcsv(アップロードしたファイル名); print("1番目".$field1."2番目".$field2."3番目".$field3); と書くと、 「1番目??コ2番目??コリコ3番目??コ数」 と、先頭の文字が「??」に文字化けしてしまうのです。この原因は、どなたかお分 かりでしょうか?先頭の「コ」以外は文字化けしていないので、「コ」という文字 が原因ではないと思います。test1.phpの先頭に「mb_internal_encoding();」と書く と、「ISO-8859-1」と出て来ました。これが原因かと思って、 「mb_internal_encoding("UTF-8");」としたのですが、やはり同じ文字化けのままでした。 ちなみに、他のPCにFedoraCore2+PHP5.0.4+nkf2.0.4をインストールし、全く同じ(!) sample1.csvとtest1.phpで試した結果、「1番目ココ2番目ココリコ3番目ココ数」と なり、正しく表示されました。けれども、本番機はSunCobaltRedHatLinux7.0で動いて いますので、本番機の文字化けを直さなくてはならないのです。どなたかお分かりで しょうか?教えて頂ければ、幸いです。
>>453 とりあえず、サーバにアップロードした後のcsvファイルを確認してみて、
異常がないか調べてみれば?
455 :
232 :2006/07/15(土) 14:50:39 ID:???
preg_match_al関数で質問があります。 <?php preg_match_all("|<[^>]+>(.*)</[^>]+>|U", "<b>example: </b><div align=left>this is a test</div>", $out, PREG_PATTERN_ORDER); print_r($out); ?> 以上を実行すると以下の配列が出力されます。 Array ( [0] => Array ( [0] => example: [1] => this is a test [1] => Array ( [0] => example: [1] => this is a test ) ) これだと配列が取り出しにくいので Array ( [0] => example: [1] => this is a test ) ↑こんな感じに$outに配列を格納することは出来ませんか?
>>453 mbstring.language は何になってんの?
>>455 単に $out = $out[0]; しちゃダメなの?
458 :
nobodyさん :2006/07/15(土) 15:16:53 ID:RYeH9Y82
>>453 です。
>>454 様。
>>456 様。ご返答、ありがとうございます。
今、本番機から離れた所にいますので、数日経ちましたら、調べて
みます。
ちなみに、
>>454 様のおっしゃる通り、「サーバにアップロードした
後のcsvファイルが異常」だとしたら、どのようなことが原因なの
でしょうか?普通に<input type="file" 〜>と書いているだけなの
ですが、それでもアップロードが異常になることがあるのでしょうか?
また、
>>456 様のおっしゃる通り、「mbstring.language」が原因だと
したら、「mbstring.language」はどのように設定すべきなのでしょう
か?「mbstring.language」が「neutral」であれば「Japanese」に変え、
「mbstring.language」が「Japanese」であれば「neutral」に変えてみ
るのが良いのでしょうか?
>>458 商業でスクリプト組んでんのに、自分で試してから聞け
460 :
nobodyさん :2006/07/15(土) 16:40:47 ID:47sj2xHF
arrayに入っている12の文字列の順番をランダムで入れ替えたいのですが、 どのようにすればよいのでしょうか? array("1番目","2番目","3番目","4番目","5番目","6番目","7番目","8番目","9番目","10番目","11番目","12番目"); [0]1番目 [1]2番目 [2]3番目 [3]4番目 [4]5番目 [5]6番目 [6]7番目 [7]8番目 [8]9番目 [9]10番目 [10]11番目 [11]12番目 [0]1番目 [1]2番目 [2]5番目 [3]6番目 [4]1番目 [5]12番目 [6]7番目 [7]8番目 [8]10番目 [9]9番目 [10]8番目 [11]11番目 並び方はランダムでお願いします。
>>460 そこまで書いてやり方が思いつかないのか?
>>460 この問題は配列がというより、
非復元抽出で番号が書いたタマを取り出していく考えでいけばいいな。
463 :
nobodyさん :2006/07/15(土) 17:16:36 ID:dl9oNIQi
いくらくだ質でも、マニュアルの索引だけ見ても答えが出るのは勘弁してほしいね。
関数一個だな
とりあえず、今は使わない関数でも、マニュアルは一通り全部読んでおいた方がいいよ。 あとで使うときになって「そういえば、こんなような関数どっかにあった気がする」と気づくから。
要素が10個入った配列から、要素を5つ表示したいと思っています。 しかもランダムに、値が重複しないように表示したいのですが、 どういった関数を利用すればいいんでしょうか?
標準じゃないから、重複しないように、ランダムに5個抽出する関数を作ればいいと思うよ。
ああ、ちょっと不親切だった気がするので array_rand array_slice とか使って書きなはれ。
array_randじゃなくてshuffleだったわ。
プログラミングとは結果を得るための手順を考えることだ。 手順さえ思いつけば8割がた出来たも同じ。後は利用する プログラミング言語の文法に従って書けば良いだけだからな。 その手順を考えることを放棄するような奴ってなに考えてるんだろうね? この世に不要なんだよ。存在自体が。 ここはくだ質スレだが、こういう結果が欲しくてこういう手を考えたが もっとスマートな方法は無いか?とかどういう関数が使えるか? ちうことを聞くところだ。 考えることを放棄するような奴はイラネ。うせろ。
>>471 詰まるところここはゴミプログラマ養成所なんだよ
ifで「昨日以前なら」で条件を作りたいのですが、 date(Ymd,strtotime("-1 day")) これは昨日限定ですよね? 昨日以前というのは指定できないのでしょうか?
UNIXタイムを使え。
476 :
nobodyさん :2006/07/15(土) 22:31:25 ID:QlSeqY/9
PHP5でグローバルに参照する定数を使いたい場合、 ・ファイルにしてインクルードする function foo() { include( "globals.php" ); echo $var; } ・クラスにして参照する class CGlobals{ static $var = 123; } function foo() { echo CGlobals::$var; } ・$GLOBALSを使う function foo() { echo $GLOBALS['var']; } のどれが好ましいでしょうか もしくはこれ以外にもっと好ましい方法がありますでしょうか
>>476 グローバル変数を使うような処理を書くな
>>476 定数ならdefine()のあれをまず考えて
次に2番目のクラスにして参照する方法かな
479 :
nobodyさん :2006/07/15(土) 23:57:29 ID:sY8c/3Bb
mb_ereg_search_regs関数の使い方についての質問です。 $str="aa<a>bb</a>aa" $strから<a></a>に挟まれた文字列を 取得したいのですが、 どう記述すればいいでしょうか? サンプルソースを頂けないでしょうか。
>>479 まずはどうやって失敗したかを書いてくれ
echo <<< HTML aaa<br> bbb<br> ccc<br> HTML; これのような出力を一気に配列に入れる方法を教えてください。
482 :
479 :2006/07/16(日) 00:25:47 ID:???
>>480 こんな感じで書いたら
<?php
$str="aa<a>bb</a>aa"
$a_resulet=mb_ereg_search_regs("<a>*</a>",$str);
?>
こんなんになりました
Warning: mb_ereg_search_regs() [function.mb-ereg-search-regs]: No string given in /usr/local/apache2/htdocs/test.php on line 4
>>482 そのソースを丸々コピーしたら俺の環境ではsyntaxエラーだ
>>481 ob_start();
echo <<< HTML
aaa<br>
bbb<br>
ccc<br>
HTML;
$array = explode("\n", ob_get_contents());
//$array = preg_split("/\r\n|\r|\n/", ob_get_contents());
ob_end_clean();
print_r($array);
explodeやsplitでcsv形式のデータを配列に格納しようとしてるんですが、 データの中にカンマが含まれている場合、そこで配列の項目として切っちゃいますよね? そういう場合は本業プログラマさんは普通どういう方法で処理するものなんでしょうか? よろしくお願いします。
まだ学生で本業じゃないけど普通に考えて別の文字に置き換えるでしょ 別に決まりはないはず たとえば単純に2byte文字「,」にするとか 特殊文字「,」(&#44;)にするとかね
>>485 普通は処理がしやすいようにデータフォーマットを作る。
例えばタブ区切りにするとか。
CSVつうてもエスケープのしかたで何種類かあるので
既存のデータなら、それに合わせて処理する。
EXECLの吐くやつとかだと処理ライブラリもあるけど
上手くいかないことも。
CSV形式も方言がいろいろあるが、 " で囲めば間違いない。 というか、変な置き換えをするのはウンコ。 置き換えは " だけ。"" と2回連続させる。
>>485 区切り文字には気をつけろ!
カンマ区切りの場合「ソ」の直後に「"」が来るとバグる関数がある(fgetcsvとか)
まぁ、そういうところを考えるのもプログラミングの楽しいところだな
・・・苦しむところでもあるが
>>471 >>473 みたいのが全てを表してると思う。
彼らはコーディングをアルゴリズムとは思っておらず
「指定すれば指定した通りの結果が出てくる」という
PHPを単なるツール、アプリケーションの操作と勘違いしている。
コーディングはアルゴリズムじゃないだろwwwwwwwwwwwwwwww 言いたい事は分かるけどね。
彼らが知りたいのは公式と解法テクニックであって そこに至るまでの考え方など無用の長物なのだ
>>471 >>490-492 よかった。まだ俺と同じ考えのヤツがいたんだ。
このスレ、だんだん丸投げスレになってきたんでどうしようかと思ってた。
くだ質ってそういうもんでしょ? 答えたくないなら答えなくても良いし
そうですが、何か? もっとも質問したのは1回だけですけど。あとはたまに覗いてます
>>494 レベル低い質問と、自分では考えないから全部お任せでお願い、は全然意味違うぞ
UTF8で保存したindex.phpから同じくUTF8で保存したhoge.logをfile( )で読み込んで、 print_rで出力すると何故か文字化けしてしまいます。 ブラウザのエンコードをUTF8に指定すると直るのですが、 いちいちそんなことしないでも普通に表示させたいのですが…。 <meta http-equiv="Content-Type" content="text/html; charset=utf8"> というメタをつけて文字コードを指定してるのですが上手くいきません。 どなたかよろしくお願いします。
>>498 META指定よりヘッダーで出力されてる文字コード指定の方が優先で
多分それがSJISかEUCにでもなってんでしょ。
php.iniで出力文字コードの指定があるから設定してみ。
header()使って自分で出力するのでもアリかもね。
utf-8 じゃね?
501 :
nobodyさん :2006/07/16(日) 12:57:48 ID:xiYRHM+h
FC5をインストールしたのですが RPMのPHPはmbstringが組み込まれていないようです。 RPMは捨てて自分で入れ直すしかないですか?
>>501 srpm の spec ファイルを編集してリビルドすればo.k.
それか野良rpmを探すか。
自分ならソースから入れるね。
FreeBSDならports使うけど。
yumで入れればmbstringが入っている筈だが。
>>501 FC5にあるのか知らんが、php-mbstringパッケージ
505 :
501 :2006/07/16(日) 13:38:45 ID:???
>>502-504 レスありがとうございました。
アンインストールしようとしていたのですが
mbstringのパッケージをインストールしたら無事使えるようになりました。
506 :
nobodyさん :2006/07/16(日) 14:59:52 ID:5V0Lpe7K
本当にくだらない質問で申し訳ないのですが
最近はやりのスクロールにあわせて上下するフロートメニューを
PHPだけで作るコトってできますでしょうか?
縦に長いページの中でどこがブラウザに表示されてるのか取得して
画像を動かすことができれば作れそうですよね。
PHPでできるかな?
ttp://www.ws-company.jp/1f_info.php ↑ちなみにこんなやつです。ここのはJAVAで作ってるみたいですね
まあ、JAVA使ってもいいんだけど…
すごい下らない質問でも、今までがんばって駄目だったのが伝わってくるのなら答える。
>>506 PHPだけなら無理。Javascriptも絡ませるなら可能
PHPだけというか、PHPでやる必要がないよな。
>>499 >>500 だめでしたー、php.iniを触れる環境にないためheader( )で出力する設定にしたんですが
文字化けなおりません。
<?
header("Content-type: text/html; charset=UTF-8");
echo <<< EOF
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title></head>
<body>
EOF;
$rec = file("hoge.log");
print_r($rec);
echo "</body>\n</html>";
?>
がコードです。
ひとつ気になるのは出力されたものをブラウザで「ソースの表示」をしてみると
「ファイルに含まれていたnull文字はスペースに変換して開きます」
というアラートが出てくることです、ここに何か糸口が…?
>>506 Java じゃない。JavaScript ね。しかも Firefox では正常動作していなかった。
PHP なんぞなくても、ふつーの HTML + JavaScript で終了。
Javascript使わないと見れないページってうざいよ・・・
513 :
506 :2006/07/16(日) 15:49:07 ID:5V0Lpe7K
いま、上のサイトのソースいろいろいじっててふと思ったけど PHPでできたとしても、いっぱいの人がアクセスしたら サーバーに負担かかりすぎちゃって話にならなそう? やっぱり、クライアントサイドでやらないとだめかな?
もしかして
>>506 はスクロールするたびリロードさせる気か
>>513 結局何も分かっていなさそう…
だから、なんで PHP が出てくるんだ?
PHP で JavaScript を含んだ HTML を生成したとして
サーバの負担が心配だからクライアントサイドで?
言っていることが支離滅裂なんですけど、分かってる?
今ふと思ったんですけど、 もしかして読み込み元のhoge.logファイルをいくらUTF-8で保存しても、 phpがfile( )で読み込む時にコードの如何を問わずSJISとして読み込む設定になっている、 ってことはないでしょうか? もしそうならphp.ini?とかの設定の問題なのでお手上げだなあと思ったんですが
>>517 PHP Version 4.4.2でdefault_charsetはShift_JISになってますー
header()の出力よりもこっちが優先されちゃうのかな…
>>518 > header()の出力よりもこっちが優先されちゃうのかな…
それならまず、file と print_r を使わずに UTF-8 で直書きした HTML を含む
コードを PHP で出力させて、化けるか否かをチェック。
>>519 さきほどのコードに追加しました
<?
header("Content-type: text/html; charset=UTF-8");
echo <<< EOF
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
※略
<body>
化けるかどうかテスト //←ここを追加
EOF;
$rec = file("hoge.log");
print_r($rec);
echo "</body>\n</html>";
?>
結果、「化けるかどうかテスト」は正常に日本語で、file()で読み込んだ部分は
文字化けで表示されました。
ただブラウザのエンコードをUTF8に変更すると、今度は逆に「化けるかどうかテスト」が文字化け、
file()で読み込んだ部分が正常に…、わけがわからなくなってきました
あ、追記です ブラウザはSleipnir1.66とIEの6を使ってます 一応書いとくとXP SP2です
>>520 手元(PHP 4.4.2)で試してみた。が、化けなかった。
ブラウザは Firefox 1.5.0.4 と IE 6 SP2
mbstring 関係の設定は何も変更してないはず。ソースから make で。
読み込み UTF-8 のファイルは BOM 有り・無しの何れも。
BOMはなしで保存してます。 うーん、読み込むhoge.logの方をSJISで保存すると一応全体がSJISとして化けなしに表示されるので、 とりあえずはこれでしょうがないかと…。
>>506 >最近はやりのスクロールにあわせて上下するフロートメニュー
すっごく根本的なことを教えてあげよう。
そんなのは最近じゃなくて大昔からあるものだし、別に流行ってないし、
PHP関係ないし、っていうかウザいだけだから止めたほうがいいし。
初心者がサイト作るとすぐそういうウザい動きを付けたがるのは何故だろうね?
>>523 ちなみに
>>522 の mbstring 設定値は
mbstring.detect_orderauto
mbstring.encoding_translationOff
mbstring.func_overload0
mbstring.http_inputauto
mbstring.http_outputSJIS
mbstring.internal_encodingEUC-JP
mbstring.languageneutral
mbstring.substitute_characterno value
でした。
>>525 うは、ごめん。タブは消えるのか。見辛くて申し訳ない。
>>525 ありがとうございます、今みてみたら化けていたサーバーは
mbstring.http_output SJIS SJIS
mbstring.internal_encoding SJIS SJIS
となってました。
525の人と同じ環境の他のサーバーで試してみたところ文字化けなしにいけました。
問題点がわかったので他のサーバーで動かすようにします、
ありがとうございました。
2つの文字列の先頭から何文字目までが同じか調べたいのですが、 どうもてっとり早い方法が見つからない。 C でいえば for(i = 0; c1[i] == c2[i]; i++ ); ぐらいのものなわけですが、php だとどうしたものでしょう? similar_text だと、先頭からという限定ができないようだし、 ord($str) でCライクに比較しようにも、 先頭のアスキーしか取れないようなので、一々 substr で先頭を切っていくことになる? substr_compare で徐々に len を減らしていく、という方法だと ほぼ同じ部分文字列を毎回一から比較していくわけで無駄が多い。 こういうときはどうするのがうまい方法なのでしょう?
いけんじゃないの?そのCと同じで str1 = 'hogehoge'; str2 = 'hagehage'; for(i=0; str1[i]==str2[i], (i<strlen(str1) && i<strlen(str2)); i++); これダメなんだっけ?
>>528 上手い方法を知っているわけではありませんがmb_substrで順番に見て行くほか無いような・・・
<?php
$str1 = "ABCD日本語wktk";
$str2 = "ABCD日本語kwsk";
$ln = min(mb_strlen($str1), mb_strlen($str2));
for ($i=0; $i<$ln; $i++) {
if (mb_substr($str1, $i, 1) != mb_substr($str2, $i, 1)) {
echo $i . mb_convert_encoding("文字目までは一緒", "SJIS");
break;
}
}
?>
>>531 何でそんなにマルチバイト文字列関数使いたがるの?
533 :
nobodyさん :2006/07/16(日) 23:25:43 ID:VEXOfJen
を置換で削除しようと思って $res=strtr($res," ",""); というふうにしたのですが、 全く置換できません。。 何が問題なんでしょ?
サーバにインストールされているPEARの一覧表示の出し方ってどのようにするのでしょうか? 対象となるサーバはXREAです。
536 :
531 :2006/07/16(日) 23:34:53 ID:???
>>532 たぶん日本語を比較したいのだろうと思ったので。
ordで比較とか書いてたので。
538 :
533 :2006/07/17(月) 00:58:07 ID:???
>>538 単にお前が馬鹿なだけ。マニュアルぐらい嫁
echo $matches[0][0]; echoだと値が帰ってくるんだですが、 return $matches[0][0]; returnだと値が帰ってきません。 retuneは配列の値を表示することができないんでしょうか?
なんだかよく分からんが、 function hoge(){ // $matches配列の生成 return $matches[0][0]; // 値を返す } echo hoge(); // 値を表示する なら表示されるはずだが。
PHPのIFで通常ありえないような挙動はするものでしょうか? ちょっと意味不明かと思いますが、 具体的には以下のIFでループが発生しました。 (ただ、再現性が著しく低いです。というか再現できなかったと思います) $temp = explode( "/" , $_SERVER['SCRIPT_NAME'] ); $start = count( $array ); // $arrayは配列です。 for( $i=$start; $i < (count($temp) -1); $i++ ) { // 変数 $i にアクセスしない処理 } なんかやらかしてるでしょうか? それともやっぱり環境なのかな?
日本語でおk
1.055e+006 こういう文字列を数字に直すにはどうしたらいいんでしょうk?
echo 1.055e+006 + 0; で、できました
>>543 意味がわからないって事かな?ごめん 2ch語?よくしらないので
>>542 の IF の記述法に問題があるのか。という点と、
例えば $array 等に NULL や文字列、オブジェクトなどの予想外の要素を
代入した場合に素直に動くのか、それとも予想もできない動作をするのか
等の情報が知りたかったと言うことです。
何かのネタだったらごめん。
ちょっと解説してくれると助かる。よかったらだけど…
ウルトラマンが悩みを聞いてあげるスレッド
1 名前:('A`) 2005/05/20(金) 21:05:58
/ || :ヽ
┌|(⌒ヽ :|| ..:⌒: |┐ / ̄ ̄ ̄ ̄ ̄ ̄ ̄
|::|::ヽ.__:):||(___ノ ::|::| │
|:|: .. :|| .. |:| │
:|: .. || ..|| < ジュワ!
:\ [_ ̄] /::| │
:: |\|_|_|_|_/:::| \________
2 名前:('A`) 2005/05/20(金) 21:06:49
ジュワワワジュワワ、
ジュワジュワジュジュワワワワワ?
3 名前:('A`) 2005/05/20(金) 21:07:27
/ || :ヽ
┌|(⌒ヽ :|| ..:⌒: |┐ / ̄ ̄ ̄ ̄ ̄ ̄ ̄
|::|::ヽ.__:):||(___ノ ::|::| │
|:|: .. :|| .. |:| │
:|: .. || ..|| <
>>2 日本語でおk
:\ [_ ̄] /::| │
:: |\|_|_|_|_/:::| \_______
550 :
542 :2006/07/17(月) 11:11:26 ID:???
ごめん追記。 通常は素直に動く事は解っています。NULLを0と等価とみなし、 オブジェクトではフィールド数を返すなど。 ただ、たまーに変になる可能性がちょっとでもあるのかな? と言うことが知りたかったというか、ごめんよ日本語下手で。 まずは日本語を勉強しろって事だな。正直スマンカッタ
そんな不安があるなら代入する前にNULLチェックなりなんなりすればいいのに
>>550 >>542 の場合、$startに数字じゃなく文字が入ったりすると永久ループする可能性があるけどね。
これが本当に$startはcount()の結果以外は入らないようになってるのならちょっと分からんけど。
他にあるとしたらループの中で$tempを破壊してしまうケースくらいか。
ま、ifは変な挙動をしたりしない。
しかしPHPの変数が様々な型を自動変換するのをプログラマが忘れてることは多い。
変な挙動に見えても大抵はそれは「仕様」だ。
>>552 >>542 では、終了の値が有限であり、(ファイル名がもの凄い長いとかじゃないです)
かつ、開始の値に関数 count() を利用する為、負の値は通常取らないはず。
この条件でどうして無限ループが発生したのかが疑問なんです。
Nullチェックなりなんなりしろってことは、count() は極稀に負の値を
返したりする事がある。って事かな?
その場合、IFの開始、終了値の制限範囲を予め定めるってチェックを
する必要があるけど、それって普通しないですよね?
ただの事故か、それとも潜在的に無限ループの可能性があるのかが知りたかっただけなんです。
十中八九他の部分に原因があると思うなあ
>>553 あ、そうか。ありがとうございます。かなり参考になりました。
変数の型には留意しているつもりなんですが、やっぱり見えないところで
いろいろ変換されているかもしれません。
>>556 ループ処理はこれだけだったんです。
変数代入は IFの直前で他の値が入る隙はなかったんです。
一番可能性が高いのは、処理中に $temp に何かいれた。かな?
(無論、そんな事はしていないつもりですが)
再現性が殆ど皆無である為、ただの事故だったかも知れませんが
変数の型に常に留意しなければならないなど、いろいろ参考になりました。
ありがとうございました。
どっかに思い込みで見逃してるとこがあると思うね。
うーん、そう言われると一番それっぽいな。 スクリプトって寛大に受け入れてとりあえず動いてくれるけど、 それが難しく感じる事の方が個人的には多い。 現実的で有効な対処法は、ソースを第三者にみて評価してもらうかな。 愚問に付き合ってくれて、みなさんありがとうございました。
質問です。 <form method = "POST" action = "test.php"> <input type = "checkbox" name = "type" value = "a=4,b=7" checked>良かった<br> <input type = "checkbox" name = "type" value = "b=2,c=3" >悪かった<br> <input type = "checkbox" name = "type" value = "c=3" >その他 <input type ="submit" value="投稿する"><br> </form> フォームを作っているのですが 一つのチェックボックスに複数の数値を持たせたいのですが どのようにしてPHPは処理すればいいでしょうか?
ありえねぇ・・・
>>560 $type = array();
foreach(explode(",", $_POST['type']) as $t) {
list($k, $v) = explode("=", $t);
$type[$k] = $v;
}
これでa=4,b=7を選択すると
$type['a'] = 4
$type['b'] = 7
の状態になると思う。
>>561 このくらいふつーだろ。
>>560 仮に処理できるとしても、そんなクソな設計は止めたほうがいい。
複数の値を持たせなきゃならん必要性があるのか?
565 :
560 :2006/07/17(月) 16:19:00 ID:ab1cz1rX
>>564 例えば良かったと悪かったが選択されていたら
a=4,b=9,c=3となるようにしたいです。
そして、それぞれのa,b,cの値によって次の処理をしたいのですが
考え方が間違っているのでしょうか?
566 :
560 :2006/07/17(月) 16:24:35 ID:ab1cz1rX
実際良かったと悪かったが同時にチェックされることは考えにくいですが、 これらは例ですので気にしないでください。 混乱させてしまったらごめんなさい。
>>565 <input type = "checkbox" name = "type" value = "1" checked>良かった<br>
<input type = "checkbox" name = "type" value = "2" >悪かった<br>
<input type = "checkbox" name = "type" value = "3" >その他
リンク先のページで、
if( $_POST['type']==1){
$a=4;
$b=9;
$c=3;
}elseif(なんたら)
ってかんじがいいと
もしくわ、 <input type = "checkbox" name = "type" value = "a=4,b=3,c=5" checked>良かった<br> $tmp = explode( ',', $_POST['type']); foreach( $tmp as $val){ $aaaa = explode( '=', $val); print_r( $aaaa); }
ていうか、どうでもいいことかもしれないけどさ、 $tmp を無意識に「ドル、ティムポ」って読んじゃうのもれだけ?
570 :
560 :2006/07/17(月) 16:33:53 ID:ab1cz1rX
>>567 速レスありがとうございます。
PHP初心者で、
>>567 が自分の作ろうとしているものに適しているのかどうか
よくわからないので、localhostで試してからまた来ます。
あらかじめ多数の指定を持たせたプログラムを、ユーザI/F変えるだけで自由に
再構成できるんだから
>>560 みたいなやり方も一概に悪いとは言えないと思う。
たとえばaとかbとかのキー自体がiniファイルで外部設定できるような仕組みになってれば、
いちいちプログラムを変えなくても様々なニーズに容易に対応できるようになるだろ?
なんとか診断みたいなやつかな? 設問がたくさんあるタイプのやつ。 name = "type[]" にして複数のチェックボックスを配列にするといいかも。
574 :
560 :2006/07/17(月) 16:59:52 ID:ab1cz1rX
>>571 すいません。勉強不足で何のことやらさっぱりです。
>>573 >なんとか診断みたいなやつかな? 設問がたくさんあるタイプのやつ。
ズバリそれです。
>name = "type[]"
>にして複数のチェックボックスを配列にするといいかも。
これもよくわかりません。
おお・・・もう
>>574 …なんできみわ"a=4,b=7"みたいな変なパラメータを指定できるようにしたいなんて思ったのかね
チェックボックスで複数指定できるようにするならname="type[]"としとかないと
複数のパラメータを受け取れないぞ。最後の1個で上書きされてしまう。
name="type"にして選択できるのはどれか1つ、ってするならtype="radio"だろ。
577 :
560 :2006/07/17(月) 17:05:47 ID:ab1cz1rX
>>567 <?php
if( $_POST['type'] == 1 ){
$a=4;
$b=9;
$c=3;
}elseif( $_POST['type'] == 2 ){
$a=1;
$b=2;
$c=3;
}
echo "$a"
?>
これだと、$aはelseifの値をとってしまいます。
二つの数値を足したいのですが、どうすればいいでしょうか?
>>571 再構成がしたいならパラメータを設定したファイルからI/Fを生成すればHTMLすら弄らなくていいよ。
>>577 まず複数指定できるようにするなら
<input type = "checkbox" name = "type[]" value = "a=4,b=7" checked>良かった<br>
<input type = "checkbox" name = "type[]" value = "b=2,c=3" >悪かった<br>
<input type = "checkbox" name = "type[]" value = "c=3" >その他
とnameのとこに[]をつけてパラメータを配列で受け取れるようにせんと。
すると複数にチェックした場合
$_POST['type'][0] = "a=4,b=7"
$_POST['type'][1] = "b=2,c=3"
のようにセットされるようになる。
name="type"にしちゃうと2つ選択しても
$_POST['type'] = "a=4,b=7"
という値が、後ろに続いた
$_POST['type'] = "b=2,c=3"
で上書きされてしまって、結果として
$_POST['type'] = "b=2,c=3"
しかデータ自体が残らないんだから、プログラム上で足そうと思っても足しようがない。
あとは配列を順番に処理するだけだから、ちょっと考えてみれ。
>>574 たとえばhtmlのフォームのところで
<input type="checkbox" name="type[]" value="1">回答1<br>
<input type="checkbox" name="type[]" value="2">回答2<br>
<input type="checkbox" name="type[]" value="4">回答3<br>
<input type="checkbox" name="type[]" value="8">回答4<br>
ってやっておくと、submitで飛んだ先のphpで
foreach($_POST['type'] as $cb){
echo "$cb<br>" ;
}
とか出来るので便利。
あとは
>>562 と組み合わせるといいよ。
>>577 そんな変な仕様は最初に説明しないと誰もわからんぞ
582 :
560 :2006/07/17(月) 17:21:58 ID:ab1cz1rX
>>579 >>580 ありがとうございます。
読んだだけでは、なかなか理解できなかったので
じっくり考えて見ます。
>>581 すいません。
どうやって説明すればいいのかわからなくて。
設定ファイルまでいくとhtml以外をいぢるっていう意味では phpでrequireするのと変わらない場合もあるけどな。 htmlだけを直す、っていう方がいい場合もある。 もちろん、そうじゃない場合もある。
人に説明できんもんを、プログラムに書くことはできんわな
>>560 よ、キミのやりたいことはだいたい分かった。
とりあえず複数の値をフォームで持たせるというやり方は
「間違っている」と言わざるを得ない。あるいは「良いやり方ではない」。
それでも出来るかもしれないけど、もっとシンプルでスマートで
応用の利くやり方は他にいくつかある。
「それを教えてよ」というのは無しだ。それを考えるのがプログラミングだ。
587 :
560 :2006/07/17(月) 19:54:17 ID:ab1cz1rX
errorが出て
なかなかうまくいきません。
まだ少しプログラムを組むのは早かったかもしれません。
>>596 聞こうと思ったら先に釘を刺されてしまいましたか。
でも頑張ってみます。
未来アンカーキタコレ!!
>>589 アルゴリズム考えられない馬鹿は黙ってろ
>>560 フォームからは1個の値を渡す。
それをphp側で複数に切り替える。
if(answer=='1'){a=4;B=7;}
elseif(answer=='2'){b=2;c=3;}・・・
という感じで。
一般化すると。
「本当にそこで処理しなければいけないかを考えろ。」
592 :
nobodyさん :2006/07/17(月) 22:44:25 ID:Vse0CV74
$_POST['msg']から空行を取り除くにはどうしたらよいでしょうか?
preg_replace使って空行を削除かなぁ
594 :
nobodyさん :2006/07/17(月) 22:53:34 ID:Vse0CV74
>>593 恐縮ですが、削除というのはどうすれば出来るのですか?
$_POST['msg'] = preg_replace ('^$', '', $_POST['msg']);
これじゃダメですよねぇ?
空行ってのは要するに改行文字が連続している部分のことだと思うので 連続した改行を1つの改行に置き換えれば空行=削除に値するんじゃない?
連続した改行というのは 「2個の改行」ではなく「2個以上連続した改行」な。 「空白+改行」を空行と扱うかを考える必要があるけどね。
>>589 別に説得してないし。
プログラミングの本質を教えてるだけだろ。
@ITのサイトのようにどのリンクをクリックしても 左のバーや上部を表示させるにはどのようにすればいいのでしょうか?
>>594 preg_replace (array(' ',' '),'', $_POST['msg']);
601 :
nobodyさん :2006/07/18(火) 03:35:07 ID:RAKThs0C
CGIでクッキーかきました。保存されてるのを確認したのですが、 $ENV{'HTTP_COOKIE'}で何も取得できません! 作成直後ではなくて、ブラウザでリクエストを再送しても取得できません。 どんな原因が考えられましょうか!
>>598 HTMLをテンプレとして別ファイルにしてinclude。
別ファイルにする際、左のバーだの上部だの、いつも同じ部分を
別個にすればよい。
ちなみにテンプレと言っても、いわゆる「テンプレート・エンジン」なんて使わなくても
自作テンプレで十分。
すいません、スレ違いでした
>>602 ありがとうございます。
それだと、同レベルのディレクトリ以外は難しくないですかね?
./../等として読みに行くとすると、ディレクトリ配置を変更するとなると
全てのファイルを書き直さなければいけなくなると思います。
また、include元のHTMLが<img src="./hoge.jpg">等とやっていた場合は
違うレベルのディレクトリのファイルから呼び出されたりすると
そのイメージのリンクは違うファイルを対象としてしまうと思うんですけど。
結構大きなサイトになると、同レベルのディレクトリに全て置くっていうのは
現実的じゃない気がするんですけど、そういうものなんですかね?
初心者を説得するスレじゃないからどうでもいい
「説得力」には説得するって意味は無いってことだろ。 この程度の日本語が通じないヤツは、ほんとにどうでもいい
609 :
nobodyさん :2006/07/18(火) 09:29:55 ID:WFdfnqCG
以前、ご質問させて頂いた
>>453 です。
本日、文字化けが起きたマシンを調べてみた結果、php.iniは
;mbstring.language = Japanese
となっており、mbstring.language はコメントアウト(neutralでUTF-8?)
されていました。
ただ、文字化けが起きなかった他のPCも、mbstring.language はコメント
アウトされており、mbstring.language が文字化けの原因ではないような
気がします。
どなたか、この文字化けの原因はお分かりでしょうか?教えて頂ければ、
幸いです。
>>609 とりあえず、それがコメントアウトされてたら文字化けしない方がおかしいので直せ。
そこは通常、Japaneseで設定されてないといけない。
ただ、ここがJapaneseじゃなくてもdetect_orderに特定の文字コードが設定されてれば
文字化けは回避できるかもしれない。
通常、これはautoに設定されてて、autoはlanguageの設定に合わせて自動設定されるので。
>>609 だからまずアップロードされたファイル自体を目視確認し、
それが正常であれば、
処理ごとに
612 :
nobodyさん :2006/07/18(火) 11:33:37 ID:WFdfnqCG
>>609 です。
>>610 様。
先程、コメントを外し、mbstring.language = Japanese
にしてApacheを再起動しました。
>>611 様。
アップロードされたファイル自体を目視確認しました。アップロード
されたファイル自体は、確かに文字化けしていないことを、目で確認
しました。
けれども、文字化け(最初の文字だけが「??」になってしまう)は
変わりません。アップロードされたファイルを「system(nkf -w 〜);」
とやってもやらなくても、同じ文字化けが起きてしまいます。
if ($_FILES['csvfile']['name'] != "") {
$tempfile = $_FILES['csvfile']['tmp_name'];
$tempfile_utf = $_FILES['csvfile']['tmp_name']."utf";
system("nkf -w ".$tempfile." > ".$tempfile_utf); // これをやらなくても文字化けする。
$file = fopen($tempfile_utf, 'r');
list($field1,$field2,$field3)=fgetcsv($file,20000);
print("1番目".$field1."2番目".$field2."3番目".$field3);
}
なのですが、何が原因かお分かりでしょうか?
>>606 説得力ねーな、お前wwwwwwwwwwwwwwww
PHPの解説をしている、とあるサイトでphpinfo();の説明の為に、 実際にphpinfo();を表示させているサイトがありました。 サーバの環境から、Win鯖なのでユーザー名まで全て晒しています。 phpinfo();が表示する情報程度のものは 別に誰に見られても困るほどの事は無いのでしょうか?
>>614 これらが見えて困るのなら、
見えなくても困る。
616 :
614 :2006/07/18(火) 12:17:39 ID:???
>>612 > けれども、文字化け(最初の文字だけが「??」になってしまう)は
その最初の文字って何て文字さ。
> list($field1,$field2,$field3)=fgetcsv($file,20000);
> print("1番目".$field1."2番目".$field2."3番目".$field3);
化ける内容ってこの出力なのか?
fgetcsvは日本語を含むCSVデータでは使えないぞ?
>>616 俺が分かりやすくストIIに例えると
これらが見えて困るのなら、見えなくても困る。
ってことだ
日本語でおk
620 :
560 :2006/07/18(火) 13:13:09 ID:n2ZEUTcJ
>>560 ですが、なかなかうまくいきません。
name="type[]" value="1"のようにしたほうが良いと言うことまでは
わかりましたが、どうやって複数の数値を持たせるのかがわかりません。
なんどもすいませんが、よろしくお願いします。
たとえば safemode で話そう。 safemode の on/off が見えていたら困る場合、 on/off が見えなくても、 on か off のどちらかなのだから、safemodeが見えなくても、1/2で困ることになる。
さらに safemodeで困らせようとする側は、 onを予想して困る要因を作成し、1/2にハズレてだめだったとしても、 次にoffの場合の困る要因を作ればいいのだから、 どのみち困らせることができることになる。
つまり、 safemodeがばれて困るような場合では、 safemodeが見えていようが見えていまいが、困るということだ。
625 :
614 :2006/07/18(火) 13:25:58 ID:???
>>620 =560
value="a=1,b=2,c=3"
にする場合に必要なパーツはほぼ出揃ってるんだから、そっちでやっていいんじゃねーの?
(複数の値ってより、"a=1,b=2,c=3"っていう1つの文字列だな)
>>625 俺が分かりやすくドラゴンボールに例えると
これらが見えて困るのなら、見えなくても困る。
ってことだ
628 :
614 :2006/07/18(火) 13:34:05 ID:???
あーなるほど!わかった やっぱドラゴンボールに例えるとわかりやすいな
>>624 つまり、ヤフオクで女子高生のマンコが見えていようが見えていまいが見に行くということだな。
ちょっと長いぞ 仙豆が無い事がわかって困るなら、仙豆なんて物が初めから無くても困る ってことだ
>>630 そして女子高生のマンコを見てセンズリするということか。
くだらねぇ会話やめろ。つまんねぇし無駄。
633 :
nobodyさん :2006/07/18(火) 15:28:52 ID:WFdfnqCG
>>617 > list($field1,$field2,$field3)=fgetcsv($file,20000);
> print("1番目".$field1."2番目".$field2."3番目".$field3);
> 化ける内容ってこの出力なのか?
> fgetcsvは日本語を含むCSVデータでは使えないぞ?
>>612 です。ありがとうございます。
>>617 様のアドバイスを元に、
「fgetcsv 日本語」で調べてみました。PHP5でfgetcsvを使った場合、
日本語が不安定のようです。ただ、CSVファイルの中身を全てダブル
クォーテーションで囲んで試したところ、文字化けしないで済みま
した。
どうも、ありがとうございました。
634 :
nobodyさん :2006/07/18(火) 15:35:22 ID:qPB2Cam5
mb_send_mail("****@yahoo.co.jp","タイトル","コメント","フローム");
で、メールを送信しようとしたのですが、エラーが返ってきます。
[mail function]
; For Win32 only.
SMTP = localhost
smtp_port = 25
; For Win32 only.
;sendmail_from =
[email protected] ; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
;sendmail_path =
; Force the addition of the specified parameters to be passed as extra parameters
; to the sendmail binary. These parameters will always replace the value of
; the 5th parameter to mail(), even in safe mode.
;mail.force_extra_parameters =
なんですけど、どう設定すれば良いのでしょうか?
WindowsXP、Apache2.0.58、PHP5です。
本当にくだらない質問ですが、お願いします。
>>634 '****@yahoo.co.jp'
シングルクォートにする
PHPと言うより文字コードの質問になりますが、 UTF-8でマルチバイト文字列の長さを、日本語=2、英数字=1として カウントしたいのですが、strlenはひらがな、カタカナ、漢字を 全て3バイトとカウントすると仮定しても大丈夫でしょうか? <?php $str = "日本1234語"; $n = mb_strlen($str); $m = strlen($str); for ($i = 0; $i <= $n; $i++) { $t = $i * 3 + $n - $i; if ($t == $m) { echo $i * 2 + ($n - $i); break; } } ?>
637 :
634 :2006/07/18(火) 15:53:15 ID:qPB2Cam5
>>635 シングルクォートにしてみましたが、変わりないです。
>>636 英数字を全角に変換してmb_strlenじゃだめ?
失礼 英数字のみを取り出して足し算、でした。
>>639 404 File Not Found.
>>620 君はもう少し基本的なプログラムからゆっくり勉強した方がいいと思うぞ。
なんでそんな基本的なことで詰まってるのよ。
643 :
636 :2006/07/18(火) 16:01:39 ID:???
>>640 あぁその方がシンプルでいいですね。
勉強になりました。
ありがとうございます。
$n = mb_strlen($str); $m = strlen($str); $a = ($n + $m) / 2
645 :
634 :2006/07/18(火) 16:02:53 ID:qPB2Cam5
>>639 すいません
Warning: mb_send_mail() [function.mb-send-mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in E:\Web\test.php on line 9
です。
>>641 で、それでなんで mb_send_mail でエラーが起きたと思ったの?
404ってApacheのエラーコードじゃなくて?
647 :
636 :2006/07/18(火) 16:05:43 ID:???
>>644 ・・・・ orz
お恥ずかしい。
休みで頭がボケてるみたいです。
648 :
646 :2006/07/18(火) 16:06:26 ID:???
偽者かよw
>>645 君のマシンにSMTPサーバーソフトがインストールされてないから。
>>645 エラーメッセージってのはその名の通り、エラーの内容が表示されているんだよ。
中高生が読めるレベルの英語なんだから、ちゃんと読めばエラーの理由が分かる。
>>650 エラーの意味がいくら分かっても、メール送信の仕組みも知らない厨房では理解不能と思われ。
645のレベルなら、自分作ろうとするより 実働サンプルを拾ってきた方が早いよ
>>652 も厨房だなw
実働サンプル持ってきてもSMTPサーバが動いてないんだから無意味。
>>604 もうちょっと頭を使いましょう。
ディレクトリを後から変更する予定があるのなら、
includeパスに含めるディレクトリ部分の文字列を変数なり定数なりにすれば良い。
●例:
define ("_DIR",'
http://example.com/hoge/ '); //ディクレトリ変更ならhogeを書き換える
include (_DIR."template.php");
淫狂うど
656 :
654 :2006/07/18(火) 17:29:01 ID:???
>>654 の補足。
定数の定義自体も別ファイルにしてincludeすれば、
複数のファイルから同じテンプレを読み込んでいても
一箇所のみ変更するだけでディレクトリ名を全て変更できる。
●例;
config.phpにて以下を記述
define ("_DIR",'
http://example.com/hoge/ '); //ディクレトリ変更ならhogeを書き換える
HTML表示スクリプト(たとえばindex.php)にて、
include ("config.php");
include (_DIR."template_header.php");
include (_DIR."template_left.php");
include (_DIR."template_main.php");
これでキミのやりたいことが実現できるでしょう。
>>604 =
>>598 くん。
657 :
560 :2006/07/18(火) 17:35:22 ID:n2ZEUTcJ
やや進歩したのかなと言った感じですがerrorでまくりで困ってます。 <input type="checkbox" name="type[]" value="a"> <input type="checkbox" name="type[]" value="b"> <input type="checkbox" name="type[]" value="c"> でPHPは if( in_array( "a" , $ty ) ){ $a1 = 3; $b1 = 1; } if( in_array( "b" , $ty ) ){ $a2 = 4; $b2 = 32; } if( in_array( "c" , $ty ) ){ $a3 = 31; $b3 = 12; } $a = $a1 + $a2 + $a3; $b = $b1 + $b2 + $b3; echo "$a"; echo "$b"; こんな感じです。 3個とも選択すればerrorが出ないのですが、それ以外は全部errorです。 また方向が間違っているでしょうか?
>>656 それでも、そのファイルとconfig.phpのファイルの位置関係が変わったら
意味内よね。 って言い出したらきりないけども…。
僕の場合、ディレクトリ構造が変更されることはないと割り切って、
../ だとか ../../ だとかそれぞれに書いてますよ。
おいおい、
>>641 はどう見ても偽だろ。マジレスすんなよ。
え?本人(゚Д゚)?
>>657 <input type="checkbox" name="type[]" value="1">
<input type="checkbox" name="type[]" value="2">
<input type="checkbox" name="type[]" value="3">
PHP
foreach ($type as $v) {
echo $v."<br>";
}
これをやってごらん。
661 :
660 :2006/07/18(火) 17:44:43 ID:???
あ、PHPの方の$typeは送られてきたやつね。
>>657 エラーの内容を書きましょう。
…多分、変数を初期化してなくてNoticeが出てるだけだと思うけどね。
>>658 DOCUMENT_ROOTからの相対パスで指定する、って手はダメかな。
>>657 どうせなら、そういう具体的な数値はイッコの配列に入れたほうがいい
$arrayA = array (3, 4, 31);
$arrayB = array (1, 32, 12);
foreach ($_GET['type'] as $key => $val) {
if ($val) {
$a += $arrayA[$key];
$b += $arrayB[$key];
}
}
方向性ちがったらゴメン
$_GETは適時$_POSTに読み替えで
666 :
657 :2006/07/18(火) 18:18:21 ID:n2ZEUTcJ
>>660 これだとerrorがでませんね。
これをヒントにして作り直せと言うことでしょうか?
>>662 あとの二つをチェックした場合には
Notice: Undefined variable: a1 in C:\Program Files\Apache Group\Apache2\htdocs\ank.php on line 22
Notice: Undefined variable: b1 in C:\Program Files\Apache Group\Apache2\htdocs\ank.php on line 23
3544
このように表示されます。
>>664 今から試してみます。
667 :
666 :2006/07/18(火) 18:21:45 ID:n2ZEUTcJ
ちなみにline22,23は $a = $a1 + $a2 + $a3; $b = $b1 + $b2 + $b3; これです。
なんか宿題スレになってんな
>>666 >660と>657を掛け合わせれば解決できるのではないかと。
複合演算子を使う必要があります。
PHP: 代入演算子 - Manual
ttp://jp.php.net/manual/ja/language.operators.assignment.php >657を元に、複合演算子で変数をまとめても良いですが、
どちらかといえば660氏のアルゴリズムを流用した方がスッキリすると思います。
>>667 ちゃんと、英語読んでます?
辞書を引けば解るレベルの英文だと思うのですが…。
「警告: 未定義の変数があります: a1 in...line22」
「警告: 未定義の変数があります: b1 in...line23」
お分かりでしょう?
それぞれの右辺の3つの変数がセットされていなければ、「変数が初期化されていません」とエラーが返ってくるは道理です。
必ず、初期化済みの変数でもって式を構成しなければなりません。
671 :
670 :2006/07/18(火) 19:11:21 ID:???
む…、>664で答えが出てますね。失礼しました。 ただ、最初から答えを教えるとあまり勉強にならないと思いますが…、余計なお節介かな。
>>670 > 必ず、初期化済みの変数でもって式を構成しなければなりません。
別にエラーレベルを下げちゃっても全然かまわんと思うけどね。
初心者の勉強のために消さない方がいいと考えてるんだろうけど
「必ず」ってこたないだろ。
>>670 > 複合演算子を使う必要があります。
必要ってことはない。使えばすっきりするだけだ。
>>664 おいおい。それだと最初のチェックボックスをチェックしなかったらキーがずれるぜ?
合わせて
<input type="checkbox" name="type[0]" value="a">
<input type="checkbox" name="type[1]" value="b">
<input type="checkbox" name="type[2]" value="c">
とHTMLも書き直してやらなきゃ。
なんか回答してる側もヘタレ揃いだな。 授業で覚えたばかりの連中が回答やってんのか?
676 :
662 :2006/07/18(火) 19:44:29 ID:???
678 :
670 :2006/07/18(火) 19:58:09 ID:???
>>672 確かに、「必ず」は言い過ぎかな。
「その方がよい」というニュアンスでしょうか。
>>673 そうかもしれませんが、この場合は複合演算子を使う方が多いんじゃないですかね。
>>664 ,677
連想配列を使っても良さそうですね。
(HTMLで配列の要素の順番を考えなくても良いという意味で。)
679 :
670 :2006/07/18(火) 20:09:46 ID:n2ZEUTcJ
>>676 すみません。
その初期化の方法がわからなくて困っているんですが。
丸投げだな・・・
682 :
670 :2006/07/18(火) 20:39:22 ID:n2ZEUTcJ
>>680 自分でも色々と調べているのですが
うまくいかなくて・・・
初期化(?)なのかわからないですけど
$a1=$a2=$a3=$b1=$b2=$b3=0;
これを入れたらerrorが出ないようになりました。
こういうことで良いのでしょうか?
>>682 せいーかーい
どんどんどんぱーふーぱーふー
>>658 だからさ、絶対パスまたは絶対URLで書けばいいでしょ。
なんで相対パスにこだわってんの?
っていうかそれくらい自分の頭で考えてよ・・・
>>684 考えた結果「割り切ることにした」と書いてるんじゃないのか??
1.設定用PHPファイルはドキュメントルートなどを基準にした場所に置く 2.大元の設定用PHPファイルから各ディレクトリにシンボリックリンクを作る 3.大元の設定用PHPファイルを相対パスでincludeする同名のPHPファイルを各ディレクトリに置く のどれか辺りでどうよ?
丸投げ野郎はスルーしとけ このままじゃ他に質問したい人が居てもその雰囲気に気圧されするかレスの海に飲み込まれるぞ
>>685 だから別に割り切らなくても解決できるっつってんの。
諦めずに考えろっっつってんの。
>>686 まあ大元の設定用ファイルは、そもそもディレクトリを変えないことが基本だよね。
で、分かりやすい場所に置く(セキュリティ面も含めて、privateフォルダなどが良い)
>>644 素晴らしい解答だけど、元質問の
>strlenはひらがな、カタカナ、漢字を
>全て3バイトとカウントすると仮定しても大丈夫でしょうか?
という仮定が前提になっているような・・・。
そういう意味では
>>640 の方が安全なのかな?
mb_strwidthを使うべし
691 :
nobodyさん :2006/07/18(火) 23:57:48 ID:P26DbQmu
こんばんは。 質問です。 PHPには、ある文字列と別の文字列の差異を見つけ出せる関数などあるでしょうか?? そして差異のある部分をHTMLで太字にしてみるとか。 ご存知だったらうれしいのですが。
>>691 > ある文字列と別の文字列の差異を見つけ出せる関数などあるでしょうか??
差異があるということは等しくないと等価。
従って、以下のようになる。
if($str1 != $str2){ 処理 }
> そして差異のある部分をHTMLで太字にしてみるとか。
まず、どういう視点で「差異がある」と見なすかを定義しなければならない。
行毎に差異を見なすのか、1バイトずつ見て、差異があった部分からEOFまでを差異と見なすのか、...etc
>>691 > PHPには、ある文字列と別の文字列の差異を見つけ出せる関数などあるでしょうか??
無い。exec()でdiffを呼び出すとかしれ。
しかしdiffにしたって行単位で違いを探すだけで、1行の中でどこからどこまでが違うとかは出さないけどな。
> そして差異のある部分をHTMLで太字にしてみるとか。
それは自分でstr_replace()などで処理すべきことだ。
「どのように表示するか」を勝手にやるような関数なんて普通あるわけないでしょう。
>>688 その解決が絶対パス??数百のHTMLがあったらそれぞれに絶対パス書いちゃって、
サーバー環境が変わったり、同一サーバーに同じ構成のプログラムを2つ入れる羽目になったら、
全ファイル一括置換とかしてるわけ?
少なくとも
>>684 は全く解決案になってないと思うんだが、何そんな偉そうなんだ。
>何そんな偉そうなんだ。 馬鹿だからw
>>694 一括で変換する必要があれば変換すれば良いだけだろ?
やり方知らんの?w
>>696 ようするに君の
>>604 への回答は
「ディレクトリの変更があったら全部置換すればいい」
でFAなわけだw
質問者置いてけぼりで議論を始めることも無かろう、と思うわけですが。 前向きな議論なら大変結構なのですがね。
SNS作ってんだけど、ユーザの情報をすべてDBに格納するのはまずいかな。 pass情報はハッシュだけにしたほうが良い?
そのほうが良いと思うよ。
703 :
656 :2006/07/19(水) 02:39:22 ID:???
>>694 >数百のHTMLがあったらそれぞれに絶対パス書いちゃって
相変わらずものすごい勘違いしてるね・・・
いや、勘違いっていうか、
>>656 で示した手法を全く理解できてないみたいね。
誰が「数百のHTMLの絶対パスを書け」なんて言ったのよ? 誰も言ってないでしょうよ。
俺が
>>656 で示した手法なら、絶対パスを書くファイルはconfig.php一つのみ。
せっかく他人がいろいろと具体例を挙げて説明してやってんのに、
自分がバカで理解できないからってそんな偉そうに文句つけてたら誰も教えてくれなくなるよ。
>>703 いやだから、そのconfig.phpをincludeする部分はどーすんのって話でしょうが。
そこは結局相対パスで書くのか?
705 :
701 :2006/07/19(水) 03:42:26 ID:???
じゃpassはどこに保存すればいいですか。
>>704 ヒント:
config.php自体のincludeパスのみを定義・格納したメタconfigを用意する。
youtubeのURLで使っているような「wNbaCwt05ng」みたいな ユニークなID文字列をPHPで作りたいのですが、 どうするのがよいでしょうか? tempnam()を使うとそれっぽい文字列を取得できるのですが、 同時にファイルを作成してしまうのが、余計に思っています。
>>709 uniqid()?もまぁありなんですが、
できれば現在時間に依存せず、完全にランダムな文字列で、
大文字も使用して、短い文字列を希望しています。。
>>710 なんか適当にランダムな数値を作って、それを base_convert で 36 進数にする
つか、どういう手法で実装するかはケースバイケースだろう。 それは質問者の方が無い知恵絞って自分のケースに合った実装方法を選択するべき。 このスレで議論するのはあくまで「一般的な」「よく目にする」ものであって・・・ここまで書いといてなんだが言葉が続かん。 とりあえずもちつけ。俺もおまいらも。
>>710 「他と重複しない完全なランダム」をどこにも記録せずに一発で生成するのは無理があるから
ファイルを作るのがイヤならDBに過去のキーを全部記録しとくとかしないと無理じゃない?
uniqid()は衝突の危険を回避するために現在時間を利用してるわけで、それも無しとなると、
ランダムな名前を試しに作る→過去のデータに重複がないか検索→重複してたら再生成
みたいなループを自力でやんないと原理的に不可能だよ。
(過去データを保持できるのは自分のプログラムだけなんだから、それを自動で処理する関数はありえない)
715 :
714 :2006/07/19(水) 08:41:52 ID:???
>>710 で、単にランダムなだけで、既存と重複してるかどうかは無視していいのであれば、
function randstring($len) {
$c = array_merge(range(0, 9), range("a", "z"), range("A", "Z"));
$s = '';
for($i = 0; $i < $len; $i ++) {
$s .= $c[array_rand($c)];
}
return $s;
}
こんな程度で任意の桁数の数字・大小英文字の組み合わせでの文字列は作れる。
あとは作る→探す→作るをひたすら繰り返すだけ。
>>705 ・パスワードは保存しない、「忘れた」対応は新規に仮パスワードを振り出す
・比較用のハッシュとは別に暗号化して保存、キーはひみつの質問の答え、e-mailアドレス等から生成
こんなんでどうですか?
717 :
nobodyさん :2006/07/19(水) 10:04:07 ID:+mavFuWs
PHP4.3.xのソースが欲しいんですが、どこかでダウンロードできますか? 本家では最新の4.4しか置いてなさそうなんですが、実はどこかにあったりします?
>>717 PHPのサイトのDownloadのページに
Older versions of PHPってページへのリンクがあるけど?
javascript が on になってるかどうかで 処理分岐することは可能でしょうか? 可能な場合、方法教えてくりませ
$serial=array('\[(.+)\]','(.+)'); こうなってる だから print $serial[1]; が正解
721 :
720 :2006/07/19(水) 10:17:29 ID:???
誤爆しますた
>>719 ググれば星の数ほどサンプルが転がってる。
もはよう おまいら 何か昨日は祭りだったみたいだな ID:n2ZEUTcJ みたいなのにはレスすんな 途中から670とか名乗ってるしw
724 :
nobodyさん :2006/07/19(水) 10:59:42 ID:Ay+5zUkF
すみませんが、教えてください。 PHPの4.3で、クラスのメンバ関数の呼び出しを変数を使って 呼び出したいんですけどできませんか? $func1 = "testfunc1()"; $testClass->$func1;
>>724 $testClass->{$func1}
こうやってはいかがかな?
>>725 レスありがとうございます。が、しかし、Undefine Propertyになってしまいます・・・
>>724 現象が再現する最小限のソースプリーズ。
>>724 $func1 = "testfunc1";
$testClass->$func1();
または
$testClass->{$func1}();
ってカンジでどうでしょう?
729 :
717 :2006/07/19(水) 12:20:13 ID:+mavFuWs
>>718 ありがとう。
ページの右側ばっかり見てました。
おおぉ、皆様ありがとうございます。
>>727 ,728
$testClass->{$func1}();
この方法でOKでした。これなら、クラスを引数に渡せるし、
助かりました。
皆さん何かお勧めの参考書や辞典はありますか? 自分は PHP辞典 PHPスーパーサンプル第2版 をよく読みます。(主に辞典) 何かお勧めの参考書などがあれば教えていただけませんか?
PHPマニュアル、Google マジお薦め
734 :
707 :2006/07/19(水) 13:18:50 ID:???
>>715 サンプルコードありがとう。
uniqidを、大文字も利用した短縮文字列に変換して、
必要であればなんらかの暗号的変換もかけるのはどうだろう?
と今思いつきました。
>>734 欲しいのは大文字だけなの?
uniqid()をベースにする限り、「現在時間に依存しない」「短い文字列」という希望は満たせないわけだが。
> なんらかの暗号的変換もかける
その時点でその文字列はユニークじゃなくなってしまう可能性が高いんで
最初から自力でランダムな文字列を生成するのと何も変わらなくなってしまうんだが。
737 :
nobodyさん :2006/07/19(水) 13:51:12 ID:/PVcx7MW
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=shift_jis"> <title>test</title> </head> <body> <?php echo "hello"; ?> </body> </html> を実行すると <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=shift_jis"> <title>test</title> </head> <body> hello</body> </html> になって微妙に気持ち悪いんだが、これは仕様?
738 :
707 :2006/07/19(水) 13:58:05 ID:???
>>736 >> なんらかの暗号的変換もかける
>その時点でその文字列はユニークじゃなくなってしまう可能性が高いんで
>最初から自力でランダムな文字列を生成するのと何も変わらなくなってしまうんだが。
uniqidがベースなので、ユニークにできますよ。
また厳密には、現在時間に依存しますが、
容易に推測されないランダムな文字列になっていればいい、
という感じです。
さすが
>>707 ッ
世界中の暗号学者が必死になって証明することを簡単に言ってのけるッ
進数変換と同様に、コード中に使える文字の種類を増やして 1対1の可逆変換で短縮した文字列を再生成するってことだな。 できるじゃね?
743 :
nobodyさん :2006/07/19(水) 14:15:43 ID:/PVcx7MW
>>742 まじかorz
回避方法は改行を余計に入れる、ってことくらいか?
744 :
707 :2006/07/19(水) 14:21:34 ID:???
uniqid() を16進数から36進数に変換して、 軽くシャッフルするとかシフトするとかすれば、(容易に推測されない程度の暗号化) できそうですよね?
好きなようにすればいいと思うよ 暗号強度についてはスレ違いだしな
>>743 PHPタグはHTMLの途中に挿入するケースが多いから、
そのときに余分な改行が入らないように直後の改行を除去するようになってる。
逆に改行が入って欲しいなら、必要な分だけ改行を追加するしかないだろうね。
747 :
707 :2006/07/19(水) 14:24:49 ID:???
>>744 36進数は間違い。62進数(大文字つき)で。
>>744 36進数への変換まではいいと思うけど、シャッフルはユニークさが失われるからダメじゃない?
シフトってのがA,B.C→4,5,6みたいな1対1変換を指してるならそれは問題ないと思う。
749 :
707 :2006/07/19(水) 14:31:08 ID:???
>>748 シャッフルもパターンに則って行えば、シフトと同じようなもんです。
暗号化としてはゆるいですけど、外から推測困難な程度でいいので。
>>749 ああ、ルールに基づいて桁位置を一部入れ替えるってことね。いいんじゃね?
751 :
nobodyさん :2006/07/19(水) 14:34:42 ID:/PVcx7MW
飯食う時間ないんだけど、どうすればいい?
753 :
707 :2006/07/19(水) 16:30:05 ID:???
シフトは少し意味が薄いような感じでした。 シャッフルしてから、進数変換すると、 いい感じにランダムっぽくできました。
知っている人には簡単なことだと思うのですが list($a, $b) = explode("|", $str); みたいに書いたときに、| が含まれていない $str が来た場合に Undefined offset の NOTICE が出ます。これが出ないように うまい具合に短く書く方法はないでしょうか。 セパレータが含まれているかどうかを事前に判定して処理を分けるのも 考えましたが、あまり賢い方法じゃないように思えて。
未定義だと言われるのなら先に定義しておけばいいじゃない。
>>754 区切り文字の数に規則性がないのなら、左辺を配列にしてしまえば良いのではないでしょうか?
$array = explode("|", $str);
foreach($array as $val){
処理
}
>>754 こんなのはどうですか?
list($a, $b) = explode("|", $str . "|");
ていうか、これがよい。 list($a, $b) = @explode("|", $str);
error_reporting(E_ALL ^ E_NOTICE);
760 :
軟式PHP :2006/07/19(水) 18:59:40 ID:???
761 :
nobodyさん :2006/07/19(水) 19:08:31 ID:ae0kzGe1
classが全然わかりません 先生助けて foo::foget($this->hoge); の::てどういう意味でしょう??
やーい、やーい お前のかーちゃん お・ん・な!!
float型の 1.49080555641E+15 を、 一般的な数値の表示形式に変換して表示することはできますか? 単純にint型にすると、オーバーフローしてしまうので・・。
765 :
764 :2006/07/19(水) 20:48:57 ID:???
printf('%.0f', $float); で、できたようです。 ところで、 echo $a = 1209314420881328; と echo $b = 1209314420881329; は、違う値($a != $b)だけど、同じ表示(1.20931442088E+15)になるんですね・・。(いまいちよくわかってないです)
>>763 うちのかーちゃんそろそろ60歳なんだが、ある意味すごくイヤだなそれ
767 :
nobodyさん :2006/07/19(水) 21:54:47 ID:R8UceB4D
変数に指定の文字列が含まれている場合、処理するにはどうすればいいのでしょうか? 以下のようなソースですが、希望通りになりません。 $image="test.jpg"; if($image==".jpg"){ echo "これはJPEGファイルです"; }
768 :
nobodyさん :2006/07/19(水) 22:03:14 ID:SHpEirXb
>>768-769 以下のソースで出来ました。アドバイスありがとうございました。
if(preg_match("/.jpg/",$image)){
echo "これはJPEGファイルです";
}
敢えて言っておくと、 $image = 'test.jpg.png'; でも通るから正しくない
if(preg_match("/\.jpe?g$/i",$image)){ echo "これはJPEGファイルです"; } 拡張子が.jpegの時もたまにある
だったら「jeg」もあるんだなコレが。
任意の過去の日付をあらわす8桁の数字YYYYMMDDから、曜日を割り出す関数ってありますか?
>>776 まあ、関数じゃないけど、俺ならこうする。モジュール使うよりはマシ。
$a = '20060101';// 任意の日付
$weekname = array('日','月','火','水','木','金','土');
echo $weekname[date('w',strtotime($a))]; // '日'
検索エンジンになりつつあるな
PHPって何で3項演算子が左結合なんですか?
782 :
754 :2006/07/20(木) 02:05:26 ID:???
レス遅くなりました。
>>755 >未定義だと言われるのなら先に定義しておけばいいじゃない。
$bを先に定義してもこの NOTICE は出ますよね?そういう意味ではないかな
>>756-758 試して検討してみます。ありがとうございます。
>>759 確かに NOTICE は表示されなくなりますが…
根本的な解決にならないので…
>>782 > $bを先に定義してもこの NOTICE は出ますよね?そういう意味ではないかな
試してからやれ、このハゲ。
なんでPHPでこんな厳密なコーディングせにゃならんのだろうか
>>785 素直に
if(preg_match("/\.(jpg|jpeg|jpe|jeg)$/i",$image)){
echo "これはJPEGファイルです";
}
って書いた方がよさげ
でも俺、.jegって見たことないよ。どんなときに作られるんだそれ。
>>787 マジレスすると、拡張子なんて信用できない。
例えば、JPEG形式で保存された画像にファイル名を付けるとする。
そこで敢えて拡張子を「gif」にしたとする。
* * *
こんなことしてもJPEGがGIFになることはないよね。
誤解している人も多いが、HTML文書の拡張子は「html」か「htm」じゃないとダメだ ・・・なんて言う
香具師がいるけどそれは違う。
拡張子なんて関係無い。
>>782 が
>>759 >確かに NOTICE は表示されなくなりますが…
>根本的な解決にならないので…
といいつつ
>>758 を検討している件について。
>拡張子なんて関係無い。 サーバーの設定とブラウザの挙動による。
>>788 論点がずれている気がする。
拡張子を変更してもフォーマットに変更はない。
が、「拡張子を変えることで画像を表示できない」ことは問題だ。
大抵のサーバは拡張子 html で "Content-Type: text/html" を送ってくるし、
「拡張子なんて関係ない」は言い過ぎではないかと。
自前のサーバで "Content-Type" を設定するというのなら、気持ちはわからないでもないが、
それを他の人に求めるかとなると話は別だろう。
>>789 おまけに、この場合のNoticeを消そうと思ったら
× list($a, $b) = @explode("|", $str);
○ @list($a, $b) = explode("|", $str);
だったりする罠。
>>789 必ず $a と $b の二つの要素だけが必要になるのなら、
list($a, $b, $dummy) = explode("|", $str."||");
こうすればよい。
ごめん。やっぱりこれでよかった。 list($a, $b) = explode("|", $str."|");
>>754 セパレータが存在するか事前にチェックして処理を分けるのが一番賢い方法だと思う。
見た目に囚われてて視認性や可読性を犠牲にしてないか?
三項演算子のダメな使い方と同じ道を辿ってるぞ。
796 :
754 :2006/07/20(木) 12:01:05 ID:???
>>789 >>792 エラー制御演算子使うのも確かに本質的に同じですね…
で、配列のエラーなので
>>792 のいう通りでした。
>>795 $strの中を2度も見たくないと思って質問したのですが、
ごもっともな指摘です。
ところで、変数に大き目の文字列(HTMLページ丸ごとのような)が入っていて、 スクリプト途中で使用済みになった場合、 $html = ""; とかって初期化すると、スクリプトの効率がよくなったりしますか? たとえば、 $arHtml = file('aa.html'); $html = implode($arHtml); のように読み込んだファイルを $html の文字列一つにした後、その後の処理で使用しない $arHtmlを $arHtml = array(); とするとか。
>>765 float の大きさはプラットフォーム依存です。
ただし、通常はおよそ 10 進数で 14 桁の精度があり、最大値は ~1.8e308 (これは 64ビット IEEE フォーマットです) となります。
1.2093144208813E+015
普通は14桁のはずだが
>>797 どうせ消すならちゃんとunset($arHtml)で;変数管理構造体ごと消すべきだと思うけど…。
食ってるメモリ量にもよるけど、それが巨大なら効率が上がる場合もあるんじゃないかな。
HTML丸ごとくらいは大したサイズじゃないと思ったりもするけど。
メモリスワップを引き起こすほどじゃなきゃ体感できるほど変わらんと思ったりもするけど。
>>799 ありがとうございます。
どのくらいが大きい量なのかわからなかったので。
レンタル鯖であれば、100バイトの1万行でも楽々動いていたのでさほど気にすることでもないのでしょうか。
共有のレンタル鯖だと自分だけ省メモリにしたとこで速度的には何も変わらんよな。 単に他人への迷惑が多少減るだけ。
>>797 > $arHtml = file('aa.html');
> $html = implode($arHtml);
使ってしまったメモリを解放するより、2回もでかいメモリアロケーションを
発生させてるのを減らす努力をした方が効率は上がると思う。
804 :
nobodyさん :2006/07/20(木) 14:06:48 ID:zh5fHket
質問です。
自分で定義したfunctionが沢山書かれたファイルを、別のサーバにあるphpファイルで呼び出そうとしたらうまくいきません。
別のサーバのphpファイルには
require_once("
http://hogehoge.com/my_function.php ");
としているのですが、実行すると、
Call to undefined functionといわれます。
ちなみhogehoge.comのサーバのルートからのパスをrequireで指定すると動きます。
くだらない質問ですみません、ヒントがありましたらお願いします。
>>802 そのスクリプトは、HTMLのテンプレートの中に置き換える予定の文字を書き込んでおき ( %name% ) 等
あとで、
foreach ($Ar as $key => $value) {
$html = str_replace("%".$key."%", $value, $html);
}
でワンクッションで置き換えようとおもうたからです。
807 :
nobodyさん :2006/07/20(木) 14:17:28 ID:zh5fHket
>806 レスありがとうございます。 includeでも同じようです。 サーバの設定にもよるのでしょうか?
809 :
nobodyさん :2006/07/20(木) 14:44:51 ID:zh5fHket
>808 レスどうもです! なるほど!ちょっと盲点でした。 httpで読んでもダメという解釈でいいのでしょうか?
>>805 んー・・・・ だから?
それと無駄メモリ使いの手抜きコードと何の関連があるの?
いや別にHTMLファイル2個分くらい、たかが知れてるから
さほどこだわる必要も無いと思うけどな。
そのくせメモリ解放を気にするなんて小にこだわり大を失うって言うか。。
>>809 http以外で何でアクセスするんだ。
そうでなく、httpでアクセスしてもちゃんとPHPコードの形で出力されるようにすればいいだけ。
>>809 拡張子を.txtにしてインクルードしたらいい
813 :
軟式PHP :2006/07/20(木) 14:53:14 ID:???
関数丸見えて嫌だな。 ちゃんとアクセス制限しないとな。
拡張子をcgiにしておけば500エラーが出て表示されない
>>810 ありがとうございます。
わからないから聞いたわけで。
HTMLファイル2個分くらいはいちいちこだわらずにおいたほうがいいということですね。
ありがとうございました。
>>816 データファイルはよく拡張子cgiにしとくよ。
>>813 JavaScriptだって丸見えなんだから気にしない!
こんにちは。初めてお世話になります。 ホームページに、自作した柄のカウンターを置きたいのですが、そういったソフトはありますでしょうか? なるだけ簡単に設置できるソフトがいいです。 出来れば、無料で。。。よろしくお願いいたしますm(_ _)m
>>819 いっぱいある。
どこのでもだいたい簡単で、ほぼ無料。
>>819 ここは自分で作る人のためのスレで、出来合いのソフト探しはスレ違い。
822 :
819 :2006/07/20(木) 16:16:00 ID:???
>>820 ありがとうございます。もっかい探してみます!ありがとうございました。
>>821 すれ違いスマソ。
それでは、失礼しますた。m(_ _)m
>>817 プログラムから読むのとhttpで読むのとは訳がちがう。
訳あってあいてのftpのパスワードを知る訳にいかない。
こっちのソースは相手にみえてもよい。
という場合に、手元で相手の鯖のプログラムをいじれるというメリットはある。
質問です。 ページを更新するたびに、 file()でデータを配列に格納させて foreach(as)で処理をしているのですが、 file()では何行くらいまでのファイルにすれば良さそうですか? やはり、1000も2000もあると、重すぎますよね。 また、読み込むファイルを2回に分けた場合、 負担があまりかからないのでしょうか? 例えば $file = file("test1.dat"); <=500行 foreach ($file as $value){ 処理 } $file = file("test2.dat"); <=500行 foreach ($file as $value){ 処理 } この処理と $file = file("test.dat"); <=1000行 foreach ($file as $value){ 処理 } この処理 どちらのほうがサーバーに負担をかけずに良さそうですか?
くだらない質問だと思いますがよろしくです。 文字列から最初の2文字だけを取り除くにはどうしたらいいでしょうか?
826 :
819 :2006/07/20(木) 17:10:45 ID:???
お陰様で、無料の自作画像の使えるカウンターの置いてあるサイトが見つかりました。 本当にありがとうございました。m(_ _)m
827 :
825 :2006/07/20(木) 17:12:36 ID:???
おかげさまで解決しました。 本当にありがとうございました。m(_ _)m
X年Y月が、A年B月〜C年D月の間にある年月かどうかを判定する 簡単な方法はないでしょうか?
>>824 たとえば一行10バイト程度なら?サーバーの環境にもよるし。
要はケースバイケース。
掲示板の送信内容が全て半角の場合をチェックしてキックしたいんですが どうしたらいいでしょうか? 半角といえど色々あるので正規表現でもどう書いていいかわかりません
>>830 1行約50byteくらいなんですが・・・
サーバーの環境にもよるのですね
アリガトウございます。
>>831 送信内容を
$txt
に格納したとして
strlen($txt) == mb_strlen($txt)
なら
キック
>>829 年が西暦なら普通にXYとABとCDを比較すれば良いのでは?
835 :
nobodyさん :2006/07/20(木) 18:02:55 ID:a8uvmb5c
ちょっと、お伺い致します。「
http://www 〜/index.php」でアクセス
してきた人を全て、「
https://www 〜/index.php」に転送させてSSLで
通信させたいのですが、どうやれば良いのでしょうか?
PHPで$_SERVER['DOCUMENT_ROOT']; や $_SERVER['SCRIPT_FILENAME'];
で調べて、「
https://www 〜/index.php」に転送させようとしたのです
が、「http」でリクエストしてきたのか「https」でリクエストしてきた
のかまでは表示されませんでした。Apacheのバーチャルホストの設定
でも良いので、どなたか「http」でアクセスしてきた人を「https」の
同じページに転送させる方法をご存知でしょうか?宜しくお願い致しま
す。
>>835 $_SERVER["HTTPS"] は未定義?
何故、リファラーを調べない?
>>837 何故、リファラーを調べない? という発言が出てくるのか意味不明。
839 :
nobodyさん :2006/07/20(木) 18:21:14 ID:a8uvmb5c
>>836 様
>>835 です。ありがとうございます!!
$_SERVER["HTTPS"] で調べたら、httpsの時は「on」になり、
httpの時は何も表示されませんでした。この$_SERVER["HTTPS"] が
onかどうかで、条件分岐させれば良いのですね。
どうも、ありがとうございました!!
>>839 こういう時は phpinfo を https でアクセスして表示させてみると良いよ。
定義される $_SERVER 変数一覧が見れるから。
許さんよ
許しておくれよ
ダメと言ったらダメだ!!
このガンコ親父が!!
846 :
nobodyさん :2006/07/20(木) 18:47:32 ID:a8uvmb5c
>>840 >>839 です。ありがとうございます。phpinfoをhttpsでアクセスして
みたら、_SERVER["SCRIPT_URI"] 等の$_SERVER 変数一覧が出てき
ました。こういう時は、phpinfoで定義済み変数を調べれば良いので
すね。ありがとうございました!!
このウンコ親父が!!
このチンコ親父が!!
このマンコ親父が!!
(´Д`;)ハァハァ
おまいらオモロイw けど、そんなのはマ板でやれ
おまえら自演しすぎ、迷惑だから消えろ
853 :
nobodyさん :2006/07/20(木) 19:59:45 ID:zh5fHket
>811
レスどうもです。遅くなってすみません。
なんとなく解決した気になっていたのですが、いままた別のパターンで同じような罠にはまりました。
A include(
http://hogehoge.com/my_function.php );
B include(/home/htdocs/my_function.php);←サーバのパス
AがダメでBが大丈夫な仕組みというか理由が知りたいです。
僕はいまローカル環境で作っていますが、AのパスもBのURLもブラウザに直接入力すると、どちらも何も表示されません。
854 :
nobodyさん :2006/07/20(木) 21:45:25 ID:x+eRwqU4
"a=1&b=2&c=3" という文字列を与えたら Array ( [a] => 1 [b] => 2 [c] => 3 ) という配列を返してくれる関数はありますか? また、その逆をしてくれる関数はありますか?
$ar=split('&', $str) ; $str=join('&', $ar) ;
>>853 勿論ソースを表示させての話だよね>何も表示されない
>>854 > という配列を返してくれる関数はありますか?
ある。
> また、その逆をしてくれる関数はありますか?
PHP5以降でならある。
860 :
nobodyさん :2006/07/20(木) 23:06:09 ID:eXAIKTBk
マルチバイトで「山田」と「田中」のように複数の文字列のうち、 どちらか一方の文字列をマッチさせるときはどのようにしますか? 単にマッチさせるだけなので、正規表現関数ではなくて 文字列関数でループ処理した方がいいですかね? (マルチバイトのmb_eregとか試してみたけどうまくいかなかった)
>>853 > A include(
http://hogehoge.com/my_function.php );
これはhogehoge.comのWEBサーバーにお願いしてファイルをダウンロード(名前をつけて保存と一緒)している。
そのため、取得できる内容はWEBサーバーの出力結果の内容になり、
PHPとして解釈できる拡張子だとPHPが実行されてその結果が表示されてしまう。
> B include(/home/htdocs/my_function.php);←サーバのパス
これは途中に何も介さず、PHP自身がファイルをそのまま取り込んでいる。
だから何も内容は変化せず、ファイルの内容がそのまま取得される。
通常のPHPの処理としてはBなわけだが、Aみたいに「ネット越し」でファイルを得ようとすると、
何を経由してるかによって結果が変化してしまう場合があるというわけ。
>>860 どう試して上手くいかなかったのかkwsk
(ソース貼れ)
>>860 mb_eregでもmb_strposでもどっちでもできると思うんだが。
mb_eregで一体どういう書き方をしたんだ。
>>860 件数が少なくて、検索する文字列の内容が分かってるならループも要らんだろう。
>>860 if(($str=="田中"||$str="yamada")){
処理;
}
870 :
nobodyさん :2006/07/21(金) 08:29:07 ID:iPhYBOeT
php超初心者で勉強を始めたばかりのものですが、phpコマンドにzlibモジュールを追加 する時に、libexpatというライブラリが必要と本に書いてあったのですが、そのrpmパッケージが どこで入手できるのかわかりません。 大変申し訳ありませんが、ご存知の方がいらっしゃいましたら教えていただけないしょうか? 開発環境はwindowsではなく、RedHatLinux9です。 aptコマンドを使えるようにして、検索をかけてみたのですが全くヒットしません orz
873 :
nobodyさん :2006/07/21(金) 08:52:48 ID:iPhYBOeT
>872さん PHP×PostgreSQLでつくる最強webシステムという本で、その本の340ページに書いてあります
>>873 2002年の本か…もう情報が古いよーな気がするが。
875 :
nobodyさん :2006/07/21(金) 09:05:58 ID:iPhYBOeT
>874さん たしかに。。。phpのバージョンが4の時の話なので。。。。 パッケージ自体がもうリリースされていないんでしょうか
っていうか、XSLを使うわけじゃなかったらexpatなんて要らないと思うんだけど。
877 :
nobodyさん :2006/07/21(金) 09:18:41 ID:iPhYBOeT
>876さん なんだか、Authクラスを使うには必要っぽいような書き方されてるんですよねぇ
くだる話はやめてください
880 :
nobodyさん :2006/07/21(金) 10:06:48 ID:5NMNDw00
>861 ありがとうございます。凄くわかりやすいです。助かりました。 質問ばかりで申し訳ないのですが、 インクルードしたいファイルが同一サーバではない場合(サーバのパスを指定できない場合)はどのようにしたらいいでしょうか? 前述のように拡張子をphp以外のもの(webサーバを経由しても内容が変化しないもの)にするのが一般的でしょうか?
881 :
860 :2006/07/21(金) 11:30:17 ID:???
mb_ereg_match使ってました で、やっぱりマッチしない mb_eregならマッチしてました mb_regex_encoding('sjis'); $str = "こんにちは山田太郎です"; $pattern = "(山田|田中)"; if (mb_ereg($pattern, $str)) echo "mb_eregマッチしました"; else if (mb_ereg_match($pattern, $str)) echo "mb_ereg_matchマッチしました"; else echo "no match";
882 :
860 :2006/07/21(金) 11:32:37 ID:???
↑ すいません テストコード整形したので分岐がおかしい 両方チェックするようにしてもmb_ereg_matchはマッチしない PHP4.3系
他サーバのphpファイルをincludeってことは allow_url_fopenが有効ってことか、 他サーバのソースをそのまま実行するってのは、 きもちわるく思ってしまう 最も、他サーバが信頼できるサーバであるなら そういう機能は積極的に使うのが賢いのだと思いつつ ここぞという使いどころにめぐり合っていない allow_url_fopen のステキな使い方ないかな?
>>880 まー、拡張子を変えちゃうか、あるいは.htaccessで拡張子に対するApacheの扱いを変えちゃうか、
あるいはラッパーのプログラムを経由してファイル内容をreadfile()とかで垂れ流させるか、ってとこじゃない?
フォームに入力された半角のバックスラッシュまたは円マークを 全角の¥に変換したいのですがうまくできません。 PHP Version 5.1.2です。 $a = "\2,000"; //$a = mb_ereg_replace("\","¥", $a); //エラー //$a = mb_ereg_replace('\',"¥", $a); //エラー //$a = mb_ereg_replace("\\","¥", $a); // ワーニング変換できず //$a = mb_ereg_replace('\\',"¥", $a); // ワーニング変換できず こんな感じです…。何かうまいやり方がないでしょうか?
str_replace
>>886 おおおおお・・・・・・・・
すんなりできました。この辺の似た機能だけど違う関数を
勉強しないとダメですね。886さんありがとうございました。助かりました。
覚えたての正規表現ってのはなぜかかっこつけて使いたがるからね。 str_replace は天才
>>887 文字コードがシフトジスだとstr_replaceじゃ駄目だけどね
マニュアルに内部コードとしてsjis使うのは薦めないってちゃんと書いてあるんだから、 おとなしくUTF-8でも使ってろってもんだ。
891 :
nobodyさん :2006/07/21(金) 17:43:50 ID:5NMNDw00
mysqlに接続するために必要な、DBの名前とかURL、パスワード、ユーザー名を config.phpというファイルに書いて、必要なときにincludeしているのですが、 スクリプト中にパスワードとかを直接記述しているのは、やっぱりセキュリティー的に危険なのでしょうか? また、こういう場合は一般的にどうやって対処しているのでしょうか?
>>891 その、config.php がドキュメントルートの下にないのなら、別に問題ない
Perlの時は、Qとか駆使してSJISで書いてたな。
www.example.comから飛んできた人のリファラーをチェックすればいい
>>895 能動的にはwww.example.comを走査してリンクを探す。
受動的にはhogehoge.comにアクセス解析を設置してリファラを見る。
898 :
nobodyさん :2006/07/21(金) 18:14:46 ID:b+2L373x
名前の入力フォームでテキストに入力された漢字をもう一つのテキストにphpで カタカナに変換するにはどうしたら良いでしょうか?ご教授お願いします
>>897 能動的にリンクを探したいのですが、
何か他のサイトを読み込む方法などあるのでしょうか?
>>902 有難う御座います。
タイトル(?)の部分が文字化けしてしまったのですが、
mime_encodeというのは何でしょうか?
ググってみたのですが、それらしいサイトが見当たらなくて
>>903 最近 mime_encode せずにメールのヘッダ部分が化けるって質問多いな。
なんだかなぁ。
mb_encode_mimeheaderですね。 今見つけました。
SMTPサーバーを立ち上げたいのですが、 何か参考になるサイトがあれば教えてください。
PHPでSMTPサーバを書くっていうことか?
>>909 いや、自分のローカルサーバーでメールが送信できるようにしたいんです
それ、phpの質問?
>>908 君
>>634 だろ?
こんなところで聞かないと駄目なようなら SMTP サーバなんて立ち上げるな。
>>915 立ち上げてはいけないのですか・・・。
・・・あれ?
PHPってサーバーにウプしたらソースがばれますか?
サーバの設定による
919 :
917 :2006/07/21(金) 20:28:16 ID:???
>>918 必死につくったのがバレるのはいやだなとおもったんですが、
サーバーにどんな設定をすれば盗まれないのでしょうか?
>>919 ロジックを記述した部分をドキュメントルートの下に置かなければ
よほどのことがない限り、ソースは流出しないよ
>>920 ありがとうございます。ちょっと勉強してみます。
922 :
nobodyさん :2006/07/21(金) 21:22:58 ID:5NMNDw00
>892 >みなさん パスワードなどが書かれたファイルを、ドキュメントルートより下にしか置けない場合、対処法はありますか? そもそも、ドキュメントルート以下に置いたPHPファイルの中身を見るのは、結構簡単なのでしょうか?
その程度の知識で作ったコードなんて、誰も見たいとは思わんだろう 参考になるコードなら、山ほど公開されてるしな
ajax の使いやすいグラフィックライブラリってありますか?
925 :
924 :2006/07/21(金) 22:02:12 ID:???
system()を利用してシェルをコマンドを送った場合に、 ブラウザを閉じたり、セッションが終了すると 勝手に送ったジョブが終了してしまいます。 ブラウザを閉じたりしても、 ジョブが残るにはどうすればいいんでしょ?? 環境は FedoraCore 5 PHP 5 Apache 2 です。
>>898 漢字の正確な読みなんて人間にだって分からないんだからプログラムじゃ不可能
>>922 拡張子またはパーミッションの変更、あるいは特定のディレクトリに入れた上で
そのディレクトリに対して全IP制限やBASIC認証を施すなど。
header('Content-type: application/xml; charset=utf-8'); $rdfData = simplexml_load_file('new.rdf'); $rdfData->channel->items->Seq->addChild('li', 'testurl', 'rdf'); echo $rdfData->asXML(); このコード実行するとApacheが死ぬんだが・・・・・
>>930 サーバモジュールとしてPHPを入れてるなら、
PHPとサーバ(Apache)は一連托生。
PHPが落ちるような時にはApacheも引きずられる。
932 :
nobodyさん :2006/07/22(土) 11:39:11 ID:6iz1vYAq
カウンタを作るためテキストファイルの読み書きをしているのですが、ごくたまにファイル内容が壊れてしまうときがあり悩んでおります。 コードは $fp = fopen($count_file,'r+'); if (flock($fp, LOCK_EX)){ $count = trim(fgets($fp)); if (empty($count)) $count = 0; $count++; ftruncate($fp, 0); fseek($fp, 0); fputs($fp, $count); } fclose($fp); flockでロックしてるので、ftruncateでファイル内容をクリアしても他から妨害されないと思ってるのですが… お知恵をいただきたく。
>>932 俺は書き込んでから丸める主義
fputs($fp, $count);
ftruncate($fp, ftell($fp));
ファイルが空になる瞬間がないと思ってるんだけど
934 :
nobodyさん :2006/07/22(土) 12:42:04 ID:QMrS4QvA
URLを指定してtitleを取得したいんですけど、 良い方法ありませんか? XMLパーサーでなんとか、文字列にして無理やり、正規表現でなんとか、 頭の悪い私にはどれも難しくて、スマートな方法はありませんか? お願いします。
>>934 file_get_contents ()で開き、正規表現でマッチさせればいいやん。
937 :
934 :2006/07/22(土) 13:05:30 ID:QMrS4QvA
preg_split ですよね? たぶん正規表現の書き方がおかしくて、出来ませんでした。 正規表現、勉強してきます。
PHP4でこれを使ってftp_chmodを実現してるんですが、 指定ディレクトリ以下のファイル全てのパーミッションを変更、 またはワイルドカードでの指定を可能にすることはできないでしょうか? あるディレクトリ内のファイルのパーミッションをphpからftp関数経由で 全て変更したいのですが、数が膨大なため、苦労しています。 <?php if (!function_exists('ftp_chmod')) { function ftp_chmod($ftp_stream, $mode, $filename) { return ftp_site($ftp_stream, sprintf('CHMOD %o %s', $mode, $filename)); } } ?>
split?
940 :
nobodyさん :2006/07/22(土) 13:10:43 ID:6iz1vYAq
>>933 おお、なるほど!
参考にさせていただきます。
941 :
934 :2006/07/22(土) 13:15:54 ID:QMrS4QvA
matchですね、、、、、 splitでやってました。 それにしても正規表現、苦手ッス
>>938 普通に他のFTPクライアントがやってるように
一覧を取得して(必要なら再帰)、各々にchmodを掛ける。
while で配列の要素数だけ繰り返し、という場合、 $i = 0; while($i < count($array)){ $i = $i + 1; } としてますがもっと簡単なコーディング教えてくださいませ
>>943 foreach($array as $value)
foreach($array as $key => $value)
945 :
nobodyさん :2006/07/22(土) 14:16:42 ID:wSNHExxb
ああああ
現在のURLを取得するにはどうすればいいですか?
$host = $SERVER['HTTP_HOST']; $req_uri = $SERVER['REQUEST_URI']; $scr_name = $SERVER['SCRIPT_NAME']; $php_self = $SERVER['PHP_SELF']; // 1 $url1 = $host . $req_uri; // 2 $url2 = $host . $scr_name; // 3 $url3 = $host . $php_selfi; ケースバイケースで好きなのを選べ
phpのPCREパターン修正子で 「デフォルトで、PCREは検索対象文字列を(実際には複数行からなる 場合でも)単一の行からなるとして処理します。 」 の'm (PCRE_MULTILINE)'の意味が分かりません。
950 :
nobodyさん :2006/07/22(土) 15:40:13 ID:kdb16aHf
漢字などの文字列を数字に変換するような関数ってないですか?
951 :
nobodyさん :2006/07/22(土) 15:46:36 ID:LAiwhQ0T
>>949 文字列の途中に改行コードがあっても、複数行とは認識しないってこと
"bar\nfoo\n"
こんな場合の文字列のこと
952 :
949 :2006/07/22(土) 16:45:47 ID:???
>>951 m有りでもmナシでも同じじゃないですか。
>>952 違う、mが付くと\nが末尾として扱われる
≪前の5件 |1| |2| |3| 次の5件 >> こんな感じでページ送りしたいのですが、参考になるソースをおいてる サイトありますか?
その程度のアルゴリズムも考えられないならプログラム止めれば?
>>954 パラメータでページ番号を渡す
→ページ番号から表示範囲を計算する
→表示範囲の分だけHTMLを表示する
終わり
cron を使って PHP のプログラムを動かしたいのですが、 本来の php.ini の設定は mbstring.script_encoding = EUC-JP なのですが cron で動かしたいプログラムが置かれているディレクトリに .htaccess を置いて、UTF-8 で書いています。 コマンドラインから、この PHP を動かそうとすると、 どうやら文字コードが違うのでエラーが表示されます。 コマンドラインに文字コードを指定する、なんてのはできないでしょうか?
>>961 utf-8な設定のphp.iniを書いて、実行時に読み込ませる。
$ php -h
-c <path>|<file> Look for php.ini file in this directory
>>949 $text = "abc
123
def";
echo preg_match("/\A.*\Z/", $text)," <= /\A.*\Z/\n";
echo preg_match("/\A.*\Z/s", $text)," <= /\A.*\Z/s\n";
echo preg_match("/^\d/", $text)," <= /^\d/\n";
echo preg_match("/^\d/m", $text)," <= /^\d/m\n";
Windows2003 + Apache2 + PHP5 をインスコして動かそうとしてます。 WebサーバにIEで接続して下記のPHPファイルを見たら 「HTTP400 正しくない要求」と怒られました <? phpinfo(); ?> phpがうまく動いてないんだけど、httpd.confが悪いんかな?
>>961 .htaccessってのはApacheの設定。PHPもApacheモジュール版は
Apacheの一部分という形なので、それで設定が出来る。
PHPの設定は、基本はphp.iniの方でやるんだよ。
>>964 もちろんIISは動いてないよな?
拡張子の設定をApacheにちゃんとしてる?
>>966 IISは動いてない。ほかのhtmlも見れる
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
Action application/x-httpd-php "c:/php/php-cgi.exe"
こんな感じで拡張子も設定してある
ほかのサイトを見てたら
LoadModule php5_module "c:/php/php5apache2.dll"
php-cgi.exe使わないでこうしろってのもあったけど、
なんかこれだとApache自体起動しないんだよね。
c:\php\php5apache2.dllはあるくせに
Syntax error on line 115 of C:/Program Files/Apache Software Foundation/Apache2.2/conf/httpd.conf: Cannot load C:/PHP/php5apache2.dll into server
と怒られるんだよね。PHPが設定できてないのかな?
php4.3にて検索用の管理用データベースを作成しています。 検索時にはクエリーに日本語を含めることもあるのですが、 そのときに「ー」が入るとREG_EBRACKというエラーが返ってきます。 調べてみたところJIS特有?のエラーで別の文字コードで回避出来るらしいのですが、 システムの都合上JISで構築する必要があります。 この場合「ー」を含んだ文字のエラーを回避する方法はありますでしょうか。 よろしくお願いします。
969 :
968 :2006/07/23(日) 00:04:05 ID:???
すみません、補足です。 具体的には、 if( ereg($target, "探してるものー") ){ echo "HIT"; } のようにereg系統の関数で上記のエラーが発生しました。 試しにmb_eregを用いてみましたが同様にエラーが発生しました。
970 :
nobodyさん :2006/07/23(日) 00:16:40 ID:TM25KdOC
MagpieRSS【
http://www.hyuki.com/yukiwiki/wiki.cgi?MagpieRSS 】
これを利用して仲間内で必要な情報をまとめたサイトを作ろうと考えました。
それで、実際にこれを導入してみたところ
2バイト文字が ? で表示されてしまいます。
そのため、このページの下にある 「Jcode.phpを使う方法」を試してみましたが
やはり、2バイト文字が ? で表示されてしまいます。
Windows上で下記のような条件で動かしています。
PHP Version 4.4.2-pl1
Apache 2.0 Handler
最初は、マルチバイト系の問題だと思ったのですがJcode.phpを使っても
解決しないため、原因がわからなくなってしまいました。
どなたか、経験のある方がいらっしゃったらご教授願いたいです。
宜しくお願い致します。
971 :
968 :2006/07/23(日) 00:29:17 ID:???
スミマセン自己解決しました><; パソコン止めればよかったんですね。
973 :
nobodyさん :2006/07/23(日) 01:59:11 ID:V6UlX/Ft
[root@localhost ~]# pear install DB No releases available for package "pear.php.net/DB" Cannot initialize 'DB', invalid or missing package file Package "DB" is not valid install failed pear install の使い方間違ってるかな?
974 :
まさお :2006/07/23(日) 02:12:02 ID:PeJIVLLO
>>968 JISでなくSJISだろ、それ…最低限の文字コードの知識も持ち合わせてないで
日本語対応データベースを構築しようとはシステム屋をなめてるな。
素直に金出して外注で作ってもらえば?
つか、それ正規表現なんて使う必要あんの?
>>975 いちいち細かい誤字をそこまで叩いて何か楽しい?
システム屋を語る前に精神を浄化した方がいいよ、どの程度のシステム屋かしらんけどw
JISとSJISの違いを誤字だってよ!すげーなおまえww
何にせよ余計な事言いすぎ。煽り交じりでしかレスできないって どんな精神の持ち主だよww
気付いてないようだから教えてやる。どっちも同レベル。うぜぇからキエロ。
はあ…、こういう叩きの連鎖が荒らしになっている事に当事者は気が付かないんだよね。
すいません質問させてください。 PHPで2MB以上のファイルをアップロードする場合、php.iniを編集しなければならないようですが、 当方レンタルサーバーを使っておりまして、php.iniの編集ができません。 スクリプト中に「ini_set('upload_max_filesize', '5M');」と記述しても2MB以上アップロードできません。 .htaccessでも設定できるようなのですが、具体的な記述方法を教えてください。
pph.iniの編集ができないってことは共有のレンタルか? 共有鯖で2MB以上のファイルをアップロードなんてはた迷惑だと思うがね
>>969 単純な検索ならmb_strpos使っとけば
とりあえずこけることは無くなると思う。
正規表現をどうしても使いたいなら工夫が必要。
下らないPHPの質問はここに書き込みやがれ 25
987 :
nobodyさん :2006/07/23(日) 16:41:08 ID:wyHjEd65
0723,hoge 0723,fuga 0722,moge 0721,sage 0719,age ってな具合で、日付,文字列って言う順序に並んでるファイルの中のデータを 21日から23日までの分だけ取得してprintするにはどうすれば良い?? 21..23とかいう書き方ってあるんだっけ?
>>987 ファイルなら順々に読んでいくしかないのでは?
一発で読み出そうと思ったらDB化するしかないような。
思考停止した質問ばっかだな
990 :
nobodyさん :2006/07/23(日) 17:34:54 ID:wyHjEd65
>>988 レスthx
if($file[0] == "21..23"){
$line = $file[1];
}
print $line;
こんなんじゃだめっすか?
991 :
nobodyさん :2006/07/23(日) 17:36:08 ID:wyHjEd65
↑ 21..23って書いたら、21のときしかtrueにならない(T_T)
>>991 if文の中には==や!=の他にも<とか>が使えるからw
後はな。分かるよな?
>>990 PHPじゃ使えんだろうその範囲指定は。
SimpleXML関数で、子要素の先頭に子要素を追加するにはどうすればいいのでしょうか。 addChildメソッドでは末尾に追加されてしまいます。
in_array($file[0], range(21,23))
998 :
nobodyさん :2006/07/23(日) 19:41:06 ID:wyHjEd65
999 :
nobodyさん :2006/07/23(日) 19:44:10 ID:wyHjEd65
>>997 ゴメソ。。
ホストではじかれてる。。 ナゼT_T
1000!!
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。