【PHP】下らねぇ質問はここに書き込みやがれ 24
レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん
2006/07/07(金) 14:54:53ID:KnVubDvEここならお前の下らない質問に回答があるかも知れません。
まず読め【PHP マニュアル】
http://www.php.net/manual/ja/
過去スレは>>2
0002nobodyさん
2006/07/07(金) 14:55:46ID:???http://pc5.2ch.net/test/read.cgi/php/1099322141/
【PHP】くだらねぇ質問はここに書き込みやがれpart2
http://pc5.2ch.net/test/read.cgi/php/1105218084/
【PHP】くだらねぇ質問はここに書き込みやがれpart3
http://pc5.2ch.net/test/read.cgi/php/1107780435/
【PHP】くだらねぇ質問はここに書き込みやがれpart4
http://pc8.2ch.net/test/read.cgi/php/1110697712/
【PHP】くだらねぇ質問はここに書き込みやがれpart5
http://pc8.2ch.net/test/read.cgi/php/1114787573/
【PHP】くだらねぇ質問はここに書き込みやがれpart6
http://pc8.2ch.net/test/read.cgi/php/1117945031/
【PHP】くだらねぇ質問はここに書き込みやがれpart7
http://pc8.2ch.net/test/read.cgi/php/1121100429/
【PHP】くだらねぇ質問はここに書き込みやがれpart8
http://pc8.2ch.net/test/read.cgi/php/1123431535/
【PHP】くだらねぇ質問はここに書き込みやがれpart9
http://pc8.2ch.net/test/read.cgi/php/1125716012/
【PHP】下らねぇ質問はここに書き込みやがれpart10
http://pc8.2ch.net/test/read.cgi/php/1127581425/
【PHP】下らねぇ質問はここに書き込みやがれpart11
http://pc8.2ch.net/test/read.cgi/php/1129582431/
【PHP】下らねぇ質問はここに書き込みやがれpart12
http://pc8.2ch.net/test/read.cgi/php/1130835396/
【PHP】下らねぇ質問はここに書き込みやがれpart13
http://pc8.2ch.net/test/read.cgi/php/1132921016/
【PHP】下らねぇ質問はここに書き込みやがれpart14
http://pc8.2ch.net/test/read.cgi/php/1134868212/
【PHP】下らねぇ質問はここに書き込みやがれpart15
http://pc8.2ch.net/test/read.cgi/php/1137236771/
0003nobodyさん
2006/07/07(金) 14:56:17ID:???http://pc8.2ch.net/test/read.cgi/php/1139146534/
【PHP】下らねぇ質問はここに書き込みやがれpart18
http://pc8.2ch.net/test/read.cgi/php/1142417901/
【PHP】下らねぇ質問はここに書き込みやがれ Part19
http://pc8.2ch.net/test/read.cgi/php/1144513878/
【PHP】下らねぇ質問はここに書き込みやがれpart20
http://pc8.2ch.net/test/read.cgi/php/1146165153/
【PHP】下らねぇ質問はここに書き込みやがれpart21
http://pc8.2ch.net/test/read.cgi/php/1148389517/
【PHP】下らねぇ質問はここに書き込みやがれ 22
http://pc8.2ch.net/test/read.cgi/php/1149710968/
【PHP】下らねぇ質問はここに書き込みやがれ 23
http://pc8.2ch.net/test/read.cgi/php/1150995543/
0004nobodyさん
2006/07/07(金) 15:30:20ID:???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するのは楽だと思いますけど。
0005nobodyさん
2006/07/07(金) 15:31:11ID:???1. 自分のIDを表示させること。(メール欄には何も記述しないでください)
2. ハードウェア、OSのバージョン等を明記すること。
3. 己の行った操作、変更などを詳しく明記すること。
4. エラーメッセージはそのまま表記すること。
5. 質問者としても態度をわきまえること。
◆質問後の注意
・質問者は必ずIDを表示させてください。
書き込む場合はメール欄に何も記述しないでください。
・2回目以降は最初に質問した際のレス番号を名前欄に入れてください。
(逆に回答者は質問者に対して>>(アンカー)をつけて答えてください。)
・解決しなくても回答をもらった場合はお礼を言う。
(荒らし、煽りは除く)
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・オブジェクト指向については良スレがないから本を買え
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
0006nobodyさん
2006/07/07(金) 15:32:32ID:???■本家マニュアル http://www.php.net/manual/ja/
■日本PHPユーザ会 http://www.php.gr.jp/
■PEARマニュアル http://pear.php.net/manual/ja/
■メーリングリスト http://ns1.php.gr.jp/mailman/listinfo/
(以下英語)
■Smarty http://smarty.php.net/
■Zend本家 http://www.zend.com/
■Zend Framework http://framework.zend.com/
■php | architect http://www.phparch.com/
■Smartyマニュアル http://smarty.php.net/manual/en/
■ZFマニュアル http://framework.zend.com/manual/en/
■PECL本家(英語) http://pecl.php.net/
まだ英語しかないマニュアルも後々/manual/en/を/manual/ja/に変えてみたら日本語があるかもしれません。
0007nobodyさん
2006/07/07(金) 15:33:49ID:???PHP関連の書籍 第3版
http://pc8.2ch.net/test/read.cgi/php/1150558685/
PHP関連サイト
http://pc8.2ch.net/test/read.cgi/php/982694601/
【PHP】PEAR Part2
http://pc8.2ch.net/test/read.cgi/php/1122899232/
【Smarty】PHPのテンプレートエンジン【Flexy】
http://pc8.2ch.net/test/read.cgi/php/1118799352/
[PHP]フレームワークについて語るスレ3[総合]
http://pc8.2ch.net/test/read.cgi/php/1145971945/
Webでオブジェクト指向プログラミング
http://pc8.2ch.net/test/read.cgi/php/1133489897/
【PHP】セッションについて語ろう!【PHP】
http://pc8.2ch.net/test/read.cgi/php/1064399467/
PHP統合開発環境スレ
http://pc8.2ch.net/test/read.cgi/php/1123912762/
最強のPHPエディタはなに?
http://pc8.2ch.net/test/read.cgi/php/1133785416/
[PHP-users MLヲチ9]丸投げした覚えは全くありません
http://pc8.2ch.net/test/read.cgi/php/1143731062/
中学生がPHPを習得するスレ
http://pc8.2ch.net/test/read.cgi/php/1139746974/
【PHP】Lvうpしたいので宿題ください
http://pc8.2ch.net/test/read.cgi/php/1147830986/
親切な人が初心者にPHPの関数を使い方を教える
http://pc8.2ch.net/test/read.cgi/php/1068190843/
くだすれPHP(超初心者用)
http://pc8.2ch.net/test/read.cgi/php/1150088761/
0008nobodyさん
2006/07/07(金) 19:52:41ID:IzLRE9l50009nobodyさん
2006/07/07(金) 21:01:38ID:???<?
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
といエラーが返されます。
どうすれば、変数を格納できるのでしょうか?
0010nobodyさん
2006/07/07(金) 21:04:19ID:???0011nobodyさん
2006/07/07(金) 21:07:52ID:???0013nobodyさん
2006/07/07(金) 21:26:07ID:???ヒント
http://www.google.com/search?num=50&hl=ja&lr=lang_ja&safe=off&ie=UTF-8&oe=SJIS&q=%70%68%70%20%E5%A4%89%E6%95%B0%20%E9%81%A9%E7%94%A8%E7%AF%84%E5%9B%B2
00149
2006/07/07(金) 21:29:53ID:???最初にglobalで、使う変数を宣言しておかないといけないのですね
00159
2006/07/07(金) 21:33:20ID:???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);
}
?>
としたら解決しました。ありがとうございました。
0016nobodyさん
2006/07/07(金) 21:53:35ID:d9ruQecq$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 自民
0017nobodyさん
2006/07/07(金) 21:54:29ID:d9ruQecqでも「自民」っていう文字列を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 自民
こんな風に同じデコードでも違って表示されるみたい
これを同じにするにはどうすればいいですか?
0018nobodyさん
2006/07/07(金) 21:56:24ID:???0019nobodyさん
2006/07/07(金) 22:14:55ID:d9ruQecqすみません、良かったら教えてください。
当方初心者なもので
00219
2006/07/07(金) 22:28:06ID:DAs/sE57違います。
0022nobodyさん
2006/07/07(金) 22:36:42ID:d9ruQecq9の方とは違います
今年女子大を卒業してプログラマーになった者です
明日までにできないと上司に怒られます
教えてください
お願いします
0024nobodyさん
2006/07/07(金) 22:46:33ID:d9ruQecq0025nobodyさん
2006/07/07(金) 22:50:28ID:???初心者なのかプロなのかどっちなんだよ
嘘つくぐらいなら自分で調べろハゲ
0026nobodyさん
2006/07/07(金) 22:51:40ID:d9ruQecq0027nobodyさん
2006/07/07(金) 23:03:38ID:???やりたい事はテキストを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);
なんか勘違いしてますでしょうか?
00289
2006/07/07(金) 23:07:10ID:DAs/sE57自分も20ですよ。
今は専門学生で、来年卒業です。
0029nobodyさん
2006/07/07(金) 23:08:25ID:???コンビネーション荒らし?
0030nobodyさん
2006/07/07(金) 23:08:30ID:???readfile関数はファイルから読み込んで標準出力に吐き出す。
ファイルの内容は返されない。
fopenしてから1行づつfgetsで読み込むのが正解。
0031nobodyさん
2006/07/07(金) 23:10:06ID:???0032nobodyさん
2006/07/07(金) 23:55:02ID:???0034nobodyさん
2006/07/08(土) 00:02:57ID:???有り難うございます。↓はちゃんとコピーされるんですが
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使ってみます
0036nobodyさん
2006/07/08(土) 00:10:56ID:???真ん中は$handleの扱いが変(コピーできている上のと比較してみよう)
下は動きそうなもんだけどな・・・前後が分からんので分からんが
>>27のreadfileをfile_get_contentsに変えるのが簡単だと思うけどな
つかreadfileや他の関数の動作を理解していない点からしてもマニュアル読め
0037nobodyさん
2006/07/08(土) 00:16:49ID:???セットしたクッキーはどこに保存されるのでしょうか?
timeを設定していなかったらずっと残るわけですよね?
0040nobodyさん
2006/07/08(土) 00:39:22ID:???http://www.makers.ne.jp/
のECサイト、どうせどこかのASPパッケージを弄ったものだと
おもうんだけど、誰か心あたりある香具師いますか?
0041nobodyさん
2006/07/08(土) 00:50:56ID:???書いてるのはこれだけです。これで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;
0042nobodyさん
2006/07/08(土) 00:51:54ID:???index.phpにunset($str);
frame1.phpに$str="テスト";
これをフォームでframe2.phpに送っています。
frame2でecho $str;
これをリロードさせても、index.phpのunset($str);で変数が消されず、
frame2で$strがそのまま表示されます。
更新すると、index.phpが読み込まれるのではなく、frame1と2が読み込まれるだけなのでしょうか?
0043nobodyさん
2006/07/08(土) 00:52:33ID:fMTjXb+R0045nobodyさん
2006/07/08(土) 01:09:22ID:???それは明らかにおかしい
$buffer = fgets($handle, 4096); // ←$bufferに読み込んでいる
$str = mb_convert_encoding($buffer, "UTF-8", "auto");
fputs($fp, $str); // ←$strを書き込んでいる
mb_convert_encodingの「行を抜いたら」、$strはundefinedになるはず
質問の仕方が悪すぎ。とりあえず>>5
釣りならよそでやってくれ
0047nobodyさん
2006/07/08(土) 01:41:22ID:???0048nobodyさん
2006/07/08(土) 02:24:24ID:???わざわざrequireで呼び出すとやっぱり重たくなりますか?
004927
2006/07/08(土) 03:10:14ID:???結局mbstring自体が入って無い事がわかりました
んでphp_mbstring入れたらあっさり解決しました
いやほんと申し訳なかったです
レスくれた方有り難うございましたm(_ _)m
005043
2006/07/08(土) 03:19:09ID:???0051nobodyさん
2006/07/08(土) 04:20:16ID:???5000行とかいうならともかく50行くらいでは普通気にしない。
500行でもほとんどの場合は気にするほどじゃない。
0053nobodyさん
2006/07/08(土) 07:34:42ID:???0054nobodyさん
2006/07/08(土) 09:20:11ID:???0055nobodyさん
2006/07/08(土) 09:34:09ID:???array_keys で違うんなら具体的に例をあげてくんろ
005654
2006/07/08(土) 09:45:50ID:???$a['a']['b']['c']の1つ上の$a['a']['b']にどうにかしてアクセスしたいと考えております。
0057nobodyさん
2006/07/08(土) 11:20:23ID:???>$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'];
0058nobodyさん
2006/07/08(土) 12:37:11ID:???func($a['a']['b']['c']) で戻り値にarray('a','b','c')を返したいとかいう話?
無理だろ。
0059nobodyさん
2006/07/08(土) 12:55:12ID:???0060nobodyさん
2006/07/08(土) 13:19:32ID:???分かってないと 'a','b','c'のように具体的に書けないから。
一方 $a['a']['b']['c'] = 'αβγ'; のように値が入っていたとして、
'αβγ'という文字列から変数名(あるいは配列名、キー名)を調べることはできない。
>>56の説明にあるような要求がでてくる場面が想像できない
006154
2006/07/08(土) 13:20:35ID:???58さんのおっしゃる事がそうだと想います(^^;。
フォルダでいう所の1つ上のフォルダにアクセスしたい感じですがやはり無理ですか・・・。
$dat[$a][$b][$c]で$aから$cまでの変数が不定である場合の$aと$bを知る方法があれば
知りたかったのです。$datだけ固定なのでやはりここから作って行くしかないですね。
006254
2006/07/08(土) 13:24:07ID:???0064nobodyさん
2006/07/08(土) 13:35:50ID:???そもそもその$dat[$a][$b][$c]にどういう形でアクセスしてるときに
第二階層をアクセスしたいのか、もうちょっと具体的に示せ。
フォルダ云々言ってるけど、$dat[$a][$b][$c]を引数で渡したときってのは
中身を別のまっさらなディスクにコピーした状態になってるから
そもそも上のフォルダとかいうもの自体が無くなってしまってる。
0065nobodyさん
2006/07/08(土) 14:15:03ID:???006654
2006/07/08(土) 14:23:55ID:???どうやって説明しようか迷っていたのですが、その通りです!!。このツリー状になっている配列は
Web上で利用するユーザーが好き勝手に変更できる仕様なので階層も決まっておらず、毎回検索
するのも効率が悪いので何とか効率よくできないものかと・・・。今はキーをインデックス化しており、
そこから割り出しているのですが処理によっては1つ上の親の配列が必要になったりするので
配列変数をLinuxのディレクトリみたいに「cd ..」なんて出来ないかと安易に考えた次第です。
0067nobodyさん
2006/07/08(土) 14:25:42ID:???0068nobodyさん
2006/07/08(土) 14:28:13ID:???それはキーそのものを情報として持って処理するしかないと思う。
ディレクトリだって、自分が親の位置情報を持ってるわけじゃなく、
自身のフルパスとして全階層のキーに該当する情報を持ってるだけだし。
0069nobodyさん
2006/07/08(土) 16:32:23ID: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);
としてみたいのですが、ダメでした。
007069
2006/07/08(土) 16:41:47ID:Y8id9cd8ありがとうございます。
しかし、こんな面倒くさい方法じゃなく、
変数をまた最初から番号付けするような便利な関数はないのでしょうか。。。
0071nobodyさん
2006/07/08(土) 17:22:50ID:qcW5njj8以下のスクリプトを実行したのですが、
<?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
0072nobodyさん
2006/07/08(土) 17:26:39ID:???007371
2006/07/08(土) 17:42:41ID:???パラメーターがおかしいのは解るのですが、UTF-8以外に指定できるのでしょうか?
そこがわかりません。。
0074nobodyさん
2006/07/08(土) 18:01:53ID:4HW/BEu50075nobodyさん
2006/07/08(土) 18:12:21ID:???0076nobodyさん
2006/07/08(土) 18:17:05ID:???0077nobodyさん
2006/07/08(土) 18:17:56ID:???あるに決まってるだろ
0078nobodyさん
2006/07/08(土) 18:27:45ID:4HW/BEu50079nobodyさん
2006/07/08(土) 19:46:21ID:???Fatal error: Call to undefined function: ob_end_flash()
致命的エラー:ob_end_flash()だぁ? んな関数ねぇよハゲ。
× flash
○ flush
もう一度聞くが、何故エラーメッセージを読まない?
0080nobodyさん
2006/07/08(土) 19:54:12ID:???mb_output_handler("UTF-8");
...
Warning: mb_output_handler() expects exactly 2 parameters, 1 given
Warning: Wrong parameter count for mb_output_handler()
...
どこがいけないのか解らないのですが、マニュアル通りに指定したつもりです。
なんのマニュアルを読んだんだろうねー
0083nobodyさん
2006/07/08(土) 23:10:14ID:???どう記述すればいいのでしょうか?よろしくお願いします。
0085nobodyさん
2006/07/08(土) 23:58:31ID:???ニュースサイトのRSSを購読すると、三日前のニュースとかは取得できないので不便なんです。
だったら自分で契約してるサーバにスクリプトを設置して、タイトルとリンクをHTML化して毎日一回保存してしまおうかと
だめでしょうか? cronもつかえるという前提だとどうでしょう
0086nobodyさん
2006/07/09(日) 01:13:29ID:???0087nobodyさん
2006/07/09(日) 01:57:06ID:???といった会員登録サイトを作ろうと思い、調べた結果とりあえず空メールが
あったら返信をするというのはvacationで出来るというところまでは
調べる事は出来たのですが、そこからどの用にメールアドレスだけを取得し
PHPに持っていけばいいのかが分かりません
0089nobodyさん
2006/07/09(日) 02:27:42ID:???vacationなんぞ使わずに、自作の処理スクリプト(PHP)に渡して
そこで処理をする。forwardで渡すのは同様。
空メールなのかとか、そのメールからアドレスをどうやって取るかは
実験してみな。単なる文字列の処理だけだから。
0090nobodyさん
2006/07/09(日) 02:27:51ID:???0091nobodyさん
2006/07/09(日) 02:33:21ID:???再現できるソースきぼんぬ
0093nobodyさん
2006/07/09(日) 03:12:06ID:???PHPをcronなどで一定間隔で動かしてPOPサーバーに接続してメールを取得、
もしくはsendmailのforward設定で受信時にメールを食わせて自動的にPHPを実行させ、
あとはメールの中身を1行ずつ読み込んでってFrom:行からアドレス抜くだけ。
0094nobodyさん
2006/07/09(日) 05:33:03ID:???>しかし、こんな面倒くさい方法じゃなく、
>変数をまた最初から番号付けするような便利な関数はないのでしょうか。。。
結局キーは捨てるのに、なんでわざわざasort使ってんの?
マニュアル読んでないよね?
0095nobodyさん
2006/07/09(日) 07:42:20ID:???0096nobodyさん
2006/07/09(日) 12:24:45ID:???readfileだけでしょうか?
外部サイトの、<body>以下だけを出力すると言った方法は可能ですか?
0098nobodyさん
2006/07/09(日) 12:49:41ID:???外部ファイルを手軽に扱うための関数(fopen_wrapperの設定に依存)
readfileやinclude、fopen etc.
細かい制御ができるが、その分よく面倒を見る必要あり
fsockopen
後半は、ファイル全体を取得してから自力で切り出すしかないやね。
PHPには文字列を操作する関数があるので、可能っちゃー可能
0100nobodyさん
2006/07/09(日) 13:04:23ID:vWh3Ts67$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やってたからよくわからねぇ。
0101nobodyさん
2006/07/09(日) 13:54:33ID:???確か$_SERVER['??_JHONE_NO']みたいな配列に送られてくるはずだが…
print_r($_SERVER)すればわかるかも。
0102nobodyさん
2006/07/09(日) 14:03:10ID:???http://jp.php.net/manual/ja/function.ereg.php
をよく読めば間違いが分かる
0103nobodyさん
2006/07/09(日) 14:25:29ID:vWh3Ts67あ、[1]に入るのか。サンクス!
0104nobodyさん
2006/07/09(日) 14:54:36ID:???子プロセスの方で関数を動かして、
その返り値を子プロセス終了後に
親プロセスの方でチェックしようとしたら空になってました。
子プロセス内で得た返り値を
親プロセスの方でチェックすることは無理ですか?
0105nobodyさん
2006/07/09(日) 16:11:23ID:U99SwNUHログはテキストで取っていてSQLは使用していません。
0107nobodyさん
2006/07/09(日) 16:29:11ID:???setcookie("cookiename");
でやっても削除されないのですが、ほかのやり方あったら教えてください。
よろしくお願いします。
0108107
2006/07/09(日) 16:34:25ID:66lL3jio0109nobodyさん
2006/07/09(日) 16:36:00ID:???暇だから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>" ); }
0112nobodyさん
2006/07/09(日) 17:42:19ID:???例えばBBS.CGIというスクリプトをソースではなくてそれを実行したHTMLを取り込もうとしています。
試しに file(BBS.cgi) と file(http://~~~/BBS.CGI) を試しましたがどちらもソースが返ってきてしまいました。
phpにて実行結果の状態で取得することは可能なのでしょうか よろしくお願いします。
0113nobodyさん
2006/07/09(日) 18:11:29ID:???後者(file('http://example.com/'))でいける筈だが。
それで駄目なら、そもそもブラウザで該当のURLを指定しても
text/plainでソース出力がされてる状態じゃないのか?
0114nobodyさん
2006/07/09(日) 18:24:40ID:???該当のファイルをブラウザで直に表示させるとちゃんとスクリプトが実行されるようです。
ちなみにバージョンは4.3.11です。 蛇足ですがロリポ鯖です。
ファイル構成は
/aaa/index.php - 呼び出し元
/aaa/BBS.CGI -呼び出し先
同じディレクトリへ入れてるのが原因なのでしょうか。
それとも普段はphp5を使っていましてこれはphp4特有の仕様か何かでしょうか。
よろしくお願いします
0115nobodyさん
2006/07/09(日) 19:23:33ID:???帰ってきたソースってHTMLソースじゃないよな?
file関数使ったらもちろんソースが帰ってくるぞ。
取ってきたものをどうしたいんだ?表示したいのか保存したいのか?
0116nobodyさん
2006/07/09(日) 20:07:41ID:???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は空になってしまってるんですよ。
そういうもんなんですか?
0119nobodyさん
2006/07/09(日) 20:27:33ID:???exit は子を終わらせてるだけで、
その後はifの方にいくんですが、
「未定義の変数つかってんじゃねーよ」って怒られるんですよ。
子の中だと$rに0が入ってるのは確認できるんです。
0120nobodyさん
2006/07/09(日) 20:29:17ID:???アップしたサーバーで動作すると動作が変なのです。
ちゃっとセッションが保存されないみたいなのですが、これは問い合わせた方が良いですかね?
0121120
2006/07/09(日) 20:37:34ID:NEYaW9zv0122nobodyさん
2006/07/09(日) 21:18:04ID:???ん?前者ならファイルの内容そのものを取得する機能だから
CGIとして実行されないでソースが表示されるのは当たり前。
0123nobodyさん
2006/07/09(日) 21:34:45ID:???親プロセスが返された場合
pcntl_waitpid( $pid, $status, WUNTRACED );
で$rは何も定義されていない
子プロセスの場合
$r = myfunc( );
exit;
でexit;しているからif($r==まで到達しない
じゃね?
>子の中だと$rに0が入ってるのは確認できるんです。
てのはexit;前での確認だよな?
状況説明は他人にわかるようにね。
0124nobodyさん
2006/07/09(日) 21:48:38ID:QrRy9B/E<?= $a ?>
の<?= とはどういう意味なのでしょうか?
ぐぐり方が悪く 全然見つかりません。
0125nobodyさん
2006/07/09(日) 21:55:57ID:???そんな書き方もできるよっていう程度
<?php echo $a; ?>と同じ
0126124
2006/07/09(日) 22:00:26ID:QrRy9B/E迅速な回答ありがとうございました。
echo や printで試してみます。
0127nobodyさん
2006/07/09(日) 22:24:52ID:apK+YZH4文字列が長すぎる(例えば700文字を超える)場合の処理は、mb_strlen () で長さを計るしかないのでしょうか?
if (mb_strlen ($msg) > 700) {
$err_msg = "長杉";
}
もっとベターな方法があればお願いします。
0128nobodyさん
2006/07/09(日) 22:40:25ID:???というのは何でしょうか?
ローカルサーバーにはあるのですが、レンタルサーバーにはありません
0129nobodyさん
2006/07/09(日) 23:06:11ID:???基本的な発想はそれしかない
文字列の長さを調べる関数は少なくとも3つ
strlenとmb_strlenとmb_strwidthがあるけど
どれを選ぶかはケースバイケースだね
0131nobodyさん
2006/07/09(日) 23:08:30ID:vjWeIelg0132nobodyさん
2006/07/09(日) 23:20:56ID:???マニュアルのセッションのページに書いてあるよ。
簡単に言うと、どういう形式でセッション情報を保持するかを指定するためのもの。
0134nobodyさん
2006/07/10(月) 08:05:28ID:pIRoiH69unset
0135nobodyさん
2006/07/10(月) 09:20:16ID:DXTeExGF>明示的指定がなければ文字化けすることはあります。
>エンコーディングを指定してください。
と言われたのですが、どうやって指定すれば良いのでしょうか?
0136nobodyさん
2006/07/10(月) 09:49:25ID:???何をしようとして、そういわれたのかがわからないが
php.iniの設定を変えれば、もしかしたら、君が望む結果が得られるかも
0137nobodyさん
2006/07/10(月) 09:50:29ID:???0138135
2006/07/10(月) 10:14:35ID:DXTeExGFすみません、サーバーにアプロードして、
セッションに格納すると文字化けするのですよ。
それを報告したらそのような返答が返ってきました。
どうにかして、エンコーディングを指定する方法はないのでしょうか?
0139nobodyさん
2006/07/10(月) 13:07:21ID:???0140nobodyさん
2006/07/10(月) 13:20:37ID:pIRoiH690141135
2006/07/10(月) 14:35:25ID:Q6XjtIhe>>139
良かったら教えていただけませんか?
.htaccessは使えないみたいです
0142軟式PHP
2006/07/10(月) 15:51:50ID:???0143135
2006/07/10(月) 15:56:12ID:Q6XjtIhe実行中に適用させるのですよね。
ini_set("internal_encoding","sjis");
と書くだけで良いのでしょうか?
0144nobodyさん
2006/07/10(月) 15:57:23ID:???試してみる。
マニュアルを読む。
http://jp.php.net/manual/ja/function.ini-set.php
0145135
2006/07/10(月) 16:01:17ID:Q6XjtIhembstring.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 」
何を変更して良いのかちょっとわからないです・・・。
0146nobodyさん
2006/07/10(月) 16:10:20ID:???学生って何学生だ? もうちょっと人に伝えよう・理解してもらおうと努力しーや。
> 何を変更して良いのかちょっとわからないです・・・。
知らんがな。>>138 の
> どうにかして、エンコーディングを指定する方法はないのでしょうか?
に答えただけやがな。
そもそも >>138 の
> セッションに格納すると文字化けするのですよ。
の解決策はそれで合っているのか自分で考えたか?
0147135
2006/07/10(月) 16:30:53ID:Q6XjtIheこれを直したいだけなのですが、どうしていいかわからずさっぱりなのです。
0148asa
2006/07/10(月) 16:33:32ID: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
0149nobodyさん
2006/07/10(月) 16:35:06ID:???それだけじゃ分からない。
文字化けする時は PHP ファイルの文字コードとか諸々の情報を提示しないと。
こんなやりとりが延々続くんだろうな…
0150nobodyさん
2006/07/10(月) 16:36:20ID:???リクエストヘッダを取得する処理をしていました。
サーバを移行して、cgi版PHPになりました。
apache_request_headers以外でリクエストヘッダを獲得する方法ってありますか?
0152135
2006/07/10(月) 17:12:42ID:Q6XjtIheお付き合い頂ければ幸いです。
各種PHPの保存する時の文字コードも関係するのですね。
Dreamweaver8で、デフォルトで保存しているのですが、どうやって調べれば良いのでしょうか?
0153150
2006/07/10(月) 17:14:01ID:???ゲートウェイサーバから送信されるx-up-subnoフィールドです。
$_SERVERにも$_REQUESTにも引っかからないので
さあ困ったなぁと。
0154135
2006/07/10(月) 17:16:26ID:Q6XjtIhe初期設定がシフトJISで、コードの方は全然いじっていません。
サーバーはUTS-8を使っているらしいので、設定をそれにして上書きすれば大丈夫ということですね?
0158nobodyさん
2006/07/10(月) 17:29:51ID:???0159135
2006/07/10(月) 17:30:02ID:Q6XjtIheサーバーに上げると何も表示されなくなってしまいました。
UTS-8ではダメみたいです。
真剣に行き詰りました・・・
0161nobodyさん
2006/07/10(月) 17:31:18ID:???0162135
2006/07/10(月) 17:36:57ID:Q6XjtIhe0163nobodyさん
2006/07/10(月) 17:42:00ID:???言われたことも間違ってやってそうな…
0164nobodyさん
2006/07/10(月) 17:51:46ID:???うそっぽーい
自分で問題を絞り込むことができないから、こういう文章に
なるんだな。
だいたい、こういう表現するやつに限ってセッションなんて
全く関係ないところでボンミスしてるにきまってる。
日本語使わなければ化けないだろうから即解決だよ。
それでいいじゃん。
0165135
2006/07/10(月) 17:51:50ID:Q6XjtIheecho $_SESSION['name'][$_GET['id']];
出力すると文字化けします
0166164
2006/07/10(月) 17:54:19ID:???でも化けてるんじゃないのー
0167135
2006/07/10(月) 17:57:09ID:Q6XjtIhe「あああ」⇒「あああ」
「・・・」⇒「/font>」
0169135
2006/07/10(月) 18:02:20ID:Q6XjtIhe0170164
2006/07/10(月) 18:02:34ID:???何が言いたいのか全く意味わからんぞ・・・
それで伝わるとおもってるのか?俺はエスパーか?
ていうか、
echo "アイウエオ"
で化けるのか?化けんのか?
俺が言ってることは伝わってるのか?
あんたは宇宙人か?
0171135
2006/07/10(月) 18:06:26ID:Q6XjtIheすみません、アイウエオでは文字化けしません、
0172164
2006/07/10(月) 18:10:23ID:???<?php
$_SESSION['name'][$_GET['id']] = "アイウエオ";
echo $_SESSION['name'][$_GET['id']];
?>
では化けて
<?php
echo "アイウエオ";
?>
は化けないってことか?
じゃぁ、
<?php
$_SESSION['name'] = "アイウエオ";
echo $_SESSION['name'];
?>
これは化けるのか?化けんのか?
<?php
$aaa = "アイウエオ";
echo $aaa;
?>
これは化けるのか?化けんのか?
0173nobodyさん
2006/07/10(月) 18:16:38ID:???・PHP から出力される HTML の文字コード
・HTML にて指定されている文字コード
・PHP スクリプトの文字コード
はどうなっているのか、と。
内部エンコーディングの問題以前に、上記のミスマッチによっては化けるものは化ける。
0174135
2006/07/10(月) 18:18:00ID:Q6XjtIhe$_SESSION['var2'] = "ABCDE";
$_SESSION['var3'] = "あいうえお";
$_SESSION['var4'] = "管表示線銃";
$_SESSION['var5'] = "ァエオケム";
$var1 = "12345";
$var2 = "ABCDE";
$var3 = "あいうえお";
$var4 = "管表示線銃";
$var5 = "ァエオケム";
全て正常に出力されました。
なぜ、他のではちゃんと出力されないか疑問です。
0175nobodyさん
2006/07/10(月) 18:21:50ID:???>>174
> $_SESSION['var1'] = "12345";
> $_SESSION['var2'] = "ABCDE";
> $_SESSION['var3'] = "あいうえお";
> $_SESSION['var4'] = "管表示線銃";
> $_SESSION['var5'] = "ァエオケム";
これと
> $var1 = "12345";
> $var2 = "ABCDE";
> $var3 = "あいうえお";
> $var4 = "管表示線銃";
> $var5 = "ァエオケム";
これの関連性が意味不明。何を例示しているつもり?
> なぜ、他のではちゃんと出力されないか疑問です。
「他」とは? 「ちゃんと出力されない」とは?
0176135
2006/07/10(月) 18:27:18ID:Q6XjtIhehttp://www.uploda.org/uporg441589.zip
ローカルサーバーでは実行できるのに、アップしたら文字化けします。
0177164
2006/07/10(月) 18:28:46ID:???$_SESSION['name'][$_GET['id']] = "アイウエオ";
echo $_SESSION['name'][$_GET['id']];
を最初の始まりとするなら、
そこから少しずつ(1条件ずつ)簡易なものに書き換えて
トライアンドエラーしないと意味無いだろ。
$_SESSION['name'][$_GET['id']] = "アイウエオ";
echo $_SESSION['name'][$_GET['id']];
を基点に原因探ってるのに、
>> 174
には "アイウエオ" が含まれてないのは
おかしいだろ?
文字列が"アイウエオ"のときだけ起きる動作不良だったら
みつけられないだろうが?
0178164
2006/07/10(月) 18:34:01ID:???>ローカルサーバーでは実行できるのに、アップしたら文字化けします。
おまえなぁ。。。
最初から質問の仕方まちがってるだろうがぁ!!!!!!!!!!!!
ちなみに言わしてもらうなら、
「ローカルサーバでは*実行*できるのに」
ってなんなんだ?
「ローカルサーバでは期待通り文字化けせず出力されるのに」
だろうが?
で、丸投げかよ・・・
こいつダメだな。。。
0185135
2006/07/10(月) 21:07:08ID:Q6XjtIheはい、全然未熟ですけど
あと、>>164さんみたいな方でも教えていただけると嬉しいです。
丸投げなやり方になってしまってすみません。
0186135
2006/07/10(月) 21:08:50ID:Q6XjtIheecho $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>";
0187135
2006/07/10(月) 21:09:27ID:Q6XjtIheあああ
#FFFF00
#00FF00
16
20
40
・BR>#
#
1
2
4
このように出力されました。(index.php)
まだお答えいただける方がいれば嬉しいです
0189nobodyさん
2006/07/10(月) 21:20:21ID:???DBに認証用のパスワード入れてるのかよ!
0190135
2006/07/10(月) 21:23:38ID:Q6XjtIheローカルサーバーでは文字化けせずにスムーズに実行されるのですが、
サーバーにアップロードすると、どうしてもこの部分で文字化けがおきるのですよ
0192135
2006/07/10(月) 21:30:57ID:Q6XjtIhe全て中身は
「a|s:6:"あむろ";b|s:8:"ぶらいと";c|s:10:"きゃすばる";」
というのが書かれていました、
0194nobodyさん
2006/07/10(月) 21:34:26ID:???0195135
2006/07/10(月) 21:35:44ID:Q6XjtIheSHIFT-JISでした。
0196nobodyさん
2006/07/10(月) 21:40:20ID:???前々スレの>>36を実行した後の消し忘れです。
本当にありがとうございました。
本当は文字化けなんかじゃなくて、単にセッションに入ってねーんじゃねーの?
0197nobodyさん
2006/07/10(月) 21:44:00ID:???環境依存ってならエンコでもして入れとけば良いだろう
0199nobodyさん
2006/07/10(月) 21:53:45ID:???はっきり言って俺にはこれが文字化けの問題とは思えん。
0200135
2006/07/10(月) 21:56:56ID:Q6XjtIhe//セッションに名前を全角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
0203135
2006/07/10(月) 22:13:39ID:Q6XjtIheすみません、勘違いです
Array ( [log] => 20 2 [name] => あああ [name_color] => #FFFF00 # [com_color] => #00FF00 # [px] => 16 1 [reload_time] => 40 4 [pass] => )
と、出力されました。
中にはちゃんと入っているということは、出力時に文字化けするということでしょうか
0204nobodyさん
2006/07/10(月) 22:23:07ID:???どのみち馬鹿とPHPが使えないのはハッキリしたな
0205nobodyさん
2006/07/10(月) 22:33:38ID:???試しに以下のコードを書いて実行してみたが、
<?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 )
)
0206nobodyさん
2006/07/10(月) 22:41:22ID:???× 馬鹿とPHPが使えない
○ 馬鹿と>>135と>>204にはPHPは使えない
俺は>>176見てないからあれだけど、
問題が文字化けだけじゃないのはもう間違いない。
0207nobodyさん
2006/07/10(月) 22:53:01ID:???0208nobodyさん
2006/07/10(月) 23:06:22ID:???0209nobodyさん
2006/07/10(月) 23:13:06ID:???> 中にはちゃんと入っているということは、
それが本当にprint_r($_SESSION)の結果だとしたら、
$_SESSION[name][$_GET['id']]であるべきものが$_SESSION[name]になってないか?
$_SESSION[name][$_GET['id']]が$_SESSION[$_GET['id']][name]の間違いで
さらにprint_r($_SESSION[$_GET['id']])でも見たならまた別だろうが、
それでも妙なゴミデータがくっついているように見える。
もう諦めて丸投げスレにでも行った方が良いと思う。
0210164
2006/07/10(月) 23:36:16ID:???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 />";
0211164
2006/07/10(月) 23:37:33ID:???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 />";
0212164
2006/07/10(月) 23:38:41ID:???$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 />";
?>
0213nobodyさん
2006/07/11(火) 00:15:35ID:???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()が返ってくれなきゃ使いづらくね?
0214nobodyさん
2006/07/11(火) 00:38:13ID:???0215nobodyさん
2006/07/11(火) 01:31:09ID:???前スレ900後半で思いっきり誰の目にも触れられずあぼーんしたので
再度書かせてください。
サーバからFTPにログインして、指定のファイルをブラウザに出力、
訪問者にダウンロードダイアログが出るようにしたいんですが、
どんな方法があるでしょうか?
content typeのlocationで直接ftp://指定すれば、とレスをいただきましたが、
ftp://をブラウザ経由でしてしまうとパスワードが流れてしまいますし、
ブラウザの履歴にも残るので、
サーバーからlocalhostにftpに接続して、それをブラウザに出力、
という流れを取りたいと考えています。
この関数使え、とかのヒントでもいいので
教えて下さいませ
0216nobodyさん
2006/07/11(火) 02:29:18ID:???そんな奇怪な方法をどういう経緯で選んだのか前スレ読み返しても分からなかった。
無駄なことしてるというのは十分伝わって来るんだけど…
0217nobodyさん
2006/07/11(火) 02:32:35ID:???何がやりたいのかよくわからんからスルーされるんじゃね?
>この関数使え、とかのヒントでもいいので
1.ftp_*()でファイルを取得
2.header()で適切なヘッダを出し
3.readfile()でもして出力
サーバのFTPDにアクセスするのかね?
ファイルがファイルシステムで直接読めるなら
header();
readfile();
でオワリ
どんなヘッダを送るのかとかはphpの問題じゃないので省略。
0218nobodyさん
2006/07/11(火) 02:43:03ID:???なぁ、お前ら「良いプログラム」って何だ?
PHPは確かにC言語チックな見た目でPerlなんかより全然見やすいコードが書けるけど
それでも俺のコードは醜い気がする・・・
0219nobodyさん
2006/07/11(火) 02:59:24ID:???「良い」てーのはそれを見る相手や状況によって違うんじゃないか
xxが良いとかなんか無いの?
それにしても誰に何を言われたんだかw
0220nobodyさん
2006/07/11(火) 03:56:32ID:???・理解しやすい
・再利用しやすい
えーとそれから・・・なにがあったっけ?
0221nobodyさん
2006/07/11(火) 04:39:51ID:???人が理解しにくいとか?
0222nobodyさん
2006/07/11(火) 07:15:25ID:???mbstring.encoding_translation 「On」「 Off 」
これが原因じゃないかと思うけどね
0223135
2006/07/11(火) 08:59:10ID:BuTz0b5N>>222
自動でエンコーディングされるんですよね。
自分のローカルサーバーは両方Onになっています。
これは.htaccessで指定可能なのでしょうか?
0224135
2006/07/11(火) 09:06:23ID:BuTz0b5N全て自分の環境と同じにしようと思ったのですが、それは可能なのでしょうか?
0225nobodyさん
2006/07/11(火) 09:27:24ID:???つ ttp://www.php.net/manual/ja/configuration.changes.php
対象フォルダに"AllowOverride Options" もしくは "AllowOverride All" 権限があって、
PHPのマニュアルにおいて変更の可否がPHP_INI_ALL, PHP_INI_PERDIR, または PHP_INI_SYSTEM と
指定されているもののみ可能。
0226225
2006/07/11(火) 09:28:40ID:???0227135
2006/07/11(火) 09:34:49ID:BuTz0b5N$_SESSIONにはちゃんと変数が格納されている。
$_SESSIONを出力する時に文字化けが起きる。
.htaccessが使える。
エンコーディングはSJIS
phpinfo()⇒>>145
サーバー管理者に問い合わせたところ、
「phpの場合は、内部エンコーディングがUTF-8になっているので、明示的指定がなければ文字化けすることはあります。
エンコーディングを指定してください。」と返ってきた。
0230135
2006/07/11(火) 12:06:43ID:BuTz0b5Nphpinfo()で見てみたところ
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エラーが出るばかりです・・・。
0232nobodyさん
2006/07/11(火) 12:22:18ID:???何か参考になる書籍やサイトはありませんか?
それともperlを勉強しなければ難しいんでしょうか?
0233nobodyさん
2006/07/11(火) 12:32:24ID:???「スパイダ」ってこれのことかな?
http://www.oreilly.co.jp/books/4873111870/
詳しくは amazon なりで見てみて。
0235nobodyさん
2006/07/11(火) 14:30:40ID:???<IfModule mod_php5.c>
php_value include_path ".:/usr/local/lib"
php_admin_flag mbstring.http_output SJIS
</IfModule>
とやっていれたら500エラーになりました。
0236nobodyさん
2006/07/11(火) 14:32:27ID:???亀レスすみません。
開発者のみなさんは、デバッグコードは不要になったら
コメントアウトするなどしているのでしょうか。
0237nobodyさん
2006/07/11(火) 14:35:45ID:???「.htaccess 500」なりのキーワードでぐぐれ。
それと、>>231 のぐぐった結果をもう一度ちゃんと読め。
0238nobodyさん
2006/07/11(火) 14:37:32ID:???コメントアウトしてソースに残ってもいいというレベルなら、
スクリプト先頭で、
define("CONSTANT", "1");
これをコメントアウトさせる。
あとは
IF (defined('DEBUG')){
// こにデバッグコードを書く
}
0239nobodyさん
2006/07/11(火) 14:38:09ID:???0240nobodyさん
2006/07/11(火) 14:44:45ID:???php_value mbstring.http_output SJIS
とだけ1行入れてもエラーでした。
もちろん行末に改行は入れてます。
0242nobodyさん
2006/07/11(火) 15:05:15ID:???・検索キーワードなどを教えられても検索しない
・参考URLを教えられても見ない
・質問する前に自分で試さない
こういった質問者は完全にスルーしましょう
煽りや叩きも不要です
完全に存在を無視して下さい
不必要にレスすると永久ループに陥ります
0243nobodyさん
2006/07/11(火) 15:10:24ID:???の正規表現を教えてください。
preg_match使うみたいだけどよくわかりません。。。
0244nobodyさん
2006/07/11(火) 15:14:44ID:???・検索キーワードなどを教えられても検索しない →検索した >>231 >>237
・参考URLを教えられても見ない → 見た
・質問する前に自分で試さない → 試した >>235 >>240
0245243
2006/07/11(火) 15:16:58ID:???0247nobodyさん
2006/07/11(火) 15:26:53ID:???ttp://yellow.ribbon.to/~gama/sine/testing/xp-ap-ph4-sq.html
てきせんというのはどういういみですか?
0248nobodyさん
2006/07/11(火) 15:30:17ID:???0249軟式PHP
2006/07/11(火) 15:30:45ID:???もしかしたら、文字コードの設定がおかしいのかも。
ちょっと下のコードを実行して表示されたものをレスしてくれ。
<?php
$strBuff = 'Pj4yNDSky6SipOuk6KSmpMuhoqSzpOykwKSxpOSkw6TGpOKk76SrpOmkzKGjDQqkxKTepOqhorvkpM/Hz7yvpMekoqTroaM=';
$strDec = base64_decode( $strBuff );
header( 'Content-Type: text/html; charset=EUC-JP' );
var_dump( $strDec );
?>
0250236
2006/07/11(火) 15:31:10ID:???0253244
2006/07/11(火) 16:07:38ID:???.htaccess では設定できないみたいです。
0254nobodyさん
2006/07/11(火) 16:18:05ID:???> $_SESSIONにはちゃんと変数が格納されている。
嘘を吐くな。
アホの子の>>135は>>205とか>>209を死ぬまで読み直すべきだ。
0255nobodyさん
2006/07/11(火) 16:26:50ID:???mb_send_mail使えなくなっちまったけど、これはもうどうしょうもない?
0256244
2006/07/11(火) 16:27:42ID:???内部エンコーディングとhttp_outputはソース上から設定できるけど、
http_inputは設定できないので、
postやget等から得られたデータを、
てきせんoutputから内部エンコードにmb_convert_encodingする
というので解決です。
0257nobodyさん
2006/07/11(火) 17:10:33ID:???> 1. 自分のIDを表示させること。(メール欄には何も記述しないでください)
を守らないのはわざとですか?
貴方をあぼーんしたいのですが、IDがないと登録しづらいのです。
自己弁護でも何でもこれ以上続けるなら、IDを表示させてください。
0259257
2006/07/11(火) 17:29:42ID:???私も最初はそう思いましたが、今までの流れから考えると、
「煽られる→自己弁護」の繰り返しもあり得るかなと。
ですので、「これ以上続けるなら」と前置きを置いています。
135氏がこれ以上書かないのなら、それに越したことはないんですけどね。
0260nobodyさん
2006/07/11(火) 17:48:50ID:???本人がこれで解決だと言ってるんだからもういいんだろう。
これでやっとスレに平和が戻る…。
0262135
2006/07/11(火) 18:14:40ID:BuTz0b5N遅レスすみません。
ググって文字コードをSJISにしたのですが、代わりはなかったです。
>>249
自分も試してみたところ
string(71) ">>244、ヒ、「、・隍ヲ、ヒ。「、ウ、・タ、ア、荀テ、ニ、筅・ォ、鬢フ。」、ト、゙、遙「サ荀マヌマシッ、ヌ、「、・」"
と表示されました。
0263nobodyさん
2006/07/11(火) 18:35:40ID:???$_135->teach(); // 失敗するのは分かっているが・・・
}
catch (Exception $e) {
// $_135->teachAgain(); // 永久ループになるのでやってはいけない
throw $e;
}
0267nobodyさん
2006/07/11(火) 18:47:17ID:???おいおい。PHP のサンプルもあるって書いてあったしょ?
まぁ、そうは言うけど、自分も Perl の方が良いと思う。こういう用途には。
0268135
2006/07/11(火) 18:58:19ID:BuTz0b5Nブラウザの文字化けなのですか。
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
0269135
2006/07/11(火) 19:00:31ID:BuTz0b5NIEでアクセスしたところ、同じ文字化けが発生しました。
0270nobodyさん
2006/07/11(火) 19:12:09ID:???どこのサーバー使ってるんだ?
0271135
2006/07/11(火) 19:16:00ID:BuTz0b5Nここです。
ttp://nsf.jp/
0272135
2006/07/11(火) 19:22:45ID:BuTz0b5Nphp_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で統一してみます。
0273135
2006/07/11(火) 19:30:36ID:BuTz0b5Nこれはもうダメかもわかんね
0274nobodyさん
2006/07/11(火) 19:34:20ID:???勉強し直して来た方が良いと思うよ。
0275135
2006/07/11(火) 19:46:20ID:BuTz0b5N今までお付き合いいただいてありがとうございました。
0279nobodyさん
2006/07/11(火) 20:12:16ID:6Oy0SlMxこれって「ユニックスタイム」みたいな名称あるの?
0280nobodyさん
2006/07/11(火) 20:30:49ID:???0281nobodyさん
2006/07/11(火) 21:24:28ID:MzBGXnqGあるfunctionを書きまして、その中にはDB接続する処理が含まれています。
DB接続するためのfunctionは事前に書いていたので、そのfunctionの中で使ったら、うまく動きません。
function hogehoge {
db();←別に定義されてるDBに接続するfunction
以下続く
}
こんな感じです。
functionの中でfunctionを使うにはどうすればいいでしょうか?
functionは全てスクリプトとは別のファイルに書かれています。
順番的にはdb()を先に書いています。
よろしくお願いします。
0283nobodyさん
2006/07/11(火) 21:39:17ID:htholvFi"always_populate_raw_post_data"をOnにしたいのですが
falseが返されてしまい設定できません。
ini_set('always_populate_raw_post_data' , ’On');
PHPマニュアルでは可能だと書かれているのですが…。
PHPマニュアルが間違ってるんでしょうか?
0284281
2006/07/11(火) 21:42:52ID:MzBGXnqGDB接続のfunctionはdbの名前とかが引数になっているんですが、
これらも全部function hogehogeに渡したら通ったんですが、
これで合っていますか?一応動くのですが、無駄なことしてそうで自信がないです...。
0286281
2006/07/11(火) 21:48:41ID:MzBGXnqGレスありがとうございます。
DB()はDBサーバのアドレスとかの接続に必要な情報と、SQL文を一つを引数で渡して、その結果セットをreturnするというものなのです。
引数は全部で5個あるのですが、それを全部function hogehogeの引数に加えたら一応動作しました
挙動としては普通というか当たり前なのかもしれませんが、実装方法としてはあまり効率良くないでしょうか?
0287nobodyさん
2006/07/11(火) 21:57:18ID:???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がくっついて、そんなヘッダ変だよとなって
しまうのでしょうか。
0288nobodyさん
2006/07/11(火) 22:00:29ID:???マニュアルのどこさ?
>>286
変数のスコープについて勉強した方が良いですね。
http://jp.php.net/manual/ja/language.variables.scope.php
実装の良し悪しは何とも。それが駄目となるとグローバル変数になっちゃうし
そっちの方が一般的に言えば悪いでしょう。あとはクラスを作るかだね。
0291nobodyさん
2006/07/11(火) 22:22:00ID:s/pPSXDEっていうの禁止にしません?
つまんないしうざいだけ。
的を射たのはあるけどほとんどはずしてるし
0292nobodyさん
2006/07/11(火) 22:32:11ID:???0293nobodyさん
2006/07/11(火) 22:42:07ID:???0294nobodyさん
2006/07/11(火) 22:44:34ID:???お前が代わりに正しく導いてやれば良いだけのことじゃないか。
勝手に変なルールを作られてもつまんないしうざいだけ。
0295nobodyさん
2006/07/11(火) 23:24:03ID:???uniqid()
http://jp2.php.net/manual/ja/function.uniqid.php
は接頭辞無しで13文字のユニークな値を返す、とありますが
もっと短い文字数でユニークを保証する方法、または関数はありますでしょうか?
使用可能な文字はできれば半角英数字(大文字小文字)がいいのですが。
0296nobodyさん
2006/07/11(火) 23:41:41ID:???同じものが出る確率なんて0みたいなもんだ
0297nobodyさん
2006/07/12(水) 00:12:05ID:67ROEMVu変数名を渡して値を取得する関数を作成しようとしていますが
方法がわかりません。。。
つぎのような感じの関数を作ろうとしています。
function getValue($variable)
{
$hoge_data = simplexml_load_file('hoge.xml');
return $article->$variable;
}
0298nobodyさん
2006/07/12(水) 00:23:04ID:???PHPでは変数を使って変数を指定することができるのです。
$a = "hage";
$b = "a";
print ($$b);
0300nobodyさん
2006/07/12(水) 01:01:27ID:IbIRSqg8テキストは送信できても画像がアップできません
socketで送信するときのContent-Typeなどのかき方が悪いと思うんですが
画像はどうやって送ればいいんですか?
0302nobodyさん
2006/07/12(水) 01:11:36ID:???とかやるくらいなら
$a = $article->aaa;
ってやりゃいいじゃん。
0303nobodyさん
2006/07/12(水) 01:22:40ID:IbIRSqg8画像は$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";
0306nobodyさん
2006/07/12(水) 01:36:39ID:???0307nobodyさん
2006/07/12(水) 01:49:45ID:???0308nobodyさん
2006/07/12(水) 02:01:41ID:???0309nobodyさん
2006/07/12(水) 02:22:34ID:???これはunsetできなかったってことですよね?
なぜunsetできないのですか?
0310nobodyさん
2006/07/12(水) 03:55:24ID:IbIRSqg8独学なのでさっぱりでした
調べてみましたが
Content-Disposition: form-data; name="message"
こんな感じで送ればいいのでしょうか?
0311nobodyさん
2006/07/12(水) 06:10:47ID:???エラーだけ示されてもわかる訳ないでしょ?
昨日テストで答えが間違ってますって言われたんですが、どこがおかしいのでしょうか?
って言われて何と答えるよ?
0312nobodyさん
2006/07/12(水) 06:48:05ID:???フォームから受け取り、プレビューを表示した後の処理で、
プレビューのフォームにhiddenで内容を埋め込むか、セッションを使おうと
思ってますが他になんか良い方法ありますか?
0317nobodyさん
2006/07/12(水) 07:47:01ID:???Ajaxが一体どういうものかも知らず、JavaScript=Ajaxと覚えてるだけとかな。
0319244
2006/07/12(水) 08:33:55ID:???煽られたのでまたきました。
256 244 sage 2006/07/11(火) 16:27:42 ID:???
257 nobodyさん sage 2006/07/11(火) 17:10:33 ID:???
私が解決しましたと書き込んでから40分間以上書き込んでない状況に対して、
「これ以上続けるなら」とはどういう了見ですか?
まるであなたが話しをひっぱって続けているようにしか見えません。
0320nobodyさん
2006/07/12(水) 08:42:19ID:???こいつらコッチに丸投げしてぇ
0321nobodyさん
2006/07/12(水) 08:43:13ID:???http://pc8.2ch.net/test/read.cgi/php/1150088761/
0322312
2006/07/12(水) 08:57:58ID:???d
今回はセッション使う事にしました。
コメントスパムツール対策にもなりそうなので
携帯もあるのでjsはパスです。書いとくべきでしたね。
0323nobodyさん
2006/07/12(水) 09:00:53ID:???反応するとまた書き込んでくるから、何も書かない方がいい。
反応さえしなければ無害だ。
多分お前の書き込みになにかレスしてくるぞ。
0326nobodyさん
2006/07/12(水) 10:49:04ID:???と、320にレスしてくるのを予言されたので、レスせざるをえませんでした。
>>320
誰にでもミスはあるんだ。だからミスを責めることはできない。
0327nobodyさん
2006/07/12(水) 12:11:09ID:/vjOPwv1そこで、URLの判別に次のようなルールの正規表現を作りたいんですが、なかなかうまく行きません…。
・URLを判定する正規表現
・ただし、「 :;」が含まれている場合は許可しない。
URLを判別する正規表現というのは、
(http:|https:)(\/\/[-_.!~*\')a-zA-Z0-9;\/?:\@&=+\$,%#]+)
で行ってるのですが、「 :;」を除外できません。
どなたかご助言頂けるとありがたいです。
0328nobodyさん
2006/07/12(水) 12:19:05ID:???ちったぁ正規表現覚えろよ
ttp://pc8.2ch.net/test/read.cgi/tech/1131028296/
0329297
2006/07/12(水) 12:42:04ID:67ROEMVuありがとうございます。
そのまんま「$hoge_data->$variable」でよかったのですねorz
# $article を $hoge_data に置換し損ねていましたorz
0330nobodyさん
2006/07/12(水) 13:45:17ID:xb5eEiQB0334nobodyさん
2006/07/12(水) 13:53:19ID:xb5eEiQB0336nobodyさん
2006/07/12(水) 13:56:15ID:???Foo クラス内の、 func() という static関数を呼び出すときは、
Foo::static だが、
$foo = new Foo(); としたクラスからメソッドを呼び出すときは、
$foo->myFunc();
となる。これは、 $foo は作成されたオブジェクトの参照値(リファレンス)であり、
-> という記号は、デリファレンスすることをあらわす。
0337nobodyさん
2006/07/12(水) 13:56:51ID:???0339nobodyさん
2006/07/12(水) 14:49:48ID:???2chの情報を鵜呑みにすんなよ・・・
金貰ってるわけじゃないから嘘言っても詐欺とかにならないんだぞ
名誉毀損とかなら別だが・・・
0340nobodyさん
2006/07/12(水) 16:12:26ID:hqxdU0Dg他のサーバにあるquicktimeファイル(.movとか)のサイズ(縦・横)を取得することは可能でしょうか?
もし可能なら、教えてください。
0341nobodyさん
2006/07/12(水) 16:17:56ID:???0342nobodyさん
2006/07/12(水) 16:38:42ID:hqxdU0Dg他のサーバにあるquicktimeファイル(.movとか)のサイズ(縦・横)を取得することは可能でしょうか?
もし可能なら、その方法を教えてください。
0344nobodyさん
2006/07/12(水) 17:26:05ID:???他のサーバにあるquicktimeファイル(.movとか)のサイズ(縦・横)を取得することは可能でしょうか?
もし可能なら、その方法を教えてください。
0345nobodyさん
2006/07/12(水) 17:27:17ID:???0347nobodyさん
2006/07/12(水) 18:29:01ID:BdFa9tBW指定したurlからhtmlソースを取得するAPIなどはありますでしょうか?
ありましたら、そのAPI名を教えてください。
0349nobodyさん
2006/07/12(水) 18:36:07ID:BdFa9tBW0350nobodyさん
2006/07/12(水) 18:36:10ID:???それならPHP APIなんていいんじゃね?
0351nobodyさん
2006/07/12(水) 18:41:03ID:BdFa9tBWすみません。質問の仕方が悪かったです。
APIではなく、関数教えて頂けませんでしょうか?
0352nobodyさん
2006/07/12(水) 18:41:51ID:???次のページで保存されてないのは仕様ですか?
0353nobodyさん
2006/07/12(水) 18:42:24ID:???0354nobodyさん
2006/07/12(水) 18:43:58ID:???0355nobodyさん
2006/07/12(水) 20:44:26ID:BdFa9tBW教えて頂けませんでしょうか?
0356nobodyさん
2006/07/12(水) 20:52:20ID:???自分で考えろ
0357nobodyさん
2006/07/12(水) 21:11:44ID:bxIkUHnKhttp://jp.php.net/manual/ja/index.php
ここに載ってるよ。
てか、ほとんどの質問、ここの関数調べてきゃ普通に一発で行きつくものばっかじゃねーかYO!
くだらない質問というよりも丸投げだろ!
0358nobodyさん
2006/07/12(水) 21:12:02ID:???substr ("abcdefghijk", 2, 4);
0359nobodyさん
2006/07/13(木) 00:01:37ID:???その質問は明らかに悪い
何がしたいのかがわからない
元データがはっきりとわかっていて、取得する文字列もはっきりとわかっているのなら
$foo = "cdef";
とか書かれても仕方ないぞ
0360nobodyさん
2006/07/13(木) 00:22:14ID:???「n桁目〜m桁目までを取り出したいんです」
なのか
「bからgまでの内容を取り出したいんです」
なのか
「cdefって文字があったら取り出したいんです」
なのか、まったくさっぱり。
きみたちゃ小学生レベルかと・・・
0361nobodyさん
2006/07/13(木) 00:38:26ID:4CgVM/D80365nobodyさん
2006/07/13(木) 04:51:44ID:???0367nobodyさん
2006/07/13(木) 18:03:28ID:4QScch9z0368148
2006/07/13(木) 18:58:37ID:???スレ違いだとは思いますが、開発言語がPHPなのでここで質問させてもらいました。
問題を解決するためにどのような情報(header関係だとは思うんですが・・・)を調べればいいのかわかりません。
ヒントだけでもいいのでどなたかわかる方いましたら宜しくお願いします。
0369nobodyさん
2006/07/13(木) 19:02:00ID:???http://example.com/b/login.php
上記のように「a」と「b」二つのフォルダにそれぞれセッションによる
ログイン認証が必要なスクリプトを置いたとき、「a」でログインした状態で
「b」にアクセスすると、既にログイン済みの状態となってしまいます。
上記の現象は、違うディレクトリ間でセッション・ファイルを共有してしまっている…と
いうことなのだと思うのですが、これってPHPの仕様ですか?
ちなみにサーバはXREA+です。
0370nobodyさん
2006/07/13(木) 19:07:50ID:???0371nobodyさん
2006/07/13(木) 19:20:47ID:???http://jp2.php.net/manual/ja/ref.session.php
> 複数回のアクセスを通じて特定のデータを保持する手段を実現するものです。
逆に聞くが、ディレクトリやファイルが変わった時に
保持されないようなセッション情報に何の価値があると?
まずはログインしているかどうかの判定を見直せ。
0372nobodyさん
2006/07/13(木) 19:38:22ID:???そうかねぇ?
http://example.com/admin/login.php
http://example.com/users/login.php
でセッション情報を分離したいとかよくある要求だと思うけど。
>>369
http://jp.php.net/manual/ja/function.session-set-cookie-params.php
で
http://jp.php.net/manual/ja/ref.session.php#ini.session.cookie-path
を限定してあげれば良いと思うよ。
0373nobodyさん
2006/07/13(木) 19:44:17ID:???http://jp.php.net/manual/ja/function.session-name.php
で session ID を別々に分けておかないとごっちゃになるよ。
0374nobodyさん
2006/07/13(木) 19:49:21ID:???状況を想定しているのだろうな
0375nobodyさん
2006/07/13(木) 19:57:48ID:???それだとCookie無効時に不具合が生じるんじゃ?
セッションデータにユーザレベルなり何なりを組み込んで
そっちで判断した方が良いんじゃないかと思うが。
0376nobodyさん
2006/07/13(木) 20:01:30ID:???> それだとCookie無効時に不具合が生じるんじゃ?
あ"? そんなの /a/ と /b/ で分離するとかしないとかに関係ない話じゃん。
そもそも Cookie が無効でもセッション情報が扱えるように
URL に ID 付与とかあるわけで、今回の話題と何の関係が?
0378nobodyさん
2006/07/13(木) 21:32:54ID:???0379nobodyさん
2006/07/13(木) 21:45:50ID:???http://example.com/a/login.php
でログインした状態で
http://example.com/b/login.php
に行くと既にログイン済みになるという問題が起こっている。
>>371は基本的にセッションデータはサーバ上でひとつなので、
ログイン中かどうかを判断するルーチン
(恐らく『セッションデータがある=ログインしている』とかそんな感じと思われ)
を見直せと言った。
>>372-373は
http://jp.php.net/manual/ja/function.session-set-cookie-params.php
でセッションキーを補完するクッキーの有効ディレクトリを制限してやれば
ディレクトリを移った時にはそのクッキーは食わないのでログイン済みにはならないと言った。
>>374は>>372の方法だとクッキーを無効にしてある場合、つまり
http://example.com/a/login.php?SID=hagehagehogehoge
のようにURLパラメータとして受け渡す場合に
http://example.com/b/login.php?SID=hagehagehogehoge
のようにされるとやっぱりログイン済みになるので>>372の方法は不完全で、
セッションデータの中に今どちらにログインしているのかを示すデータを埋め込むべきだと言った。
要するに>>371と同じくログイン中かどうかを判断するルーチンを変えろと。
すると何故か>>377=372はキレ出した。
それを見た>>377は呆れていた。
一方ロシアは鉛筆を使った。
0380nobodyさん
2006/07/13(木) 21:49:19ID:???× 補完
○ 保管
0381nobodyさん
2006/07/13(木) 21:51:39ID:???× http://example.com/a/login.php?SID=hagehagehogehoge
○ http://example.com/a/login.php?PHPSESSID=hagehagehogehoge
0382nobodyさん
2006/07/13(木) 21:54:18ID:???> http://example.com/a/login.php?SID=hagehagehogehoge
> のようにURLパラメータとして受け渡す場合に
> http://example.com/b/login.php?SID=hagehagehogehoge
> のようにされるとやっぱりログイン済みになるので>>372の方法は不完全で、
ログイン済みにはならない。>>373 があるから。
0383nobodyさん
2006/07/13(木) 22:14:17ID:???0384369
2006/07/13(木) 22:16:38ID:???皆さんのご意見を参考に、セッションデータに格納するログイン判定用のデータを、
ディレクトリ毎に変えてみたら上手くいきました。
以下のような感じです。
$_SESSION['loginOK'] = "a-logined"; //「a」でログイン成功時に格納するログイン済みフラグ
$_SESSION['loginOK'] = "b-logined"; //「b」でログイン成功時に格納するログイン済みフラグ
今回のような事例に関しては、意外と気付かないでいる人も多いのではないでしょうか?
同じドメインでディレクトリやサブディレクトリ毎に別のWebアプリを置いていて、
ログイン判定データが同じだったら全部のログイン認証が筒抜け・・・というのは盲点でした。
一種のセキュリティ・ホール(?)になりうるので、このスレのテンプレにも入れたらいかがでしょうか?
0385nobodyさん
2006/07/13(木) 22:25:36ID:dYQP4E5n<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には何も格納されないのです。
どうすれば格納されるようになるのでしょうか?
0386369
2006/07/13(木) 23:03:37ID:???さらに実験してみたところ、
仮にログイン判定用のセッション・データ(>>384で書いたログイン判定フラグ)が全く同じ場合でも、
session_name('a');
session_name('b');
などのようにsession_nameをディレクトリ毎に分けて設定する(毎回session_startの前にコールする)という方法でも
大丈夫だということが分かりました。
0387nobodyさん
2006/07/13(木) 23:28:13ID:???$_SESSION["siteA"]["色んな情報"] = ...
$_SESSION["siteB"]["色んな情報"] = ...
ってやってたけどこれじゃ何か問題あるの?
0389nobodyさん
2006/07/14(金) 01:29:17ID:???一度、全ての行を、変数にいれて、
最後の行だけを除いて、保存するというやり方しかないんでしょうか?
テキストファイルがでかくなるとメモリの消費が辛いんですが、変数を節約するいい方法を教えて下さい
0391nobodyさん
2006/07/14(金) 03:23:20ID:???やりようはあるよ
ftellで場所を記憶しながらfgetsで取得していって
最後にftruncateでいける。
行の長さがある程度予想つくならば、最初にfseekしてパフォーマンスを上げられる。
0392nobodyさん
2006/07/14(金) 03:27:25ID:???最終行の先頭位置さえ分かればftruncate()で以降を削除できる。
最終行の位置を探すには
1.頭から1行ずつ読み込んでいって行末のftell()を保持しながら最後まで探していく
2.fseek()でファイル末尾に移動して1文字ずつ後ろから読み込んでいって1つ前の行末を探す
3.fseek()でファイル末尾から1行以上の分量だけ戻った位置に移動してそこから行単位に読み込む
などのアルゴリズムが考えられる。
3番は1行の最大長が分かってる場合は比較的有効。これが全然不明だと
100バイト戻って探索→ダメだったらさらにもう100バイト戻って…みたいになって大変。
この辺は対象ファイルのでかさなどからどこまで手間をかけるべきかを自身で判断しる。
処理時間は問題にならず単に消費メモリ量だけの問題なら1番で十分対応できる。
この種の末尾削除処理が頻繁に発生するなら、そもそもファイル書き込みの段階で
各行の先頭位置をインデックスファイルとして別途保存するか
そもそもファイルなんてやめてDB使った方がいい。
0393nobodyさん
2006/07/14(金) 03:29:28ID:???あと、全部丸ごと変数に入れなくても、
1行読み込み→その行を別のファイルに出力
というのを行単位に繰り返していって、
最後に元ファイル削除&別のファイルをリネーム、
って手順でも単純ながらメモリはほとんど食わずに処理できる。
でも、分量が多いならftruncate()の方が処理が軽いけどね。
0394nobodyさん
NGNGどうやればいいでしょうか?
"あ" を "202 240"
"犬" を "214 242"
というふうにです。
ご存じの方がいればよろしくお願いします。
0395nobodyさん
2006/07/14(金) 04:19:14ID:???$c = "あ";
$o = decoct((ord($c{0])) . " " . decoct(ord($c{1}));
echo $o;
0396nobodyさん
2006/07/14(金) 05:37:32ID:???言われてみて自分の管理してるサイト調べてみたら、
別々のシステムなのにログイン情報(セッションファイル)が共通になってた…orz
0397nobodyさん
2006/07/14(金) 07:08:44ID:???マニュアル嫁
http://jp.php.net/manual/ja/features.file-upload.php
0398nobodyさん
2006/07/14(金) 11:50:58ID:uuZ6ZGypfwrite($fp,'こんにちわ');
fclose($fp);
上記のようにファイルを作成する際に、
文字コードをUTF8に指定するには
どう記述すればいいんでしょう???
0400nobodyさん
2006/07/14(金) 12:12:07ID:???0401394
2006/07/14(金) 12:26:35ID:???ありがとうございました。後で試してみます。
それで、逆を聞くのを忘れていました。
"202 240" を "あ"
"214 242" を "犬"
というパターンです。よろしくお願いします。
0402nobodyさん
2006/07/14(金) 12:34:40ID:???「decoct」って関数を示されているわけだから、マニュアル読めば関連項目とかで
見つけられそうだ、とは思わないのでしょうか?
http://jp.php.net/manual/ja/function.decoct.php
0403nobodyさん
2006/07/14(金) 12:36:45ID:???0404nobodyさん
2006/07/14(金) 12:45:47ID:???http://pc8.2ch.net/test/read.cgi/php/1150088761/
0405nobodyさん
2006/07/14(金) 12:56:23ID:Gr8Njl8B内部エンコーディングって何が適当ですか?
0406nobodyさん
2006/07/14(金) 13:14:14ID:???0407nobodyさん
2006/07/14(金) 13:52:59ID:mRNg6YQD0408nobodyさん
2006/07/14(金) 14:00:17ID:???例外が少ない
0409nobodyさん
2006/07/14(金) 14:05:42ID:???そのサーバで使えるならUTF-8が安定してていいと思う
使えなきゃEUC-JP
Shift-JISはカタカナのソとかで面倒だから使わない方がいい
ちなみにコレはPHP書くときの文字コードの話ね
正規表現使うときはデータに合わせて正規表現の文字コードを指定するよろし
0410nobodyさん
2006/07/14(金) 16:39:54ID:???DB2へ接続するといった処理を行わせようとしているのですが、
HogePDOのコンストラクタでPDOのコンストラクタを2回呼び出し
ても問題ないでしょうか?
class HogePDO extends PDO
{
//DB1接続挑戦
parent::__construct(DB1の設定);
if( DB1接続失敗? )
{
//DB2接続挑戦
parent::__construct(DB2の設定);
}
}
0412nobodyさん
2006/07/14(金) 16:55:10ID:EKwqojz9こんな感じで 'PHP' を辞書から(国語、英和、和英)検索
ttp://dictionary.goo.ne.jp/q=PHP
0413nobodyさん
2006/07/14(金) 17:08:35ID:???0414nobodyさん
2006/07/14(金) 17:17:08ID:???てことで三省堂しか選択肢ないんじゃないかな
0415nobodyさん
2006/07/14(金) 17:35:29ID:LYbOhGxKこういうのを参考にインストールしてみました。
http://www.bnote.net/windows/windows/win_php.shtml
Apacheのhttpd.confの
LoadModule php5_module c:/php/php5apache2.dll
があると、Apacheが起動しません。
これをコメントアウトするとApacheが起動できて、htmlは見れます。
PHPはコマンドライン版は動くのですが、
起動しない理由のヒントをください。
0416nobodyさん
2006/07/14(金) 17:39:26ID:???俺はここみてやったらできたぞ。
ttp://oss.kk-ntc.co.jp/jpug/pukiwiki/pukiwiki.php?PHP%A4%CB%A4%E8%A4%EBWeb%A5%A2%A5%D7%A5%EA%A5%B1%A1%BC%A5%B7%A5%E7%A5%F3%B3%AB%C8%AF
0417415
2006/07/14(金) 18:02:38ID:???おおありがとう!
> 注2)apache_2.x.x系は、今回は使用しません。
> PHP4とApache2の組み合わせは現時点ではお奨めできません。
PHP5を使いたいのにっ _| ̄|○
Apache2.2か!?Apache2.2がだめなのか!?
0418nobodyさん
2006/07/14(金) 19:41:12ID:vYtz7wstをした後で、$linesにhogeという文字が入っている行のみを見つけ出すには
どうすれば良いですか?正規表現を使うのかなぁという気がするのですが
正規表現を使った経験がなく、どうしたらよいのか方法を教えてください。
0419nobodyさん
2006/07/14(金) 19:45:43ID:???if (preg_match('/hoge/', $line)) {
print("Hit!!\n");
}
}
0421ぬこえもん(=・ω・) ◆S715eQBvs6
2006/07/14(金) 20:25:24ID:Rg3ieVQg辞書順に配列するために何かよいアルゴリズムは無いでしょうか??
0423nobodyさん
2006/07/14(金) 20:49:28ID:???iframeを使うとリンク元がそのページになってしまいます。
何か良い方法はないのでしょうか?
(スレ違いならすみません。)
0424nobodyさん
2006/07/14(金) 20:51:23ID:???.......
<img src="http://hoge.com/hogehoge.php" />
0425ぬこえもん(=・ω・) ◆S715eQBvs6
2006/07/14(金) 20:53:09ID:Rg3ieVQgごめんなさい、言い忘れてました
テキストファイルだとかに生ファイルとして書き込みしようかと考えています。
それだとソフトウェアで再生することもできますし。
DBではこんなこと考えなくてもいいのかもしれませんね
0427nobodyさん
2006/07/14(金) 21:05:37ID:???textだとまず該当する語句がそのファイル内にあるかどうかの
真偽を判定しなきゃならんが、語句の数が多くなってくるとPHP標準の
関数で配列とかに読み込むとメモリ食うし、ソート処理も時間かかる。
DBにまかせた方がベター
どうしてもtextでやるんなら力任せ検索で真偽判定して偽であれば追加、
っていうのが面倒くさくなさそう。Boyer検索とかもあるけど。
0428nobodyさん
2006/07/14(金) 21:18:26ID:???リファラが欲しいなら、JavaScriptを使って
画像なりを出力するサーバースクリプトに引数として渡して呼び出すか
HTMLをPHPとして実行できるように設定するかの
どちらかかな。
0429426
2006/07/14(金) 21:18:30ID:???<img src="./count/count.php" width="0" height="0" />です。
0430ぬこえもん(=・ω・) ◆S715eQBvs6
2006/07/14(金) 21:50:14ID:Rg3ieVQgそうですか・・・・
やっぱりそれしかないのですね・・・・
構築できたらそれだけでDBソフトとして利用できそう
0431nobodyさん
2006/07/14(金) 21:53:15ID:3oB/DzeI0432nobodyさん
2006/07/14(金) 22:38:02ID:???・単語単位にファイルを作る
とか
・記録は登録順にしておいて各単語の順番を保持するindexを作る
とか
・1行の長さを固定にするか行の位置をindexに記録しておいて自由に挿入削除可能にする
とか。
ちなみにテキストファイルじゃないけど固定長レコードで高速キー検索できるようにした
ファイルを使ったDBもどきとしてはdbmというのが既にある。Perl辺りじゃ標準装備。
0434nobodyさん
2006/07/14(金) 22:43:12ID:???彼らは「仕組みを知りたい」んじゃなく「こうやったらこうなる」という
結果が出てくる方法だけをケーススタディとして知りたいだけなんじゃないかなー。
WEBから入ってJavaScriptのサンプル集とかでしかプログラムしたことないやつには多そう。
もしも「そんなことはない!」というなら漏れなく消防レベルの知能指数と断定してやろうw
0435nobodyさん
2006/07/14(金) 22:48:12ID:???0436ぬこえもん(=・ω・) ◆S715eQBvs6
2006/07/14(金) 23:17:25ID:Rg3ieVQgはあくしました
サンクスです
0437nobodyさん
2006/07/14(金) 23:31:36ID:???複雑な条件を探すんならともかく、単にhogeって単語を探すだけなら
正規表現は使わない方が速いし確実。
strpos()使え。
0438nobodyさん
2006/07/14(金) 23:35:14ID:???作れますでしょうか?
phpですとなかなか資料が見当たらなくて・・
perlだと「ひみこーど」?というのがあるみたいですがphpで可能でしょうか
0439nobodyさん
2006/07/14(金) 23:54:51ID:???0441nobodyさん
2006/07/15(土) 00:04:59ID:???PEAR::Text_CAPTCHA
ttp://pear.php.net/package/Text_CAPTCHA
ttp://pear.plus-server.net/package.text.text-captcha.html
紹介ページ
ttp://www.doyouphp.jp/sample/sample_others_captcha.shtml
ttp://kawama.jp/archives/2006/05/peartext_captch.html
ttp://blog.poyo.jp/archives.php/categ-1/year-2005/month-1/id-1106990727
0442nobodyさん
2006/07/15(土) 10:01:30ID:???preg_grep というすばらしい関数がある。
$mutches = preg_grep('/hoge/', $line);
0443nobodyさん
2006/07/15(土) 10:02:55ID:???PHPだと無理?
0446nobodyさん
2006/07/15(土) 12:13:33ID:DUyjY8jkphpを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
0447nobodyさん
2006/07/15(土) 12:16:29ID:???$path_fileとかいうのがDOCUMENT_ROOT以下に置いてないんなら
まー不正ダウンロードされることはないっしょ。
あとはそのif条件を不正に成立されたりしないかくらいでないの?
0450nobodyさん
2006/07/15(土) 12:46:12ID:DUyjY8jk安心しました。ありがとうございますm(_ _)m
念のため.htaccessも使おうと思います
0451nobodyさん
2006/07/15(土) 13:19:27ID:dl9oNIQiそういうのはarray_filterとかarray_reduceだと思うけど、grepと比べたら使い勝手は悪いかも。
0452nobodyさん
2006/07/15(土) 13:35:16ID:???PHPの関数はあくまでC言語ライクだが、Perlの関数はシェルスクリプトライクなわけで。
でも、だからこそ誰が書いても比較的一定のコーディングスタイルを保ってられるんだと思うけどね。
0453nobodyさん
2006/07/15(土) 14:37:30ID:RYeH9Y82環境は、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で動いて
いますので、本番機の文字化けを直さなくてはならないのです。どなたかお分かりで
しょうか?教えて頂ければ、幸いです。
0455232
2006/07/15(土) 14:50:39ID:???<?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に配列を格納することは出来ませんか?
0458nobodyさん
2006/07/15(土) 15:16:53ID:RYeH9Y82>>454様。>>456様。ご返答、ありがとうございます。
今、本番機から離れた所にいますので、数日経ちましたら、調べて
みます。
ちなみに、>>454様のおっしゃる通り、「サーバにアップロードした
後のcsvファイルが異常」だとしたら、どのようなことが原因なの
でしょうか?普通に<input type="file" 〜>と書いているだけなの
ですが、それでもアップロードが異常になることがあるのでしょうか?
また、>>456様のおっしゃる通り、「mbstring.language」が原因だと
したら、「mbstring.language」はどのように設定すべきなのでしょう
か?「mbstring.language」が「neutral」であれば「Japanese」に変え、
「mbstring.language」が「Japanese」であれば「neutral」に変えてみ
るのが良いのでしょうか?
0460nobodyさん
2006/07/15(土) 16:40:47ID:47sj2xHFどのようにすればよいのでしょうか?
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番目
並び方はランダムでお願いします。
0463nobodyさん
2006/07/15(土) 17:16:36ID:dl9oNIQi0464nobodyさん
2006/07/15(土) 17:17:14ID:???0465nobodyさん
2006/07/15(土) 17:20:39ID:???あとで使うときになって「そういえば、こんなような関数どっかにあった気がする」と気づくから。
0467nobodyさん
2006/07/15(土) 17:24:55ID:???しかもランダムに、値が重複しないように表示したいのですが、
どういった関数を利用すればいいんでしょうか?
0468nobodyさん
2006/07/15(土) 17:29:25ID:???0469nobodyさん
2006/07/15(土) 17:31:05ID:???array_rand
array_slice
とか使って書きなはれ。
0470nobodyさん
2006/07/15(土) 17:34:47ID:???0471nobodyさん
2006/07/15(土) 18:01:13ID:???手順さえ思いつけば8割がた出来たも同じ。後は利用する
プログラミング言語の文法に従って書けば良いだけだからな。
その手順を考えることを放棄するような奴ってなに考えてるんだろうね?
この世に不要なんだよ。存在自体が。
ここはくだ質スレだが、こういう結果が欲しくてこういう手を考えたが
もっとスマートな方法は無いか?とかどういう関数が使えるか?
ちうことを聞くところだ。
考えることを放棄するような奴はイラネ。うせろ。
0473nobodyさん
2006/07/15(土) 20:42:33ID:???date(Ymd,strtotime("-1 day"))
これは昨日限定ですよね?
昨日以前というのは指定できないのでしょうか?
0475nobodyさん
2006/07/15(土) 21:53:38ID:???0476nobodyさん
2006/07/15(土) 22:31:25ID:QlSeqY/9・ファイルにしてインクルードする
function foo()
{
include( "globals.php" );
echo $var;
}
・クラスにして参照する
class CGlobals{
static $var = 123;
}
function foo()
{
echo CGlobals::$var;
}
・$GLOBALSを使う
function foo()
{
echo $GLOBALS['var'];
}
のどれが好ましいでしょうか
もしくはこれ以外にもっと好ましい方法がありますでしょうか
0479nobodyさん
2006/07/15(土) 23:57:29ID:sY8c/3Bb$str="aa<a>bb</a>aa"
$strから<a></a>に挟まれた文字列を
取得したいのですが、
どう記述すればいいでしょうか?
サンプルソースを頂けないでしょうか。
0481nobodyさん
2006/07/16(日) 00:16:25ID:???aaa<br>
bbb<br>
ccc<br>
HTML;
これのような出力を一気に配列に入れる方法を教えてください。
0482479
2006/07/16(日) 00:25:47ID:???こんな感じで書いたら
<?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
0484nobodyさん
2006/07/16(日) 00:45:50ID:???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);
0485nobodyさん
2006/07/16(日) 02:33:24ID:???データの中にカンマが含まれている場合、そこで配列の項目として切っちゃいますよね?
そういう場合は本業プログラマさんは普通どういう方法で処理するものなんでしょうか?
よろしくお願いします。
0486nobodyさん
2006/07/16(日) 02:55:40ID:???別に決まりはないはず
たとえば単純に2byte文字「,」にするとか
特殊文字「,」(&#44;)にするとかね
0487nobodyさん
2006/07/16(日) 02:57:42ID:???普通は処理がしやすいようにデータフォーマットを作る。
例えばタブ区切りにするとか。
CSVつうてもエスケープのしかたで何種類かあるので
既存のデータなら、それに合わせて処理する。
EXECLの吐くやつとかだと処理ライブラリもあるけど
上手くいかないことも。
0488nobodyさん
2006/07/16(日) 03:20:47ID:???というか、変な置き換えをするのはウンコ。
置き換えは " だけ。"" と2回連続させる。
0489nobodyさん
2006/07/16(日) 04:14:19ID:???区切り文字には気をつけろ!
カンマ区切りの場合「ソ」の直後に「"」が来るとバグる関数がある(fgetcsvとか)
まぁ、そういうところを考えるのもプログラミングの楽しいところだな
・・・苦しむところでもあるが
0490nobodyさん
2006/07/16(日) 04:25:50ID:???>>473 みたいのが全てを表してると思う。
彼らはコーディングをアルゴリズムとは思っておらず
「指定すれば指定した通りの結果が出てくる」という
PHPを単なるツール、アプリケーションの操作と勘違いしている。
0491nobodyさん
2006/07/16(日) 04:28:48ID:???言いたい事は分かるけどね。
0492nobodyさん
2006/07/16(日) 04:33:07ID:???そこに至るまでの考え方など無用の長物なのだ
0493nobodyさん
2006/07/16(日) 05:18:14ID:???よかった。まだ俺と同じ考えのヤツがいたんだ。
このスレ、だんだん丸投げスレになってきたんでどうしようかと思ってた。
0494nobodyさん
2006/07/16(日) 05:31:42ID:???答えたくないなら答えなくても良いし
0496nobodyさん
2006/07/16(日) 05:51:09ID:???もっとも質問したのは1回だけですけど。あとはたまに覗いてます
0498nobodyさん
2006/07/16(日) 06:27:22ID:???print_rで出力すると何故か文字化けしてしまいます。
ブラウザのエンコードをUTF8に指定すると直るのですが、
いちいちそんなことしないでも普通に表示させたいのですが…。
<meta http-equiv="Content-Type" content="text/html; charset=utf8">
というメタをつけて文字コードを指定してるのですが上手くいきません。
どなたかよろしくお願いします。
0499nobodyさん
2006/07/16(日) 06:34:03ID:???META指定よりヘッダーで出力されてる文字コード指定の方が優先で
多分それがSJISかEUCにでもなってんでしょ。
php.iniで出力文字コードの指定があるから設定してみ。
header()使って自分で出力するのでもアリかもね。
0500nobodyさん
2006/07/16(日) 06:56:25ID:???0501nobodyさん
2006/07/16(日) 12:57:48ID:xiYRHM+hRPMのPHPはmbstringが組み込まれていないようです。
RPMは捨てて自分で入れ直すしかないですか?
0502nobodyさん
2006/07/16(日) 13:09:36ID:???srpm の spec ファイルを編集してリビルドすればo.k.
それか野良rpmを探すか。
自分ならソースから入れるね。
FreeBSDならports使うけど。
0503nobodyさん
2006/07/16(日) 13:22:28ID:???0505501
2006/07/16(日) 13:38:45ID:???レスありがとうございました。
アンインストールしようとしていたのですが
mbstringのパッケージをインストールしたら無事使えるようになりました。
0506nobodyさん
2006/07/16(日) 14:59:52ID:5V0Lpe7K最近はやりのスクロールにあわせて上下するフロートメニューを
PHPだけで作るコトってできますでしょうか?
縦に長いページの中でどこがブラウザに表示されてるのか取得して
画像を動かすことができれば作れそうですよね。
PHPでできるかな?
ttp://www.ws-company.jp/1f_info.php
↑ちなみにこんなやつです。ここのはJAVAで作ってるみたいですね
まあ、JAVA使ってもいいんだけど…
0507nobodyさん
2006/07/16(日) 15:02:08ID:???0509nobodyさん
2006/07/16(日) 15:04:56ID:???0510nobodyさん
2006/07/16(日) 15:12:40ID:???>>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文字はスペースに変換して開きます」
というアラートが出てくることです、ここに何か糸口が…?
0511nobodyさん
2006/07/16(日) 15:26:00ID:???Java じゃない。JavaScript ね。しかも Firefox では正常動作していなかった。
PHP なんぞなくても、ふつーの HTML + JavaScript で終了。
0512nobodyさん
2006/07/16(日) 15:38:50ID:???0513506
2006/07/16(日) 15:49:07ID:5V0Lpe7KPHPでできたとしても、いっぱいの人がアクセスしたら
サーバーに負担かかりすぎちゃって話にならなそう?
やっぱり、クライアントサイドでやらないとだめかな?
0515nobodyさん
2006/07/16(日) 16:08:28ID:???結局何も分かっていなさそう…
だから、なんで PHP が出てくるんだ?
PHP で JavaScript を含んだ HTML を生成したとして
サーバの負担が心配だからクライアントサイドで?
言っていることが支離滅裂なんですけど、分かってる?
0516498=510
2006/07/16(日) 16:18:02ID:???もしかして読み込み元のhoge.logファイルをいくらUTF-8で保存しても、
phpがfile( )で読み込む時にコードの如何を問わずSJISとして読み込む設定になっている、
ってことはないでしょうか?
もしそうならphp.ini?とかの設定の問題なのでお手上げだなあと思ったんですが
0518nobodyさん
2006/07/16(日) 16:34:03ID:???PHP Version 4.4.2でdefault_charsetはShift_JISになってますー
header()の出力よりもこっちが優先されちゃうのかな…
0519nobodyさん
2006/07/16(日) 16:37:26ID:???> header()の出力よりもこっちが優先されちゃうのかな…
それならまず、file と print_r を使わずに UTF-8 で直書きした HTML を含む
コードを PHP で出力させて、化けるか否かをチェック。
0520nobodyさん
2006/07/16(日) 17:14:37ID:???さきほどのコードに追加しました
<?
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()で読み込んだ部分が正常に…、わけがわからなくなってきました
0521nobodyさん
2006/07/16(日) 17:16:42ID:???ブラウザはSleipnir1.66とIEの6を使ってます
一応書いとくとXP SP2です
0522nobodyさん
2006/07/16(日) 17:26:46ID:???手元(PHP 4.4.2)で試してみた。が、化けなかった。
ブラウザは Firefox 1.5.0.4 と IE 6 SP2
mbstring 関係の設定は何も変更してないはず。ソースから make で。
読み込み UTF-8 のファイルは BOM 有り・無しの何れも。
0523nobodyさん
2006/07/16(日) 17:33:15ID:???うーん、読み込むhoge.logの方をSJISで保存すると一応全体がSJISとして化けなしに表示されるので、
とりあえずはこれでしょうがないかと…。
0524nobodyさん
2006/07/16(日) 18:33:30ID:???>最近はやりのスクロールにあわせて上下するフロートメニュー
すっごく根本的なことを教えてあげよう。
そんなのは最近じゃなくて大昔からあるものだし、別に流行ってないし、
PHP関係ないし、っていうかウザいだけだから止めたほうがいいし。
初心者がサイト作るとすぐそういうウザい動きを付けたがるのは何故だろうね?
0525nobodyさん
2006/07/16(日) 18:44:07ID:???ちなみに >>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
でした。
0527nobodyさん
2006/07/16(日) 19:22:30ID:???ありがとうございます、今みてみたら化けていたサーバーは
mbstring.http_output SJIS SJIS
mbstring.internal_encoding SJIS SJIS
となってました。
525の人と同じ環境の他のサーバーで試してみたところ文字化けなしにいけました。
問題点がわかったので他のサーバーで動かすようにします、
ありがとうございました。
0528nobodyさん
2006/07/16(日) 22:03:44ID:???どうもてっとり早い方法が見つからない。
C でいえば
for(i = 0; c1[i] == c2[i]; i++ );
ぐらいのものなわけですが、php だとどうしたものでしょう?
similar_text だと、先頭からという限定ができないようだし、
ord($str) でCライクに比較しようにも、
先頭のアスキーしか取れないようなので、一々 substr で先頭を切っていくことになる?
substr_compare で徐々に len を減らしていく、という方法だと
ほぼ同じ部分文字列を毎回一から比較していくわけで無駄が多い。
こういうときはどうするのがうまい方法なのでしょう?
0529nobodyさん
2006/07/16(日) 22:26:57ID:???str1 = 'hogehoge';
str2 = 'hagehage';
for(i=0; str1[i]==str2[i], (i<strlen(str1) && i<strlen(str2)); i++);
これダメなんだっけ?
0530nobodyさん
2006/07/16(日) 22:34:51ID:???http://jp.php.net/manual/ja/language.types.string.php#language.types.string.substr
0531nobodyさん
2006/07/16(日) 22:52:04ID:???上手い方法を知っているわけではありませんが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;
}
}
?>
0533nobodyさん
2006/07/16(日) 23:25:43ID:VEXOfJen$res=strtr($res," ","");
というふうにしたのですが、
全く置換できません。。
何が問題なんでしょ?
0535nobodyさん
2006/07/16(日) 23:30:10ID:???対象となるサーバはXREAです。
0540nobodyさん
2006/07/17(月) 10:02:03ID:???echoだと値が帰ってくるんだですが、
return $matches[0][0];
returnだと値が帰ってきません。
retuneは配列の値を表示することができないんでしょうか?
0541nobodyさん
2006/07/17(月) 10:30:25ID:???function hoge(){
// $matches配列の生成
return $matches[0][0]; // 値を返す
}
echo hoge(); // 値を表示する
なら表示されるはずだが。
0542nobodyさん
2006/07/17(月) 10:36:03ID:???ちょっと意味不明かと思いますが、
具体的には以下のIFでループが発生しました。
(ただ、再現性が著しく低いです。というか再現できなかったと思います)
$temp = explode( "/" , $_SERVER['SCRIPT_NAME'] );
$start = count( $array ); // $arrayは配列です。
for( $i=$start; $i < (count($temp) -1); $i++ ) {
// 変数 $i にアクセスしない処理
}
なんかやらかしてるでしょうか?
それともやっぱり環境なのかな?
0543nobodyさん
2006/07/17(月) 10:45:33ID:???0544nobodyさん
2006/07/17(月) 10:45:40ID:???0546nobodyさん
2006/07/17(月) 10:50:28ID:???0547nobodyさん
2006/07/17(月) 10:57:33ID:???で、できました
0548nobodyさん
2006/07/17(月) 10:58:04ID:???意味がわからないって事かな?ごめん 2ch語?よくしらないので
>>542の IF の記述法に問題があるのか。という点と、
例えば $array 等に NULL や文字列、オブジェクトなどの予想外の要素を
代入した場合に素直に動くのか、それとも予想もできない動作をするのか
等の情報が知りたかったと言うことです。
何かのネタだったらごめん。
ちょっと解説してくれると助かる。よかったらだけど…
0549nobodyさん
2006/07/17(月) 11:09:25ID:???ウルトラマンが悩みを聞いてあげるスレッド
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
:\ [_ ̄] /::| │
:: |\|_|_|_|_/:::| \_______
0550542
2006/07/17(月) 11:11:26ID:???通常は素直に動く事は解っています。NULLを0と等価とみなし、
オブジェクトではフィールド数を返すなど。
ただ、たまーに変になる可能性がちょっとでもあるのかな?
と言うことが知りたかったというか、ごめんよ日本語下手で。
まずは日本語を勉強しろって事だな。正直スマンカッタ
0552nobodyさん
2006/07/17(月) 11:14:12ID:???0553nobodyさん
2006/07/17(月) 11:31:29ID:???>>542の場合、$startに数字じゃなく文字が入ったりすると永久ループする可能性があるけどね。
これが本当に$startはcount()の結果以外は入らないようになってるのならちょっと分からんけど。
他にあるとしたらループの中で$tempを破壊してしまうケースくらいか。
ま、ifは変な挙動をしたりしない。
しかしPHPの変数が様々な型を自動変換するのをプログラマが忘れてることは多い。
変な挙動に見えても大抵はそれは「仕様」だ。
0554nobodyさん
2006/07/17(月) 11:34:11ID:???>>542では、終了の値が有限であり、(ファイル名がもの凄い長いとかじゃないです)
かつ、開始の値に関数 count() を利用する為、負の値は通常取らないはず。
この条件でどうして無限ループが発生したのかが疑問なんです。
Nullチェックなりなんなりしろってことは、count() は極稀に負の値を
返したりする事がある。って事かな?
その場合、IFの開始、終了値の制限範囲を予め定めるってチェックを
する必要があるけど、それって普通しないですよね?
ただの事故か、それとも潜在的に無限ループの可能性があるのかが知りたかっただけなんです。
0556nobodyさん
2006/07/17(月) 11:40:14ID:???0557nobodyさん
2006/07/17(月) 11:50:47ID:???あ、そうか。ありがとうございます。かなり参考になりました。
変数の型には留意しているつもりなんですが、やっぱり見えないところで
いろいろ変換されているかもしれません。
>>556
ループ処理はこれだけだったんです。
変数代入は IFの直前で他の値が入る隙はなかったんです。
一番可能性が高いのは、処理中に $temp に何かいれた。かな?
(無論、そんな事はしていないつもりですが)
再現性が殆ど皆無である為、ただの事故だったかも知れませんが
変数の型に常に留意しなければならないなど、いろいろ参考になりました。
ありがとうございました。
0558nobodyさん
2006/07/17(月) 11:52:27ID:???0559nobodyさん
2006/07/17(月) 12:07:52ID:???スクリプトって寛大に受け入れてとりあえず動いてくれるけど、
それが難しく感じる事の方が個人的には多い。
現実的で有効な対処法は、ソースを第三者にみて評価してもらうかな。
愚問に付き合ってくれて、みなさんありがとうございました。
0560nobodyさん
2006/07/17(月) 12:47:23ID:???<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は処理すればいいでしょうか?
0561nobodyさん
2006/07/17(月) 13:11:17ID:???0562nobodyさん
2006/07/17(月) 13:18:46ID:???$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
このくらいふつーだろ。
0564nobodyさん
2006/07/17(月) 15:33:09ID:???仮に処理できるとしても、そんなクソな設計は止めたほうがいい。
複数の値を持たせなきゃならん必要性があるのか?
0565560
2006/07/17(月) 16:19:00ID:ab1cz1rX例えば良かったと悪かったが選択されていたら
a=4,b=9,c=3となるようにしたいです。
そして、それぞれのa,b,cの値によって次の処理をしたいのですが
考え方が間違っているのでしょうか?
0566560
2006/07/17(月) 16:24:35ID:ab1cz1rXこれらは例ですので気にしないでください。
混乱させてしまったらごめんなさい。
0567nobodyさん
2006/07/17(月) 16:25:43ID:???<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(なんたら)
ってかんじがいいと
0568nobodyさん
2006/07/17(月) 16:30:20ID:???<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);
}
0569nobodyさん
2006/07/17(月) 16:31:47ID:???$tmp を無意識に「ドル、ティムポ」って読んじゃうのもれだけ?
0570560
2006/07/17(月) 16:33:53ID:ab1cz1rX速レスありがとうございます。
PHP初心者で、>>567が自分の作ろうとしているものに適しているのかどうか
よくわからないので、localhostで試してからまた来ます。
0571nobodyさん
2006/07/17(月) 16:34:15ID:???再構成できるんだから>>560みたいなやり方も一概に悪いとは言えないと思う。
たとえばaとかbとかのキー自体がiniファイルで外部設定できるような仕組みになってれば、
いちいちプログラムを変えなくても様々なニーズに容易に対応できるようになるだろ?
0573nobodyさん
2006/07/17(月) 16:47:57ID:???name = "type[]"
にして複数のチェックボックスを配列にするといいかも。
0574560
2006/07/17(月) 16:59:52ID:ab1cz1rXすいません。勉強不足で何のことやらさっぱりです。
>>573
>なんとか診断みたいなやつかな? 設問がたくさんあるタイプのやつ。
ズバリそれです。
>name = "type[]"
>にして複数のチェックボックスを配列にするといいかも。
これもよくわかりません。
0575nobodyさん
2006/07/17(月) 17:02:26ID:???0576nobodyさん
2006/07/17(月) 17:03:28ID:???…なんできみわ"a=4,b=7"みたいな変なパラメータを指定できるようにしたいなんて思ったのかね
チェックボックスで複数指定できるようにするならname="type[]"としとかないと
複数のパラメータを受け取れないぞ。最後の1個で上書きされてしまう。
name="type"にして選択できるのはどれか1つ、ってするならtype="radio"だろ。
0577560
2006/07/17(月) 17:05:47ID:ab1cz1rX<?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の値をとってしまいます。
二つの数値を足したいのですが、どうすればいいでしょうか?
0579nobodyさん
2006/07/17(月) 17:13:11ID:???まず複数指定できるようにするなら
<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"
しかデータ自体が残らないんだから、プログラム上で足そうと思っても足しようがない。
あとは配列を順番に処理するだけだから、ちょっと考えてみれ。
0580nobodyさん
2006/07/17(月) 17:13:35ID:???たとえば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と組み合わせるといいよ。
0582560
2006/07/17(月) 17:21:58ID:ab1cz1rXありがとうございます。
読んだだけでは、なかなか理解できなかったので
じっくり考えて見ます。
>>581
すいません。
どうやって説明すればいいのかわからなくて。
0583nobodyさん
2006/07/17(月) 17:28:32ID:???phpでrequireするのと変わらない場合もあるけどな。
htmlだけを直す、っていう方がいい場合もある。
もちろん、そうじゃない場合もある。
0584nobodyさん
2006/07/17(月) 17:50:56ID:???0586nobodyさん
2006/07/17(月) 18:27:47ID:???とりあえず複数の値をフォームで持たせるというやり方は
「間違っている」と言わざるを得ない。あるいは「良いやり方ではない」。
それでも出来るかもしれないけど、もっとシンプルでスマートで
応用の利くやり方は他にいくつかある。
「それを教えてよ」というのは無しだ。それを考えるのがプログラミングだ。
0587560
2006/07/17(月) 19:54:17ID:ab1cz1rXなかなかうまくいきません。
まだ少しプログラムを組むのは早かったかもしれません。
>>596
聞こうと思ったら先に釘を刺されてしまいましたか。
でも頑張ってみます。
0588nobodyさん
2006/07/17(月) 19:58:36ID:???0591nobodyさん
2006/07/17(月) 22:00:01ID:???フォームからは1個の値を渡す。
それをphp側で複数に切り替える。
if(answer=='1'){a=4;B=7;}
elseif(answer=='2'){b=2;c=3;}・・・
という感じで。
一般化すると。
「本当にそこで処理しなければいけないかを考えろ。」
0592nobodyさん
2006/07/17(月) 22:44:25ID:Vse0CV740593nobodyさん
2006/07/17(月) 22:46:02ID:???0594nobodyさん
2006/07/17(月) 22:53:34ID:Vse0CV74恐縮ですが、削除というのはどうすれば出来るのですか?
$_POST['msg'] = preg_replace ('^$', '', $_POST['msg']);
これじゃダメですよねぇ?
0595nobodyさん
2006/07/17(月) 23:08:01ID:???連続した改行を1つの改行に置き換えれば空行=削除に値するんじゃない?
0596nobodyさん
2006/07/17(月) 23:27:12ID:???「2個の改行」ではなく「2個以上連続した改行」な。
「空白+改行」を空行と扱うかを考える必要があるけどね。
0598nobodyさん
2006/07/18(火) 02:57:48ID:???左のバーや上部を表示させるにはどのようにすればいいのでしょうか?
0601nobodyさん
2006/07/18(火) 03:35:07ID:RAKThs0C$ENV{'HTTP_COOKIE'}で何も取得できません!
作成直後ではなくて、ブラウザでリクエストを再送しても取得できません。
どんな原因が考えられましょうか!
0602nobodyさん
2006/07/18(火) 03:47:13ID:???HTMLをテンプレとして別ファイルにしてinclude。
別ファイルにする際、左のバーだの上部だの、いつも同じ部分を
別個にすればよい。
ちなみにテンプレと言っても、いわゆる「テンプレート・エンジン」なんて使わなくても
自作テンプレで十分。
0603nobodyさん
2006/07/18(火) 03:47:50ID:???0604nobodyさん
2006/07/18(火) 04:02:26ID:???ありがとうございます。
それだと、同レベルのディレクトリ以外は難しくないですかね?
./../等として読みに行くとすると、ディレクトリ配置を変更するとなると
全てのファイルを書き直さなければいけなくなると思います。
また、include元のHTMLが<img src="./hoge.jpg">等とやっていた場合は
違うレベルのディレクトリのファイルから呼び出されたりすると
そのイメージのリンクは違うファイルを対象としてしまうと思うんですけど。
結構大きなサイトになると、同レベルのディレクトリに全て置くっていうのは
現実的じゃない気がするんですけど、そういうものなんですかね?
0607nobodyさん
2006/07/18(火) 09:02:10ID:???0608nobodyさん
2006/07/18(火) 09:28:49ID:???この程度の日本語が通じないヤツは、ほんとにどうでもいい
0609nobodyさん
2006/07/18(火) 09:29:55ID:WFdfnqCG>>453です。
本日、文字化けが起きたマシンを調べてみた結果、php.iniは
;mbstring.language = Japanese
となっており、mbstring.language はコメントアウト(neutralでUTF-8?)
されていました。
ただ、文字化けが起きなかった他のPCも、mbstring.language はコメント
アウトされており、mbstring.language が文字化けの原因ではないような
気がします。
どなたか、この文字化けの原因はお分かりでしょうか?教えて頂ければ、
幸いです。
0610nobodyさん
2006/07/18(火) 09:48:56ID:???とりあえず、それがコメントアウトされてたら文字化けしない方がおかしいので直せ。
そこは通常、Japaneseで設定されてないといけない。
ただ、ここがJapaneseじゃなくてもdetect_orderに特定の文字コードが設定されてれば
文字化けは回避できるかもしれない。
通常、これはautoに設定されてて、autoはlanguageの設定に合わせて自動設定されるので。
0612nobodyさん
2006/07/18(火) 11:33:37ID:WFdfnqCG>>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);
}
なのですが、何が原因かお分かりでしょうか?
0614nobodyさん
2006/07/18(火) 11:55:52ID:???実際にphpinfo();を表示させているサイトがありました。
サーバの環境から、Win鯖なのでユーザー名まで全て晒しています。
phpinfo();が表示する情報程度のものは
別に誰に見られても困るほどの事は無いのでしょうか?
0617nobodyさん
2006/07/18(火) 12:40:04ID:???> けれども、文字化け(最初の文字だけが「??」になってしまう)は
その最初の文字って何て文字さ。
> list($field1,$field2,$field3)=fgetcsv($file,20000);
> print("1番目".$field1."2番目".$field2."3番目".$field3);
化ける内容ってこの出力なのか?
fgetcsvは日本語を含むCSVデータでは使えないぞ?
0619nobodyさん
2006/07/18(火) 12:42:36ID:???0620560
2006/07/18(火) 13:13:09ID:n2ZEUTcJname="type[]" value="1"のようにしたほうが良いと言うことまでは
わかりましたが、どうやって複数の数値を持たせるのかがわかりません。
なんどもすいませんが、よろしくお願いします。
0622nobodyさん
2006/07/18(火) 13:16:46ID:???safemode の on/off が見えていたら困る場合、
on/off が見えなくても、
on か off のどちらかなのだから、safemodeが見えなくても、1/2で困ることになる。
0623nobodyさん
2006/07/18(火) 13:20:08ID:???onを予想して困る要因を作成し、1/2にハズレてだめだったとしても、
次にoffの場合の困る要因を作ればいいのだから、
どのみち困らせることができることになる。
0624nobodyさん
2006/07/18(火) 13:21:27ID:???safemodeがばれて困るような場合では、
safemodeが見えていようが見えていまいが、困るということだ。
0626nobodyさん
2006/07/18(火) 13:32:24ID:???value="a=1,b=2,c=3"
にする場合に必要なパーツはほぼ出揃ってるんだから、そっちでやっていいんじゃねーの?
(複数の値ってより、"a=1,b=2,c=3"っていう1つの文字列だな)
0628614
2006/07/18(火) 13:34:05ID:???やっぱドラゴンボールに例えるとわかりやすいな
0630nobodyさん
2006/07/18(火) 13:40:06ID:???仙豆が無い事がわかって困るなら、仙豆なんて物が初めから無くても困る
ってことだ
0632nobodyさん
2006/07/18(火) 14:22:42ID:???0633nobodyさん
2006/07/18(火) 15:28:52ID:WFdfnqCG> list($field1,$field2,$field3)=fgetcsv($file,20000);
> print("1番目".$field1."2番目".$field2."3番目".$field3);
> 化ける内容ってこの出力なのか?
> fgetcsvは日本語を含むCSVデータでは使えないぞ?
>>612 です。ありがとうございます。>>617様のアドバイスを元に、
「fgetcsv 日本語」で調べてみました。PHP5でfgetcsvを使った場合、
日本語が不安定のようです。ただ、CSVファイルの中身を全てダブル
クォーテーションで囲んで試したところ、文字化けしないで済みま
した。
どうも、ありがとうございました。
0634nobodyさん
2006/07/18(火) 15:35:22ID:qPB2Cam5で、メールを送信しようとしたのですが、エラーが返ってきます。
[mail function]
; For Win32 only.
SMTP = localhost
smtp_port = 25
; For Win32 only.
;sendmail_from = me@example.com
; 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です。
本当にくだらない質問ですが、お願いします。
0636nobodyさん
2006/07/18(火) 15:43:28ID:???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;
}
}
?>
0637634
2006/07/18(火) 15:53:15ID:qPB2Cam5シングルクォートにしてみましたが、変わりないです。
0640nobodyさん
2006/07/18(火) 15:57:59ID:???英数字のみを取り出して足し算、でした。
0642nobodyさん
2006/07/18(火) 15:59:31ID:???君はもう少し基本的なプログラムからゆっくり勉強した方がいいと思うぞ。
なんでそんな基本的なことで詰まってるのよ。
0644nobodyさん
2006/07/18(火) 16:02:10ID:???$m = strlen($str);
$a = ($n + $m) / 2
0645634
2006/07/18(火) 16:02:53ID:qPB2Cam5すいません
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
です。
0646nobodyさん
2006/07/18(火) 16:03:57ID:???で、それでなんで mb_send_mail でエラーが起きたと思ったの?
404ってApacheのエラーコードじゃなくて?
0648646
2006/07/18(火) 16:06:26ID:???0650nobodyさん
2006/07/18(火) 16:16:34ID:???エラーメッセージってのはその名の通り、エラーの内容が表示されているんだよ。
中高生が読めるレベルの英語なんだから、ちゃんと読めばエラーの理由が分かる。
0652nobodyさん
2006/07/18(火) 16:37:26ID:???実働サンプルを拾ってきた方が早いよ
0654nobodyさん
2006/07/18(火) 17:22:21ID:???もうちょっと頭を使いましょう。
ディレクトリを後から変更する予定があるのなら、
includeパスに含めるディレクトリ部分の文字列を変数なり定数なりにすれば良い。
●例:
define ("_DIR",'http://example.com/hoge/'); //ディクレトリ変更ならhogeを書き換える
include (_DIR."template.php");
0655nobodyさん
2006/07/18(火) 17:25:59ID:???0656654
2006/07/18(火) 17:29:01ID:???定数の定義自体も別ファイルにして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くん。
0657560
2006/07/18(火) 17:35:22ID:n2ZEUTcJ<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です。
また方向が間違っているでしょうか?
0658nobodyさん
2006/07/18(火) 17:35:50ID:???それでも、そのファイルとconfig.phpのファイルの位置関係が変わったら
意味内よね。 って言い出したらきりないけども…。
僕の場合、ディレクトリ構造が変更されることはないと割り切って、
../ だとか ../../ だとかそれぞれに書いてますよ。
0660nobodyさん
2006/07/18(火) 17:41:09ID:???<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>";
}
これをやってごらん。
0661660
2006/07/18(火) 17:44:43ID:???0664nobodyさん
2006/07/18(火) 17:49:38ID:???どうせなら、そういう具体的な数値はイッコの配列に入れたほうがいい
$arrayA = array (3, 4, 31);
$arrayB = array (1, 32, 12);
foreach ($_GET['type'] as $key => $val) {
if ($val) {
$a += $arrayA[$key];
$b += $arrayB[$key];
}
}
方向性ちがったらゴメン
0665nobodyさん
2006/07/18(火) 18:08:08ID:???0666657
2006/07/18(火) 18:18:21ID:n2ZEUTcJこれだと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
今から試してみます。
0667666
2006/07/18(火) 18:21:45ID:n2ZEUTcJ$a = $a1 + $a2 + $a3;
$b = $b1 + $b2 + $b3;
これです。
0668nobodyさん
2006/07/18(火) 18:54:02ID:???0669nobodyさん
2006/07/18(火) 19:00:43ID:???ttp://wiki.2chx.net/php/index.php?cmd=read&page=%A5%E1%A1%BC%A5%EB%C1%F7%BF%AE%40windows
0670nobodyさん
2006/07/18(火) 19:08:03ID:???>660と>657を掛け合わせれば解決できるのではないかと。
複合演算子を使う必要があります。
PHP: 代入演算子 - Manual
ttp://jp.php.net/manual/ja/language.operators.assignment.php
>657を元に、複合演算子で変数をまとめても良いですが、
どちらかといえば660氏のアルゴリズムを流用した方がスッキリすると思います。
>>667
ちゃんと、英語読んでます?
辞書を引けば解るレベルの英文だと思うのですが…。
「警告: 未定義の変数があります: a1 in...line22」
「警告: 未定義の変数があります: b1 in...line23」
お分かりでしょう?
それぞれの右辺の3つの変数がセットされていなければ、「変数が初期化されていません」とエラーが返ってくるは道理です。
必ず、初期化済みの変数でもって式を構成しなければなりません。
0671670
2006/07/18(火) 19:11:21ID:???ただ、最初から答えを教えるとあまり勉強にならないと思いますが…、余計なお節介かな。
0672nobodyさん
2006/07/18(火) 19:30:10ID:???> 必ず、初期化済みの変数でもって式を構成しなければなりません。
別にエラーレベルを下げちゃっても全然かまわんと思うけどね。
初心者の勉強のために消さない方がいいと考えてるんだろうけど
「必ず」ってこたないだろ。
0674nobodyさん
2006/07/18(火) 19:36:08ID:???おいおい。それだと最初のチェックボックスをチェックしなかったらキーがずれるぜ?
合わせて
<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も書き直してやらなきゃ。
0675nobodyさん
2006/07/18(火) 19:37:29ID:???授業で覚えたばかりの連中が回答やってんのか?
0678670
2006/07/18(火) 19:58:09ID:???確かに、「必ず」は言い過ぎかな。
「その方がよい」というニュアンスでしょうか。
>>673
そうかもしれませんが、この場合は複合演算子を使う方が多いんじゃないですかね。
>>664,677
連想配列を使っても良さそうですね。
(HTMLで配列の要素の順番を考えなくても良いという意味で。)
0679670
2006/07/18(火) 20:09:46ID:n2ZEUTcJすみません。
その初期化の方法がわからなくて困っているんですが。
0680nobodyさん
2006/07/18(火) 20:19:09ID:???0681nobodyさん
2006/07/18(火) 20:34:25ID:???マニュアルぐらい読んでください。必要最低限の事です。
Google検索: 変数 初期化とは
ttp://www.google.co.jp/search?ie=euc-jp&lr=lang_ja&num=30&q=%ca%d1%bf%f4+%bd%e9%b4%fc%b2%bd%a4%c8%a4%cf
PHP: 変数 - Manual
ttp://www.php.net/manual/ja/language.variables.php
0682670
2006/07/18(火) 20:39:22ID:n2ZEUTcJ自分でも色々と調べているのですが
うまくいかなくて・・・
初期化(?)なのかわからないですけど
$a1=$a2=$a3=$b1=$b2=$b3=0;
これを入れたらerrorが出ないようになりました。
こういうことで良いのでしょうか?
0684nobodyさん
2006/07/18(火) 21:09:07ID:???だからさ、絶対パスまたは絶対URLで書けばいいでしょ。
なんで相対パスにこだわってんの?
っていうかそれくらい自分の頭で考えてよ・・・
0686nobodyさん
2006/07/18(火) 21:17:40ID:???2.大元の設定用PHPファイルから各ディレクトリにシンボリックリンクを作る
3.大元の設定用PHPファイルを相対パスでincludeする同名のPHPファイルを各ディレクトリに置く
のどれか辺りでどうよ?
0687nobodyさん
2006/07/18(火) 22:07:58ID:???このままじゃ他に質問したい人が居てもその雰囲気に気圧されするかレスの海に飲み込まれるぞ
0688nobodyさん
2006/07/18(火) 22:08:46ID:???だから別に割り切らなくても解決できるっつってんの。
諦めずに考えろっっつってんの。
>>686
まあ大元の設定用ファイルは、そもそもディレクトリを変えないことが基本だよね。
で、分かりやすい場所に置く(セキュリティ面も含めて、privateフォルダなどが良い)
0689nobodyさん
2006/07/18(火) 22:10:52ID:???素晴らしい解答だけど、元質問の
>strlenはひらがな、カタカナ、漢字を
>全て3バイトとカウントすると仮定しても大丈夫でしょうか?
という仮定が前提になっているような・・・。
そういう意味では>>640の方が安全なのかな?
0690nobodyさん
2006/07/18(火) 23:29:36ID:???0691nobodyさん
2006/07/18(火) 23:57:48ID:P26DbQmu質問です。
PHPには、ある文字列と別の文字列の差異を見つけ出せる関数などあるでしょうか??
そして差異のある部分をHTMLで太字にしてみるとか。
ご存知だったらうれしいのですが。
0692nobodyさん
2006/07/19(水) 00:15:13ID:???> ある文字列と別の文字列の差異を見つけ出せる関数などあるでしょうか??
差異があるということは等しくないと等価。
従って、以下のようになる。
if($str1 != $str2){ 処理 }
> そして差異のある部分をHTMLで太字にしてみるとか。
まず、どういう視点で「差異がある」と見なすかを定義しなければならない。
行毎に差異を見なすのか、1バイトずつ見て、差異があった部分からEOFまでを差異と見なすのか、...etc
0693nobodyさん
2006/07/19(水) 00:39:22ID:???> PHPには、ある文字列と別の文字列の差異を見つけ出せる関数などあるでしょうか??
無い。exec()でdiffを呼び出すとかしれ。
しかしdiffにしたって行単位で違いを探すだけで、1行の中でどこからどこまでが違うとかは出さないけどな。
> そして差異のある部分をHTMLで太字にしてみるとか。
それは自分でstr_replace()などで処理すべきことだ。
「どのように表示するか」を勝手にやるような関数なんて普通あるわけないでしょう。
0694nobodyさん
2006/07/19(水) 00:47:50ID:???その解決が絶対パス??数百のHTMLがあったらそれぞれに絶対パス書いちゃって、
サーバー環境が変わったり、同一サーバーに同じ構成のプログラムを2つ入れる羽目になったら、
全ファイル一括置換とかしてるわけ?
少なくとも>>684は全く解決案になってないと思うんだが、何そんな偉そうなんだ。
0695nobodyさん
2006/07/19(水) 00:52:37ID:???馬鹿だからw
0700nobodyさん
2006/07/19(水) 02:00:51ID:???前向きな議論なら大変結構なのですがね。
0701nobodyさん
2006/07/19(水) 02:25:05ID:???pass情報はハッシュだけにしたほうが良い?
0702nobodyさん
2006/07/19(水) 02:26:20ID:???0703656
2006/07/19(水) 02:39:22ID:???>数百のHTMLがあったらそれぞれに絶対パス書いちゃって
相変わらずものすごい勘違いしてるね・・・
いや、勘違いっていうか、>>656で示した手法を全く理解できてないみたいね。
誰が「数百のHTMLの絶対パスを書け」なんて言ったのよ? 誰も言ってないでしょうよ。
俺が>>656で示した手法なら、絶対パスを書くファイルはconfig.php一つのみ。
せっかく他人がいろいろと具体例を挙げて説明してやってんのに、
自分がバカで理解できないからってそんな偉そうに文句つけてたら誰も教えてくれなくなるよ。
0704nobodyさん
2006/07/19(水) 02:50:58ID:???いやだから、そのconfig.phpをincludeする部分はどーすんのって話でしょうが。
そこは結局相対パスで書くのか?
0705701
2006/07/19(水) 03:42:26ID:???0707nobodyさん
2006/07/19(水) 04:31:22ID:???ユニークなID文字列をPHPで作りたいのですが、
どうするのがよいでしょうか?
tempnam()を使うとそれっぽい文字列を取得できるのですが、
同時にファイルを作成してしまうのが、余計に思っています。
0709nobodyさん
2006/07/19(水) 04:50:13ID:???http://www.google.co.jp/search?hl=ja&q=PHP+%E3%83%A6%E3%83%8B%E3%83%BC%E3%82%AF&lr=
0710nobodyさん
2006/07/19(水) 04:59:37ID:???uniqid()?もまぁありなんですが、
できれば現在時間に依存せず、完全にランダムな文字列で、
大文字も使用して、短い文字列を希望しています。。
0713nobodyさん
2006/07/19(水) 07:10:43ID:???それは質問者の方が無い知恵絞って自分のケースに合った実装方法を選択するべき。
このスレで議論するのはあくまで「一般的な」「よく目にする」ものであって・・・ここまで書いといてなんだが言葉が続かん。
とりあえずもちつけ。俺もおまいらも。
0714nobodyさん
2006/07/19(水) 08:25:22ID:???「他と重複しない完全なランダム」をどこにも記録せずに一発で生成するのは無理があるから
ファイルを作るのがイヤならDBに過去のキーを全部記録しとくとかしないと無理じゃない?
uniqid()は衝突の危険を回避するために現在時間を利用してるわけで、それも無しとなると、
ランダムな名前を試しに作る→過去のデータに重複がないか検索→重複してたら再生成
みたいなループを自力でやんないと原理的に不可能だよ。
(過去データを保持できるのは自分のプログラムだけなんだから、それを自動で処理する関数はありえない)
0715714
2006/07/19(水) 08:41:52ID:???で、単にランダムなだけで、既存と重複してるかどうかは無視していいのであれば、
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;
}
こんな程度で任意の桁数の数字・大小英文字の組み合わせでの文字列は作れる。
あとは作る→探す→作るをひたすら繰り返すだけ。
0716nobodyさん
2006/07/19(水) 09:36:16ID:???・パスワードは保存しない、「忘れた」対応は新規に仮パスワードを振り出す
・比較用のハッシュとは別に暗号化して保存、キーはひみつの質問の答え、e-mailアドレス等から生成
こんなんでどうですか?
0717nobodyさん
2006/07/19(水) 10:04:07ID:+mavFuWs本家では最新の4.4しか置いてなさそうなんですが、実はどこかにあったりします?
0718nobodyさん
2006/07/19(水) 10:11:01ID:???PHPのサイトのDownloadのページに
Older versions of PHPってページへのリンクがあるけど?
0719nobodyさん
2006/07/19(水) 10:14:46ID:???処理分岐することは可能でしょうか?
可能な場合、方法教えてくりませ
0720nobodyさん
2006/07/19(水) 10:16:39ID:???こうなってる
だから
print $serial[1];
が正解
0721720
2006/07/19(水) 10:17:29ID:???0723nobodyさん
2006/07/19(水) 10:37:09ID:???何か昨日は祭りだったみたいだな
ID:n2ZEUTcJ みたいなのにはレスすんな
途中から670とか名乗ってるしw
0724nobodyさん
2006/07/19(水) 10:59:42ID:Ay+5zUkFPHPの4.3で、クラスのメンバ関数の呼び出しを変数を使って
呼び出したいんですけどできませんか?
$func1 = "testfunc1()";
$testClass->$func1;
0728nobodyさん
2006/07/19(水) 12:02:12ID:???$func1 = "testfunc1";
$testClass->$func1();
または
$testClass->{$func1}();
ってカンジでどうでしょう?
0729717
2006/07/19(水) 12:20:13ID:+mavFuWsありがとう。
ページの右側ばっかり見てました。
0730nobodyさん
2006/07/19(水) 12:35:41ID:???>>727,728
$testClass->{$func1}();
この方法でOKでした。これなら、クラスを引数に渡せるし、
助かりました。
0731nobodyさん
2006/07/19(水) 12:46:22ID:???自分は
PHP辞典
PHPスーパーサンプル第2版
をよく読みます。(主に辞典)
何かお勧めの参考書などがあれば教えていただけませんか?
0732nobodyさん
2006/07/19(水) 12:48:54ID:???マジお薦め
0733nobodyさん
2006/07/19(水) 12:55:32ID:???cvs -d :pserver:cvsread@cvs.php.net:/repository checkout -r PHP_4_3 php-src
0734707
2006/07/19(水) 13:18:50ID:???サンプルコードありがとう。
uniqidを、大文字も利用した短縮文字列に変換して、
必要であればなんらかの暗号的変換もかけるのはどうだろう?
と今思いつきました。
0735nobodyさん
2006/07/19(水) 13:25:46ID:???やはり、
http://jp.php.net/manual/ja/
これがもっともお勧めだな。
0736nobodyさん
2006/07/19(水) 13:46:04ID:???欲しいのは大文字だけなの?
uniqid()をベースにする限り、「現在時間に依存しない」「短い文字列」という希望は満たせないわけだが。
> なんらかの暗号的変換もかける
その時点でその文字列はユニークじゃなくなってしまう可能性が高いんで
最初から自力でランダムな文字列を生成するのと何も変わらなくなってしまうんだが。
0737nobodyさん
2006/07/19(水) 13:51:12ID:/PVcx7MW<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>
になって微妙に気持ち悪いんだが、これは仕様?
0738707
2006/07/19(水) 13:58:05ID:???>> なんらかの暗号的変換もかける
>その時点でその文字列はユニークじゃなくなってしまう可能性が高いんで
>最初から自力でランダムな文字列を生成するのと何も変わらなくなってしまうんだが。
uniqidがベースなので、ユニークにできますよ。
また厳密には、現在時間に依存しますが、
容易に推測されないランダムな文字列になっていればいい、
という感じです。
0740nobodyさん
2006/07/19(水) 14:09:48ID:???>709の示した
ttp://phpspot.net/php/pg%83%86%83j%81%5B%83N%82%C8%82h%82c%82%F0%93%BE%82%E9.html
が希望に近いと思うが、どちらにせよ既存のIDと重複しないために、重複チェックは必要になる。
「重複チェックに引っかかる→再試行」の繰り返しを忘れぬよう。
0741nobodyさん
2006/07/19(水) 14:09:49ID:???1対1の可逆変換で短縮した文字列を再生成するってことだな。
できるじゃね?
0743nobodyさん
2006/07/19(水) 14:15:43ID:/PVcx7MWまじかorz
回避方法は改行を余計に入れる、ってことくらいか?
0744707
2006/07/19(水) 14:21:34ID:???軽くシャッフルするとかシフトするとかすれば、(容易に推測されない程度の暗号化)
できそうですよね?
0745nobodyさん
2006/07/19(水) 14:23:04ID:???暗号強度についてはスレ違いだしな
0746nobodyさん
2006/07/19(水) 14:23:26ID:???PHPタグはHTMLの途中に挿入するケースが多いから、
そのときに余分な改行が入らないように直後の改行を除去するようになってる。
逆に改行が入って欲しいなら、必要な分だけ改行を追加するしかないだろうね。
0748nobodyさん
2006/07/19(水) 14:25:36ID:???36進数への変換まではいいと思うけど、シャッフルはユニークさが失われるからダメじゃない?
シフトってのがA,B.C→4,5,6みたいな1対1変換を指してるならそれは問題ないと思う。
0749707
2006/07/19(水) 14:31:08ID:???シャッフルもパターンに則って行えば、シフトと同じようなもんです。
暗号化としてはゆるいですけど、外から推測困難な程度でいいので。
0751nobodyさん
2006/07/19(水) 14:34:42ID:/PVcx7MWわかった。サンクス!
0752nobodyさん
2006/07/19(水) 16:04:01ID:???0753707
2006/07/19(水) 16:30:05ID:???シャッフルしてから、進数変換すると、
いい感じにランダムっぽくできました。
0754nobodyさん
2006/07/19(水) 18:30:14ID:???list($a, $b) = explode("|", $str);
みたいに書いたときに、| が含まれていない $str が来た場合に
Undefined offset の NOTICE が出ます。これが出ないように
うまい具合に短く書く方法はないでしょうか。
セパレータが含まれているかどうかを事前に判定して処理を分けるのも
考えましたが、あまり賢い方法じゃないように思えて。
0755マリー・アントワネット
2006/07/19(水) 18:39:31ID:???0756nobodyさん
2006/07/19(水) 18:41:59ID:???区切り文字の数に規則性がないのなら、左辺を配列にしてしまえば良いのではないでしょうか?
$array = explode("|", $str);
foreach($array as $val){
処理
}
0758nobodyさん
2006/07/19(水) 18:43:43ID:???list($a, $b) = @explode("|", $str);
0759nobodyさん
2006/07/19(水) 18:45:45ID:???0761nobodyさん
2006/07/19(水) 19:08:31ID:ae0kzGe1先生助けて
foo::foget($this->hoge);
の::てどういう意味でしょう??
0763nobodyさん
2006/07/19(水) 19:48:11ID:???お前のかーちゃん お・ん・な!!
0764nobodyさん
2006/07/19(水) 20:14:14ID:???一般的な数値の表示形式に変換して表示することはできますか?
単純にint型にすると、オーバーフローしてしまうので・・。
0765764
2006/07/19(水) 20:48:57ID:???で、できたようです。
ところで、
echo $a = 1209314420881328;
と
echo $b = 1209314420881329;
は、違う値($a != $b)だけど、同じ表示(1.20931442088E+15)になるんですね・・。(いまいちよくわかってないです)
0767nobodyさん
2006/07/19(水) 21:54:47ID:R8UceB4D以下のようなソースですが、希望通りになりません。
$image="test.jpg";
if($image==".jpg"){
echo "これはJPEGファイルです";
}
0768nobodyさん
2006/07/19(水) 22:03:14ID:SHpEirXb正規表現でマニュアル嫁
0769nobodyさん
2006/07/19(水) 22:11:02ID:???> if($image==".jpg")
両辺が同一ではないのですから、当然、マッチしません。
正規表現を使ってください。
PHP: preg_match - Manual
ttp://jp.php.net/manual/ja/function.preg-match.php
0770nobodyさん
2006/07/19(水) 22:28:02ID:???以下のソースで出来ました。アドバイスありがとうございました。
if(preg_match("/.jpg/",$image)){
echo "これはJPEGファイルです";
}
0771nobodyさん
2006/07/19(水) 22:33:40ID:???$image = 'test.jpg.png';
でも通るから正しくない
0772nobodyさん
2006/07/19(水) 22:45:28ID:???771氏が指摘されたように、後方一致にしないと完全ではありませんね。
そのままでは部分一致です。
PHP: パターン構文 - Manual
ttp://php.liukang.com/manual/ja/reference.pcre.pattern.syntax.php
0773nobodyさん
2006/07/19(水) 22:47:54ID:???echo "これはJPEGファイルです";
}
拡張子が.jpegの時もたまにある
0775nobodyさん
2006/07/19(水) 23:00:07ID:???0776nobodyさん
2006/07/20(木) 00:05:34ID:???0777nobodyさん
2006/07/20(木) 00:32:58ID:???http://search.cpan.org/~stbey/Date-Calc-5.4/Calc.pod
0778nobodyさん
2006/07/20(木) 00:48:51ID:???まあ、関数じゃないけど、俺ならこうする。モジュール使うよりはマシ。
$a = '20060101';// 任意の日付
$weekname = array('日','月','火','水','木','金','土');
echo $weekname[date('w',strtotime($a))]; // '日'
0779nobodyさん
2006/07/20(木) 01:18:02ID:???0780nobodyさん
2006/07/20(木) 01:59:05ID:???0782754
2006/07/20(木) 02:05:26ID:???>>755
>未定義だと言われるのなら先に定義しておけばいいじゃない。
$bを先に定義してもこの NOTICE は出ますよね?そういう意味ではないかな
>>756-758
試して検討してみます。ありがとうございます。
>>759
確かに NOTICE は表示されなくなりますが…
根本的な解決にならないので…
0783nobodyさん
2006/07/20(木) 02:06:36ID:???> $bを先に定義してもこの NOTICE は出ますよね?そういう意味ではないかな
試してからやれ、このハゲ。
0786nobodyさん
2006/07/20(木) 02:14:53ID:???0787nobodyさん
2006/07/20(木) 02:16:54ID:???素直に
if(preg_match("/\.(jpg|jpeg|jpe|jeg)$/i",$image)){
echo "これはJPEGファイルです";
}
って書いた方がよさげ
でも俺、.jegって見たことないよ。どんなときに作られるんだそれ。
0788nobodyさん
2006/07/20(木) 02:23:44ID:???マジレスすると、拡張子なんて信用できない。
例えば、JPEG形式で保存された画像にファイル名を付けるとする。
そこで敢えて拡張子を「gif」にしたとする。
* * *
こんなことしてもJPEGがGIFになることはないよね。
誤解している人も多いが、HTML文書の拡張子は「html」か「htm」じゃないとダメだ ・・・なんて言う
香具師がいるけどそれは違う。
拡張子なんて関係無い。
0789nobodyさん
2006/07/20(木) 02:34:35ID:???>>759
>確かに NOTICE は表示されなくなりますが…
>根本的な解決にならないので…
といいつつ
>>758を検討している件について。
0790nobodyさん
2006/07/20(木) 02:37:27ID:???サーバーの設定とブラウザの挙動による。
0791nobodyさん
2006/07/20(木) 03:40:55ID:???論点がずれている気がする。
拡張子を変更してもフォーマットに変更はない。
が、「拡張子を変えることで画像を表示できない」ことは問題だ。
大抵のサーバは拡張子 html で "Content-Type: text/html" を送ってくるし、
「拡張子なんて関係ない」は言い過ぎではないかと。
自前のサーバで "Content-Type" を設定するというのなら、気持ちはわからないでもないが、
それを他の人に求めるかとなると話は別だろう。
0792nobodyさん
2006/07/20(木) 07:32:37ID:???おまけに、この場合のNoticeを消そうと思ったら
× list($a, $b) = @explode("|", $str);
○ @list($a, $b) = explode("|", $str);
だったりする罠。
0793nobodyさん
2006/07/20(木) 09:42:16ID:???必ず $a と $b の二つの要素だけが必要になるのなら、
list($a, $b, $dummy) = explode("|", $str."||");
こうすればよい。
0794nobodyさん
2006/07/20(木) 09:50:36ID:???list($a, $b) = explode("|", $str."|");
0795nobodyさん
2006/07/20(木) 10:34:16ID:???セパレータが存在するか事前にチェックして処理を分けるのが一番賢い方法だと思う。
見た目に囚われてて視認性や可読性を犠牲にしてないか?
三項演算子のダメな使い方と同じ道を辿ってるぞ。
0796754
2006/07/20(木) 12:01:05ID:???>>792
エラー制御演算子使うのも確かに本質的に同じですね…
で、配列のエラーなので>>792のいう通りでした。
>>795
$strの中を2度も見たくないと思って質問したのですが、
ごもっともな指摘です。
0797nobodyさん
2006/07/20(木) 12:06:05ID:???スクリプト途中で使用済みになった場合、
$html = "";
とかって初期化すると、スクリプトの効率がよくなったりしますか?
たとえば、
$arHtml = file('aa.html');
$html = implode($arHtml);
のように読み込んだファイルを $html の文字列一つにした後、その後の処理で使用しない $arHtmlを
$arHtml = array();
とするとか。
0798nobodyさん
2006/07/20(木) 12:43:44ID:???float の大きさはプラットフォーム依存です。
ただし、通常はおよそ 10 進数で 14 桁の精度があり、最大値は ~1.8e308 (これは 64ビット IEEE フォーマットです) となります。
1.2093144208813E+015
普通は14桁のはずだが
0799nobodyさん
2006/07/20(木) 12:47:16ID:???どうせ消すならちゃんとunset($arHtml)で;変数管理構造体ごと消すべきだと思うけど…。
食ってるメモリ量にもよるけど、それが巨大なら効率が上がる場合もあるんじゃないかな。
HTML丸ごとくらいは大したサイズじゃないと思ったりもするけど。
メモリスワップを引き起こすほどじゃなきゃ体感できるほど変わらんと思ったりもするけど。
0800nobodyさん
2006/07/20(木) 13:11:38ID:???ありがとうございます。
どのくらいが大きい量なのかわからなかったので。
レンタル鯖であれば、100バイトの1万行でも楽々動いていたのでさほど気にすることでもないのでしょうか。
0801nobodyさん
2006/07/20(木) 13:38:24ID:???単に他人への迷惑が多少減るだけ。
0802nobodyさん
2006/07/20(木) 13:45:15ID:???> $arHtml = file('aa.html');
> $html = implode($arHtml);
使ってしまったメモリを解放するより、2回もでかいメモリアロケーションを
発生させてるのを減らす努力をした方が効率は上がると思う。
0804nobodyさん
2006/07/20(木) 14:06:48ID:zh5fHket自分で定義したfunctionが沢山書かれたファイルを、別のサーバにあるphpファイルで呼び出そうとしたらうまくいきません。
別のサーバのphpファイルには
require_once("http://hogehoge.com/my_function.php");
としているのですが、実行すると、
Call to undefined functionといわれます。
ちなみhogehoge.comのサーバのルートからのパスをrequireで指定すると動きます。
くだらない質問ですみません、ヒントがありましたらお願いします。
0805nobodyさん
2006/07/20(木) 14:10:58ID:???そのスクリプトは、HTMLのテンプレートの中に置き換える予定の文字を書き込んでおき ( %name% ) 等
あとで、
foreach ($Ar as $key => $value) {
$html = str_replace("%".$key."%", $value, $html);
}
でワンクッションで置き換えようとおもうたからです。
0807nobodyさん
2006/07/20(木) 14:17:28ID:zh5fHketレスありがとうございます。
includeでも同じようです。
サーバの設定にもよるのでしょうか?
0808nobodyさん
2006/07/20(木) 14:40:37ID:???ブラウザでhttp://hogehoge.com/my_function.phpを表示させてみれ。
その表示内容がrequireで読み込まれてる内容だから。
その中に自分の欲しいPHPコードは入っているかい?
0809nobodyさん
2006/07/20(木) 14:44:51ID:zh5fHketレスどうもです!
なるほど!ちょっと盲点でした。
httpで読んでもダメという解釈でいいのでしょうか?
0810nobodyさん
2006/07/20(木) 14:44:57ID:???んー・・・・ だから?
それと無駄メモリ使いの手抜きコードと何の関連があるの?
いや別にHTMLファイル2個分くらい、たかが知れてるから
さほどこだわる必要も無いと思うけどな。
そのくせメモリ解放を気にするなんて小にこだわり大を失うって言うか。。
0811nobodyさん
2006/07/20(木) 14:48:58ID:???http以外で何でアクセスするんだ。
そうでなく、httpでアクセスしてもちゃんとPHPコードの形で出力されるようにすればいいだけ。
0813軟式PHP
2006/07/20(木) 14:53:14ID:???ちゃんとアクセス制限しないとな。
0814nobodyさん
2006/07/20(木) 15:09:44ID:???0815nobodyさん
2006/07/20(木) 15:14:57ID:???ありがとうございます。
わからないから聞いたわけで。
HTMLファイル2個分くらいはいちいちこだわらずにおいたほうがいいということですね。
ありがとうございました。
0819nobodyさん
2006/07/20(木) 15:33:23ID:???ホームページに、自作した柄のカウンターを置きたいのですが、そういったソフトはありますでしょうか?
なるだけ簡単に設置できるソフトがいいです。
出来れば、無料で。。。よろしくお願いいたしますm(_ _)m
0822819
2006/07/20(木) 16:16:00ID:???ありがとうございます。もっかい探してみます!ありがとうございました。
>>821
すれ違いスマソ。
それでは、失礼しますた。m(_ _)m
0823nobodyさん
2006/07/20(木) 16:50:05ID:???プログラムから読むのとhttpで読むのとは訳がちがう。
訳あってあいてのftpのパスワードを知る訳にいかない。
こっちのソースは相手にみえてもよい。
という場合に、手元で相手の鯖のプログラムをいじれるというメリットはある。
0824nobodyさん
2006/07/20(木) 17:03:43ID:???ページを更新するたびに、
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){
処理
}
この処理
どちらのほうがサーバーに負担をかけずに良さそうですか?
0825nobodyさん
2006/07/20(木) 17:06:55ID:???文字列から最初の2文字だけを取り除くにはどうしたらいいでしょうか?
0826819
2006/07/20(木) 17:10:45ID:???本当にありがとうございました。m(_ _)m
0827825
2006/07/20(木) 17:12:36ID:???本当にありがとうございました。m(_ _)m
0829nobodyさん
2006/07/20(木) 17:24:19ID:???簡単な方法はないでしょうか?
0831nobodyさん
2006/07/20(木) 17:40:18ID:???どうしたらいいでしょうか?
半角といえど色々あるので正規表現でもどう書いていいかわかりません
0833nobodyさん
2006/07/20(木) 17:47:15ID:???送信内容を
$txt
に格納したとして
strlen($txt) == mb_strlen($txt)
なら
キック
0835nobodyさん
2006/07/20(木) 18:02:55ID:a8uvmb5cしてきた人を全て、「https://www〜/index.php」に転送させてSSLで
通信させたいのですが、どうやれば良いのでしょうか?
PHPで$_SERVER['DOCUMENT_ROOT']; や $_SERVER['SCRIPT_FILENAME'];
で調べて、「https://www〜/index.php」に転送させようとしたのです
が、「http」でリクエストしてきたのか「https」でリクエストしてきた
のかまでは表示されませんでした。Apacheのバーチャルホストの設定
でも良いので、どなたか「http」でアクセスしてきた人を「https」の
同じページに転送させる方法をご存知でしょうか?宜しくお願い致しま
す。
0837nobodyさん
2006/07/20(木) 18:12:08ID:???0839nobodyさん
2006/07/20(木) 18:21:14ID:a8uvmb5c>>835です。ありがとうございます!!
$_SERVER["HTTPS"] で調べたら、httpsの時は「on」になり、
httpの時は何も表示されませんでした。この$_SERVER["HTTPS"] が
onかどうかで、条件分岐させれば良いのですね。
どうも、ありがとうございました!!
0840nobodyさん
2006/07/20(木) 18:26:40ID:???こういう時は phpinfo を https でアクセスして表示させてみると良いよ。
定義される $_SERVER 変数一覧が見れるから。
0842nobodyさん
2006/07/20(木) 18:37:11ID:???0843nobodyさん
2006/07/20(木) 18:37:59ID:???0844nobodyさん
2006/07/20(木) 18:43:17ID:???0845nobodyさん
2006/07/20(木) 18:45:17ID:???0846nobodyさん
2006/07/20(木) 18:47:32ID:a8uvmb5c>>839です。ありがとうございます。phpinfoをhttpsでアクセスして
みたら、_SERVER["SCRIPT_URI"] 等の$_SERVER 変数一覧が出てき
ました。こういう時は、phpinfoで定義済み変数を調べれば良いので
すね。ありがとうございました!!
0847nobodyさん
2006/07/20(木) 18:47:56ID:???0848nobodyさん
2006/07/20(木) 18:48:20ID:???0849nobodyさん
2006/07/20(木) 18:51:02ID:???0850nobodyさん
2006/07/20(木) 18:51:49ID:???0851nobodyさん
2006/07/20(木) 19:08:29ID:???けど、そんなのはマ板でやれ
0852nobodyさん
2006/07/20(木) 19:09:33ID:???0853nobodyさん
2006/07/20(木) 19:59:45ID:zh5fHketレスどうもです。遅くなってすみません。
なんとなく解決した気になっていたのですが、いままた別のパターンで同じような罠にはまりました。
A include(http://hogehoge.com/my_function.php);
B include(/home/htdocs/my_function.php);←サーバのパス
AがダメでBが大丈夫な仕組みというか理由が知りたいです。
僕はいまローカル環境で作っていますが、AのパスもBのURLもブラウザに直接入力すると、どちらも何も表示されません。
0854nobodyさん
2006/07/20(木) 21:45:25ID:x+eRwqU4という文字列を与えたら
Array
(
[a] => 1
[b] => 2
[c] => 3
)
という配列を返してくれる関数はありますか?
また、その逆をしてくれる関数はありますか?
0855nobodyさん
2006/07/20(木) 21:47:44ID:???$str=join('&', $ar) ;
0859nobodyさん
2006/07/20(木) 23:05:47ID:???> という配列を返してくれる関数はありますか?
ある。
> また、その逆をしてくれる関数はありますか?
PHP5以降でならある。
0860nobodyさん
2006/07/20(木) 23:06:09ID:eXAIKTBkどちらか一方の文字列をマッチさせるときはどのようにしますか?
単にマッチさせるだけなので、正規表現関数ではなくて
文字列関数でループ処理した方がいいですかね?
(マルチバイトのmb_eregとか試してみたけどうまくいかなかった)
0861nobodyさん
2006/07/20(木) 23:12:56ID:???> 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みたいに「ネット越し」でファイルを得ようとすると、
何を経由してるかによって結果が変化してしまう場合があるというわけ。
0863nobodyさん
2006/07/20(木) 23:14:36ID:???mb_eregでもmb_strposでもどっちでもできると思うんだが。
mb_eregで一体どういう書き方をしたんだ。
0868nobodyさん
2006/07/21(金) 07:31:02ID:???ローカルで表示させるなら
http://localhost/my_function.php
0870nobodyさん
2006/07/21(金) 08:29:07ID:iPhYBOeTする時に、libexpatというライブラリが必要と本に書いてあったのですが、そのrpmパッケージが
どこで入手できるのかわかりません。
大変申し訳ありませんが、ご存知の方がいらっしゃいましたら教えていただけないしょうか?
開発環境はwindowsではなく、RedHatLinux9です。
aptコマンドを使えるようにして、検索をかけてみたのですが全くヒットしません orz
0871nobodyさん
2006/07/21(金) 08:36:14ID:???ここで探してみれば?
0873nobodyさん
2006/07/21(金) 08:52:48ID:iPhYBOeTPHP×PostgreSQLでつくる最強webシステムという本で、その本の340ページに書いてあります
0875nobodyさん
2006/07/21(金) 09:05:58ID:iPhYBOeTたしかに。。。phpのバージョンが4の時の話なので。。。。
パッケージ自体がもうリリースされていないんでしょうか
0876nobodyさん
2006/07/21(金) 09:10:02ID:???0877nobodyさん
2006/07/21(金) 09:18:41ID:iPhYBOeTなんだか、Authクラスを使うには必要っぽいような書き方されてるんですよねぇ
0878nobodyさん
2006/07/21(金) 09:30:43ID:???0880nobodyさん
2006/07/21(金) 10:06:48ID:5NMNDw00ありがとうございます。凄くわかりやすいです。助かりました。
質問ばかりで申し訳ないのですが、
インクルードしたいファイルが同一サーバではない場合(サーバのパスを指定できない場合)はどのようにしたらいいでしょうか?
前述のように拡張子をphp以外のもの(webサーバを経由しても内容が変化しないもの)にするのが一般的でしょうか?
0881860
2006/07/21(金) 11:30:17ID:???で、やっぱりマッチしない
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";
0882860
2006/07/21(金) 11:32:37ID:???すいません
テストコード整形したので分岐がおかしい
両方チェックするようにしてもmb_ereg_matchはマッチしない
PHP4.3系
0883nobodyさん
2006/07/21(金) 11:39:59ID:???allow_url_fopenが有効ってことか、
他サーバのソースをそのまま実行するってのは、
きもちわるく思ってしまう
最も、他サーバが信頼できるサーバであるなら
そういう機能は積極的に使うのが賢いのだと思いつつ
ここぞという使いどころにめぐり合っていない
allow_url_fopen のステキな使い方ないかな?
0884nobodyさん
2006/07/21(金) 11:44:06ID:???まー、拡張子を変えちゃうか、あるいは.htaccessで拡張子に対するApacheの扱いを変えちゃうか、
あるいはラッパーのプログラムを経由してファイル内容をreadfile()とかで垂れ流させるか、ってとこじゃない?
0885nobodyさん
2006/07/21(金) 14:41:49ID:???全角の¥に変換したいのですがうまくできません。
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); // ワーニング変換できず
こんな感じです…。何かうまいやり方がないでしょうか?
0886nobodyさん
2006/07/21(金) 14:45:03ID:???0887nobodyさん
2006/07/21(金) 15:14:02ID:???おおおおお・・・・・・・・
すんなりできました。この辺の似た機能だけど違う関数を
勉強しないとダメですね。886さんありがとうございました。助かりました。
0888nobodyさん
2006/07/21(金) 15:15:36ID:???str_replace は天才
0890nobodyさん
2006/07/21(金) 16:51:58ID:???おとなしくUTF-8でも使ってろってもんだ。
0891nobodyさん
2006/07/21(金) 17:43:50ID:5NMNDw00config.phpというファイルに書いて、必要なときにincludeしているのですが、
スクリプト中にパスワードとかを直接記述しているのは、やっぱりセキュリティー的に危険なのでしょうか?
また、こういう場合は一般的にどうやって対処しているのでしょうか?
0894nobodyさん
2006/07/21(金) 17:48:14ID:???0895nobodyさん
2006/07/21(金) 18:00:02ID:???http://hogehoge.com/へのリンクが貼られているかどうか
調べたいのですが、どうすれば良いのでしょうか?
ちなみに、http://www.example.com/は自分のサイトではないこと前提とします。
0896nobodyさん
2006/07/21(金) 18:11:32ID:???0897nobodyさん
2006/07/21(金) 18:12:48ID:???能動的にはwww.example.comを走査してリンクを探す。
受動的にはhogehoge.comにアクセス解析を設置してリファラを見る。
0898nobodyさん
2006/07/21(金) 18:14:46ID:b+2L373xカタカナに変換するにはどうしたら良いでしょうか?ご教授お願いします
0900nobodyさん
2006/07/21(金) 18:36:31ID:???ttp://www.mukom.netfirms.com/scripts/linkman.php
参考になるかもね
0901nobodyさん
2006/07/21(金) 18:38:32ID:???From:test@example.comで
From 【test@example.com (test@example.com)】
となるのですが、このFromに名前をつけれないのでしょうか?
たとえば
From 【EXAMPLEからメールです。 (test@example.com)】
このような感じでしたいのですが、どうすれば良いのでしょう。
どなたか教えていただけませんか?
0902nobodyさん
2006/07/21(金) 18:42:33ID:???additional_headers に所望の From ヘッダを挿入
http://jp.php.net/manual/ja/function.mb-send-mail.php
mime_encode とか忘れずに。アドレスを囲むのは <> で。
0903nobodyさん
2006/07/21(金) 18:46:14ID:???有難う御座います。
タイトル(?)の部分が文字化けしてしまったのですが、
mime_encodeというのは何でしょうか?
ググってみたのですが、それらしいサイトが見当たらなくて
0905nobodyさん
2006/07/21(金) 18:49:09ID:???http://www.google.com/search?hl=ja&q=mime_encode&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=
それらしいサイトだらけに見えるんだけどー
0907nobodyさん
2006/07/21(金) 18:50:01ID:???今見つけました。
0908nobodyさん
2006/07/21(金) 19:01:03ID:???何か参考になるサイトがあれば教えてください。
0909nobodyさん
2006/07/21(金) 19:15:24ID:???0911nobodyさん
2006/07/21(金) 19:18:24ID:???0917nobodyさん
2006/07/21(金) 20:11:14ID:???0918nobodyさん
2006/07/21(金) 20:19:23ID:???0920nobodyさん
2006/07/21(金) 20:40:06ID:???ロジックを記述した部分をドキュメントルートの下に置かなければ
よほどのことがない限り、ソースは流出しないよ
0922nobodyさん
2006/07/21(金) 21:22:58ID:5NMNDw00>みなさん
パスワードなどが書かれたファイルを、ドキュメントルートより下にしか置けない場合、対処法はありますか?
そもそも、ドキュメントルート以下に置いたPHPファイルの中身を見るのは、結構簡単なのでしょうか?
0923nobodyさん
2006/07/21(金) 21:23:48ID:???参考になるコードなら、山ほど公開されてるしな
0924nobodyさん
2006/07/21(金) 22:01:11ID:???0925924
2006/07/21(金) 22:02:12ID:???http://www.nextapp.com/platform/echo2/echo/demo/
0926nobodyさん
2006/07/21(金) 22:34:26ID:???ブラウザを閉じたり、セッションが終了すると
勝手に送ったジョブが終了してしまいます。
ブラウザを閉じたりしても、
ジョブが残るにはどうすればいいんでしょ??
環境は
FedoraCore 5
PHP 5
Apache 2
です。
0929nobodyさん
2006/07/21(金) 22:49:37ID:???拡張子またはパーミッションの変更、あるいは特定のディレクトリに入れた上で
そのディレクトリに対して全IP制限やBASIC認証を施すなど。
0930nobodyさん
2006/07/21(金) 23:40:53ID:???$rdfData = simplexml_load_file('new.rdf');
$rdfData->channel->items->Seq->addChild('li', 'testurl', 'rdf');
echo $rdfData->asXML();
このコード実行するとApacheが死ぬんだが・・・・・
0931nobodyさん
2006/07/22(土) 00:02:32ID:???サーバモジュールとしてPHPを入れてるなら、
PHPとサーバ(Apache)は一連托生。
PHPが落ちるような時にはApacheも引きずられる。
0932nobodyさん
2006/07/22(土) 11:39:11ID: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でファイル内容をクリアしても他から妨害されないと思ってるのですが…
お知恵をいただきたく。
0933nobodyさん
2006/07/22(土) 12:30:20ID:???俺は書き込んでから丸める主義
fputs($fp, $count);
ftruncate($fp, ftell($fp));
ファイルが空になる瞬間がないと思ってるんだけど
0934nobodyさん
2006/07/22(土) 12:42:04ID:QMrS4QvA良い方法ありませんか?
XMLパーサーでなんとか、文字列にして無理やり、正規表現でなんとか、
頭の悪い私にはどれも難しくて、スマートな方法はありませんか?
お願いします。
0937934
2006/07/22(土) 13:05:30ID:QMrS4QvAたぶん正規表現の書き方がおかしくて、出来ませんでした。
正規表現、勉強してきます。
0938nobodyさん
2006/07/22(土) 13:08:47ID:???指定ディレクトリ以下のファイル全てのパーミッションを変更、
またはワイルドカードでの指定を可能にすることはできないでしょうか?
あるディレクトリ内のファイルのパーミッションを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));
}
}
?>
0939nobodyさん
2006/07/22(土) 13:09:04ID:???0940nobodyさん
2006/07/22(土) 13:10:43ID:6iz1vYAqおお、なるほど!
参考にさせていただきます。
0941934
2006/07/22(土) 13:15:54ID:QMrS4QvAsplitでやってました。
それにしても正規表現、苦手ッス
0943nobodyさん
2006/07/22(土) 13:36:41ID:???$i = 0;
while($i < count($array)){
$i = $i + 1;
}
としてますがもっと簡単なコーディング教えてくださいませ
0944nobodyさん
2006/07/22(土) 13:44:06ID:???foreach($array as $value)
foreach($array as $key => $value)
0945nobodyさん
2006/07/22(土) 14:16:42ID:wSNHExxb0946nobodyさん
2006/07/22(土) 14:45:14ID:???0947nobodyさん
2006/07/22(土) 14:55:26ID:???$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;
ケースバイケースで好きなのを選べ
0949nobodyさん
2006/07/22(土) 15:33:52ID:???「デフォルトで、PCREは検索対象文字列を(実際には複数行からなる 場合でも)単一の行からなるとして処理します。 」
の'm (PCRE_MULTILINE)'の意味が分かりません。
0950nobodyさん
2006/07/22(土) 15:40:13ID:kdb16aHf0951nobodyさん
2006/07/22(土) 15:46:36ID:LAiwhQ0T文字列の途中に改行コードがあっても、複数行とは認識しないってこと
"bar\nfoo\n"
こんな場合の文字列のこと
0954nobodyさん
2006/07/22(土) 16:52:44ID:???こんな感じでページ送りしたいのですが、参考になるソースをおいてる
サイトありますか?
0957nobodyさん
2006/07/22(土) 17:05:03ID:???0959nobodyさん
2006/07/22(土) 17:25:32ID:???ttp://elf.no-ip.org/~elf/php/peardoc/ja/package.html.pager.html
ここを参考にして勉強してみます。 今はチンチンカンプンプンです Qrz
もう一回しんできます。 生き返ったらもう一回質問させてください。・
0960nobodyさん
2006/07/22(土) 17:53:18ID:???パラメータでページ番号を渡す
→ページ番号から表示範囲を計算する
→表示範囲の分だけHTMLを表示する
終わり
0961nobodyさん
2006/07/22(土) 18:07:19ID:???本来の php.ini の設定は mbstring.script_encoding = EUC-JP なのですが
cron で動かしたいプログラムが置かれているディレクトリに
.htaccess を置いて、UTF-8 で書いています。
コマンドラインから、この PHP を動かそうとすると、
どうやら文字コードが違うのでエラーが表示されます。
コマンドラインに文字コードを指定する、なんてのはできないでしょうか?
0962nobodyさん
2006/07/22(土) 18:15:38ID:???utf-8な設定のphp.iniを書いて、実行時に読み込ませる。
$ php -h
-c <path>|<file> Look for php.ini file in this directory
0963nobodyさん
2006/07/22(土) 19:21:36ID:???$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";
0964nobodyさん
2006/07/22(土) 20:40:44ID:???WebサーバにIEで接続して下記のPHPファイルを見たら
「HTTP400 正しくない要求」と怒られました
<? phpinfo(); ?>
phpがうまく動いてないんだけど、httpd.confが悪いんかな?
0965nobodyさん
2006/07/22(土) 20:55:49ID:???.htaccessってのはApacheの設定。PHPもApacheモジュール版は
Apacheの一部分という形なので、それで設定が出来る。
PHPの設定は、基本はphp.iniの方でやるんだよ。
0967nobodyさん
2006/07/22(土) 23:52:08ID:???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が設定できてないのかな?
0968nobodyさん
2006/07/23(日) 00:02:14ID:???検索時にはクエリーに日本語を含めることもあるのですが、
そのときに「ー」が入るとREG_EBRACKというエラーが返ってきます。
調べてみたところJIS特有?のエラーで別の文字コードで回避出来るらしいのですが、
システムの都合上JISで構築する必要があります。
この場合「ー」を含んだ文字のエラーを回避する方法はありますでしょうか。
よろしくお願いします。
0969968
2006/07/23(日) 00:04:05ID:???具体的には、
if( ereg($target, "探してるものー") ){ echo "HIT"; }
のようにereg系統の関数で上記のエラーが発生しました。
試しにmb_eregを用いてみましたが同様にエラーが発生しました。
0970nobodyさん
2006/07/23(日) 00:16:40ID:TM25KdOCこれを利用して仲間内で必要な情報をまとめたサイトを作ろうと考えました。
それで、実際にこれを導入してみたところ
2バイト文字が ? で表示されてしまいます。
そのため、このページの下にある 「Jcode.phpを使う方法」を試してみましたが
やはり、2バイト文字が ? で表示されてしまいます。
Windows上で下記のような条件で動かしています。
PHP Version 4.4.2-pl1
Apache 2.0 Handler
最初は、マルチバイト系の問題だと思ったのですがJcode.phpを使っても
解決しないため、原因がわからなくなってしまいました。
どなたか、経験のある方がいらっしゃったらご教授願いたいです。
宜しくお願い致します。
0971968
2006/07/23(日) 00:29:17ID:???0973nobodyさん
2006/07/23(日) 01:59:11ID:V6UlX/FtNo 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 の使い方間違ってるかな?
0974まさお
2006/07/23(日) 02:12:02ID:PeJIVLLOhttp://www.geocities.jp/kimu19780809/
0975nobodyさん
2006/07/23(日) 02:32:16ID:???JISでなくSJISだろ、それ…最低限の文字コードの知識も持ち合わせてないで
日本語対応データベースを構築しようとはシステム屋をなめてるな。
素直に金出して外注で作ってもらえば?
つか、それ正規表現なんて使う必要あんの?
0976nobodyさん
2006/07/23(日) 02:44:05ID:???いちいち細かい誤字をそこまで叩いて何か楽しい?
システム屋を語る前に精神を浄化した方がいいよ、どの程度のシステム屋かしらんけどw
0977nobodyさん
2006/07/23(日) 03:09:02ID:???0979nobodyさん
2006/07/23(日) 03:48:54ID:???どんな精神の持ち主だよww
0980nobodyさん
2006/07/23(日) 09:13:30ID:???0981nobodyさん
2006/07/23(日) 09:16:56ID:???0982nobodyさん
2006/07/23(日) 10:00:00ID:???PHPで2MB以上のファイルをアップロードする場合、php.iniを編集しなければならないようですが、
当方レンタルサーバーを使っておりまして、php.iniの編集ができません。
スクリプト中に「ini_set('upload_max_filesize', '5M');」と記述しても2MB以上アップロードできません。
.htaccessでも設定できるようなのですが、具体的な記述方法を教えてください。
0983nobodyさん
2006/07/23(日) 12:31:43ID:???ttp://www.php.net/manual/ja/configuration.changes.php
php_value 設定名 値
ただし、.htaccessで設定できるかどうかはサーバーの設定による。
0984nobodyさん
2006/07/23(日) 12:38:17ID:???共有鯖で2MB以上のファイルをアップロードなんてはた迷惑だと思うがね
0985nobodyさん
2006/07/23(日) 13:26:24ID:???単純な検索ならmb_strpos使っとけば
とりあえずこけることは無くなると思う。
正規表現をどうしても使いたいなら工夫が必要。
0986nobodyさん
2006/07/23(日) 15:33:51ID:???0987nobodyさん
2006/07/23(日) 16:41:08ID:wyHjEd650723,fuga
0722,moge
0721,sage
0719,age
ってな具合で、日付,文字列って言う順序に並んでるファイルの中のデータを
21日から23日までの分だけ取得してprintするにはどうすれば良い??
21..23とかいう書き方ってあるんだっけ?
0989nobodyさん
2006/07/23(日) 17:34:32ID:???0990nobodyさん
2006/07/23(日) 17:34:54ID:wyHjEd65レスthx
if($file[0] == "21..23"){
$line = $file[1];
}
print $line;
こんなんじゃだめっすか?
0991nobodyさん
2006/07/23(日) 17:36:08ID:wyHjEd6521..23って書いたら、21のときしかtrueにならない(T_T)
0995nobodyさん
2006/07/23(日) 18:41:14ID:???addChildメソッドでは末尾に追加されてしまいます。
0996nobodyさん
2006/07/23(日) 18:52:48ID:???0998nobodyさん
2006/07/23(日) 19:41:06ID:wyHjEd65りょ、了解;
0999nobodyさん
2006/07/23(日) 19:44:10ID:wyHjEd65ゴメソ。。
ホストではじかれてる。。 ナゼT_T
1000nobodyさん
2006/07/23(日) 19:54:46ID:???10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。