【PHP】下らねぇ質問はここに書き込みやがれ 24

このエントリーをはてなブックマークに追加
1nobodyさん
PHPに関するくだらねぇ質問用スレです。
ここならお前の下らない質問に回答があるかも知れません。

まず読め【PHP マニュアル】
http://www.php.net/manual/ja/

過去スレは>>2
2nobodyさん:2006/07/07(金) 14:55:46 ID:???
【PHP】くだらねぇ質問はここに書き込みやがれ
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/
3nobodyさん:2006/07/07(金) 14:56:17 ID:???
【PHP】下らねぇ質問はここに書き込みやがれpart16
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/
4nobodyさん:2006/07/07(金) 15:30:20 ID:???
・part17よりテンプレ化

extractは極力使わないほうがいいと思います。
例えば、

hoge.php?_SESSION[user_pw]=hogehoge

って形で送られてきたとします。これを

extract($_GET)

しちゃうと、$_SESSION['user_pw']の値が、
"hogehoge"に変更されてしまいます。

もし事前にユーザのパスワードを、$_SESSION['user_pw']に
保持してたとしたら、勝手に書き換えられてしまうことになります。

それを避けるために

extract($_GET, EXTR_SKIP)

ってやって上書きを避けたとしても、
このままでは変数の初期化を忘れる危険性があります。

extract($_GET, EXTR_PREFIX_ALL, "get")

と、接頭辞をつけるのが一番安全な気はしますが、
それなら最初から
$hoge = $_GET['hoge'];
ってやるのと手間が変わらないと思いますし、可読性も増します。
確かにextractするのは楽だと思いますけど。
5nobodyさん:2006/07/07(金) 15:31:11 ID:???
◆質問する場合の注意
1. 自分のIDを表示させること。(メール欄には何も記述しないでください)
2. ハードウェア、OSのバージョン等を明記すること。
3. 己の行った操作、変更などを詳しく明記すること。
4. エラーメッセージはそのまま表記すること。
5. 質問者としても態度をわきまえること。


◆質問後の注意
・質問者は必ずIDを表示させてください。
  書き込む場合はメール欄に何も記述しないでください。
・2回目以降は最初に質問した際のレス番号を名前欄に入れてください。
  (逆に回答者は質問者に対して>>(アンカー)をつけて答えてください。)
・解決しなくても回答をもらった場合はお礼を言う。
  (荒らし、煽りは除く)

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・オブジェクト指向については良スレがないから本を買え
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
6nobodyさん:2006/07/07(金) 15:32:32 ID:???
関連リンク
■本家マニュアル   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/に変えてみたら日本語があるかもしれません。
7nobodyさん:2006/07/07(金) 15:33:49 ID:???
関連スレ
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/
8nobodyさん:2006/07/07(金) 19:52:41 ID:IzLRE9l5
いまapache2.2を使うのは危険ですか?
9nobodyさん:2006/07/07(金) 21:01:38 ID:???
早速ですが、お願いします。

<?
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
といエラーが返されます。

どうすれば、変数を格納できるのでしょうか?
10nobodyさん:2006/07/07(金) 21:04:19 ID:???
ユーザ定義関数について勉強し直すのが一番良いと思うよ
11nobodyさん:2006/07/07(金) 21:07:52 ID:???
それ以前にスクリプトについて勉強し直すのが一番良いと思うよ
129:2006/07/07(金) 21:16:54 ID:???
>>10-11
すみません、良かったら教えてください。
function関数使うの初めてなので
13nobodyさん:2006/07/07(金) 21:26:07 ID:???
149:2006/07/07(金) 21:29:53 ID:???
なるほど
最初にglobalで、使う変数を宣言しておかないといけないのですね
159:2006/07/07(金) 21:33:20 ID:???
<?
define('LOG_DATA',"./data/log".$_GET['id'].".cgi");
define('MEMBER_DATA',"./data/member".$_GET['id'].".cgi");

//データfileで開く
function open(){
global $log_file,$member_file;
$log_data= file(LOG_DATA);
$member_data= file(MEMBER_DATA);
return array($log_data,$member_data);
}

//fileで開いたデータをリバース
function reverse(){
global $log_data,$member_data;
$log_data= array_reverse($log_data);
$member_data= array_reverse($member_data);
return array($log_data,$member_data);
}
?>

としたら解決しました。ありがとうございました。
16nobodyさん:2006/07/07(金) 21:53:35 ID:d9ruQecq
<?php
$str = 'This is an 自民';
$enc = urlencode( $str );
$dec = urldecode( $enc );
print("str = $str<br>");
print("enc = $enc<br>");
print("dec = $dec");
?>

この実行結果は
str = This is an 自民
enc = This+is+an+%E8%87%AA%E6%B0%91
dec = This is an 自民  
17nobodyさん:2006/07/07(金) 21:54:29 ID:d9ruQecq
>>16の続きです


でも「自民」っていう文字列をFORMで受けて表示すると

<?php

$str = "This is an ".$_POST['tag'];
$enc = urlencode( $str );
$dec = urldecode( $enc );
print("str = $str<br>");
print("enc = $enc<br>");
print("dec = $dec");
?>

str = This is an 自民
enc = This+is+an+%8E%A9%96%AF
dec = This is an 自民

こんな風に同じデコードでも違って表示されるみたい
これを同じにするにはどうすればいいですか?
18nobodyさん:2006/07/07(金) 21:56:24 ID:???
文字コード
19nobodyさん:2006/07/07(金) 22:14:55 ID:d9ruQecq
>>18
すみません、良かったら教えてください。
当方初心者なもので
20nobodyさん:2006/07/07(金) 22:25:47 ID:???
219:2006/07/07(金) 22:28:06 ID:DAs/sE57
>>20
違います。
22nobodyさん:2006/07/07(金) 22:36:42 ID:d9ruQecq
すみません 20です
9の方とは違います

今年女子大を卒業してプログラマーになった者です
明日までにできないと上司に怒られます
教えてください
お願いします
23nobodyさん:2006/07/07(金) 22:44:13 ID:???
>>22
向いてないから止めるべき
24nobodyさん:2006/07/07(金) 22:46:33 ID:d9ruQecq
そんなこといわないで〜

25nobodyさん:2006/07/07(金) 22:50:28 ID:???
>>ID:d9ruQecq
初心者なのかプロなのかどっちなんだよ
嘘つくぐらいなら自分で調べろハゲ
26nobodyさん:2006/07/07(金) 22:51:40 ID:d9ruQecq
ひどい・・・
27nobodyさん:2006/07/07(金) 23:03:38 ID:???
ほんとくだ質で申し訳ないんですがお願いします
やりたい事はテキストを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);

なんか勘違いしてますでしょうか?
289:2006/07/07(金) 23:07:10 ID:DAs/sE57
>>20
自分も20ですよ。
今は専門学生で、来年卒業です。
29nobodyさん:2006/07/07(金) 23:08:25 ID:???
また変なのがきた
コンビネーション荒らし?
30nobodyさん:2006/07/07(金) 23:08:30 ID:???
>>27
readfile関数はファイルから読み込んで標準出力に吐き出す。
ファイルの内容は返されない。

fopenしてから1行づつfgetsで読み込むのが正解。
31nobodyさん:2006/07/07(金) 23:10:06 ID:???
若しくはfileで配列に入れてから改行文字でimplodeもありだな。
32nobodyさん:2006/07/07(金) 23:55:02 ID:???
\nでimplodeしたら改行が一個余分に付きました。
33nobodyさん:2006/07/07(金) 23:55:22 ID:???
>>28
そんなあなたにお奨め
つ【辞表】
34nobodyさん:2006/07/08(土) 00:02:57 ID:???
>>30-31
有り難うございます。↓はちゃんとコピーされるんですが
touch("./dat/utf.txt");
$handle = fopen ("jis.txt", "r");
$fp = fopen("./dat/utf.txt", 'w');
while (!feof ($handle)) {
$buffer = fgets($handle, 4096);
fputs($fp, $buffer);
}
↓にすると空のテキストが出来て止まっちゃうみたいです
$handle = fopen ("jis.txt", "r");
$str = mb_convert_encoding($handle, "UTF-8", "auto");
$fp = fopen("./dat/utf.txt", 'w');
while (!feof ($str)) {
$buffer = fgets($str, 4096);
fputs($fp, $buffer);
}
↓みたくmb_convert_encodingの位置を変えても同じでした
while (!feof ($handle)) {
$buffer = fgets($handle, 4096);
$str = mb_convert_encoding($buffer, "UTF-8", "auto");
fputs($fp, $str);

今度はfile使ってみます
35nobodyさん:2006/07/08(土) 00:09:28 ID:???
>>34
ファイル操作関数を学びなおせ
36nobodyさん:2006/07/08(土) 00:10:56 ID:???
>>34
真ん中は$handleの扱いが変(コピーできている上のと比較してみよう)
下は動きそうなもんだけどな・・・前後が分からんので分からんが

>>27のreadfileをfile_get_contentsに変えるのが簡単だと思うけどな
つかreadfileや他の関数の動作を理解していない点からしてもマニュアル読め
37nobodyさん:2006/07/08(土) 00:16:49 ID:???
setcookie("test","abc",time()+600);

セットしたクッキーはどこに保存されるのでしょうか?
timeを設定していなかったらずっと残るわけですよね?
38nobodyさん:2006/07/08(土) 00:34:48 ID:???
>>37
保存してるのはクライアント。
クッキーの仕組みを学びなおせ

39nobodyさん:2006/07/08(土) 00:36:16 ID:???
>>37
保存してるのは工場。
クッキーの原材料から学びなおせ
40nobodyさん:2006/07/08(土) 00:39:22 ID:???
スレ違いかもしれんが
http://www.makers.ne.jp/
のECサイト、どうせどこかのASPパッケージを弄ったものだと
おもうんだけど、誰か心あたりある香具師いますか?
41nobodyさん:2006/07/08(土) 00:50:56 ID:???
>>36
書いてるのはこれだけです。これでmb_convert_encodingの行抜くと
普通にコピー出来るんですが
<?php
touch("./dat/utf.txt");
$fp = fopen("./dat/utf.txt", 'w');
$handle = fopen ("jis.txt", "r");
while (!feof ($handle)) {
$buffer = fgets($handle, 4096);
$str = mb_convert_encoding($buffer, "UTF-8", "auto");
fputs($fp, $str);
}
fclose($fp);
fclose($handle);
?>

これでもブラウザに何も表示されないです
$jis = file_get_contents('jis.txt');
$jis = mb_convert_encoding($jis, "UTF-8", "auto");
echo $jis;
42nobodyさん:2006/07/08(土) 00:51:54 ID:???
フレームを使って作っています。

index.phpにunset($str);
frame1.phpに$str="テスト";
これをフォームでframe2.phpに送っています。
frame2でecho $str;

これをリロードさせても、index.phpのunset($str);で変数が消されず、
frame2で$strがそのまま表示されます。

更新すると、index.phpが読み込まれるのではなく、frame1と2が読み込まれるだけなのでしょうか?
43nobodyさん:2006/07/08(土) 00:52:33 ID:fMTjXb+R
php.iniに問題があるような気ガス
4442:2006/07/08(土) 00:54:01 ID:???
>>43
すみません、何方に対しての発言でしょうか。
私でしたら嬉しいのですが。
45nobodyさん:2006/07/08(土) 01:09:22 ID:???
>>41
それは明らかにおかしい
 $buffer = fgets($handle, 4096); // ←$bufferに読み込んでいる
 $str = mb_convert_encoding($buffer, "UTF-8", "auto");
 fputs($fp, $str); // ←$strを書き込んでいる
mb_convert_encodingの「行を抜いたら」、$strはundefinedになるはず

質問の仕方が悪すぎ。とりあえず>>5
釣りならよそでやってくれ
4643:2006/07/08(土) 01:13:19 ID:???
>>42
貴殿へのレスですよ。
47nobodyさん:2006/07/08(土) 01:41:22 ID:???
幾らくだしつでもマニュアルぐらい最低限読めよな。
48nobodyさん:2006/07/08(土) 02:24:24 ID:???
50行ぐらいあるfunction関数の、上の数行を使うために
わざわざrequireで呼び出すとやっぱり重たくなりますか?
4927:2006/07/08(土) 03:10:14 ID:???
いくらやってもおかしいのでphp.iniから見直していったら
結局mbstring自体が入って無い事がわかりました
んでphp_mbstring入れたらあっさり解決しました

いやほんと申し訳なかったです
レスくれた方有り難うございましたm(_ _)m
5043:2006/07/08(土) 03:19:09 ID:???
んなことだろーと思ったよ。
51nobodyさん:2006/07/08(土) 04:20:16 ID:???
>>48
5000行とかいうならともかく50行くらいでは普通気にしない。
500行でもほとんどの場合は気にするほどじゃない。
52nobodyさん:2006/07/08(土) 07:33:21 ID:???
>>41
1行目に
mb_language( 'Japanese' );
入れるとか?
53nobodyさん:2006/07/08(土) 07:34:42 ID:???
あ、解決済みだった…。orz
54nobodyさん:2006/07/08(土) 09:20:11 ID:???
$a['a']['b']['c']という変数から変数を構成しているキーを抜き出す事は出来ますでしょうか?
55nobodyさん:2006/07/08(土) 09:34:09 ID:???
変数を構成しているキーってなんだ?
array_keys で違うんなら具体的に例をあげてくんろ
5654:2006/07/08(土) 09:45:50 ID:???
$a['a']['b']['c']から例えばarray('a','b','c')という結果を得たいのです。
$a['a']['b']['c']の1つ上の$a['a']['b']にどうにかしてアクセスしたいと考えております。
57nobodyさん:2006/07/08(土) 11:20:23 ID:???
>>56
>$a['a']['b']['c']から例えばarray('a','b','c')という結果を得たいのです。

$a['a']['a']['a']
$a['a']['a']['b']
$a['a']['a']['c']
$a['a']['b']['a']
$a['a']['b']['b']
$a['a']['b']['c']
$a['a']['c']['a']
$a['a']['c']['b']
$a['a']['c']['c']

こんな配列だった場合はどういう風に欲しいの?


>$a['a']['b']['c']の1つ上の$a['a']['b']にどうにかしてアクセスしたいと考えてお

こんな風に普通にアクセスできるよ
echo $a['a']['b'];
58nobodyさん:2006/07/08(土) 12:37:11 ID:???
>>54
func($a['a']['b']['c']) で戻り値にarray('a','b','c')を返したいとかいう話?
無理だろ。
59nobodyさん:2006/07/08(土) 12:55:12 ID:???
再帰で関数つくれば出来るけど標準にはない
60nobodyさん:2006/07/08(土) 13:19:32 ID:???
$a['a']['b']['c'] と書いた時点で、もうキーが何か分かっている。
分かってないと 'a','b','c'のように具体的に書けないから。

一方 $a['a']['b']['c'] = 'αβγ'; のように値が入っていたとして、
'αβγ'という文字列から変数名(あるいは配列名、キー名)を調べることはできない。

>>56の説明にあるような要求がでてくる場面が想像できない
6154:2006/07/08(土) 13:20:35 ID:???
>>57-59
58さんのおっしゃる事がそうだと想います(^^;。
フォルダでいう所の1つ上のフォルダにアクセスしたい感じですがやはり無理ですか・・・。

$dat[$a][$b][$c]で$aから$cまでの変数が不定である場合の$aと$bを知る方法があれば
知りたかったのです。$datだけ固定なのでやはりここから作って行くしかないですね。
6254:2006/07/08(土) 13:24:07 ID:???
$aから$cまでの変数が不定というのも変ですね(^^;。とにかく値からキーを習得したかった感じです。
63nobodyさん:2006/07/08(土) 13:33:11 ID:???
>>62
その値が配列の中で一意なのであれば検索は可能。
同じ値が複数ある場合はキーの特定が不可能。
64nobodyさん:2006/07/08(土) 13:35:50 ID:???
>>61
そもそもその$dat[$a][$b][$c]にどういう形でアクセスしてるときに
第二階層をアクセスしたいのか、もうちょっと具体的に示せ。
フォルダ云々言ってるけど、$dat[$a][$b][$c]を引数で渡したときってのは
中身を別のまっさらなディスクにコピーした状態になってるから
そもそも上のフォルダとかいうもの自体が無くなってしまってる。
65nobodyさん:2006/07/08(土) 14:15:03 ID:???
予想するに、ツリー(ネスト)状態になっている配列の親の配列キーが知りたいって事とか。
6654:2006/07/08(土) 14:23:55 ID:???
>>65
どうやって説明しようか迷っていたのですが、その通りです!!。このツリー状になっている配列は
Web上で利用するユーザーが好き勝手に変更できる仕様なので階層も決まっておらず、毎回検索
するのも効率が悪いので何とか効率よくできないものかと・・・。今はキーをインデックス化しており、
そこから割り出しているのですが処理によっては1つ上の親の配列が必要になったりするので
配列変数をLinuxのディレクトリみたいに「cd ..」なんて出来ないかと安易に考えた次第です。
67nobodyさん:2006/07/08(土) 14:25:42 ID:???
データベースに放り込んで毎回検索した方が良いんじゃねーの?
68nobodyさん:2006/07/08(土) 14:28:13 ID:???
>>66
それはキーそのものを情報として持って処理するしかないと思う。
ディレクトリだって、自分が親の位置情報を持ってるわけじゃなく、
自身のフルパスとして全階層のキーに該当する情報を持ってるだけだし。
69nobodyさん:2006/07/08(土) 16:32:23 ID:Y8id9cd8
<?
$array[1] = 9;
$array[2] = 6;
$array[3] = 10;

asort($array);

print_r($array);
?>

Array ( [2] => 6 [1] => 9 [3] => 10 ) ←出力されます

これを、小さい順に
$a、$b、$cに格納したいのですが、どうすれば良いのでしょうか?

list($a,$b,$c) = asort($array);

としてみたいのですが、ダメでした。
7069:2006/07/08(土) 16:41:47 ID:Y8id9cd8
resetとcurrent、nextで解決できました。
ありがとうございます。

しかし、こんな面倒くさい方法じゃなく、
変数をまた最初から番号付けするような便利な関数はないのでしょうか。。。
71nobodyさん:2006/07/08(土) 17:22:50 ID:qcW5njj8
mb_output_handlerを使ってSJISのデータをUTF-8で出力しようとしています。
以下のスクリプトを実行したのですが、

<?php
mb_http_output("UTF-8");
mb_output_handler("UTF-8");
ob_start("mb_output_handler"); ?>
test
<?php ob_end_flash(); ?>

Warning: mb_output_handler() expects exactly 2 parameters, 1 given
Warning: Wrong parameter count for mb_output_handler()
Fatal error: Call to undefined function: ob_end_flash()

といったエラーになってしまいました。

どこがいけないのか解らないのですが、マニュアル通りに指定したつもりです。
どうすればUTF-8で出力されるでしょうか?

PHP4.4.0を使用していて、mb周りの設定値は以下になります。

mbstring.detect_order no value
mbstring.encoding_translation Off
mbstring.func_overload 0
mbstring.http_input pass
mbstring.http_output pass
mbstring.internal_encoding SJIS
mbstring.language neutral
mbstring.substitute_character no value
72nobodyさん:2006/07/08(土) 17:26:39 ID:???
何故エラーメッセージを読まない?
7371:2006/07/08(土) 17:42:41 ID:???
読んだのですが、どこが違うのか解りませんでした。
パラメーターがおかしいのは解るのですが、UTF-8以外に指定できるのでしょうか?

そこがわかりません。。
74nobodyさん:2006/07/08(土) 18:01:53 ID:4HW/BEu5
C言語でのifdefはPHPにはありますか?
75nobodyさん:2006/07/08(土) 18:12:21 ID:???
ないよ
76nobodyさん:2006/07/08(土) 18:17:05 ID:???
実装でカバーできるけど冗長になりがち
77nobodyさん:2006/07/08(土) 18:17:56 ID:???
なんちゃって
あるに決まってるだろ
78nobodyさん:2006/07/08(土) 18:27:45 ID:4HW/BEu5
デバッグコードを埋め込みたいのです。
79nobodyさん:2006/07/08(土) 19:46:21 ID:???
>>73
Fatal error: Call to undefined function: ob_end_flash()

致命的エラー:ob_end_flash()だぁ? んな関数ねぇよハゲ。


× flash
○ flush


もう一度聞くが、何故エラーメッセージを読まない?
80nobodyさん:2006/07/08(土) 19:54:12 ID:???
>>73
mb_output_handler("UTF-8");
...
Warning: mb_output_handler() expects exactly 2 parameters, 1 given
Warning: Wrong parameter count for mb_output_handler()
...
どこがいけないのか解らないのですが、マニュアル通りに指定したつもりです。



なんのマニュアルを読んだんだろうねー
81nobodyさん:2006/07/08(土) 20:40:16 ID:???
>>78
ないから、あきらめる
どうしてもっていうなら、makeを使ってプリプロセッサを通せ
82nobodyさん:2006/07/08(土) 22:00:33 ID:???
>>70
asort($array);
list($a, $b, $c) = $array;
ってことじゃなくて??
83nobodyさん:2006/07/08(土) 23:10:14 ID:???
auの携帯へ、header()を使ってcookieを送りたいのですが、
どう記述すればいいのでしょうか?よろしくお願いします。
84nobodyさん:2006/07/08(土) 23:54:39 ID:???
>>83
いえいえこちらこそよろしくお願いいたします。
85nobodyさん:2006/07/08(土) 23:58:31 ID:???
特定のRSSを取得して、毎日1回HTMLを生成するスクリプトってかけますか?

ニュースサイトのRSSを購読すると、三日前のニュースとかは取得できないので不便なんです。
だったら自分で契約してるサーバにスクリプトを設置して、タイトルとリンクをHTML化して毎日一回保存してしまおうかと

だめでしょうか? cronもつかえるという前提だとどうでしょう
86nobodyさん:2006/07/09(日) 01:13:29 ID:???
書けるよ
87nobodyさん:2006/07/09(日) 01:57:06 ID:???
空メールを送ってもらい送られてきたメールアドレスをデータベースに保存する
といった会員登録サイトを作ろうと思い、調べた結果とりあえず空メールが
あったら返信をするというのはvacationで出来るというところまでは
調べる事は出来たのですが、そこからどの用にメールアドレスだけを取得し
PHPに持っていけばいいのかが分かりません
88nobodyさん:2006/07/09(日) 02:09:14 ID:???
>>86
激しく詳細希望
89nobodyさん:2006/07/09(日) 02:27:42 ID:???
>>87
vacationなんぞ使わずに、自作の処理スクリプト(PHP)に渡して
そこで処理をする。forwardで渡すのは同様。

空メールなのかとか、そのメールからアドレスをどうやって取るかは
実験してみな。単なる文字列の処理だけだから。
90nobodyさん:2006/07/09(日) 02:27:51 ID:???
setcookieとsession_startは同じPHPには書けないのでしょうか?
91nobodyさん:2006/07/09(日) 02:33:21 ID:???
んー。そういう質問をするってことは、できなかったんだよね?
再現できるソースきぼんぬ
92nobodyさん:2006/07/09(日) 03:08:02 ID:???
>>90
ふつーにできるが。
93nobodyさん:2006/07/09(日) 03:12:06 ID:???
>>87
PHPをcronなどで一定間隔で動かしてPOPサーバーに接続してメールを取得、
もしくはsendmailのforward設定で受信時にメールを食わせて自動的にPHPを実行させ、
あとはメールの中身を1行ずつ読み込んでってFrom:行からアドレス抜くだけ。
94nobodyさん:2006/07/09(日) 05:33:03 ID:???
>>69-70
>しかし、こんな面倒くさい方法じゃなく、
>変数をまた最初から番号付けするような便利な関数はないのでしょうか。。。

結局キーは捨てるのに、なんでわざわざasort使ってんの?
マニュアル読んでないよね?
95nobodyさん:2006/07/09(日) 07:42:20 ID:???
週末はいつもこんな感じだよね
96nobodyさん:2006/07/09(日) 12:24:45 ID:???
phpで外部サイトの内容を取得するのは
readfileだけでしょうか?

外部サイトの、<body>以下だけを出力すると言った方法は可能ですか?
97nobodyさん:2006/07/09(日) 12:47:18 ID:???
>>96
つ curl
98nobodyさん:2006/07/09(日) 12:49:41 ID:???
>>96
外部ファイルを手軽に扱うための関数(fopen_wrapperの設定に依存)
 readfileやinclude、fopen etc.
細かい制御ができるが、その分よく面倒を見る必要あり
 fsockopen

後半は、ファイル全体を取得してから自力で切り出すしかないやね。
PHPには文字列を操作する関数があるので、可能っちゃー可能
99nobodyさん:2006/07/09(日) 12:51:20 ID:???
>>97
>>98

ありがとうございます。早速勉強してみます
100nobodyさん:2006/07/09(日) 13:04:23 ID:vWh3Ts67
Vodafoneの固体シリアルを切り出すために

$ua = 'Vodafone/1.0/V802N/NJ001[test_serial] Browser/UP.Browser/7.0.2.1.307 Profile/MIDP-2.0 Configuration/CLDC-1.1 Ext-J-Profile/JSCL-1.2.2 Ext-V-Profile/VSCL-2.0.0';
if ( ereg ("\[(.+)\]", $ua, $serial) ) {
print $serial[0];
}else{
print "error!";
}

って感じで書いたんだが、[]も代入されてしまう。
\[(.+)\]の()の中だけを代入するにはどうすればいい?
Perlやってたからよくわからねぇ。
101nobodyさん:2006/07/09(日) 13:54:33 ID:???
>>100
確か$_SERVER['??_JHONE_NO']みたいな配列に送られてくるはずだが…
print_r($_SERVER)すればわかるかも。
102nobodyさん:2006/07/09(日) 14:03:10 ID:???
>>100
http://jp.php.net/manual/ja/function.ereg.php
をよく読めば間違いが分かる
103nobodyさん:2006/07/09(日) 14:25:29 ID:vWh3Ts67
>>102
あ、[1]に入るのか。サンクス!
104nobodyさん:2006/07/09(日) 14:54:36 ID:???
質問です。
子プロセスの方で関数を動かして、
その返り値を子プロセス終了後に
親プロセスの方でチェックしようとしたら空になってました。
子プロセス内で得た返り値を
親プロセスの方でチェックすることは無理ですか?
105nobodyさん:2006/07/09(日) 16:11:23 ID:U99SwNUH
BBSを10件ずつ表示させて次ページへ進めるようにしたいのですがどういう処理が必要なのでしょう?
ログはテキストで取っていてSQLは使用していません。
106nobodyさん:2006/07/09(日) 16:16:41 ID:???
>>104
ソースは?
>>105
そういうのを丸投げといふ。まずは自分で考えてわからないとこを質問
107nobodyさん:2006/07/09(日) 16:29:11 ID:???
PHPでクッキーを削除するにはどうしたらいいですか?
setcookie("cookiename");
でやっても削除されないのですが、ほかのやり方あったら教えてください。
よろしくお願いします。
108107:2006/07/09(日) 16:34:25 ID:66lL3jio
解決しますた。
109nobodyさん:2006/07/09(日) 16:36:00 ID:???
>>105
暇だからSQLの方法を出してやろう

*.php?page=1

$page = $_GET['page'];
$limit = $page * 10;
$sql = "SELECT * FROM BBS LIMIT $limit, 10";
$res = mysql_query($sql);
while ( $row = mysql_fetch_array($res) ) { print( $row[0] . "<hr>" ); }
110nobodyさん:2006/07/09(日) 16:39:14 ID:???
>>105
次ページで表示する10件分のテキストを読み込んで表示する。
10件に足りない場合の処理も盛り込むこと。
111nobodyさん:2006/07/09(日) 17:14:59 ID:???
>>105
つ PEAR::Pager
112nobodyさん:2006/07/09(日) 17:42:19 ID:???
file()でローカルのスクリプトを実行した状態で取り込みたいのですが可能でしょうか。

例えばBBS.CGIというスクリプトをソースではなくてそれを実行したHTMLを取り込もうとしています。
試しに file(BBS.cgi) と file(http://~~~/BBS.CGI) を試しましたがどちらもソースが返ってきてしまいました。

phpにて実行結果の状態で取得することは可能なのでしょうか よろしくお願いします。
113nobodyさん:2006/07/09(日) 18:11:29 ID:???
>>112
後者(file('http://example.com/'))でいける筈だが。
それで駄目なら、そもそもブラウザで該当のURLを指定しても
text/plainでソース出力がされてる状態じゃないのか?
114nobodyさん:2006/07/09(日) 18:24:40 ID:???
>>113
該当のファイルをブラウザで直に表示させるとちゃんとスクリプトが実行されるようです。
ちなみにバージョンは4.3.11です。 蛇足ですがロリポ鯖です。

ファイル構成は
/aaa/index.php - 呼び出し元
/aaa/BBS.CGI -呼び出し先

同じディレクトリへ入れてるのが原因なのでしょうか。
それとも普段はphp5を使っていましてこれはphp4特有の仕様か何かでしょうか。

よろしくお願いします
115nobodyさん:2006/07/09(日) 19:23:33 ID:???
>>114
帰ってきたソースってHTMLソースじゃないよな?
file関数使ったらもちろんソースが帰ってくるぞ。
取ってきたものをどうしたいんだ?表示したいのか保存したいのか?
116nobodyさん:2006/07/09(日) 20:07:41 ID:???
<?php
function myfunc( ) {
// あーだこーだ
return ( 0 );
}

$pid = pcntl_fork();
if ( $pid == -1 ) {
die( 'could not fork' );
} else if( $pid ) {
// 親
pcntl_waitpid( $pid, $status, WUNTRACED );
} else {
// 子
$r = myfunc( );
exit;
}

if( $r == 0 ) {
// 成功
} else {
// 失敗
}
?>

>>104
こんな感じの処理で、最後のifで$rの値を見て処理を分けたいけど、
$rは空になってしまってるんですよ。
そういうもんなんですか?
117nobodyさん:2006/07/09(日) 20:09:51 ID:???
104じゃなくて>>106でした
104=116です
118nobodyさん:2006/07/09(日) 20:11:51 ID:???
>>116
返値に関係なくexit; で終わってる気がする
119nobodyさん:2006/07/09(日) 20:27:33 ID:???
>>118
exit は子を終わらせてるだけで、
その後はifの方にいくんですが、
「未定義の変数つかってんじゃねーよ」って怒られるんですよ。
子の中だと$rに0が入ってるのは確認できるんです。
120nobodyさん:2006/07/09(日) 20:29:17 ID:???
ローカルサーバーではちゃんと動作するのに、
アップしたサーバーで動作すると動作が変なのです。

ちゃっとセッションが保存されないみたいなのですが、これは問い合わせた方が良いですかね?

121120:2006/07/09(日) 20:37:34 ID:NEYaW9zv
セッションは4.4.2と5.1.4で仕様変更とかありました?
122nobodyさん:2006/07/09(日) 21:18:04 ID:???
>>114
ん?前者ならファイルの内容そのものを取得する機能だから
CGIとして実行されないでソースが表示されるのは当たり前。
123nobodyさん:2006/07/09(日) 21:34:45 ID:???
>>119
親プロセスが返された場合
pcntl_waitpid( $pid, $status, WUNTRACED );
で$rは何も定義されていない

子プロセスの場合
$r = myfunc( );
exit;
でexit;しているからif($r==まで到達しない

じゃね?

>子の中だと$rに0が入ってるのは確認できるんです。
てのはexit;前での確認だよな?

状況説明は他人にわかるようにね。
124nobodyさん:2006/07/09(日) 21:48:38 ID:QrRy9B/E
よろしければ解説おねがいします。

<?= $a ?>

の<?= とはどういう意味なのでしょうか?
ぐぐり方が悪く 全然見つかりません。
125nobodyさん:2006/07/09(日) 21:55:57 ID:???
特に意味はないはずと思う
そんな書き方もできるよっていう程度
<?php echo $a; ?>と同じ
126124:2006/07/09(日) 22:00:26 ID:QrRy9B/E
>>125

迅速な回答ありがとうございました。
echo や printで試してみます。
127nobodyさん:2006/07/09(日) 22:24:52 ID:apK+YZH4
$msgには文字列が代入されているとします。
文字列が長すぎる(例えば700文字を超える)場合の処理は、mb_strlen () で長さを計るしかないのでしょうか?

if (mb_strlen ($msg) > 700) {
     $err_msg = "長杉";
}

もっとベターな方法があればお願いします。
128nobodyさん:2006/07/09(日) 22:40:25 ID:???
Registered serializer handlers [ php php_binary wddx ]
というのは何でしょうか?

ローカルサーバーにはあるのですが、レンタルサーバーにはありません
129nobodyさん:2006/07/09(日) 23:06:11 ID:???
>>127
基本的な発想はそれしかない

文字列の長さを調べる関数は少なくとも3つ
strlenとmb_strlenとmb_strwidthがあるけど
どれを選ぶかはケースバイケースだね
130nobodyさん:2006/07/09(日) 23:08:21 ID:???
>>127
つ javascript
131nobodyさん:2006/07/09(日) 23:08:30 ID:vjWeIelg
(例)$_POST["abc"]の値を削除するにはどうすればいいでしょうか?
132nobodyさん:2006/07/09(日) 23:20:56 ID:???
>>128
マニュアルのセッションのページに書いてあるよ。
簡単に言うと、どういう形式でセッション情報を保持するかを指定するためのもの。
133nobodyさん:2006/07/10(月) 00:41:43 ID:???
>>89
>>93
カメで申し訳ありません
ありがとうございます
お二人に指摘いただいたものでがんばってみます
134nobodyさん:2006/07/10(月) 08:05:28 ID:pIRoiH69
>>131
unset
135nobodyさん:2006/07/10(月) 09:20:16 ID:DXTeExGF
>phpの場合は、内部エンコーディングがUTF-8になっているので、
>明示的指定がなければ文字化けすることはあります。
>エンコーディングを指定してください。

と言われたのですが、どうやって指定すれば良いのでしょうか?
136nobodyさん:2006/07/10(月) 09:49:25 ID:???
>>135
何をしようとして、そういわれたのかがわからないが
php.iniの設定を変えれば、もしかしたら、君が望む結果が得られるかも
137nobodyさん:2006/07/10(月) 09:50:29 ID:???
SJISで書いて文字化けしているだけではないかな
138135:2006/07/10(月) 10:14:35 ID:DXTeExGF
>>136
すみません、サーバーにアプロードして、
セッションに格納すると文字化けするのですよ。
それを報告したらそのような返答が返ってきました。
どうにかして、エンコーディングを指定する方法はないのでしょうか?
139nobodyさん:2006/07/10(月) 13:07:21 ID:???
色々あるよ
140nobodyさん:2006/07/10(月) 13:20:37 ID:pIRoiH69
.hなんとか
141135:2006/07/10(月) 14:35:25 ID:Q6XjtIhe
今学校から帰ってきました。

>>139
良かったら教えていただけませんか?
.htaccessは使えないみたいです
142軟式PHP:2006/07/10(月) 15:51:50 ID:???
ini_setは?
143135:2006/07/10(月) 15:56:12 ID:Q6XjtIhe
>>142
実行中に適用させるのですよね。
ini_set("internal_encoding","sjis");

と書くだけで良いのでしょうか?
144nobodyさん:2006/07/10(月) 15:57:23 ID:???
>>143
試してみる。
マニュアルを読む。
http://jp.php.net/manual/ja/function.ini-set.php
145135:2006/07/10(月) 16:01:17 ID:Q6XjtIhe
mbstring.detect_order          「no value 」「no value 」
mbstring.encoding_translation          「On」「 Off 」
mbstring.func_overload          「0 」「0 」
mbstring.http_input          「auto」「 pass 」
mbstring.http_output          「SJIS」「 pass 」
mbstring.internal_encoding          「SJIS」「 no value 」
mbstring.language          「Japanese」「 neutral 」
mbstring.substitute_characte          「no value 」「no value 」

何を変更して良いのかちょっとわからないです・・・。
146nobodyさん:2006/07/10(月) 16:10:20 ID:???
>>145
学生って何学生だ? もうちょっと人に伝えよう・理解してもらおうと努力しーや。

> 何を変更して良いのかちょっとわからないです・・・。
知らんがな。>>138
> どうにかして、エンコーディングを指定する方法はないのでしょうか?
に答えただけやがな。

そもそも >>138
> セッションに格納すると文字化けするのですよ。
の解決策はそれで合っているのか自分で考えたか?
147135:2006/07/10(月) 16:30:53 ID:Q6XjtIhe
セッションに文字を格納すると文字化けする
これを直したいだけなのですが、どうしていいかわからずさっぱりなのです。
148asa:2006/07/10(月) 16:33:32 ID:my/rgI9c
ファイルダウンロードについて教えてください。
メールにあるURLを記載し、そのURLをクリックするとファイルをダウンロードできるというものを作成したいと思っています。
(urlはhttp://www.hoge.com/moe/download.php?file_no=1という感じです
しかし条件として、ブラウザを画面上に表示させないという制約があります(瞬間的に表示されるのはOKです)。
現在、下記のソースでファイルダウンロードを実行すると
1.IDが立ち上がる
2.ファイルダウンロードするかの選択ダイアログの表示される
3.『保存』を選択するとファイルはDLさせるが、IEの画面がそのまま残り
  『取り消されたアクション Internet Explorer は、要求された Web ページにリンクできませんでした。
   要求された Web ページは現在、利用できない可能性があります。 』という画面になる。
という流れになります。
ここで3)において、エラー(?)が表示されたブラウザを
閉じさせるということはできますでしょうか。

zipやlzhは、IEが一瞬だけ表示されすぐに消え理想的な動作をするのですが、
txt,pdf,docなどはIEが開かれたままになってしまいます。

わかるかたがいらっしゃいましたら
ご教授お願い致します。
$file_name="/usr/local/docs/hoge.txt";
$len = filesize($file_name);
//ファイルタイプにより処理を変更
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Content-Disposition: attachment ; filename=\"".basename($file_name)."\"");
header("Content-Length: ". $len);
header("Content-Type: application/octet-stream");
readfile($file_name); // ファイルを読み込んでHTTP出力
exit;
環境Linux9PHP4
149nobodyさん:2006/07/10(月) 16:35:06 ID:???
>>147
それだけじゃ分からない。
文字化けする時は PHP ファイルの文字コードとか諸々の情報を提示しないと。

こんなやりとりが延々続くんだろうな…
150nobodyさん:2006/07/10(月) 16:36:20 ID:???
自作のプログラムでapache_request_headersの結果得られる
リクエストヘッダを取得する処理をしていました。

サーバを移行して、cgi版PHPになりました。

apache_request_headers以外でリクエストヘッダを獲得する方法ってありますか?
151nobodyさん:2006/07/10(月) 17:11:24 ID:???
>>150
取得したいフィールドによるんじゃないかと。
152135:2006/07/10(月) 17:12:42 ID:Q6XjtIhe
>>149
お付き合い頂ければ幸いです。
各種PHPの保存する時の文字コードも関係するのですね。

Dreamweaver8で、デフォルトで保存しているのですが、どうやって調べれば良いのでしょうか?
153150:2006/07/10(月) 17:14:01 ID:???
AUの携帯ブラウザで
ゲートウェイサーバから送信されるx-up-subnoフィールドです。

$_SERVERにも$_REQUESTにも引っかからないので
さあ困ったなぁと。
154135:2006/07/10(月) 17:16:26 ID:Q6XjtIhe
すみません、ありました、
初期設定がシフトJISで、コードの方は全然いじっていません。
サーバーはUTS-8を使っているらしいので、設定をそれにして上書きすれば大丈夫ということですね?
155nobodyさん:2006/07/10(月) 17:20:15 ID:???
>>153
HTTP_X_UP_SUBNO にも出ないんだ?
156150:2006/07/10(月) 17:28:02 ID:???
>>153
マジ感謝。$_SERVER["SERVER"]で出ました!
157nobodyさん:2006/07/10(月) 17:28:29 ID:???
>>154
確認はいいから、つべこべ言わずやってみろや。
やる前に聞いたって無駄なんだよ。
158nobodyさん:2006/07/10(月) 17:29:51 ID:???
青山君今度はこっちで聞くことにしたのかね?
159135:2006/07/10(月) 17:30:02 ID:Q6XjtIhe
チャレンジしてみたところ、
サーバーに上げると何も表示されなくなってしまいました。
UTS-8ではダメみたいです。

真剣に行き詰りました・・・
160nobodyさん:2006/07/10(月) 17:31:04 ID:???
>>159
UTS-8なんて文字コードは無い。
161nobodyさん:2006/07/10(月) 17:31:18 ID:???
UTS-8ならそうなるのは当たり前
162135:2006/07/10(月) 17:36:57 ID:Q6XjtIhe
すみません、UTF-8です。
163nobodyさん:2006/07/10(月) 17:42:00 ID:???
こうなると、スクリプト内は実際どうなってるのか疑問になる。
言われたことも間違ってやってそうな…
164nobodyさん:2006/07/10(月) 17:51:46 ID:???
>セッションに文字を格納すると文字化けする

うそっぽーい
自分で問題を絞り込むことができないから、こういう文章に
なるんだな。
だいたい、こういう表現するやつに限ってセッションなんて
全く関係ないところでボンミスしてるにきまってる。

日本語使わなければ化けないだろうから即解決だよ。
それでいいじゃん。
165135:2006/07/10(月) 17:51:50 ID:Q6XjtIhe
$_SESSION['name'][$_GET['id']] = "アイウエオ";
echo $_SESSION['name'][$_GET['id']];

出力すると文字化けします
166164:2006/07/10(月) 17:54:19 ID:???
echo "アイウエオ"
でも化けてるんじゃないのー
167135:2006/07/10(月) 17:57:09 ID:Q6XjtIhe
>>166
「あああ」⇒「あああ」
「・・・」⇒「/font>」
168nobodyさん:2006/07/10(月) 18:01:21 ID:???
.>>167
下の例の意味が分からん。
言いたいことをちゃんと伝える努力をしなさい、ってさっき言ったでしょ。
169135:2006/07/10(月) 18:02:20 ID:Q6XjtIhe
すみません、上記のように文字化けするということです。
170164:2006/07/10(月) 18:02:34 ID:???
はぁ?
何が言いたいのか全く意味わからんぞ・・・
それで伝わるとおもってるのか?俺はエスパーか?

ていうか、
echo "アイウエオ"
で化けるのか?化けんのか?
俺が言ってることは伝わってるのか?
あんたは宇宙人か?
171135:2006/07/10(月) 18:06:26 ID:Q6XjtIhe
>>170
すみません、アイウエオでは文字化けしません、
172164:2006/07/10(月) 18:10:23 ID:???
>> 165 の確認なんだが・・・

<?php
$_SESSION['name'][$_GET['id']] = "アイウエオ";
echo $_SESSION['name'][$_GET['id']];
?>

では化けて

<?php
echo "アイウエオ";
?>

は化けないってことか?

じゃぁ、

<?php
$_SESSION['name'] = "アイウエオ";
echo $_SESSION['name'];
?>

これは化けるのか?化けんのか?

<?php
$aaa = "アイウエオ";
echo $aaa;
?>

これは化けるのか?化けんのか?

173nobodyさん:2006/07/10(月) 18:16:38 ID:???
とにかく文字コードの情報が欠如している。

・PHP から出力される HTML の文字コード
・HTML にて指定されている文字コード
・PHP スクリプトの文字コード

はどうなっているのか、と。
内部エンコーディングの問題以前に、上記のミスマッチによっては化けるものは化ける。
174135:2006/07/10(月) 18:18:00 ID:Q6XjtIhe
$_SESSION['var1'] = "12345";
$_SESSION['var2'] = "ABCDE";
$_SESSION['var3'] = "あいうえお";
$_SESSION['var4'] = "管表示線銃";
$_SESSION['var5'] = "ァエオケム";

$var1 = "12345";
$var2 = "ABCDE";
$var3 = "あいうえお";
$var4 = "管表示線銃";
$var5 = "ァエオケム";

全て正常に出力されました。
なぜ、他のではちゃんと出力されないか疑問です。
175nobodyさん:2006/07/10(月) 18:21:50 ID:???
中学生だよな? ちょっと滅茶苦茶よ。

>>174
> $_SESSION['var1'] = "12345";
> $_SESSION['var2'] = "ABCDE";
> $_SESSION['var3'] = "あいうえお";
> $_SESSION['var4'] = "管表示線銃";
> $_SESSION['var5'] = "ァエオケム";
これと
> $var1 = "12345";
> $var2 = "ABCDE";
> $var3 = "あいうえお";
> $var4 = "管表示線銃";
> $var5 = "ァエオケム";
これの関連性が意味不明。何を例示しているつもり?

> なぜ、他のではちゃんと出力されないか疑問です。
「他」とは? 「ちゃんと出力されない」とは?
176135:2006/07/10(月) 18:27:18 ID:Q6XjtIhe
もしよければ、どなたか見ていただけませんか?
http://www.uploda.org/uporg441589.zip

ローカルサーバーでは実行できるのに、アップしたら文字化けします。
177164:2006/07/10(月) 18:28:46 ID:???
問題を整理する気あるのか?

$_SESSION['name'][$_GET['id']] = "アイウエオ";
echo $_SESSION['name'][$_GET['id']];

を最初の始まりとするなら、
そこから少しずつ(1条件ずつ)簡易なものに書き換えて
トライアンドエラーしないと意味無いだろ。

$_SESSION['name'][$_GET['id']] = "アイウエオ";
echo $_SESSION['name'][$_GET['id']];

を基点に原因探ってるのに、
>> 174
には "アイウエオ" が含まれてないのは
おかしいだろ?
文字列が"アイウエオ"のときだけ起きる動作不良だったら
みつけられないだろうが?


178164:2006/07/10(月) 18:34:01 ID:???
>> 176
>ローカルサーバーでは実行できるのに、アップしたら文字化けします。

おまえなぁ。。。
最初から質問の仕方まちがってるだろうがぁ!!!!!!!!!!!!

ちなみに言わしてもらうなら、
「ローカルサーバでは*実行*できるのに」
ってなんなんだ?
「ローカルサーバでは期待通り文字化けせず出力されるのに」
だろうが?

で、丸投げかよ・・・
こいつダメだな。。。
179nobodyさん:2006/07/10(月) 19:01:39 ID:???
以後>>135は放置でヨロ
180nobodyさん:2006/07/10(月) 19:10:56 ID:???
そりゃ>>164みたいなやつがいれば誰だって去るわなw
181nobodyさん:2006/07/10(月) 19:21:36 ID:???
代わりに>>180が教えてやれば万事解決。
182nobodyさん:2006/07/10(月) 19:39:00 ID:???
>>135
まぁ、所詮は2chだ、諦めろ
こんなクズはウヨウヨいる
他で聞くんだな
183164:2006/07/10(月) 20:37:27 ID:???
人格者の
>>180
がこれから
>>135
を導いてくれるってさ。
よかったね。
184nobodyさん:2006/07/10(月) 21:02:46 ID:???
>>176
何?これを使って自鯖にチャットルームを設置せよとな?

関係ないけどコレ自分で作ったのか?
185135:2006/07/10(月) 21:07:08 ID:Q6XjtIhe
>>184
はい、全然未熟ですけど
あと、>>164さんみたいな方でも教えていただけると嬉しいです。
丸投げなやり方になってしまってすみません。
186135:2006/07/10(月) 21:08:50 ID:Q6XjtIhe
echo $name."<BR>";
echo $name_color."<BR>";
echo $com_color."<BR>";
echo $px."<BR>";
echo $log."<BR>";
echo $reload_time."<BR>";

$_SESSION['name'][$_GET['id']]= substr($name,0,20);
$_SESSION['name_color'][$_GET['id']]= $name_color;
$_SESSION['com_color'][$_GET['id']]= $com_color;
$_SESSION['px'][$_GET['id']]= $px;
$_SESSION['log'][$_GET['id']]= $log;
$_SESSION['reload_time'][$_GET['id']]= $reload_time;

echo $_SESSION['name'][$_GET['id']]."<BR>";
echo $_SESSION['name_color'][$_GET['id']]."<BR>";
echo $_SESSION['com_color'][$_GET['id']]."<BR>";
echo $_SESSION['px'][$_GET['id']]."<BR>";
echo $_SESSION['log'][$_GET['id']]."<BR>";
echo $_SESSION['reload_time'][$_GET['id']]."<BR>";

187135:2006/07/10(月) 21:09:27 ID:Q6XjtIhe
この辺りで文字化けが発生するみたいです。

あああ
#FFFF00
#00FF00
16
20
40

・BR>#
#
1
2
4

このように出力されました。(index.php)
まだお答えいただける方がいれば嬉しいです
188nobodyさん:2006/07/10(月) 21:10:08 ID:???
>>185
ローカルサーバがあるなら、セッション内部に保存されているデータの文字コードを確認しなっせ。
189nobodyさん:2006/07/10(月) 21:20:21 ID:???
おまいら!
DBに認証用のパスワード入れてるのかよ!
190135:2006/07/10(月) 21:23:38 ID:Q6XjtIhe
>>188
ローカルサーバーでは文字化けせずにスムーズに実行されるのですが、
サーバーにアップロードすると、どうしてもこの部分で文字化けがおきるのですよ
191nobodyさん:2006/07/10(月) 21:26:30 ID:???
>>190
セッションファイルの中身を確認しろって言ってるの。
192135:2006/07/10(月) 21:30:57 ID:Q6XjtIhe
はい、tmpですよね。
全て中身は
「a|s:6:"あむろ";b|s:8:"ぶらいと";c|s:10:"きゃすばる";」
というのが書かれていました、
193nobodyさん:2006/07/10(月) 21:33:46 ID:???
>>192
いや、だから、その文字コードを確認だって。
194nobodyさん:2006/07/10(月) 21:34:26 ID:???
…え?
195135:2006/07/10(月) 21:35:44 ID:Q6XjtIhe
すみません、意味を取り違えてました。
SHIFT-JISでした。
196nobodyさん:2006/07/10(月) 21:40:20 ID:???
どうみてもそのあむろ・ぶらいと・きゃすばるは
前々スレの>>36を実行した後の消し忘れです。
本当にありがとうございました。


本当は文字化けなんかじゃなくて、単にセッションに入ってねーんじゃねーの?
197nobodyさん:2006/07/10(月) 21:44:00 ID:???
PHPのバージョンの違いによる問題だったりしてな
環境依存ってならエンコでもして入れとけば良いだろう
198nobodyさん:2006/07/10(月) 21:45:23 ID:???
>>195
>>173>>145>>195 の関係から考察しな。
199nobodyさん:2006/07/10(月) 21:53:45 ID:???
とにかくまずはprint_r($_SESSION)からすべきだと思う。

はっきり言って俺にはこれが文字化けの問題とは思えん。
200135:2006/07/10(月) 21:56:56 ID:Q6XjtIhe
>>199

//セッションに名前を全角10文字まで入力
$_SESSION['name'][$_GET['id']]= substr($name,0,20);
$_SESSION['name_color'][$_GET['id']]= $name_color;
$_SESSION['com_color'][$_GET['id']]= $com_color;
$_SESSION['px'][$_GET['id']]= $px;
$_SESSION['log'][$_GET['id']]= $log;
$_SESSION['reload_time'][$_GET['id']]= $reload_time;

print_r($_SESSION['name'][$_GET['id']]);
print_r($_SESSION['name_color'][$_GET['id']]);
print_r($_SESSION['com_color'][$_GET['id']]);
print_r($_SESSION['px'][$_GET['id']]);
print_r($_SESSION['log'][$_GET['id']]);
print_r($_SESSION['reload_time'][$_GET['id']]);

と、させてみたところ、出力は

#124

だけでした。
何がなんだかサッパリですorz
201nobodyさん:2006/07/10(月) 21:58:03 ID:???
>>200
なんで >>199 に書かれている通りにしないの?
202nobodyさん:2006/07/10(月) 22:08:45 ID:???
>>200
アホすぎて思わず萌えた。
203135:2006/07/10(月) 22:13:39 ID:Q6XjtIhe
>>201-202
すみません、勘違いです

Array ( [log] => 20 2 [name] => あああ [name_color] => #FFFF00 # [com_color] => #00FF00 # [px] => 16 1 [reload_time] => 40 4 [pass] => )

と、出力されました。
中にはちゃんと入っているということは、出力時に文字化けするということでしょうか
204nobodyさん:2006/07/10(月) 22:23:07 ID:???
アップロードした時点でスクリプトの文字コードが変わってるとかいう落ちだったりしてなw
どのみち馬鹿とPHPが使えないのはハッキリしたな
205nobodyさん:2006/07/10(月) 22:33:38 ID:???
>>203
試しに以下のコードを書いて実行してみたが、

<?php
$name = "0"; $name_color = "1"; $com_color = "2"; $px = "3";
$log = "4"; $reload_time = "5"; $g['id'] = "6";

$s['name'][$g['id']]= substr($name,0,20);
$s['name_color'][$g['id']]= $name_color;
$s['com_color'][$g['id']]= $com_color;
$s['px'][$g['id']]= $px;
$s['log'][$g['id']]= $log;
$s['reload_time'][$g['id']]= $reload_time;

print_r($s);
?>

結果として得られたのは以下だった。

Array (
[name] => Array ( [6] => 0 )
[name_color] => Array ( [6] => 1 )
[com_color] => Array ( [6] => 2 )
[px] => Array ( [6] => 3 )
[log] => Array ( [6] => 4 )
[reload_time] => Array ( [6] => 5 )
)
206nobodyさん:2006/07/10(月) 22:41:22 ID:???
>>204
× 馬鹿とPHPが使えない
○ 馬鹿と>>135>>204にはPHPは使えない

俺は>>176見てないからあれだけど、
問題が文字化けだけじゃないのはもう間違いない。
207nobodyさん:2006/07/10(月) 22:53:01 ID:???
見て答える気も無い奴が偉そうに断言して自己満足するスレとなりました
208nobodyさん:2006/07/10(月) 23:06:22 ID:???
PHPを使えないからって拗ねるなよ。
209nobodyさん:2006/07/10(月) 23:13:06 ID:???
>>203
> 中にはちゃんと入っているということは、

それが本当にprint_r($_SESSION)の結果だとしたら、
$_SESSION[name][$_GET['id']]であるべきものが$_SESSION[name]になってないか?
$_SESSION[name][$_GET['id']]が$_SESSION[$_GET['id']][name]の間違いで
さらにprint_r($_SESSION[$_GET['id']])でも見たならまた別だろうが、
それでも妙なゴミデータがくっついているように見える。

もう諦めて丸投げスレにでも行った方が良いと思う。
210164:2006/07/10(月) 23:36:16 ID:???
<?php

echo "phpversion(): ". phpversion() . "<br />";
echo "php_sapi_name(): ". php_sapi_name() . "<br />";
echo "php_uname(): ". php_uname() . "<br />";
echo "zend_version(): ". zend_version() . "<br />";
echo "<hr />";


echo "get_loaded_extensions(): <br />";
foreach (get_loaded_extensions() as $name) {
echo $name . ", ";
}
echo "<hr />";
211164:2006/07/10(月) 23:37:33 ID:???
echo "mbstring.language: ". ini_get("mbstring.language") . "<br />";
echo "mbstring.detect_order: ". ini_get("mbstring.detect_order") . "<br />";
echo "mbstring.http_input: ". ini_get("mbstring.http_input") . "<br />";
echo "mbstring.http_output: ". ini_get("mbstring.http_output") . "<br />";
echo "mbstring.internal_encoding: ". ini_get("mbstring.internal_encoding") . "<br />";
echo "mbstring.script_encoding: ". ini_get("mbstring.script_encoding") . "<br />";
echo "mbstring.encoding_translation: ". ini_get("mbstring.encoding_translation") . "<br />";
echo "mb_regex_encoding(): ". mb_regex_encoding() . "<br />";
echo "get_magic_quotes_gpc(): ". get_magic_quotes_gpc() . "<br />";
echo "get_magic_quotes_runtime(): ". get_magic_quotes_runtime() . "<br />";
echo "<hr />";
212164:2006/07/10(月) 23:38:41 ID:???
$teststr = "あいうえお";
$src_encoding = mb_detect_encoding($teststr, "auto");
echo "mb_detect_encoding(): $src_encoding <br />";
echo "<hr />";

echo "$src_encoding -> EUC-JP: " . mb_convert_encoding($teststr, "EUC-JP", $src_encoding) . "<br />";
echo "$src_encoding -> SJIS: " . mb_convert_encoding($teststr, "SJIS", $src_encoding) . "<br />";
echo "$src_encoding -> UTF-8: " . mb_convert_encoding($teststr, "UTF-8", $src_encoding) . "<br />";

?>

213nobodyさん:2006/07/11(火) 00:15:35 ID:???
$arr = range('a', 'z');

array_rand($arr); // return $key
array_rand($arr, 1); // return $key
array_rand($arr, 2); // return array($key, $key);
っておかしくね?
1はarray($key)になってほしくね?
欲を言えばarray_rand($arr, 0)もエラーじゃなくてarray()が返ってくれなきゃ使いづらくね?
214nobodyさん:2006/07/11(火) 00:38:13 ID:???
値のほうを返してくれるランダム関数はないのかと切に思う
215nobodyさん:2006/07/11(火) 01:31:09 ID:???
前スレでも書いたんですが、
前スレ900後半で思いっきり誰の目にも触れられずあぼーんしたので
再度書かせてください。

サーバからFTPにログインして、指定のファイルをブラウザに出力、
訪問者にダウンロードダイアログが出るようにしたいんですが、
どんな方法があるでしょうか?

content typeのlocationで直接ftp://指定すれば、とレスをいただきましたが、
ftp://をブラウザ経由でしてしまうとパスワードが流れてしまいますし
ブラウザの履歴にも残るので、
サーバーからlocalhostにftpに接続して、それをブラウザに出力、
という流れを取りたいと考えています。

この関数使え、とかのヒントでもいいので
教えて下さいませ
216nobodyさん:2006/07/11(火) 02:29:18 ID:???
「設問者」なのにlocalhost?ftpd・httpd兼用サーバ?
そんな奇怪な方法をどういう経緯で選んだのか前スレ読み返しても分からなかった。
無駄なことしてるというのは十分伝わって来るんだけど…
217nobodyさん:2006/07/11(火) 02:32:35 ID:???
>>215
何がやりたいのかよくわからんからスルーされるんじゃね?

>この関数使え、とかのヒントでもいいので
1.ftp_*()でファイルを取得
2.header()で適切なヘッダを出し
3.readfile()でもして出力

サーバのFTPDにアクセスするのかね?
ファイルがファイルシステムで直接読めるなら
header();
readfile();
でオワリ

どんなヘッダを送るのかとかはphpの問題じゃないので省略。
218nobodyさん:2006/07/11(火) 02:43:03 ID:???
最近自身をなくしちまったぜ・・・
なぁ、お前ら「良いプログラム」って何だ?
PHPは確かにC言語チックな見た目でPerlなんかより全然見やすいコードが書けるけど
それでも俺のコードは醜い気がする・・・
219nobodyさん:2006/07/11(火) 02:59:24 ID:???
>>218
「良い」てーのはそれを見る相手や状況によって違うんじゃないか
xxが良いとかなんか無いの?
それにしても誰に何を言われたんだかw
220nobodyさん:2006/07/11(火) 03:56:32 ID:???
・読みやすい
・理解しやすい
・再利用しやすい
えーとそれから・・・なにがあったっけ?
221nobodyさん:2006/07/11(火) 04:39:51 ID:???
何が醜いの?見にくいの?
人が理解しにくいとか?
222nobodyさん:2006/07/11(火) 07:15:25 ID:???
>>145
mbstring.encoding_translation          「On」「 Off 」
これが原因じゃないかと思うけどね
223135:2006/07/11(火) 08:59:10 ID:BuTz0b5N
おはようございます。
>>222
自動でエンコーディングされるんですよね。
自分のローカルサーバーは両方Onになっています。
これは.htaccessで指定可能なのでしょうか?
224135:2006/07/11(火) 09:06:23 ID:BuTz0b5N
.htaccessが使えるようになったので、
全て自分の環境と同じにしようと思ったのですが、それは可能なのでしょうか?
225nobodyさん:2006/07/11(火) 09:27:24 ID:???
>>224
ttp://www.php.net/manual/ja/configuration.changes.php

対象フォルダに"AllowOverride Options" もしくは "AllowOverride All" 権限があって、
PHPのマニュアルにおいて変更の可否がPHP_INI_ALL, PHP_INI_PERDIR, または PHP_INI_SYSTEM と
指定されているもののみ可能。
226225:2006/07/11(火) 09:28:40 ID:???
後はマニュアル見て実際に試して見てから質問しろよ。
227135:2006/07/11(火) 09:34:49 ID:BuTz0b5N
まとめ。

$_SESSIONにはちゃんと変数が格納されている。
$_SESSIONを出力する時に文字化けが起きる。
.htaccessが使える。
エンコーディングはSJIS
phpinfo()⇒>>145
サーバー管理者に問い合わせたところ、
「phpの場合は、内部エンコーディングがUTF-8になっているので、明示的指定がなければ文字化けすることはあります。
エンコーディングを指定してください。」と返ってきた。
228軟式PHP:2006/07/11(火) 10:01:30 ID:???
>>227
自分のブログにでも書いとけ。
229nobodyさん:2006/07/11(火) 10:35:05 ID:???
>>228
ワロスw
230135:2006/07/11(火) 12:06:43 ID:BuTz0b5N
この鯖ではちゃんと実行できたので
phpinfo()で見てみたところ

mbstring.detect_order auto auto
mbstring.encoding_translation On On
mbstring.func_overload 0 0
mbstring.http_input auto auto
mbstring.http_output SJIS EUC-JP
mbstring.internal_encoding SJIS EUC-JP
mbstring.language Japanese Japanese
mbstring.script_encoding no value no value
mbstring.substitute_character no value no value

でした。
.htaccessでこっちと同じ設定にすればいいのかと思ったんですけど、
設定の仕方がわからず、挑戦しても500エラーが出るばかりです・・・。
231nobodyさん:2006/07/11(火) 12:09:41 ID:???
>>230
まだやってたのか…
「.htaccess PHP mbstring」なりのキーワードでぐぐれ。
232nobodyさん:2006/07/11(火) 12:22:18 ID:???
phpでスパイダを作りたいと思っています。
何か参考になる書籍やサイトはありませんか?

それともperlを勉強しなければ難しいんでしょうか?
233nobodyさん:2006/07/11(火) 12:32:24 ID:???
>>232
「スパイダ」ってこれのことかな?
http://www.oreilly.co.jp/books/4873111870/
詳しくは amazon なりで見てみて。
234225:2006/07/11(火) 13:03:18 ID:???
>>230
シカトデスカー
モウー(ry
235nobodyさん:2006/07/11(火) 14:30:40 ID:???
.htaccess に
<IfModule mod_php5.c>
php_value include_path ".:/usr/local/lib"
php_admin_flag mbstring.http_output SJIS
</IfModule>

とやっていれたら500エラーになりました。
236nobodyさん:2006/07/11(火) 14:32:27 ID:???
>>75-81
亀レスすみません。
開発者のみなさんは、デバッグコードは不要になったら
コメントアウトするなどしているのでしょうか。
237nobodyさん:2006/07/11(火) 14:35:45 ID:???
>>235
「.htaccess 500」なりのキーワードでぐぐれ。
それと、>>231 のぐぐった結果をもう一度ちゃんと読め。
238nobodyさん:2006/07/11(火) 14:37:32 ID:???
コンパイルするタイプと違いphpスクリプトは完成系でもソースがそのまま残るからねー。
コメントアウトしてソースに残ってもいいというレベルなら、

スクリプト先頭で、
define("CONSTANT", "1");
これをコメントアウトさせる。

あとは
IF (defined('DEBUG')){
   // こにデバッグコードを書く
}
239nobodyさん:2006/07/11(火) 14:38:09 ID:???
define("'DEBUG'", "1");
240nobodyさん:2006/07/11(火) 14:44:45 ID:???
>>237
php_value mbstring.http_output SJIS

とだけ1行入れてもエラーでした。
もちろん行末に改行は入れてます。
241nobodyさん:2006/07/11(火) 14:47:45 ID:???
>>240
少しは自分で考えたら?
必要な情報提供も出来ないんだから。
242nobodyさん:2006/07/11(火) 15:05:15 ID:???
・回答に必要な情報を出さない
・検索キーワードなどを教えられても検索しない
・参考URLを教えられても見ない
・質問する前に自分で試さない

こういった質問者は完全にスルーしましょう
煽りや叩きも不要です
完全に存在を無視して下さい
不必要にレスすると永久ループに陥ります
243nobodyさん:2006/07/11(火) 15:10:24 ID:???
特殊記号にマッチしたときエラーを返す場合
の正規表現を教えてください。
preg_match使うみたいだけどよくわかりません。。。
244nobodyさん:2006/07/11(火) 15:14:44 ID:???
・回答に必要な情報を出さない >>230
・検索キーワードなどを教えられても検索しない   →検索した >>231 >>237
・参考URLを教えられても見ない  → 見た
・質問する前に自分で試さない  → 試した >>235 >>240
245243:2006/07/11(火) 15:16:58 ID:???
解決しますた。
246nobodyさん:2006/07/11(火) 15:22:07 ID:???
>>245
自己解決したなら、一応方法も書くと親切だな
247nobodyさん:2006/07/11(火) 15:26:53 ID:???
私がお借りしているYellowribbonのサーバをループバックで再現するのが目的なので、各自てきせん変更してください。
ttp://yellow.ribbon.to/~gama/sine/testing/xp-ap-ph4-sq.html

てきせんというのはどういういみですか?
248nobodyさん:2006/07/11(火) 15:30:17 ID:???
信号タイミング修正とはどういう意味か教えて下さい。
249軟式PHP:2006/07/11(火) 15:30:45 ID:???
>>244
もしかしたら、文字コードの設定がおかしいのかも。
ちょっと下のコードを実行して表示されたものをレスしてくれ。
<?php
$strBuff = 'Pj4yNDSky6SipOuk6KSmpMuhoqSzpOykwKSxpOSkw6TGpOKk76SrpOmkzKGjDQqkxKTepOqhorvkpM/Hz7yvpMekoqTroaM=';
$strDec = base64_decode( $strBuff );
header( 'Content-Type: text/html; charset=EUC-JP' );
var_dump( $strDec );
?>
250236:2006/07/11(火) 15:31:10 ID:???
なるほど、ありがとうございます!
251nobodyさん:2006/07/11(火) 15:57:17 ID:???
>>247
適宜を「てきせん」と読んでいるのに何故か変換出来ないという人が文章書いたんだろ。
252nobodyさん:2006/07/11(火) 16:06:54 ID:???
>>251
うむしかしそのページの作者がわざとやっているようには見えない。むしろ天然だろう
253244:2006/07/11(火) 16:07:38 ID:???
解決しました。
.htaccess では設定できないみたいです。
254nobodyさん:2006/07/11(火) 16:18:05 ID:???
>>227
> $_SESSIONにはちゃんと変数が格納されている。

嘘を吐くな。


アホの子の>>135>>205とか>>209を死ぬまで読み直すべきだ。
255nobodyさん:2006/07/11(火) 16:26:50 ID:???
ローカルでLAMP環境構築して色々開発してたけどプロバイダがOutbound Port25 Blocking始めやがった。
mb_send_mail使えなくなっちまったけど、これはもうどうしょうもない?
256244:2006/07/11(火) 16:27:42 ID:???
要約すると、
内部エンコーディングとhttp_outputはソース上から設定できるけど、
http_inputは設定できないので、
postやget等から得られたデータを、
てきせんoutputから内部エンコードにmb_convert_encodingする
というので解決です。
257nobodyさん:2006/07/11(火) 17:10:33 ID:???
>>256
> 1. 自分のIDを表示させること。(メール欄には何も記述しないでください)
を守らないのはわざとですか?
貴方をあぼーんしたいのですが、IDがないと登録しづらいのです。
自己弁護でも何でもこれ以上続けるなら、IDを表示させてください。
258nobodyさん:2006/07/11(火) 17:13:23 ID:???
>>257
本人が解決ですって書いてるからもう解決して何もかかないのでは?
257の発言は皮肉にすぎない
259257:2006/07/11(火) 17:29:42 ID:???
>258
私も最初はそう思いましたが、今までの流れから考えると、
「煽られる→自己弁護」の繰り返しもあり得るかなと。
ですので、「これ以上続けるなら」と前置きを置いています。
135氏がこれ以上書かないのなら、それに越したことはないんですけどね。
260nobodyさん:2006/07/11(火) 17:48:50 ID:???
どこが解決したのかさっぱり分からんのだが、
本人がこれで解決だと言ってるんだからもういいんだろう。
これでやっとスレに平和が戻る…。
261nobodyさん:2006/07/11(火) 18:03:20 ID:???
>>255
誰もコメントしないからしとく。
ISP のメールサーバに転送すれば良いじゃない。
262135:2006/07/11(火) 18:14:40 ID:BuTz0b5N
>>231
遅レスすみません。
ググって文字コードをSJISにしたのですが、代わりはなかったです。

>>249
自分も試してみたところ
string(71) ">>244、ヒ、「、・隍ヲ、ヒ。「、ウ、・タ、ア、荀テ、ニ、筅・ォ、鬢フ。」、ト、゙、遙「サ荀マヌマシッ、ヌ、「、・」"
と表示されました。

263nobodyさん:2006/07/11(火) 18:35:40 ID:???
try {
 $_135->teach(); // 失敗するのは分かっているが・・・
}
catch (Exception $e) {
// $_135->teachAgain(); // 永久ループになるのでやってはいけない
 throw $e;
}
264nobodyさん:2006/07/11(火) 18:44:15 ID:???
>>262
お前それブラウザの文字化け。
ちゃんとEUCはEUCとして読めよ。
265232:2006/07/11(火) 18:44:57 ID:???
>>233
やはりperlを勉強しなければならないようですね・・・
教えていただいてありがとうございます。
266nobodyさん:2006/07/11(火) 18:46:10 ID:???
>>262
ま、とりあえず、君は >>244>>253>>256 ではないのか?
267nobodyさん:2006/07/11(火) 18:47:17 ID:???
>>265
おいおい。PHP のサンプルもあるって書いてあったしょ?
まぁ、そうは言うけど、自分も Perl の方が良いと思う。こういう用途には。
268135:2006/07/11(火) 18:58:19 ID:BuTz0b5N
>>264
ブラウザの文字化けなのですか。
IEでもチェックしてみます

>>266
はい、別人です、

mbstring.detect_order auto auto
mbstring.encoding_translation On On
mbstring.func_overload 0 0
mbstring.http_input auto auto
mbstring.http_output SJIS EUC-JP
mbstring.internal_encoding SJIS EUC-JP
mbstring.language Japanese Japanese
mbstring.script_encoding no value no value
mbstring.substitute_character no value no value

上記の環境でちゃんと動作したので
.htaccessで
php_value mbstring.detect_order auto
php_value mbstring.http_input auto
php_value mbstring.http_output sjis
と指定したのですが、全く変わりません・・・。
サーバー側の問題の可能性はあるのでしょうか。。。
php_value mbstring.internal_encoding sjis
269135:2006/07/11(火) 19:00:31 ID:BuTz0b5N
>>264
IEでアクセスしたところ、同じ文字化けが発生しました。
270nobodyさん:2006/07/11(火) 19:12:09 ID:???
タフなやつだな・・・
どこのサーバー使ってるんだ?
271135:2006/07/11(火) 19:16:00 ID:BuTz0b5N
>>270
ここです。
ttp://nsf.jp/
272135:2006/07/11(火) 19:22:45 ID:BuTz0b5N
>>249
php_value mbstring.detect_order auto
php_value mbstring.http_input auto
php_value mbstring.http_output EUC-JP
php_value mbstring.internal_encoding EUC-JP
と設定したら
string(71) ">>244にあるように、これだけやってもわからぬ。つまり、私は馬鹿である。"
と表示されました。
しかし、他のページが全て文字化けしてしまいました。
全てのページをEUC-JPで統一してみます。
273135:2006/07/11(火) 19:30:36 ID:BuTz0b5N
コードかえまくってたら元々のファイルが文字化けしてしまったorz
これはもうダメかもわかんね
274nobodyさん:2006/07/11(火) 19:34:20 ID:???
まずは日本語の文字エンコーディングとブラウザの操作法について
勉強し直して来た方が良いと思うよ。
275135:2006/07/11(火) 19:46:20 ID:BuTz0b5N
サーバーが糞だということがわかりました。
今までお付き合いいただいてありがとうございました。
276nobodyさん:2006/07/11(火) 19:48:00 ID:???
>>275
いや、サーバは悪くないと思うよ。
277nobodyさん:2006/07/11(火) 19:56:41 ID:???
>>217
おお、readfile()なんて便利な関数があるんでつね!!
試してみます、
ありがとうございます
278255:2006/07/11(火) 20:04:24 ID:???
>>261
php.iniの
SMTPとかsmtp_portあたりをいじるってこと?
279nobodyさん:2006/07/11(火) 20:12:16 ID:6Oy0SlMx
11 Jul 2006 20:08:20 +0900
これって「ユニックスタイム」みたいな名称あるの?
280nobodyさん:2006/07/11(火) 20:30:49 ID:???
C++で書かれたライブラリをPHPで読み込むのはsoファイルをextension_dir下に置くだけでよい?
281nobodyさん:2006/07/11(火) 21:24:28 ID:MzBGXnqG
質問です。
あるfunctionを書きまして、その中にはDB接続する処理が含まれています。
DB接続するためのfunctionは事前に書いていたので、そのfunctionの中で使ったら、うまく動きません。

function hogehoge {
db();←別に定義されてるDBに接続するfunction
以下続く
}

こんな感じです。
functionの中でfunctionを使うにはどうすればいいでしょうか?
functionは全てスクリプトとは別のファイルに書かれています。
順番的にはdb()を先に書いています。
よろしくお願いします。
282nobodyさん:2006/07/11(火) 21:34:50 ID:???
>>281
ふつーは使えるよ。
db() の実装がへぼいだけじゃない?
283nobodyさん:2006/07/11(火) 21:39:17 ID:htholvFi
ini_set()を使って、
"always_populate_raw_post_data"をOnにしたいのですが
falseが返されてしまい設定できません。

ini_set('always_populate_raw_post_data' , ’On');

PHPマニュアルでは可能だと書かれているのですが…。
PHPマニュアルが間違ってるんでしょうか?
284281:2006/07/11(火) 21:42:52 ID:MzBGXnqG
すいません、半分自己解決?しました。

DB接続のfunctionはdbの名前とかが引数になっているんですが、
これらも全部function hogehogeに渡したら通ったんですが、
これで合っていますか?一応動くのですが、無駄なことしてそうで自信がないです...。
285nobodyさん:2006/07/11(火) 21:45:42 ID:???
>>283
最近はなんで出来なかったらすぐ人のせいにするかねぇ…
286281:2006/07/11(火) 21:48:41 ID:MzBGXnqG
>282
レスありがとうございます。
DB()はDBサーバのアドレスとかの接続に必要な情報と、SQL文を一つを引数で渡して、その結果セットをreturnするというものなのです。
引数は全部で5個あるのですが、それを全部function hogehogeの引数に加えたら一応動作しました
挙動としては普通というか当たり前なのかもしれませんが、実装方法としてはあまり効率良くないでしょうか?

287nobodyさん:2006/07/11(火) 21:57:18 ID:???
exam=COMPUTERSYSTEM&num=50GET to /~hoge/end.html not supported.

Invalid method in request exam=COMPUTERSYSTEM&num=50GET /~hoge/end.html HTTP/1.1

とエラーコードがでます。
COMPUTERSYSTEMという文字列をポストして、それに合致するデータがDBに
無い場合は、end.htmlにheader("Location end.html")により
飛ばすようにしているのですが。
headerはpostのときのヘッダが残っていてLocationがくっついて、そんなヘッダ変だよとなって
しまうのでしょうか。
288nobodyさん:2006/07/11(火) 22:00:29 ID:???
>>283
マニュアルのどこさ?

>>286
変数のスコープについて勉強した方が良いですね。
http://jp.php.net/manual/ja/language.variables.scope.php

実装の良し悪しは何とも。それが駄目となるとグローバル変数になっちゃうし
そっちの方が一般的に言えば悪いでしょう。あとはクラスを作るかだね。
289nobodyさん:2006/07/11(火) 22:03:26 ID:???
>>287
いまいち何がなんだか分からんが、Location ヘッダには絶対 URL を指定しなければいけません。
290nobodyさん:2006/07/11(火) 22:16:22 ID:???
>>283
PHPマニュアルを疑う前に自分を疑え。
百年早いわ。
291nobodyさん:2006/07/11(火) 22:22:00 ID:s/pPSXDE
まずは〜について勉強し直してきた方が良いよ

っていうの禁止にしません?
つまんないしうざいだけ。

的を射たのはあるけどほとんどはずしてるし
292nobodyさん:2006/07/11(火) 22:32:11 ID:???
的を得る
293nobodyさん:2006/07/11(火) 22:42:07 ID:???
当を得る
294nobodyさん:2006/07/11(火) 22:44:34 ID:???
>>291
お前が代わりに正しく導いてやれば良いだけのことじゃないか。
勝手に変なルールを作られてもつまんないしうざいだけ。
295nobodyさん:2006/07/11(火) 23:24:03 ID:???
荒れているところすいません。
uniqid()
http://jp2.php.net/manual/ja/function.uniqid.php
は接頭辞無しで13文字のユニークな値を返す、とありますが
もっと短い文字数でユニークを保証する方法、または関数はありますでしょうか?
使用可能な文字はできれば半角英数字(大文字小文字)がいいのですが。
296nobodyさん:2006/07/11(火) 23:41:41 ID:???
uniqidでもcryptでも、出てきた文字をsubstrで切り取ればいいのでは。
同じものが出る確率なんて0みたいなもんだ
297nobodyさん:2006/07/12(水) 00:12:05 ID:67ROEMVu
変数名を動的に指定したいのですが可能でしょうか?

変数名を渡して値を取得する関数を作成しようとしていますが
方法がわかりません。。。

つぎのような感じの関数を作ろうとしています。
function getValue($variable)
{
 $hoge_data = simplexml_load_file('hoge.xml');
 return $article->$variable;
}
298nobodyさん:2006/07/12(水) 00:23:04 ID:???
なんと!
PHPでは変数を使って変数を指定することができるのです。

$a = "hage";
$b = "a";

print ($$b);
299nobodyさん:2006/07/12(水) 00:49:31 ID:???
>>296
プロセスIDと時間を組みあせる方法でも、まあ同じ値になることはないだろう
300nobodyさん:2006/07/12(水) 01:01:27 ID:IbIRSqg8
PHP串ごしに画像掲示板に画像をUPしたいのですが
テキストは送信できても画像がアップできません
socketで送信するときのContent-Typeなどのかき方が悪いと思うんですが
画像はどうやって送ればいいんですか?
301nobodyさん:2006/07/12(水) 01:09:34 ID:???
>>300
今のソース見せれ。
ちゃんとマルチパートを組み立ててんの?
302nobodyさん:2006/07/12(水) 01:11:36 ID:???
$a = getValue('aaa');
とかやるくらいなら
$a = $article->aaa;
ってやりゃいいじゃん。
303nobodyさん:2006/07/12(水) 01:22:40 ID:IbIRSqg8
>>301
画像は$upfileにパスが入ってます
こんな感じで送ってます

$length = "Content-type: application/x-www-form-urlencoded\n";
$length .= "Content-Length: ".strlen($buffer)."\n";
$gazou = "Content-Type: image/jpeg\n";
$gazou .= "Content-Length: ".filesize($upfile)."\n";
//socketで送るデータ
$dat = "$method $path HTTP/1.0\n";
$dat .= "User-Agent: $agent\n";
$dat .= "Referer: $d_ref\n";
$dat .= "Host: $host\n";
$dat .= "Connection: close\n";
$dat .= "$length\n";
$dat .= "$buffer\n\n";
$dat .= "$gazou\n";
$dat .= "$upfile\n\n";
304nobodyさん:2006/07/12(水) 01:32:31 ID:???
>>303
…multipart/form-dataって知ってる?
305nobodyさん:2006/07/12(水) 01:35:14 ID:???
>>302
単なる変数参照じゃなく前後に処理を挟みたいと思ったらメソッドがいるだろう。
306nobodyさん:2006/07/12(水) 01:36:39 ID:???
298じゃだめなの?
307nobodyさん:2006/07/12(水) 01:49:45 ID:???
.htaccessで設定したあと、それを変更できているか確認する方法はありませんか?
308nobodyさん:2006/07/12(水) 02:01:41 ID:???
何を設定したんだい
309nobodyさん:2006/07/12(水) 02:22:34 ID:???
Fatal error: Cannot unset string offsets in

これはunsetできなかったってことですよね?
なぜunsetできないのですか?
310nobodyさん:2006/07/12(水) 03:55:24 ID:IbIRSqg8
>>304
独学なのでさっぱりでした
調べてみましたが
Content-Disposition: form-data; name="message"
こんな感じで送ればいいのでしょうか?
311nobodyさん:2006/07/12(水) 06:10:47 ID:???
>>309
エラーだけ示されてもわかる訳ないでしょ?
昨日テストで答えが間違ってますって言われたんですが、どこがおかしいのでしょうか?
って言われて何と答えるよ?
312nobodyさん:2006/07/12(水) 06:48:05 ID:???
掲示板スクリプトに書き込み内容のプレビューを付けようと思ってます。
フォームから受け取り、プレビューを表示した後の処理で、
プレビューのフォームにhiddenで内容を埋め込むか、セッションを使おうと
思ってますが他になんか良い方法ありますか?
313nobodyさん:2006/07/12(水) 06:57:38 ID:???
>>312
君の言ってる方法が良いと俺は思う。
314nobodyさん:2006/07/12(水) 07:17:19 ID:???
>>312 Ajax
315nobodyさん:2006/07/12(水) 07:25:07 ID:???
>>314
プレビューにAjaxなんかいらんだろう。
そのデータはクライアント上にあるってのに。
316nobodyさん:2006/07/12(水) 07:45:18 ID:???
>>283
PHP4.1.0-4.2.3なら可能
それ以降のバージョンでは出来ない
317nobodyさん:2006/07/12(水) 07:47:01 ID:???
そっとしといてやれ。覚えたての知識をひけらかしたいだけだろう。
Ajaxが一体どういうものかも知らず、JavaScript=Ajaxと覚えてるだけとかな。
318nobodyさん:2006/07/12(水) 07:51:31 ID:???
>>279
RFC****のdate formatとか
319244:2006/07/12(水) 08:33:55 ID:???
>>257
煽られたのでまたきました。

256 244 sage 2006/07/11(火) 16:27:42 ID:???
257 nobodyさん sage 2006/07/11(火) 17:10:33 ID:???
私が解決しましたと書き込んでから40分間以上書き込んでない状況に対して、
「これ以上続けるなら」とはどういう了見ですか?

まるであなたが話しをひっぱって続けているようにしか見えません。
320nobodyさん:2006/07/12(水) 08:42:19 ID:???
http://pc8.2ch.net/test/read.cgi/php/1152251693/
こいつらコッチに丸投げしてぇ
321nobodyさん:2006/07/12(水) 08:43:13 ID:???
322312:2006/07/12(水) 08:57:58 ID:???
>>313
d
今回はセッション使う事にしました。
コメントスパムツール対策にもなりそうなので

携帯もあるのでjsはパスです。書いとくべきでしたね。
323nobodyさん:2006/07/12(水) 09:00:53 ID:???
>>320
反応するとまた書き込んでくるから、何も書かない方がいい。
反応さえしなければ無害だ。
多分お前の書き込みになにかレスしてくるぞ。
324nobodyさん:2006/07/12(水) 10:25:33 ID:???
>>313
どっちがいいんですかね。
Webアプリ作るときいつもそれで迷いますね。。
325nobodyさん:2006/07/12(水) 10:30:02 ID:???
>>324
セッション使え
326nobodyさん:2006/07/12(水) 10:49:04 ID:???
>>323にて、「多分お前の書き込みになにかレスしてくるぞ」
と、320にレスしてくるのを予言されたので、レスせざるをえませんでした。

>>320
誰にでもミスはあるんだ。だからミスを責めることはできない。
327nobodyさん:2006/07/12(水) 12:11:09 ID:/vjOPwv1
mb_ereg_replace()を使用して、URLを<a>タグに置き換える処理を作っています。
そこで、URLの判別に次のようなルールの正規表現を作りたいんですが、なかなかうまく行きません…。

・URLを判定する正規表現
・ただし、「 :;」が含まれている場合は許可しない。

URLを判別する正規表現というのは、

(http:|https:)(\/\/[-_.!~*\')a-zA-Z0-9;\/?:\@&=+\$,%#]+)

で行ってるのですが、「 :;」を除外できません。
どなたかご助言頂けるとありがたいです。
328nobodyさん:2006/07/12(水) 12:19:05 ID:???
>>327
ちったぁ正規表現覚えろよ
ttp://pc8.2ch.net/test/read.cgi/tech/1131028296/
329297:2006/07/12(水) 12:42:04 ID:67ROEMVu
>>298
ありがとうございます。
そのまんま「$hoge_data->$variable」でよかったのですねorz

# $article を $hoge_data に置換し損ねていましたorz
330nobodyさん:2006/07/12(水) 13:45:17 ID:xb5eEiQB
DB::connectの「::」ってなんですか?
331nobodyさん:2006/07/12(水) 13:48:43 ID:???
>>330
特に必要ない、見やすいようにしてるだけ
DBconnectでも大丈夫
332nobodyさん:2006/07/12(水) 13:49:39 ID:???
>>330
クラスとそのメンバを繋ぐ記号。

DBクラス内にある、connect という関数を実行せよということだな。
333nobodyさん:2006/07/12(水) 13:50:26 ID:???
>>331
うそつき!
334nobodyさん:2006/07/12(水) 13:53:19 ID:xb5eEiQB
「->」と「::」の違いはなんですか?
335nobodyさん:2006/07/12(水) 13:54:55 ID:???
>>334
特に違いはない、気分で変えるだけ
m9(^Д^)でも大丈夫
336nobodyさん:2006/07/12(水) 13:56:15 ID:???
注意しなければならいのが、 -> との違いだ。
Foo クラス内の、 func() という static関数を呼び出すときは、
Foo::static だが、

$foo = new Foo(); としたクラスからメソッドを呼び出すときは、
$foo->myFunc();

となる。これは、 $foo は作成されたオブジェクトの参照値(リファレンス)であり、
-> という記号は、デリファレンスすることをあらわす。
337nobodyさん:2006/07/12(水) 13:56:51 ID:???
ここで質問するよりマニュアル読んだ方が多分早くて正確。
338nobodyさん:2006/07/12(水) 14:05:14 ID:???
>>336
ようするにstaticな関数を呼び出したいときにつかうんですね。ありがとうございました。
339nobodyさん:2006/07/12(水) 14:49:48 ID:???
>>333
2chの情報を鵜呑みにすんなよ・・・
金貰ってるわけじゃないから嘘言っても詐欺とかにならないんだぞ
名誉毀損とかなら別だが・・・
340nobodyさん:2006/07/12(水) 16:12:26 ID:hqxdU0Dg
PHPを使って、
他のサーバにあるquicktimeファイル(.movとか)のサイズ(縦・横)を取得することは可能でしょうか?
もし可能なら、教えてください。
341nobodyさん:2006/07/12(水) 16:17:56 ID:???
可能
342nobodyさん:2006/07/12(水) 16:38:42 ID:hqxdU0Dg
PHPを使って、
他のサーバにあるquicktimeファイル(.movとか)のサイズ(縦・横)を取得することは可能でしょうか?
もし可能なら、その方法を教えてください。
343nobodyさん:2006/07/12(水) 17:21:46 ID:???
>>342
可能。
quittimeファイルを読み込んで構造を解析して、縦と横のサイズを取得すればおk。
344nobodyさん:2006/07/12(水) 17:26:05 ID:???
PHPを使って、
他のサーバにあるquicktimeファイル(.movとか)のサイズ(縦・横)を取得することは可能でしょうか?
もし可能なら、その方法を教えてください。
345nobodyさん:2006/07/12(水) 17:27:17 ID:???
可能。まずはサイズ小さめのmovファイルをメモ帳で開け。
346nobodyさん:2006/07/12(水) 17:52:50 ID:???
>>127ですが、>>129,130さんありがとうございました。
347nobodyさん:2006/07/12(水) 18:29:01 ID:BdFa9tBW
PHPを使って

指定したurlからhtmlソースを取得するAPIなどはありますでしょうか?
ありましたら、そのAPI名を教えてください。
348nobodyさん:2006/07/12(水) 18:32:18 ID:???
PHP を使って…、が流行ってるな。
>>347
最近見た話題なので、ログを一通り読めばあるはず。
349nobodyさん:2006/07/12(水) 18:36:07 ID:BdFa9tBW
>347ですが、>348さんありがとうございました。
350nobodyさん:2006/07/12(水) 18:36:10 ID:???
関数じゃなくてAPIでいいんか?
それならPHP APIなんていいんじゃね?
351nobodyさん:2006/07/12(水) 18:41:03 ID:BdFa9tBW
>350さん

すみません。質問の仕方が悪かったです。
APIではなく、関数教えて頂けませんでしょうか?
352nobodyさん:2006/07/12(水) 18:41:51 ID:???
セッションに文字列をキーとして値を代入すると
次のページで保存されてないのは仕様ですか?
353nobodyさん:2006/07/12(水) 18:42:24 ID:???
間違えた、文字列ではなくて数字です
354nobodyさん:2006/07/12(水) 18:43:58 ID:???
察してやれよ。
355nobodyさん:2006/07/12(水) 20:44:26 ID:BdFa9tBW
「abcdefghijk」から「cdef」の文字列を取得する実現方法を
教えて頂けませんでしょうか?
356nobodyさん:2006/07/12(水) 20:52:20 ID:???
くだらん質問ばかりするなよ
自分で考えろ
357nobodyさん:2006/07/12(水) 21:11:44 ID:bxIkUHnK
>>355
http://jp.php.net/manual/ja/index.php
ここに載ってるよ。

てか、ほとんどの質問、ここの関数調べてきゃ普通に一発で行きつくものばっかじゃねーかYO!
くだらない質問というよりも丸投げだろ!
358nobodyさん:2006/07/12(水) 21:12:02 ID:???
俺様は優しいから教える

substr ("abcdefghijk", 2, 4);
359nobodyさん:2006/07/13(木) 00:01:37 ID:???
>>355
その質問は明らかに悪い
何がしたいのかがわからない

元データがはっきりとわかっていて、取得する文字列もはっきりとわかっているのなら
$foo = "cdef";
とか書かれても仕方ないぞ
360nobodyさん:2006/07/13(木) 00:22:14 ID:???
全くだ。
「n桁目〜m桁目までを取り出したいんです」
なのか
「bからgまでの内容を取り出したいんです」
なのか
「cdefって文字があったら取り出したいんです」
なのか、まったくさっぱり。
きみたちゃ小学生レベルかと・・・
361nobodyさん:2006/07/13(木) 00:38:26 ID:4CgVM/D8
レンジリクエストって言葉分かります?
362nobodyさん:2006/07/13(木) 01:11:19 ID:???
>>361
何だその人を馬鹿にしたような聞き方は
363nobodyさん:2006/07/13(木) 01:13:28 ID:???
>>361
PHP関係ないね。Apache辺りのWEBサーバーのスレ行ってみれば?
364nobodyさん:2006/07/13(木) 01:22:32 ID:???
>>361
まずググれ。話はそれからだ。
365nobodyさん:2006/07/13(木) 04:51:44 ID:???
366nobodyさん:2006/07/13(木) 09:16:19 ID:???
>>361
まずククレカレー。チキンラーメンはそれからだ。
367nobodyさん:2006/07/13(木) 18:03:28 ID:4QScch9z
チキンラーメンうめーよ。
368148:2006/07/13(木) 18:58:37 ID:???
>>148
スレ違いだとは思いますが、開発言語がPHPなのでここで質問させてもらいました。
問題を解決するためにどのような情報(header関係だとは思うんですが・・・)を調べればいいのかわかりません。
ヒントだけでもいいのでどなたかわかる方いましたら宜しくお願いします。
369nobodyさん:2006/07/13(木) 19:02:00 ID:???
http://example.com/a/login.php
http://example.com/b/login.php
上記のように「a」と「b」二つのフォルダにそれぞれセッションによる
ログイン認証が必要なスクリプトを置いたとき、「a」でログインした状態で
「b」にアクセスすると、既にログイン済みの状態となってしまいます。

上記の現象は、違うディレクトリ間でセッション・ファイルを共有してしまっている…と
いうことなのだと思うのですが、これってPHPの仕様ですか?
ちなみにサーバはXREA+です。
370nobodyさん:2006/07/13(木) 19:07:50 ID:???
この糞暑いのにチキンラーメンなんかくってられっかよ!
371nobodyさん:2006/07/13(木) 19:20:47 ID:???
>>369
http://jp2.php.net/manual/ja/ref.session.php

> 複数回のアクセスを通じて特定のデータを保持する手段を実現するものです。

逆に聞くが、ディレクトリやファイルが変わった時に
保持されないようなセッション情報に何の価値があると?

まずはログインしているかどうかの判定を見直せ。
372nobodyさん:2006/07/13(木) 19:38:22 ID:???
>>371
そうかねぇ?
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
を限定してあげれば良いと思うよ。
373nobodyさん:2006/07/13(木) 19:44:17 ID:???
忘れてた。
http://jp.php.net/manual/ja/function.session-name.php
で session ID を別々に分けておかないとごっちゃになるよ。
374nobodyさん:2006/07/13(木) 19:49:21 ID:???
ファイルごとやディレクトリごとにアクセス権限が違うような
状況を想定しているのだろうな
375nobodyさん:2006/07/13(木) 19:57:48 ID:???
>>372
それだとCookie無効時に不具合が生じるんじゃ?

セッションデータにユーザレベルなり何なりを組み込んで
そっちで判断した方が良いんじゃないかと思うが。
376nobodyさん:2006/07/13(木) 20:01:30 ID:???
>>375
> それだとCookie無効時に不具合が生じるんじゃ?
あ"? そんなの /a/ と /b/ で分離するとかしないとかに関係ない話じゃん。
そもそも Cookie が無効でもセッション情報が扱えるように
URL に ID 付与とかあるわけで、今回の話題と何の関係が?
377nobodyさん:2006/07/13(木) 20:13:10 ID:???
>>376
  _, ._
(;゚ Д゚)…!?
378nobodyさん:2006/07/13(木) 21:32:54 ID:???
あの・・・素人にも分かりやすいように解説してください
379nobodyさん:2006/07/13(木) 21:45:50 ID:???
>>372
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は呆れていた。




一方ロシアは鉛筆を使った。
380nobodyさん:2006/07/13(木) 21:49:19 ID:???
ごめん。

× 補完
○ 保管
381nobodyさん:2006/07/13(木) 21:51:39 ID:???
382nobodyさん:2006/07/13(木) 21:54:18 ID:???
>>379
> http://example.com/a/login.php?SID=hagehagehogehoge
> のようにURLパラメータとして受け渡す場合に
> http://example.com/b/login.php?SID=hagehagehogehoge
> のようにされるとやっぱりログイン済みになるので>>372の方法は不完全で、
ログイン済みにはならない。>>373 があるから。
383nobodyさん:2006/07/13(木) 22:14:17 ID:???
おーなるほど。そいつはごめん。
384369:2006/07/13(木) 22:16:38 ID:???
>>369です。
皆さんのご意見を参考に、セッションデータに格納するログイン判定用のデータを、
ディレクトリ毎に変えてみたら上手くいきました。

以下のような感じです。
$_SESSION['loginOK'] = "a-logined"; //「a」でログイン成功時に格納するログイン済みフラグ
$_SESSION['loginOK'] = "b-logined"; //「b」でログイン成功時に格納するログイン済みフラグ

今回のような事例に関しては、意外と気付かないでいる人も多いのではないでしょうか?
同じドメインでディレクトリやサブディレクトリ毎に別のWebアプリを置いていて、
ログイン判定データが同じだったら全部のログイン認証が筒抜け・・・というのは盲点でした。

一種のセキュリティ・ホール(?)になりうるので、このスレのテンプレにも入れたらいかがでしょうか?
385nobodyさん:2006/07/13(木) 22:25:36 ID:dYQP4E5n
<form action="<? $_SERVER['PHP_SELF'];?>" method="post" enctype="multipart/form-data" name="form1" id="form1">
<label>
<input type="file" name="upfile" size="35" />
</label>
<label>
<input type="submit" name="Submit" value="送信" />
</label>
</form>
<?

if($_POST['Submit'] == "送信"){

echo $_POST['upfile']:

}
?>

アップローダーを作ろうと思っているのですが、
上記のようにしても、upfileには何も格納されないのです。
どうすれば格納されるようになるのでしょうか?
386369:2006/07/13(木) 23:03:37 ID:???
追記です。
さらに実験してみたところ、
仮にログイン判定用のセッション・データ(>>384で書いたログイン判定フラグ)が全く同じ場合でも、
session_name('a');
session_name('b');
などのようにsession_nameをディレクトリ毎に分けて設定する(毎回session_startの前にコールする)という方法でも
大丈夫だということが分かりました。
387nobodyさん:2006/07/13(木) 23:28:13 ID:???
当たり前のように
$_SESSION["siteA"]["色んな情報"] = ...
$_SESSION["siteB"]["色んな情報"] = ...
ってやってたけどこれじゃ何か問題あるの?
388nobodyさん:2006/07/14(金) 00:04:24 ID:???
>>387
実際にテストしてみれば??
389nobodyさん:2006/07/14(金) 01:29:17 ID:???
テキストファイルの最後の行1行だけ削除したいんですが
一度、全ての行を、変数にいれて、
最後の行だけを除いて、保存するというやり方しかないんでしょうか?

テキストファイルがでかくなるとメモリの消費が辛いんですが、変数を節約するいい方法を教えて下さい
390nobodyさん:2006/07/14(金) 01:33:50 ID:???
>>389
1行のデータ量が決まってるならシークしてやればいいがそうでないなら無理。
DB使え
391nobodyさん:2006/07/14(金) 03:23:20 ID:???
>>389
やりようはあるよ
ftellで場所を記憶しながらfgetsで取得していって
最後にftruncateでいける。

行の長さがある程度予想つくならば、最初にfseekしてパフォーマンスを上げられる。
392nobodyさん:2006/07/14(金) 03:27:25 ID:???
>>389
最終行の先頭位置さえ分かればftruncate()で以降を削除できる。

最終行の位置を探すには
1.頭から1行ずつ読み込んでいって行末のftell()を保持しながら最後まで探していく
2.fseek()でファイル末尾に移動して1文字ずつ後ろから読み込んでいって1つ前の行末を探す
3.fseek()でファイル末尾から1行以上の分量だけ戻った位置に移動してそこから行単位に読み込む
などのアルゴリズムが考えられる。
3番は1行の最大長が分かってる場合は比較的有効。これが全然不明だと
100バイト戻って探索→ダメだったらさらにもう100バイト戻って…みたいになって大変。
この辺は対象ファイルのでかさなどからどこまで手間をかけるべきかを自身で判断しる。
処理時間は問題にならず単に消費メモリ量だけの問題なら1番で十分対応できる。

この種の末尾削除処理が頻繁に発生するなら、そもそもファイル書き込みの段階で
各行の先頭位置をインデックスファイルとして別途保存するか
そもそもファイルなんてやめてDB使った方がいい。
393nobodyさん:2006/07/14(金) 03:29:28 ID:???
>>389
あと、全部丸ごと変数に入れなくても、
1行読み込み→その行を別のファイルに出力
というのを行単位に繰り返していって、
最後に元ファイル削除&別のファイルをリネーム、
って手順でも単純ながらメモリはほとんど食わずに処理できる。
でも、分量が多いならftruncate()の方が処理が軽いけどね。
394nobodyさん:2006/07/14(金) 04:07:43 ID:rjc2oM/K BE:208593465-#
マルチバイト文字をsjisコード(8進)に変換したいのですが、
どうやればいいでしょうか?

"あ" を "202 240"
"犬" を "214 242"

というふうにです。
ご存じの方がいればよろしくお願いします。
395nobodyさん:2006/07/14(金) 04:19:14 ID:???
>>394
$c = "あ";
$o = decoct((ord($c{0])) . " " . decoct(ord($c{1}));
echo $o;
396nobodyさん:2006/07/14(金) 05:37:32 ID:???
>>384>>386
言われてみて自分の管理してるサイト調べてみたら、
別々のシステムなのにログイン情報(セッションファイル)が共通になってた…orz
397nobodyさん:2006/07/14(金) 07:08:44 ID:???
398nobodyさん:2006/07/14(金) 11:50:58 ID:uuZ6ZGyp
$fp=fopen("test.txt","w");
fwrite($fp,'こんにちわ');
fclose($fp);

上記のようにファイルを作成する際に、
文字コードをUTF8に指定するには
どう記述すればいいんでしょう???
399nobodyさん:2006/07/14(金) 11:55:52 ID:???
>>398
「こんにちは」が UTF8 になっていれば UTF8 になる。
ファイルに文字コードという属性はない。
400nobodyさん:2006/07/14(金) 12:12:07 ID:???
fwrite($fp, mb_convert_traditional('こんにちわ', 'UTF-8', '内部エンコード'));
401394:2006/07/14(金) 12:26:35 ID:???
>>395
ありがとうございました。後で試してみます。

それで、逆を聞くのを忘れていました。

"202 240" を "あ"
"214 242" を "犬"

というパターンです。よろしくお願いします。
402nobodyさん:2006/07/14(金) 12:34:40 ID:???
>>401
「decoct」って関数を示されているわけだから、マニュアル読めば関連項目とかで
見つけられそうだ、とは思わないのでしょうか?
http://jp.php.net/manual/ja/function.decoct.php
403nobodyさん:2006/07/14(金) 12:36:45 ID:???
ごめん。「ord」の方だった。
404nobodyさん:2006/07/14(金) 12:45:47 ID:???
405nobodyさん:2006/07/14(金) 12:56:23 ID:Gr8Njl8B
マルチバイト文字列関数で正規表現の検索を行う場合、
内部エンコーディングって何が適当ですか?
406nobodyさん:2006/07/14(金) 13:14:14 ID:???
EUC-JP
407nobodyさん:2006/07/14(金) 13:52:59 ID:mRNg6YQD
SJIS
408nobodyさん:2006/07/14(金) 14:00:17 ID:???
UTF-8
例外が少ない
409nobodyさん:2006/07/14(金) 14:05:42 ID:???
>>405
そのサーバで使えるならUTF-8が安定してていいと思う
使えなきゃEUC-JP
Shift-JISはカタカナのソとかで面倒だから使わない方がいい
ちなみにコレはPHP書くときの文字コードの話ね
正規表現使うときはデータに合わせて正規表現の文字コードを指定するよろし
410nobodyさん:2006/07/14(金) 16:39:54 ID:???
PDOを継承したクラスHogePDOにて、DB1への接続に失敗したら
DB2へ接続するといった処理を行わせようとしているのですが、
HogePDOのコンストラクタでPDOのコンストラクタを2回呼び出し
ても問題ないでしょうか?

class HogePDO extends PDO
{
 //DB1接続挑戦
 parent::__construct(DB1の設定);
 if( DB1接続失敗? )
 {
  //DB2接続挑戦
  parent::__construct(DB2の設定);
 }
}
411nobodyさん:2006/07/14(金) 16:44:17 ID:???
>>410
試して出来たら問題ない
412nobodyさん:2006/07/14(金) 16:55:10 ID:EKwqojz9
Google Web API のようにGETクエリでXML出力してくれる辞書サービスはないでしょうか?

こんな感じで 'PHP' を辞書から(国語、英和、和英)検索
ttp://dictionary.goo.ne.jp/q=PHP
413nobodyさん:2006/07/14(金) 17:08:35 ID:???
//www.sanseido.net/
414nobodyさん:2006/07/14(金) 17:17:08 ID:???
あるけど有料しかねえよなあ、海外であったとしても日本語はサポートされてないだろうし
てことで三省堂しか選択肢ないんじゃないかな
415nobodyさん:2006/07/14(金) 17:35:29 ID:LYbOhGxK
Win2k+Apache2.2+PHP5.1.4で環境作ろうとしているのですが、
こういうのを参考にインストールしてみました。
http://www.bnote.net/windows/windows/win_php.shtml

Apacheのhttpd.confの
LoadModule php5_module c:/php/php5apache2.dll
があると、Apacheが起動しません。
これをコメントアウトするとApacheが起動できて、htmlは見れます。

PHPはコマンドライン版は動くのですが、
起動しない理由のヒントをください。
416nobodyさん:2006/07/14(金) 17:39:26 ID:???
417415:2006/07/14(金) 18:02:38 ID:???
>> 416
おおありがとう!

> 注2)apache_2.x.x系は、今回は使用しません。
> PHP4とApache2の組み合わせは現時点ではお奨めできません。
PHP5を使いたいのにっ _| ̄|○
Apache2.2か!?Apache2.2がだめなのか!?
418nobodyさん:2006/07/14(金) 19:41:12 ID:vYtz7wst
$lines = file($filename);
をした後で、$linesにhogeという文字が入っている行のみを見つけ出すには
どうすれば良いですか?正規表現を使うのかなぁという気がするのですが
正規表現を使った経験がなく、どうしたらよいのか方法を教えてください。
419nobodyさん:2006/07/14(金) 19:45:43 ID:???
foreach ($lines as $line) {
 if (preg_match('/hoge/', $line)) {
   print("Hit!!\n");
 }
}
420nobodyさん:2006/07/14(金) 19:55:06 ID:???
>>418
この質問、かれこれ10回近く見るぞ
釣りか?
421ぬこえもん(=・ω・) ◆S715eQBvs6 :2006/07/14(金) 20:25:24 ID:Rg3ieVQg
どんどん語句に関する情報を追加していく辞書ツールみたいのをPHPで構築しようかと思ってるのですが
辞書順に配列するために何かよいアルゴリズムは無いでしょうか??
422nobodyさん:2006/07/14(金) 20:31:27 ID:???
>>421
語句の格納先はDB?それともテキストファイルとか?
それとも独自のバイナリ?
423nobodyさん:2006/07/14(金) 20:49:28 ID:???
htmlにアクセス解析を埋め込みたいのですが、
iframeを使うとリンク元がそのページになってしまいます。
何か良い方法はないのでしょうか?
(スレ違いならすみません。)
424nobodyさん:2006/07/14(金) 20:51:23 ID:???
>>423
.......
<img src="http://hoge.com/hogehoge.php" />
425ぬこえもん(=・ω・) ◆S715eQBvs6 :2006/07/14(金) 20:53:09 ID:Rg3ieVQg
>>422
ごめんなさい、言い忘れてました

テキストファイルだとかに生ファイルとして書き込みしようかと考えています。
それだとソフトウェアで再生することもできますし。

DBではこんなこと考えなくてもいいのかもしれませんね
426nobodyさん:2006/07/14(金) 21:03:00 ID:???
>>424
ありがとうございます。
試してみたところ、カウントされる様子はないのですが・・・
427nobodyさん:2006/07/14(金) 21:05:37 ID:???
>>425
textだとまず該当する語句がそのファイル内にあるかどうかの
真偽を判定しなきゃならんが、語句の数が多くなってくるとPHP標準の
関数で配列とかに読み込むとメモリ食うし、ソート処理も時間かかる。
DBにまかせた方がベター
どうしてもtextでやるんなら力任せ検索で真偽判定して偽であれば追加、
っていうのが面倒くさくなさそう。Boyer検索とかもあるけど。
428nobodyさん:2006/07/14(金) 21:18:26 ID:???
>>423
リファラが欲しいなら、JavaScriptを使って
画像なりを出力するサーバースクリプトに引数として渡して呼び出すか
HTMLをPHPとして実行できるように設定するかの
どちらかかな。

429426:2006/07/14(金) 21:18:30 ID:???
ちなみにタグは
<img src="./count/count.php" width="0" height="0" />です。
430ぬこえもん(=・ω・) ◆S715eQBvs6 :2006/07/14(金) 21:50:14 ID:Rg3ieVQg
>>427
そうですか・・・・
やっぱりそれしかないのですね・・・・

構築できたらそれだけでDBソフトとして利用できそう
431nobodyさん:2006/07/14(金) 21:53:15 ID:3oB/DzeI
え?何でiframeとか使うの?
432nobodyさん:2006/07/14(金) 22:38:02 ID:???
>>430
・単語単位にファイルを作る
とか
・記録は登録順にしておいて各単語の順番を保持するindexを作る
とか
・1行の長さを固定にするか行の位置をindexに記録しておいて自由に挿入削除可能にする
とか。
ちなみにテキストファイルじゃないけど固定長レコードで高速キー検索できるようにした
ファイルを使ったDBもどきとしてはdbmというのが既にある。Perl辺りじゃ標準装備。
433nobodyさん:2006/07/14(金) 22:39:39 ID:???
>>420
同じ学校の生徒が揃って宿題片付けにきてるんじゃね?
434nobodyさん:2006/07/14(金) 22:43:12 ID:???
>>402
彼らは「仕組みを知りたい」んじゃなく「こうやったらこうなる」という
結果が出てくる方法だけをケーススタディとして知りたいだけなんじゃないかなー。
WEBから入ってJavaScriptのサンプル集とかでしかプログラムしたことないやつには多そう。
もしも「そんなことはない!」というなら漏れなく消防レベルの知能指数と断定してやろうw
435nobodyさん:2006/07/14(金) 22:48:12 ID:???
そんなことわない!
436ぬこえもん(=・ω・) ◆S715eQBvs6 :2006/07/14(金) 23:17:25 ID:Rg3ieVQg
>>432
はあくしました
サンクスです
437nobodyさん:2006/07/14(金) 23:31:36 ID:???
>>418
複雑な条件を探すんならともかく、単にhogeって単語を探すだけなら
正規表現は使わない方が速いし確実。
strpos()使え。
438nobodyさん:2006/07/14(金) 23:35:14 ID:???
phpでhotmailの登録画面みたいな画像チェックコードを使用した認証みたいなものって
作れますでしょうか?
phpですとなかなか資料が見当たらなくて・・

perlだと「ひみこーど」?というのがあるみたいですがphpで可能でしょうか
439nobodyさん:2006/07/14(金) 23:54:51 ID:???
画像認証は視覚障害者にあまりにも不親切だからいずれ廃れると思うけどね。
440nobodyさん:2006/07/14(金) 23:55:40 ID:???
>>438
可能です
441nobodyさん:2006/07/15(土) 00:04:59 ID:???
442nobodyさん:2006/07/15(土) 10:01:30 ID:???
>>418-419
preg_grep というすばらしい関数がある。

$mutches = preg_grep('/hoge/', $line);
443nobodyさん:2006/07/15(土) 10:02:55 ID:???
grep は、perlだと、正規表現だけでなく条件の真偽を元に配列を返えす使い方もできるんだが、
PHPだと無理?
444nobodyさん:2006/07/15(土) 10:54:50 ID:???
>>443
無理じゃね?PHPの関数はそういう本来の用途外に使うような汎用性は持たせない作りになってるし。
445438:2006/07/15(土) 11:03:38 ID:???
>>441
おおっありがとうございます!!!!
感謝です!
446nobodyさん:2006/07/15(土) 12:13:33 ID:DUyjY8jk
ある条件(ゲームに勝つ等)をクリアした者だけにファイルをダウンロードさせるスクリプトを書こうとしてます。
phpをCGI(Suexec)で動かして、ダウンロードさせるファイルのパーミッションを400にし、↓のようなスクリプトでダウンロードさせようと考えています。

if(ある条件をクリアしたら){
 header("Content-Disposition: inline; filename=\"".basename($path_file)."\"");
 header("Content-Length: ".$content_length);
 header("Content-Type: application/octet-stream");
 if (!readfile($path_file)) {
  die("Cannot read the file(".$path_file.")");
  }
 }

この場合、ダウンロードさせるファイルは、99%不正にダウンロードされないと思っていいのでしょうか?
あと、他にパフォーマンスやセキュリティ面で勝る方法があれば、教えていただけるとありがたいですm(_ _)m
447nobodyさん:2006/07/15(土) 12:16:29 ID:???
>>446
$path_fileとかいうのがDOCUMENT_ROOT以下に置いてないんなら
まー不正ダウンロードされることはないっしょ。
あとはそのif条件を不正に成立されたりしないかくらいでないの?
448nobodyさん:2006/07/15(土) 12:28:11 ID:???
>>447
レスありがとうございます

DOCUMENT_ROOT以下においた場合はかなり危険ですか?
449nobodyさん:2006/07/15(土) 12:41:31 ID:???
>>448
パーミッション400なら大丈夫じゃないかな
ついでに.htaccessで制限しとけば
450nobodyさん:2006/07/15(土) 12:46:12 ID:DUyjY8jk
>>449
安心しました。ありがとうございますm(_ _)m
念のため.htaccessも使おうと思います
451nobodyさん:2006/07/15(土) 13:19:27 ID:dl9oNIQi
>>443
そういうのはarray_filterとかarray_reduceだと思うけど、grepと比べたら使い勝手は悪いかも。
452nobodyさん:2006/07/15(土) 13:35:16 ID:???
つか、全般的にPHPの関数は融通という意味ではPerlほどの使い勝手は無いよ。
PHPの関数はあくまでC言語ライクだが、Perlの関数はシェルスクリプトライクなわけで。
でも、だからこそ誰が書いても比較的一定のコーディングスタイルを保ってられるんだと思うけどね。
453nobodyさん:2006/07/15(土) 14:37:30 ID:RYeH9Y82
 PHPの文字コードについて質問なのですが、どなたか教えて頂けますでしょうか。
環境は、SunCobaltRedHatLinux7.0+PHP5.0.4+nkf2.0.4です。
「ココ,ココリコ,ココ数」とだけ書いたsample1.csvをUTF-8(改行コードCR+LF)
で作成します。そして、test1.phpというファイルをUTF-8(改行コードCR+LF)で
作成し、<input type="file"〜>でファイルアップロードが出来、fgetcsvで、
アップロードしたCSVファイルの要素を取得出来るように、test1.phpに記述します。
test1.phpに、
list($field1,$field2,$field3)=fgetcsv(アップロードしたファイル名);
print("1番目".$field1."2番目".$field2."3番目".$field3);
と書くと、
「1番目??コ2番目??コリコ3番目??コ数」
と、先頭の文字が「??」に文字化けしてしまうのです。この原因は、どなたかお分
かりでしょうか?先頭の「コ」以外は文字化けしていないので、「コ」という文字
が原因ではないと思います。test1.phpの先頭に「mb_internal_encoding();」と書く
と、「ISO-8859-1」と出て来ました。これが原因かと思って、
「mb_internal_encoding("UTF-8");」としたのですが、やはり同じ文字化けのままでした。

 ちなみに、他のPCにFedoraCore2+PHP5.0.4+nkf2.0.4をインストールし、全く同じ(!)
sample1.csvとtest1.phpで試した結果、「1番目ココ2番目ココリコ3番目ココ数」と
なり、正しく表示されました。けれども、本番機はSunCobaltRedHatLinux7.0で動いて
いますので、本番機の文字化けを直さなくてはならないのです。どなたかお分かりで
しょうか?教えて頂ければ、幸いです。
454nobodyさん:2006/07/15(土) 14:47:39 ID:???
>>453
とりあえず、サーバにアップロードした後のcsvファイルを確認してみて、
異常がないか調べてみれば?
455232:2006/07/15(土) 14:50:39 ID:???
preg_match_al関数で質問があります。

<?php
preg_match_all("|<[^>]+>(.*)</[^>]+>|U",
"<b>example: </b><div align=left>this is a test</div>",
$out, PREG_PATTERN_ORDER);

print_r($out);

?>

以上を実行すると以下の配列が出力されます。

Array ( [0] => Array ( [0] => example:
               [1] => this is a test
     [1] => Array ( [0] => example:
              [1] => this is a test ) )

これだと配列が取り出しにくいので

Array ( [0] => example:
      [1] => this is a test )

↑こんな感じに$outに配列を格納することは出来ませんか?
456nobodyさん:2006/07/15(土) 14:51:40 ID:???
>>453
mbstring.language は何になってんの?
457nobodyさん:2006/07/15(土) 14:57:03 ID:???
>>455
単に $out = $out[0]; しちゃダメなの?
458nobodyさん:2006/07/15(土) 15:16:53 ID:RYeH9Y82
>>453です。

>>454様。>>456様。ご返答、ありがとうございます。
今、本番機から離れた所にいますので、数日経ちましたら、調べて
みます。
ちなみに、>>454様のおっしゃる通り、「サーバにアップロードした
後のcsvファイルが異常」だとしたら、どのようなことが原因なの
でしょうか?普通に<input type="file" 〜>と書いているだけなの
ですが、それでもアップロードが異常になることがあるのでしょうか?

また、>>456様のおっしゃる通り、「mbstring.language」が原因だと
したら、「mbstring.language」はどのように設定すべきなのでしょう
か?「mbstring.language」が「neutral」であれば「Japanese」に変え、
「mbstring.language」が「Japanese」であれば「neutral」に変えてみ
るのが良いのでしょうか?
459nobodyさん:2006/07/15(土) 15:22:14 ID:???
>>458
商業でスクリプト組んでんのに、自分で試してから聞け
460nobodyさん:2006/07/15(土) 16:40:47 ID:47sj2xHF
arrayに入っている12の文字列の順番をランダムで入れ替えたいのですが、
どのようにすればよいのでしょうか?

array("1番目","2番目","3番目","4番目","5番目","6番目","7番目","8番目","9番目","10番目","11番目","12番目");

[0]1番目
[1]2番目
[2]3番目
[3]4番目
[4]5番目
[5]6番目
[6]7番目
[7]8番目
[8]9番目
[9]10番目
[10]11番目
[11]12番目

[0]1番目
[1]2番目
[2]5番目
[3]6番目
[4]1番目
[5]12番目
[6]7番目
[7]8番目
[8]10番目
[9]9番目
[10]8番目
[11]11番目

並び方はランダムでお願いします。
461nobodyさん:2006/07/15(土) 16:45:20 ID:???
>>460
そこまで書いてやり方が思いつかないのか?
462nobodyさん:2006/07/15(土) 16:54:57 ID:???
>>460
この問題は配列がというより、
非復元抽出で番号が書いたタマを取り出していく考えでいけばいいな。
463nobodyさん:2006/07/15(土) 17:16:36 ID:dl9oNIQi
いくらくだ質でも、マニュアルの索引だけ見ても答えが出るのは勘弁してほしいね。
464nobodyさん:2006/07/15(土) 17:17:14 ID:???
関数一個だな
465nobodyさん:2006/07/15(土) 17:20:39 ID:???
とりあえず、今は使わない関数でも、マニュアルは一通り全部読んでおいた方がいいよ。
あとで使うときになって「そういえば、こんなような関数どっかにあった気がする」と気づくから。
466nobodyさん:2006/07/15(土) 17:21:35 ID:???
>>457
ありがとうございます
467nobodyさん:2006/07/15(土) 17:24:55 ID:???
要素が10個入った配列から、要素を5つ表示したいと思っています。

しかもランダムに、値が重複しないように表示したいのですが、
どういった関数を利用すればいいんでしょうか?
468nobodyさん:2006/07/15(土) 17:29:25 ID:???
標準じゃないから、重複しないように、ランダムに5個抽出する関数を作ればいいと思うよ。
469nobodyさん:2006/07/15(土) 17:31:05 ID:???
ああ、ちょっと不親切だった気がするので
array_rand
array_slice
とか使って書きなはれ。
470nobodyさん:2006/07/15(土) 17:34:47 ID:???
array_randじゃなくてshuffleだったわ。
471nobodyさん:2006/07/15(土) 18:01:13 ID:???
プログラミングとは結果を得るための手順を考えることだ。
手順さえ思いつけば8割がた出来たも同じ。後は利用する
プログラミング言語の文法に従って書けば良いだけだからな。

その手順を考えることを放棄するような奴ってなに考えてるんだろうね?
この世に不要なんだよ。存在自体が。

ここはくだ質スレだが、こういう結果が欲しくてこういう手を考えたが
もっとスマートな方法は無いか?とかどういう関数が使えるか?
ちうことを聞くところだ。
考えることを放棄するような奴はイラネ。うせろ。
472nobodyさん:2006/07/15(土) 18:36:26 ID:???
>>471
詰まるところここはゴミプログラマ養成所なんだよ
473nobodyさん:2006/07/15(土) 20:42:33 ID:???
ifで「昨日以前なら」で条件を作りたいのですが、
date(Ymd,strtotime("-1 day"))
これは昨日限定ですよね?
昨日以前というのは指定できないのでしょうか?
474nobodyさん:2006/07/15(土) 21:42:58 ID:???
>>473
日付で比較すれば良いだけだろ?
475nobodyさん:2006/07/15(土) 21:53:38 ID:???
UNIXタイムを使え。
476nobodyさん:2006/07/15(土) 22:31:25 ID:QlSeqY/9
PHP5でグローバルに参照する定数を使いたい場合、

・ファイルにしてインクルードする
function foo()
{
  include( "globals.php" );
  echo $var;
}

・クラスにして参照する
class CGlobals{
  static $var = 123;
}
function foo()
{
  echo CGlobals::$var;
}

・$GLOBALSを使う
function foo()
{
  echo $GLOBALS['var'];
}

のどれが好ましいでしょうか
もしくはこれ以外にもっと好ましい方法がありますでしょうか
477nobodyさん:2006/07/15(土) 22:34:02 ID:???
>>476
グローバル変数を使うような処理を書くな
478nobodyさん:2006/07/15(土) 23:56:56 ID:???
>>476
定数ならdefine()のあれをまず考えて
次に2番目のクラスにして参照する方法かな
479nobodyさん:2006/07/15(土) 23:57:29 ID:sY8c/3Bb
mb_ereg_search_regs関数の使い方についての質問です。

$str="aa<a>bb</a>aa"

$strから<a></a>に挟まれた文字列を
取得したいのですが、
どう記述すればいいでしょうか?
サンプルソースを頂けないでしょうか。
480nobodyさん:2006/07/16(日) 00:08:15 ID:???
>>479
まずはどうやって失敗したかを書いてくれ
481nobodyさん:2006/07/16(日) 00:16:25 ID:???
echo <<< HTML
aaa<br>
bbb<br>
ccc<br>
HTML;

これのような出力を一気に配列に入れる方法を教えてください。
482479:2006/07/16(日) 00:25:47 ID:???
>>480
こんな感じで書いたら

<?php

$str="aa<a>bb</a>aa"
$a_resulet=mb_ereg_search_regs("<a>*</a>",$str);

?>


こんなんになりました

Warning: mb_ereg_search_regs() [function.mb-ereg-search-regs]: No string given in /usr/local/apache2/htdocs/test.php on line 4

483nobodyさん:2006/07/16(日) 00:42:48 ID:???
>>482
そのソースを丸々コピーしたら俺の環境ではsyntaxエラーだ
484nobodyさん:2006/07/16(日) 00:45:50 ID:???
>>481
ob_start();
echo <<< HTML
aaa<br>
bbb<br>
ccc<br>
HTML;
$array = explode("\n", ob_get_contents());
//$array = preg_split("/\r\n|\r|\n/", ob_get_contents());
ob_end_clean();

print_r($array);
485nobodyさん:2006/07/16(日) 02:33:24 ID:???
explodeやsplitでcsv形式のデータを配列に格納しようとしてるんですが、
データの中にカンマが含まれている場合、そこで配列の項目として切っちゃいますよね?

そういう場合は本業プログラマさんは普通どういう方法で処理するものなんでしょうか?
よろしくお願いします。
486nobodyさん:2006/07/16(日) 02:55:40 ID:???
まだ学生で本業じゃないけど普通に考えて別の文字に置き換えるでしょ
別に決まりはないはず
たとえば単純に2byte文字「,」にするとか
特殊文字「&#44;」(&amp;#44;)にするとかね
487nobodyさん:2006/07/16(日) 02:57:42 ID:???
>>485
普通は処理がしやすいようにデータフォーマットを作る。
例えばタブ区切りにするとか。

CSVつうてもエスケープのしかたで何種類かあるので
既存のデータなら、それに合わせて処理する。
EXECLの吐くやつとかだと処理ライブラリもあるけど
上手くいかないことも。
488nobodyさん:2006/07/16(日) 03:20:47 ID:???
CSV形式も方言がいろいろあるが、 " で囲めば間違いない。
というか、変な置き換えをするのはウンコ。
置き換えは " だけ。"" と2回連続させる。
489nobodyさん:2006/07/16(日) 04:14:19 ID:???
>>485
区切り文字には気をつけろ!
カンマ区切りの場合「ソ」の直後に「"」が来るとバグる関数がある(fgetcsvとか)

まぁ、そういうところを考えるのもプログラミングの楽しいところだな
・・・苦しむところでもあるが
490nobodyさん:2006/07/16(日) 04:25:50 ID:???
>>471
>>473 みたいのが全てを表してると思う。
彼らはコーディングをアルゴリズムとは思っておらず
「指定すれば指定した通りの結果が出てくる」という
PHPを単なるツール、アプリケーションの操作と勘違いしている。
491nobodyさん:2006/07/16(日) 04:28:48 ID:???
コーディングはアルゴリズムじゃないだろwwwwwwwwwwwwwwww






言いたい事は分かるけどね。
492nobodyさん:2006/07/16(日) 04:33:07 ID:???
彼らが知りたいのは公式と解法テクニックであって
そこに至るまでの考え方など無用の長物なのだ
493nobodyさん:2006/07/16(日) 05:18:14 ID:???
>>471 >>490-492
よかった。まだ俺と同じ考えのヤツがいたんだ。
このスレ、だんだん丸投げスレになってきたんでどうしようかと思ってた。
494nobodyさん:2006/07/16(日) 05:31:42 ID:???
くだ質ってそういうもんでしょ?
答えたくないなら答えなくても良いし
495nobodyさん:2006/07/16(日) 05:45:48 ID:???
>>494
>>471
つか、オマエ質問してる方だろ
496nobodyさん:2006/07/16(日) 05:51:09 ID:???
そうですが、何か?

もっとも質問したのは1回だけですけど。あとはたまに覗いてます
497nobodyさん:2006/07/16(日) 05:54:51 ID:???
>>494
レベル低い質問と、自分では考えないから全部お任せでお願い、は全然意味違うぞ
498nobodyさん:2006/07/16(日) 06:27:22 ID:???
UTF8で保存したindex.phpから同じくUTF8で保存したhoge.logをfile( )で読み込んで、
print_rで出力すると何故か文字化けしてしまいます。

ブラウザのエンコードをUTF8に指定すると直るのですが、
いちいちそんなことしないでも普通に表示させたいのですが…。

<meta http-equiv="Content-Type" content="text/html; charset=utf8">

というメタをつけて文字コードを指定してるのですが上手くいきません。
どなたかよろしくお願いします。
499nobodyさん:2006/07/16(日) 06:34:03 ID:???
>>498
META指定よりヘッダーで出力されてる文字コード指定の方が優先で
多分それがSJISかEUCにでもなってんでしょ。
php.iniで出力文字コードの指定があるから設定してみ。
header()使って自分で出力するのでもアリかもね。
500nobodyさん:2006/07/16(日) 06:56:25 ID:???
utf-8 じゃね?
501nobodyさん:2006/07/16(日) 12:57:48 ID:xiYRHM+h
FC5をインストールしたのですが
RPMのPHPはmbstringが組み込まれていないようです。
RPMは捨てて自分で入れ直すしかないですか?
502nobodyさん:2006/07/16(日) 13:09:36 ID:???
>>501
srpm の spec ファイルを編集してリビルドすればo.k.

それか野良rpmを探すか。
自分ならソースから入れるね。
FreeBSDならports使うけど。
503nobodyさん:2006/07/16(日) 13:22:28 ID:???
yumで入れればmbstringが入っている筈だが。
504nobodyさん:2006/07/16(日) 13:28:45 ID:???
>>501
FC5にあるのか知らんが、php-mbstringパッケージ
505501:2006/07/16(日) 13:38:45 ID:???
>>502-504
レスありがとうございました。
アンインストールしようとしていたのですが
mbstringのパッケージをインストールしたら無事使えるようになりました。
506nobodyさん:2006/07/16(日) 14:59:52 ID:5V0Lpe7K
本当にくだらない質問で申し訳ないのですが

最近はやりのスクロールにあわせて上下するフロートメニューを
PHPだけで作るコトってできますでしょうか?
縦に長いページの中でどこがブラウザに表示されてるのか取得して
画像を動かすことができれば作れそうですよね。

PHPでできるかな?

ttp://www.ws-company.jp/1f_info.php
↑ちなみにこんなやつです。ここのはJAVAで作ってるみたいですね
まあ、JAVA使ってもいいんだけど…
507nobodyさん:2006/07/16(日) 15:02:08 ID:???
すごい下らない質問でも、今までがんばって駄目だったのが伝わってくるのなら答える。
508nobodyさん:2006/07/16(日) 15:02:19 ID:???
>>506
PHPだけなら無理。Javascriptも絡ませるなら可能
509nobodyさん:2006/07/16(日) 15:04:56 ID:???
PHPだけというか、PHPでやる必要がないよな。
510nobodyさん:2006/07/16(日) 15:12:40 ID:???
>>499
>>500
だめでしたー、php.iniを触れる環境にないためheader( )で出力する設定にしたんですが
文字化けなおりません。

<?
header("Content-type: text/html; charset=UTF-8");

echo <<< EOF
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title></head>
<body>
EOF;

$rec = file("hoge.log");

print_r($rec);

echo "</body>\n</html>";
?>

がコードです。
ひとつ気になるのは出力されたものをブラウザで「ソースの表示」をしてみると
「ファイルに含まれていたnull文字はスペースに変換して開きます」
というアラートが出てくることです、ここに何か糸口が…?
511nobodyさん:2006/07/16(日) 15:26:00 ID:???
>>506
Java じゃない。JavaScript ね。しかも Firefox では正常動作していなかった。
PHP なんぞなくても、ふつーの HTML + JavaScript で終了。
512nobodyさん:2006/07/16(日) 15:38:50 ID:???
Javascript使わないと見れないページってうざいよ・・・
513506:2006/07/16(日) 15:49:07 ID:5V0Lpe7K
いま、上のサイトのソースいろいろいじっててふと思ったけど
PHPでできたとしても、いっぱいの人がアクセスしたら
サーバーに負担かかりすぎちゃって話にならなそう?

やっぱり、クライアントサイドでやらないとだめかな?

514nobodyさん:2006/07/16(日) 15:59:30 ID:???
もしかして>>506はスクロールするたびリロードさせる気か
515nobodyさん:2006/07/16(日) 16:08:28 ID:???
>>513
結局何も分かっていなさそう…
だから、なんで PHP が出てくるんだ?
PHP で JavaScript を含んだ HTML を生成したとして
サーバの負担が心配だからクライアントサイドで?
言っていることが支離滅裂なんですけど、分かってる?
516498=510:2006/07/16(日) 16:18:02 ID:???
今ふと思ったんですけど、
もしかして読み込み元のhoge.logファイルをいくらUTF-8で保存しても、
phpがfile( )で読み込む時にコードの如何を問わずSJISとして読み込む設定になっている、
ってことはないでしょうか?

もしそうならphp.ini?とかの設定の問題なのでお手上げだなあと思ったんですが
517nobodyさん:2006/07/16(日) 16:22:16 ID:???
>>516
ちなみに PHP のバージョンは何?
518nobodyさん:2006/07/16(日) 16:34:03 ID:???
>>517
PHP Version 4.4.2でdefault_charsetはShift_JISになってますー

header()の出力よりもこっちが優先されちゃうのかな…
519nobodyさん:2006/07/16(日) 16:37:26 ID:???
>>518
> header()の出力よりもこっちが優先されちゃうのかな…
それならまず、file と print_r を使わずに UTF-8 で直書きした HTML を含む
コードを PHP で出力させて、化けるか否かをチェック。
520nobodyさん:2006/07/16(日) 17:14:37 ID:???
>>519
さきほどのコードに追加しました

<?
header("Content-type: text/html; charset=UTF-8");

echo <<< EOF
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
※略
<body>
化けるかどうかテスト              //←ここを追加
EOF;

$rec = file("hoge.log");
print_r($rec);
echo "</body>\n</html>";
?>

結果、「化けるかどうかテスト」は正常に日本語で、file()で読み込んだ部分は
文字化けで表示されました。

ただブラウザのエンコードをUTF8に変更すると、今度は逆に「化けるかどうかテスト」が文字化け、
file()で読み込んだ部分が正常に…、わけがわからなくなってきました
521nobodyさん:2006/07/16(日) 17:16:42 ID:???
あ、追記です
ブラウザはSleipnir1.66とIEの6を使ってます

一応書いとくとXP SP2です
522nobodyさん:2006/07/16(日) 17:26:46 ID:???
>>520
手元(PHP 4.4.2)で試してみた。が、化けなかった。
ブラウザは Firefox 1.5.0.4 と IE 6 SP2
mbstring 関係の設定は何も変更してないはず。ソースから make で。
読み込み UTF-8 のファイルは BOM 有り・無しの何れも。
523nobodyさん:2006/07/16(日) 17:33:15 ID:???
BOMはなしで保存してます。

うーん、読み込むhoge.logの方をSJISで保存すると一応全体がSJISとして化けなしに表示されるので、
とりあえずはこれでしょうがないかと…。
524nobodyさん:2006/07/16(日) 18:33:30 ID:???
>>506
>最近はやりのスクロールにあわせて上下するフロートメニュー

すっごく根本的なことを教えてあげよう。
そんなのは最近じゃなくて大昔からあるものだし、別に流行ってないし、
PHP関係ないし、っていうかウザいだけだから止めたほうがいいし。

初心者がサイト作るとすぐそういうウザい動きを付けたがるのは何故だろうね?
525nobodyさん:2006/07/16(日) 18:44:07 ID:???
>>523
ちなみに >>522 の mbstring 設定値は
mbstring.detect_orderauto
mbstring.encoding_translationOff
mbstring.func_overload0
mbstring.http_inputauto
mbstring.http_outputSJIS
mbstring.internal_encodingEUC-JP
mbstring.languageneutral
mbstring.substitute_characterno value
でした。
526nobodyさん:2006/07/16(日) 18:45:21 ID:???
>>525
うは、ごめん。タブは消えるのか。見辛くて申し訳ない。
527nobodyさん:2006/07/16(日) 19:22:30 ID:???
>>525
ありがとうございます、今みてみたら化けていたサーバーは

mbstring.http_output SJIS SJIS
mbstring.internal_encoding SJIS SJIS

となってました。
525の人と同じ環境の他のサーバーで試してみたところ文字化けなしにいけました。
問題点がわかったので他のサーバーで動かすようにします、
ありがとうございました。
528nobodyさん:2006/07/16(日) 22:03:44 ID:???
2つの文字列の先頭から何文字目までが同じか調べたいのですが、
どうもてっとり早い方法が見つからない。
C でいえば
for(i = 0; c1[i] == c2[i]; i++ );
ぐらいのものなわけですが、php だとどうしたものでしょう?
similar_text だと、先頭からという限定ができないようだし、
ord($str) でCライクに比較しようにも、
先頭のアスキーしか取れないようなので、一々 substr で先頭を切っていくことになる?
substr_compare で徐々に len を減らしていく、という方法だと
ほぼ同じ部分文字列を毎回一から比較していくわけで無駄が多い。
こういうときはどうするのがうまい方法なのでしょう?
529nobodyさん:2006/07/16(日) 22:26:57 ID:???
いけんじゃないの?そのCと同じで

str1 = 'hogehoge';
str2 = 'hagehage';
for(i=0; str1[i]==str2[i], (i<strlen(str1) && i<strlen(str2)); i++);

これダメなんだっけ?
530nobodyさん:2006/07/16(日) 22:34:51 ID:???
531nobodyさん:2006/07/16(日) 22:52:04 ID:???
>>528
上手い方法を知っているわけではありませんがmb_substrで順番に見て行くほか無いような・・・

<?php
$str1 = "ABCD日本語wktk";
$str2 = "ABCD日本語kwsk";
$ln = min(mb_strlen($str1), mb_strlen($str2));
for ($i=0; $i<$ln; $i++) {
 if (mb_substr($str1, $i, 1) != mb_substr($str2, $i, 1)) {
  echo $i . mb_convert_encoding("文字目までは一緒", "SJIS");
  break;
 }
}
?>
532nobodyさん:2006/07/16(日) 23:03:32 ID:???
>>531
何でそんなにマルチバイト文字列関数使いたがるの?
533nobodyさん:2006/07/16(日) 23:25:43 ID:VEXOfJen
 を置換で削除しようと思って

$res=strtr($res," ","");

というふうにしたのですが、
全く置換できません。。
何が問題なんでしょ?
534nobodyさん:2006/07/16(日) 23:28:12 ID:???
>>533
str_replace関数
535nobodyさん:2006/07/16(日) 23:30:10 ID:???
サーバにインストールされているPEARの一覧表示の出し方ってどのようにするのでしょうか?
対象となるサーバはXREAです。
536531:2006/07/16(日) 23:34:53 ID:???
>>532
たぶん日本語を比較したいのだろうと思ったので。
ordで比較とか書いてたので。
537nobodyさん:2006/07/16(日) 23:45:01 ID:???
>>535
pear list
538533:2006/07/17(月) 00:58:07 ID:???
>>534
thx!
あなた頭いいね。

539nobodyさん:2006/07/17(月) 03:42:05 ID:???
>>538
単にお前が馬鹿なだけ。マニュアルぐらい嫁
540nobodyさん:2006/07/17(月) 10:02:03 ID:???
echo $matches[0][0];

echoだと値が帰ってくるんだですが、

return $matches[0][0];

returnだと値が帰ってきません。
retuneは配列の値を表示することができないんでしょうか?
541nobodyさん:2006/07/17(月) 10:30:25 ID:???
なんだかよく分からんが、
function hoge(){
 // $matches配列の生成
 return $matches[0][0]; // 値を返す
}
echo hoge(); // 値を表示する
なら表示されるはずだが。
542nobodyさん:2006/07/17(月) 10:36:03 ID:???
PHPのIFで通常ありえないような挙動はするものでしょうか?
ちょっと意味不明かと思いますが、

具体的には以下のIFでループが発生しました。
(ただ、再現性が著しく低いです。というか再現できなかったと思います)

$temp = explode( "/" , $_SERVER['SCRIPT_NAME'] );
$start = count( $array ); // $arrayは配列です。
for( $i=$start; $i < (count($temp) -1); $i++ ) {
 // 変数 $i にアクセスしない処理
}
なんかやらかしてるでしょうか?
それともやっぱり環境なのかな?
543nobodyさん:2006/07/17(月) 10:45:33 ID:???
日本語でおk
544nobodyさん:2006/07/17(月) 10:45:40 ID:???
1.055e+006 こういう文字列を数字に直すにはどうしたらいいんでしょうk?
545nobodyさん:2006/07/17(月) 10:48:27 ID:???
>>544
eの意味を調べましょう。
546nobodyさん:2006/07/17(月) 10:50:28 ID:???
547nobodyさん:2006/07/17(月) 10:57:33 ID:???
echo 1.055e+006 + 0;
で、できました
548nobodyさん:2006/07/17(月) 10:58:04 ID:???
>>543
意味がわからないって事かな?ごめん 2ch語?よくしらないので

>>542の IF の記述法に問題があるのか。という点と、
例えば $array 等に NULL や文字列、オブジェクトなどの予想外の要素を
代入した場合に素直に動くのか、それとも予想もできない動作をするのか
等の情報が知りたかったと言うことです。

何かのネタだったらごめん。
ちょっと解説してくれると助かる。よかったらだけど…
549nobodyさん:2006/07/17(月) 11:09:25 ID:???


ウルトラマンが悩みを聞いてあげるスレッド


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 
     :\ [_ ̄] /::|    │ 
::     |\|_|_|_|_/:::|     \_______
550542:2006/07/17(月) 11:11:26 ID:???
ごめん追記。
通常は素直に動く事は解っています。NULLを0と等価とみなし、
オブジェクトではフィールド数を返すなど。
ただ、たまーに変になる可能性がちょっとでもあるのかな?
と言うことが知りたかったというか、ごめんよ日本語下手で。

まずは日本語を勉強しろって事だな。正直スマンカッタ
551nobodyさん:2006/07/17(月) 11:13:54 ID:???
>>549
サンクス! つまりは>>550って事だな。クソッ!!
552nobodyさん:2006/07/17(月) 11:14:12 ID:???
そんな不安があるなら代入する前にNULLチェックなりなんなりすればいいのに
553nobodyさん:2006/07/17(月) 11:31:29 ID:???
>>550
>>542の場合、$startに数字じゃなく文字が入ったりすると永久ループする可能性があるけどね。
これが本当に$startはcount()の結果以外は入らないようになってるのならちょっと分からんけど。
他にあるとしたらループの中で$tempを破壊してしまうケースくらいか。

ま、ifは変な挙動をしたりしない。
しかしPHPの変数が様々な型を自動変換するのをプログラマが忘れてることは多い。
変な挙動に見えても大抵はそれは「仕様」だ。
554nobodyさん:2006/07/17(月) 11:34:11 ID:???
>>552
>>542では、終了の値が有限であり、(ファイル名がもの凄い長いとかじゃないです)
かつ、開始の値に関数 count() を利用する為、負の値は通常取らないはず。
この条件でどうして無限ループが発生したのかが疑問なんです。

Nullチェックなりなんなりしろってことは、count() は極稀に負の値を
返したりする事がある。って事かな?
その場合、IFの開始、終了値の制限範囲を予め定めるってチェックを
する必要があるけど、それって普通しないですよね?
ただの事故か、それとも潜在的に無限ループの可能性があるのかが知りたかっただけなんです。
555nobodyさん:2006/07/17(月) 11:39:13 ID:???
>>549
それ何度見ても笑ってしまう
556nobodyさん:2006/07/17(月) 11:40:14 ID:???
十中八九他の部分に原因があると思うなあ
557nobodyさん:2006/07/17(月) 11:50:47 ID:???
>>553
あ、そうか。ありがとうございます。かなり参考になりました。
変数の型には留意しているつもりなんですが、やっぱり見えないところで
いろいろ変換されているかもしれません。
>>556
ループ処理はこれだけだったんです。
変数代入は IFの直前で他の値が入る隙はなかったんです。
一番可能性が高いのは、処理中に $temp に何かいれた。かな?
(無論、そんな事はしていないつもりですが)

再現性が殆ど皆無である為、ただの事故だったかも知れませんが
変数の型に常に留意しなければならないなど、いろいろ参考になりました。

ありがとうございました。
558nobodyさん:2006/07/17(月) 11:52:27 ID:???
どっかに思い込みで見逃してるとこがあると思うね。
559nobodyさん:2006/07/17(月) 12:07:52 ID:???
うーん、そう言われると一番それっぽいな。
スクリプトって寛大に受け入れてとりあえず動いてくれるけど、
それが難しく感じる事の方が個人的には多い。

現実的で有効な対処法は、ソースを第三者にみて評価してもらうかな。
愚問に付き合ってくれて、みなさんありがとうございました。
560nobodyさん:2006/07/17(月) 12:47:23 ID:???
質問です。
<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は処理すればいいでしょうか?
561nobodyさん:2006/07/17(月) 13:11:17 ID:???
ありえねぇ・・・
562nobodyさん:2006/07/17(月) 13:18:46 ID:???
>>560
$type = array();
foreach(explode(",", $_POST['type']) as $t) {
list($k, $v) = explode("=", $t);
$type[$k] = $v;
}

これでa=4,b=7を選択すると
$type['a'] = 4
$type['b'] = 7
の状態になると思う。

>>561
このくらいふつーだろ。
563nobodyさん:2006/07/17(月) 14:05:59 ID:???
>>469
>>470
ありがとうございます
564nobodyさん:2006/07/17(月) 15:33:09 ID:???
>>560
仮に処理できるとしても、そんなクソな設計は止めたほうがいい。
複数の値を持たせなきゃならん必要性があるのか?
565560:2006/07/17(月) 16:19:00 ID:ab1cz1rX
>>564
例えば良かったと悪かったが選択されていたら
a=4,b=9,c=3となるようにしたいです。
そして、それぞれのa,b,cの値によって次の処理をしたいのですが
考え方が間違っているのでしょうか?
566560:2006/07/17(月) 16:24:35 ID:ab1cz1rX
実際良かったと悪かったが同時にチェックされることは考えにくいですが、
これらは例ですので気にしないでください。
混乱させてしまったらごめんなさい。
567nobodyさん:2006/07/17(月) 16:25:43 ID:???
>>565
<input type = "checkbox" name = "type" value = "1" checked>良かった<br>
<input type = "checkbox" name = "type" value = "2" >悪かった<br>
<input type = "checkbox" name = "type" value = "3" >その他

リンク先のページで、
if( $_POST['type']==1){
$a=4;
$b=9;
$c=3;
}elseif(なんたら)


ってかんじがいいと
568nobodyさん:2006/07/17(月) 16:30:20 ID:???
もしくわ、
<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);
}
569nobodyさん:2006/07/17(月) 16:31:47 ID:???
ていうか、どうでもいいことかもしれないけどさ、

$tmp を無意識に「ドル、ティムポ」って読んじゃうのもれだけ?
570560:2006/07/17(月) 16:33:53 ID:ab1cz1rX
>>567
速レスありがとうございます。
PHP初心者で、>>567が自分の作ろうとしているものに適しているのかどうか
よくわからないので、localhostで試してからまた来ます。
571nobodyさん:2006/07/17(月) 16:34:15 ID:???
あらかじめ多数の指定を持たせたプログラムを、ユーザI/F変えるだけで自由に
再構成できるんだから>>560みたいなやり方も一概に悪いとは言えないと思う。
たとえばaとかbとかのキー自体がiniファイルで外部設定できるような仕組みになってれば、
いちいちプログラムを変えなくても様々なニーズに容易に対応できるようになるだろ?
572nobodyさん:2006/07/17(月) 16:35:17 ID:???
573nobodyさん:2006/07/17(月) 16:47:57 ID:???
なんとか診断みたいなやつかな? 設問がたくさんあるタイプのやつ。
name = "type[]"
にして複数のチェックボックスを配列にするといいかも。
574560:2006/07/17(月) 16:59:52 ID:ab1cz1rX
>>571
すいません。勉強不足で何のことやらさっぱりです。
>>573
>なんとか診断みたいなやつかな? 設問がたくさんあるタイプのやつ。
ズバリそれです。
>name = "type[]"
>にして複数のチェックボックスを配列にするといいかも。
これもよくわかりません。
575nobodyさん:2006/07/17(月) 17:02:26 ID:???
おお・・・もう
576nobodyさん:2006/07/17(月) 17:03:28 ID:???
>>574
…なんできみわ"a=4,b=7"みたいな変なパラメータを指定できるようにしたいなんて思ったのかね

チェックボックスで複数指定できるようにするならname="type[]"としとかないと
複数のパラメータを受け取れないぞ。最後の1個で上書きされてしまう。
name="type"にして選択できるのはどれか1つ、ってするならtype="radio"だろ。
577560:2006/07/17(月) 17:05:47 ID:ab1cz1rX
>>567
<?php
if( $_POST['type'] == 1 ){
$a=4;
$b=9;
$c=3;
}elseif( $_POST['type'] == 2 ){
$a=1;
$b=2;
$c=3;
}
echo "$a"
?>
これだと、$aはelseifの値をとってしまいます。
二つの数値を足したいのですが、どうすればいいでしょうか?
578nobodyさん:2006/07/17(月) 17:09:47 ID:???
>>571
再構成がしたいならパラメータを設定したファイルからI/Fを生成すればHTMLすら弄らなくていいよ。
579nobodyさん:2006/07/17(月) 17:13:11 ID:???
>>577
まず複数指定できるようにするなら
<input type = "checkbox" name = "type[]" value = "a=4,b=7" checked>良かった<br>
<input type = "checkbox" name = "type[]" value = "b=2,c=3" >悪かった<br>
<input type = "checkbox" name = "type[]" value = "c=3" >その他
とnameのとこに[]をつけてパラメータを配列で受け取れるようにせんと。
すると複数にチェックした場合
$_POST['type'][0] = "a=4,b=7"
$_POST['type'][1] = "b=2,c=3"
のようにセットされるようになる。

name="type"にしちゃうと2つ選択しても
$_POST['type'] = "a=4,b=7"
という値が、後ろに続いた
$_POST['type'] = "b=2,c=3"
で上書きされてしまって、結果として
$_POST['type'] = "b=2,c=3"
しかデータ自体が残らないんだから、プログラム上で足そうと思っても足しようがない。

あとは配列を順番に処理するだけだから、ちょっと考えてみれ。
580nobodyさん:2006/07/17(月) 17:13:35 ID:???
>>574
たとえばhtmlのフォームのところで
<input type="checkbox" name="type[]" value="1">回答1<br>
<input type="checkbox" name="type[]" value="2">回答2<br>
<input type="checkbox" name="type[]" value="4">回答3<br>
<input type="checkbox" name="type[]" value="8">回答4<br>
ってやっておくと、submitで飛んだ先のphpで
foreach($_POST['type'] as $cb){
 echo "$cb<br>" ;
}
とか出来るので便利。
あとは>>562と組み合わせるといいよ。
581nobodyさん:2006/07/17(月) 17:15:08 ID:???
>>577
そんな変な仕様は最初に説明しないと誰もわからんぞ
582560:2006/07/17(月) 17:21:58 ID:ab1cz1rX
>>579>>580
ありがとうございます。
読んだだけでは、なかなか理解できなかったので
じっくり考えて見ます。
>>581
すいません。
どうやって説明すればいいのかわからなくて。
583nobodyさん:2006/07/17(月) 17:28:32 ID:???
設定ファイルまでいくとhtml以外をいぢるっていう意味では
phpでrequireするのと変わらない場合もあるけどな。

htmlだけを直す、っていう方がいい場合もある。
もちろん、そうじゃない場合もある。
584nobodyさん:2006/07/17(月) 17:50:56 ID:???
人に説明できんもんを、プログラムに書くことはできんわな
585nobodyさん:2006/07/17(月) 18:13:21 ID:???
>>581
お前が>>565を読んでないだけ
586nobodyさん:2006/07/17(月) 18:27:47 ID:???
>>560よ、キミのやりたいことはだいたい分かった。
とりあえず複数の値をフォームで持たせるというやり方は
「間違っている」と言わざるを得ない。あるいは「良いやり方ではない」。

それでも出来るかもしれないけど、もっとシンプルでスマートで
応用の利くやり方は他にいくつかある。
「それを教えてよ」というのは無しだ。それを考えるのがプログラミングだ。
587560:2006/07/17(月) 19:54:17 ID:ab1cz1rX
errorが出て
なかなかうまくいきません。
まだ少しプログラムを組むのは早かったかもしれません。

>>596
聞こうと思ったら先に釘を刺されてしまいましたか。
でも頑張ってみます。
588nobodyさん:2006/07/17(月) 19:58:36 ID:???
未来アンカーキタコレ!!
589nobodyさん:2006/07/17(月) 21:48:44 ID:???
>>586
説得力ねーな
590nobodyさん:2006/07/17(月) 21:52:11 ID:???
>>589
アルゴリズム考えられない馬鹿は黙ってろ
591nobodyさん:2006/07/17(月) 22:00:01 ID:???
>>560
フォームからは1個の値を渡す。
それをphp側で複数に切り替える。
 if(answer=='1'){a=4;B=7;}
 elseif(answer=='2'){b=2;c=3;}・・・
という感じで。

一般化すると。
「本当にそこで処理しなければいけないかを考えろ。」
592nobodyさん:2006/07/17(月) 22:44:25 ID:Vse0CV74
$_POST['msg']から空行を取り除くにはどうしたらよいでしょうか?
593nobodyさん:2006/07/17(月) 22:46:02 ID:???
preg_replace使って空行を削除かなぁ
594nobodyさん:2006/07/17(月) 22:53:34 ID:Vse0CV74
>>593
恐縮ですが、削除というのはどうすれば出来るのですか?

$_POST['msg'] = preg_replace ('^$', '', $_POST['msg']);
これじゃダメですよねぇ?
595nobodyさん:2006/07/17(月) 23:08:01 ID:???
空行ってのは要するに改行文字が連続している部分のことだと思うので
連続した改行を1つの改行に置き換えれば空行=削除に値するんじゃない?
596nobodyさん:2006/07/17(月) 23:27:12 ID:???
連続した改行というのは
「2個の改行」ではなく「2個以上連続した改行」な。
「空白+改行」を空行と扱うかを考える必要があるけどね。
597nobodyさん:2006/07/17(月) 23:39:42 ID:???
>>589
別に説得してないし。
プログラミングの本質を教えてるだけだろ。
598nobodyさん:2006/07/18(火) 02:57:48 ID:???
@ITのサイトのようにどのリンクをクリックしても
左のバーや上部を表示させるにはどのようにすればいいのでしょうか?
599nobodyさん:2006/07/18(火) 03:05:04 ID:???
>>594
preg_replace (array(' ',' '),'', $_POST['msg']);
600nobodyさん:2006/07/18(火) 03:05:59 ID:???
>>598
CSS
601nobodyさん:2006/07/18(火) 03:35:07 ID:RAKThs0C
CGIでクッキーかきました。保存されてるのを確認したのですが、
$ENV{'HTTP_COOKIE'}で何も取得できません!
作成直後ではなくて、ブラウザでリクエストを再送しても取得できません。
どんな原因が考えられましょうか!
602nobodyさん:2006/07/18(火) 03:47:13 ID:???
>>598
HTMLをテンプレとして別ファイルにしてinclude。
別ファイルにする際、左のバーだの上部だの、いつも同じ部分を
別個にすればよい。

ちなみにテンプレと言っても、いわゆる「テンプレート・エンジン」なんて使わなくても
自作テンプレで十分。
603nobodyさん:2006/07/18(火) 03:47:50 ID:???
すいません、スレ違いでした
604nobodyさん:2006/07/18(火) 04:02:26 ID:???
>>602
ありがとうございます。
それだと、同レベルのディレクトリ以外は難しくないですかね?
./../等として読みに行くとすると、ディレクトリ配置を変更するとなると
全てのファイルを書き直さなければいけなくなると思います。

また、include元のHTMLが<img src="./hoge.jpg">等とやっていた場合は
違うレベルのディレクトリのファイルから呼び出されたりすると
そのイメージのリンクは違うファイルを対象としてしまうと思うんですけど。

結構大きなサイトになると、同レベルのディレクトリに全て置くっていうのは
現実的じゃない気がするんですけど、そういうものなんですかね?
605nobodyさん:2006/07/18(火) 06:51:30 ID:???
>>604
絶対パスにすればいいじゃん
606nobodyさん:2006/07/18(火) 07:20:13 ID:???
>>597 「説得力」を辞書で引いてみるといいぞ
607nobodyさん:2006/07/18(火) 09:02:10 ID:???
初心者を説得するスレじゃないからどうでもいい
608nobodyさん:2006/07/18(火) 09:28:49 ID:???
「説得力」には説得するって意味は無いってことだろ。
この程度の日本語が通じないヤツは、ほんとにどうでもいい
609nobodyさん:2006/07/18(火) 09:29:55 ID:WFdfnqCG
以前、ご質問させて頂いた
>>453です。
本日、文字化けが起きたマシンを調べてみた結果、php.iniは
;mbstring.language = Japanese
となっており、mbstring.language はコメントアウト(neutralでUTF-8?)
されていました。
ただ、文字化けが起きなかった他のPCも、mbstring.language はコメント
アウトされており、mbstring.language が文字化けの原因ではないような
気がします。
どなたか、この文字化けの原因はお分かりでしょうか?教えて頂ければ、
幸いです。
610nobodyさん:2006/07/18(火) 09:48:56 ID:???
>>609
とりあえず、それがコメントアウトされてたら文字化けしない方がおかしいので直せ。
そこは通常、Japaneseで設定されてないといけない。
ただ、ここがJapaneseじゃなくてもdetect_orderに特定の文字コードが設定されてれば
文字化けは回避できるかもしれない。
通常、これはautoに設定されてて、autoはlanguageの設定に合わせて自動設定されるので。
611nobodyさん:2006/07/18(火) 10:03:09 ID:???
>>609
だからまずアップロードされたファイル自体を目視確認し、
それが正常であれば、
処理ごとに
612nobodyさん:2006/07/18(火) 11:33:37 ID:WFdfnqCG
>>609です。
>>610様。
先程、コメントを外し、mbstring.language = Japanese
にしてApacheを再起動しました。

>>611様。
アップロードされたファイル自体を目視確認しました。アップロード
されたファイル自体は、確かに文字化けしていないことを、目で確認
しました。
 けれども、文字化け(最初の文字だけが「??」になってしまう)は
変わりません。アップロードされたファイルを「system(nkf -w 〜);」
とやってもやらなくても、同じ文字化けが起きてしまいます。

if ($_FILES['csvfile']['name'] != "") {
$tempfile = $_FILES['csvfile']['tmp_name'];
$tempfile_utf = $_FILES['csvfile']['tmp_name']."utf";
system("nkf -w ".$tempfile." > ".$tempfile_utf); // これをやらなくても文字化けする。
$file = fopen($tempfile_utf, 'r');
list($field1,$field2,$field3)=fgetcsv($file,20000);
print("1番目".$field1."2番目".$field2."3番目".$field3);
}
なのですが、何が原因かお分かりでしょうか?
613nobodyさん:2006/07/18(火) 11:38:29 ID:???
>>606
説得力ねーな、お前wwwwwwwwwwwwwwww
614nobodyさん:2006/07/18(火) 11:55:52 ID:???
PHPの解説をしている、とあるサイトでphpinfo();の説明の為に、
実際にphpinfo();を表示させているサイトがありました。
サーバの環境から、Win鯖なのでユーザー名まで全て晒しています。

phpinfo();が表示する情報程度のものは
別に誰に見られても困るほどの事は無いのでしょうか?
615nobodyさん:2006/07/18(火) 12:06:52 ID:???
>>614
これらが見えて困るのなら、
見えなくても困る。
616614:2006/07/18(火) 12:17:39 ID:???
>>615
すみません、意味が判りません。
617nobodyさん:2006/07/18(火) 12:40:04 ID:???
>>612
>  けれども、文字化け(最初の文字だけが「??」になってしまう)は
その最初の文字って何て文字さ。

> list($field1,$field2,$field3)=fgetcsv($file,20000);
> print("1番目".$field1."2番目".$field2."3番目".$field3);
化ける内容ってこの出力なのか?
fgetcsvは日本語を含むCSVデータでは使えないぞ?
618nobodyさん:2006/07/18(火) 12:41:07 ID:???
>>616
俺が分かりやすくストIIに例えると
これらが見えて困るのなら、見えなくても困る。
ってことだ
619nobodyさん:2006/07/18(火) 12:42:36 ID:???
日本語でおk
620560:2006/07/18(火) 13:13:09 ID:n2ZEUTcJ
>>560ですが、なかなかうまくいきません。
name="type[]" value="1"のようにしたほうが良いと言うことまでは
わかりましたが、どうやって複数の数値を持たせるのかがわかりません。
なんどもすいませんが、よろしくお願いします。
621nobodyさん:2006/07/18(火) 13:14:47 ID:???
>>616
お前はアホ
622nobodyさん:2006/07/18(火) 13:16:46 ID:???
たとえば safemode で話そう。
safemode の on/off が見えていたら困る場合、

on/off が見えなくても、
on か off のどちらかなのだから、safemodeが見えなくても、1/2で困ることになる。
623nobodyさん:2006/07/18(火) 13:20:08 ID:???
さらに safemodeで困らせようとする側は、
onを予想して困る要因を作成し、1/2にハズレてだめだったとしても、
次にoffの場合の困る要因を作ればいいのだから、
どのみち困らせることができることになる。
624nobodyさん:2006/07/18(火) 13:21:27 ID:???
つまり、
safemodeがばれて困るような場合では、
safemodeが見えていようが見えていまいが、困るということだ。
625614:2006/07/18(火) 13:25:58 ID:???
>>622-624は、なぜsafemodeに拘るw
626nobodyさん:2006/07/18(火) 13:32:24 ID:???
>>620=560
value="a=1,b=2,c=3"
にする場合に必要なパーツはほぼ出揃ってるんだから、そっちでやっていいんじゃねーの?

(複数の値ってより、"a=1,b=2,c=3"っていう1つの文字列だな)
627nobodyさん:2006/07/18(火) 13:32:27 ID:???
>>625
俺が分かりやすくドラゴンボールに例えると
これらが見えて困るのなら、見えなくても困る。
ってことだ
628614:2006/07/18(火) 13:34:05 ID:???
あーなるほど!わかった
やっぱドラゴンボールに例えるとわかりやすいな
629nobodyさん:2006/07/18(火) 13:35:39 ID:???
>>624
つまり、ヤフオクで女子高生のマンコが見えていようが見えていまいが見に行くということだな。
630nobodyさん:2006/07/18(火) 13:40:06 ID:???
ちょっと長いぞ
仙豆が無い事がわかって困るなら、仙豆なんて物が初めから無くても困る
ってことだ
631nobodyさん:2006/07/18(火) 13:44:21 ID:???
>>630
そして女子高生のマンコを見てセンズリするということか。
632nobodyさん:2006/07/18(火) 14:22:42 ID:???
くだらねぇ会話やめろ。つまんねぇし無駄。
633nobodyさん:2006/07/18(火) 15:28:52 ID:WFdfnqCG
>>617
> list($field1,$field2,$field3)=fgetcsv($file,20000);
> print("1番目".$field1."2番目".$field2."3番目".$field3);
> 化ける内容ってこの出力なのか?
> fgetcsvは日本語を含むCSVデータでは使えないぞ?

>>612 です。ありがとうございます。>>617様のアドバイスを元に、
「fgetcsv 日本語」で調べてみました。PHP5でfgetcsvを使った場合、
日本語が不安定のようです。ただ、CSVファイルの中身を全てダブル
クォーテーションで囲んで試したところ、文字化けしないで済みま
した。
どうも、ありがとうございました。
634nobodyさん:2006/07/18(火) 15:35:22 ID:qPB2Cam5
mb_send_mail("****@yahoo.co.jp","タイトル","コメント","フローム");

で、メールを送信しようとしたのですが、エラーが返ってきます。

[mail function]
; For Win32 only.
SMTP = localhost
smtp_port = 25

; For Win32 only.
;sendmail_from = [email protected]

; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
;sendmail_path =

; Force the addition of the specified parameters to be passed as extra parameters
; to the sendmail binary. These parameters will always replace the value of
; the 5th parameter to mail(), even in safe mode.
;mail.force_extra_parameters =

なんですけど、どう設定すれば良いのでしょうか?
WindowsXP、Apache2.0.58、PHP5です。

本当にくだらない質問ですが、お願いします。
635nobodyさん:2006/07/18(火) 15:40:19 ID:???
>>634
'****@yahoo.co.jp'

シングルクォートにする
636nobodyさん:2006/07/18(火) 15:43:28 ID:???
PHPと言うより文字コードの質問になりますが、
UTF-8でマルチバイト文字列の長さを、日本語=2、英数字=1として
カウントしたいのですが、strlenはひらがな、カタカナ、漢字を
全て3バイトとカウントすると仮定しても大丈夫でしょうか?

<?php
$str = "日本1234語";
$n = mb_strlen($str);
$m = strlen($str);
for ($i = 0; $i <= $n; $i++) {
 $t = $i * 3 + $n - $i;
 if ($t == $m) {
  echo $i * 2 + ($n - $i);
  break;
 }
}
?>
637634:2006/07/18(火) 15:53:15 ID:qPB2Cam5
>>635
シングルクォートにしてみましたが、変わりないです。
638nobodyさん:2006/07/18(火) 15:56:20 ID:???
>>636
英数字を全角に変換してmb_strlenじゃだめ?
639nobodyさん:2006/07/18(火) 15:57:12 ID:???
>>637
で、肝心のエラーメッセージは?
640nobodyさん:2006/07/18(火) 15:57:59 ID:???
失礼
英数字のみを取り出して足し算、でした。
641nobodyさん:2006/07/18(火) 15:58:11 ID:???
>>639
404 File Not Found.
642nobodyさん:2006/07/18(火) 15:59:31 ID:???
>>620
君はもう少し基本的なプログラムからゆっくり勉強した方がいいと思うぞ。
なんでそんな基本的なことで詰まってるのよ。
643636:2006/07/18(火) 16:01:39 ID:???
>>640
あぁその方がシンプルでいいですね。
勉強になりました。
ありがとうございます。
644nobodyさん:2006/07/18(火) 16:02:10 ID:???
$n = mb_strlen($str);
$m = strlen($str);

$a = ($n + $m) / 2
645634:2006/07/18(火) 16:02:53 ID:qPB2Cam5
>>639
すいません
Warning: mb_send_mail() [function.mb-send-mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in E:\Web\test.php on line 9
です。
646nobodyさん:2006/07/18(火) 16:03:57 ID:???
>>641
で、それでなんで mb_send_mail でエラーが起きたと思ったの?
404ってApacheのエラーコードじゃなくて?
647636:2006/07/18(火) 16:05:43 ID:???
>>644
・・・・ orz

お恥ずかしい。
休みで頭がボケてるみたいです。
648646:2006/07/18(火) 16:06:26 ID:???
偽者かよw
649nobodyさん:2006/07/18(火) 16:08:03 ID:???
>>645
君のマシンにSMTPサーバーソフトがインストールされてないから。
650nobodyさん:2006/07/18(火) 16:16:34 ID:???
>>645
エラーメッセージってのはその名の通り、エラーの内容が表示されているんだよ。
中高生が読めるレベルの英語なんだから、ちゃんと読めばエラーの理由が分かる。
651nobodyさん:2006/07/18(火) 16:18:56 ID:???
>>650
エラーの意味がいくら分かっても、メール送信の仕組みも知らない厨房では理解不能と思われ。
652nobodyさん:2006/07/18(火) 16:37:26 ID:???
645のレベルなら、自分作ろうとするより
実働サンプルを拾ってきた方が早いよ
653nobodyさん:2006/07/18(火) 17:15:05 ID:???
>>652も厨房だなw
実働サンプル持ってきてもSMTPサーバが動いてないんだから無意味。
654nobodyさん:2006/07/18(火) 17:22:21 ID:???
>>604
もうちょっと頭を使いましょう。
ディレクトリを後から変更する予定があるのなら、
includeパスに含めるディレクトリ部分の文字列を変数なり定数なりにすれば良い。

●例:
define ("_DIR",'http://example.com/hoge/'); //ディクレトリ変更ならhogeを書き換える
include (_DIR."template.php");
655nobodyさん:2006/07/18(火) 17:25:59 ID:???
淫狂うど
656654:2006/07/18(火) 17:29:01 ID:???
>>654の補足。
定数の定義自体も別ファイルにしてincludeすれば、
複数のファイルから同じテンプレを読み込んでいても
一箇所のみ変更するだけでディレクトリ名を全て変更できる。

●例;
config.phpにて以下を記述
define ("_DIR",'http://example.com/hoge/'); //ディクレトリ変更ならhogeを書き換える

HTML表示スクリプト(たとえばindex.php)にて、
include ("config.php");
include (_DIR."template_header.php");
include (_DIR."template_left.php");
include (_DIR."template_main.php");

これでキミのやりたいことが実現できるでしょう。>>604>>598くん。
657560:2006/07/18(火) 17:35:22 ID:n2ZEUTcJ
やや進歩したのかなと言った感じですがerrorでまくりで困ってます。

<input type="checkbox" name="type[]" value="a">
<input type="checkbox" name="type[]" value="b">
<input type="checkbox" name="type[]" value="c">

でPHPは

if( in_array( "a" , $ty ) ){
$a1 = 3;
$b1 = 1;
}
if( in_array( "b" , $ty ) ){
$a2 = 4;
$b2 = 32;
}
if( in_array( "c" , $ty ) ){
$a3 = 31;
$b3 = 12;
}
$a = $a1 + $a2 + $a3;
$b = $b1 + $b2 + $b3;
echo "$a";
echo "$b";
こんな感じです。
3個とも選択すればerrorが出ないのですが、それ以外は全部errorです。
また方向が間違っているでしょうか?
658nobodyさん:2006/07/18(火) 17:35:50 ID:???
>>656
それでも、そのファイルとconfig.phpのファイルの位置関係が変わったら
意味内よね。 って言い出したらきりないけども…。

僕の場合、ディレクトリ構造が変更されることはないと割り切って、
../ だとか ../../ だとかそれぞれに書いてますよ。
659nobodyさん:2006/07/18(火) 17:37:07 ID:???
おいおい、>>641はどう見ても偽だろ。マジレスすんなよ。







え?本人(゚Д゚)?
660nobodyさん:2006/07/18(火) 17:41:09 ID:???
>>657
<input type="checkbox" name="type[]" value="1">
<input type="checkbox" name="type[]" value="2">
<input type="checkbox" name="type[]" value="3">

PHP
foreach ($type as $v) {
echo $v."<br>";
}

これをやってごらん。
661660:2006/07/18(火) 17:44:43 ID:???
あ、PHPの方の$typeは送られてきたやつね。
662nobodyさん:2006/07/18(火) 17:45:12 ID:???
>>657
エラーの内容を書きましょう。
…多分、変数を初期化してなくてNoticeが出てるだけだと思うけどね。
663nobodyさん:2006/07/18(火) 17:46:35 ID:???
>>658
DOCUMENT_ROOTからの相対パスで指定する、って手はダメかな。
664nobodyさん:2006/07/18(火) 17:49:38 ID:???
>>657
どうせなら、そういう具体的な数値はイッコの配列に入れたほうがいい

$arrayA = array (3, 4, 31);
$arrayB = array (1, 32, 12);
foreach ($_GET['type'] as $key => $val) {
if ($val) {
$a += $arrayA[$key];
$b += $arrayB[$key];
}
}

方向性ちがったらゴメン
665nobodyさん:2006/07/18(火) 18:08:08 ID:???
$_GETは適時$_POSTに読み替えで
666657:2006/07/18(火) 18:18:21 ID:n2ZEUTcJ
>>660
これだとerrorがでませんね。
これをヒントにして作り直せと言うことでしょうか?
>>662
あとの二つをチェックした場合には
Notice: Undefined variable: a1 in C:\Program Files\Apache Group\Apache2\htdocs\ank.php on line 22

Notice: Undefined variable: b1 in C:\Program Files\Apache Group\Apache2\htdocs\ank.php on line 23
3544
このように表示されます。

>>664
今から試してみます。
667666:2006/07/18(火) 18:21:45 ID:n2ZEUTcJ
ちなみにline22,23は
$a = $a1 + $a2 + $a3;
$b = $b1 + $b2 + $b3;
これです。
668nobodyさん:2006/07/18(火) 18:54:02 ID:???
なんか宿題スレになってんな
669nobodyさん:2006/07/18(火) 19:00:43 ID:???
670nobodyさん:2006/07/18(火) 19:08:03 ID:???
>>666
>660と>657を掛け合わせれば解決できるのではないかと。
複合演算子を使う必要があります。

PHP: 代入演算子 - Manual
ttp://jp.php.net/manual/ja/language.operators.assignment.php

>657を元に、複合演算子で変数をまとめても良いですが、
どちらかといえば660氏のアルゴリズムを流用した方がスッキリすると思います。

>>667
ちゃんと、英語読んでます?
辞書を引けば解るレベルの英文だと思うのですが…。

「警告: 未定義の変数があります: a1 in...line22」
「警告: 未定義の変数があります: b1 in...line23」

お分かりでしょう?
それぞれの右辺の3つの変数がセットされていなければ、「変数が初期化されていません」とエラーが返ってくるは道理です。
必ず、初期化済みの変数でもって式を構成しなければなりません。
671670:2006/07/18(火) 19:11:21 ID:???
む…、>664で答えが出てますね。失礼しました。

ただ、最初から答えを教えるとあまり勉強にならないと思いますが…、余計なお節介かな。
672nobodyさん:2006/07/18(火) 19:30:10 ID:???
>>670
> 必ず、初期化済みの変数でもって式を構成しなければなりません。
別にエラーレベルを下げちゃっても全然かまわんと思うけどね。
初心者の勉強のために消さない方がいいと考えてるんだろうけど
「必ず」ってこたないだろ。
673nobodyさん:2006/07/18(火) 19:32:50 ID:???
>>670
> 複合演算子を使う必要があります。
必要ってことはない。使えばすっきりするだけだ。
674nobodyさん:2006/07/18(火) 19:36:08 ID:???
>>664
おいおい。それだと最初のチェックボックスをチェックしなかったらキーがずれるぜ?
合わせて
<input type="checkbox" name="type[0]" value="a">
<input type="checkbox" name="type[1]" value="b">
<input type="checkbox" name="type[2]" value="c">
とHTMLも書き直してやらなきゃ。
675nobodyさん:2006/07/18(火) 19:37:29 ID:???
なんか回答してる側もヘタレ揃いだな。
授業で覚えたばかりの連中が回答やってんのか?
676662:2006/07/18(火) 19:44:29 ID:???
>>666
なんで>>662ですでに原因まで書いてやってるのに対処できないの?
677nobodyさん:2006/07/18(火) 19:48:21 ID:???
>>674
そーだった。thx
678670:2006/07/18(火) 19:58:09 ID:???
>>672
確かに、「必ず」は言い過ぎかな。
「その方がよい」というニュアンスでしょうか。

>>673
そうかもしれませんが、この場合は複合演算子を使う方が多いんじゃないですかね。

>>664,677
連想配列を使っても良さそうですね。
(HTMLで配列の要素の順番を考えなくても良いという意味で。)
679670:2006/07/18(火) 20:09:46 ID:n2ZEUTcJ
>>676
すみません。
その初期化の方法がわからなくて困っているんですが。
680nobodyさん:2006/07/18(火) 20:19:09 ID:???
丸投げだな・・・
681nobodyさん:2006/07/18(火) 20:34:25 ID:???
>>679
マニュアルぐらい読んでください。必要最低限の事です。

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
682670:2006/07/18(火) 20:39:22 ID:n2ZEUTcJ
>>680
自分でも色々と調べているのですが
うまくいかなくて・・・

初期化(?)なのかわからないですけど
$a1=$a2=$a3=$b1=$b2=$b3=0;
これを入れたらerrorが出ないようになりました。
こういうことで良いのでしょうか?
683nobodyさん:2006/07/18(火) 21:01:48 ID:???
>>682
せいーかーい
どんどんどんぱーふーぱーふー
684nobodyさん:2006/07/18(火) 21:09:07 ID:???
>>658
だからさ、絶対パスまたは絶対URLで書けばいいでしょ。
なんで相対パスにこだわってんの?
っていうかそれくらい自分の頭で考えてよ・・・
685nobodyさん:2006/07/18(火) 21:12:20 ID:???
>>684
考えた結果「割り切ることにした」と書いてるんじゃないのか??
686nobodyさん:2006/07/18(火) 21:17:40 ID:???
1.設定用PHPファイルはドキュメントルートなどを基準にした場所に置く
2.大元の設定用PHPファイルから各ディレクトリにシンボリックリンクを作る
3.大元の設定用PHPファイルを相対パスでincludeする同名のPHPファイルを各ディレクトリに置く
のどれか辺りでどうよ?
687nobodyさん:2006/07/18(火) 22:07:58 ID:???
丸投げ野郎はスルーしとけ
このままじゃ他に質問したい人が居てもその雰囲気に気圧されするかレスの海に飲み込まれるぞ
688nobodyさん:2006/07/18(火) 22:08:46 ID:???
>>685
だから別に割り切らなくても解決できるっつってんの。
諦めずに考えろっっつってんの。

>>686
まあ大元の設定用ファイルは、そもそもディレクトリを変えないことが基本だよね。
で、分かりやすい場所に置く(セキュリティ面も含めて、privateフォルダなどが良い)
689nobodyさん:2006/07/18(火) 22:10:52 ID:???
>>644
素晴らしい解答だけど、元質問の

>strlenはひらがな、カタカナ、漢字を
>全て3バイトとカウントすると仮定しても大丈夫でしょうか?

という仮定が前提になっているような・・・。
そういう意味では>>640の方が安全なのかな?
690nobodyさん:2006/07/18(火) 23:29:36 ID:???
mb_strwidthを使うべし
691nobodyさん:2006/07/18(火) 23:57:48 ID:P26DbQmu
こんばんは。
質問です。
PHPには、ある文字列と別の文字列の差異を見つけ出せる関数などあるでしょうか??
そして差異のある部分をHTMLで太字にしてみるとか。

ご存知だったらうれしいのですが。
692nobodyさん:2006/07/19(水) 00:15:13 ID:???
>>691
> ある文字列と別の文字列の差異を見つけ出せる関数などあるでしょうか??
差異があるということは等しくないと等価。
従って、以下のようになる。

if($str1 != $str2){ 処理 }

> そして差異のある部分をHTMLで太字にしてみるとか。
まず、どういう視点で「差異がある」と見なすかを定義しなければならない。
行毎に差異を見なすのか、1バイトずつ見て、差異があった部分からEOFまでを差異と見なすのか、...etc
693nobodyさん:2006/07/19(水) 00:39:22 ID:???
>>691
> PHPには、ある文字列と別の文字列の差異を見つけ出せる関数などあるでしょうか??
無い。exec()でdiffを呼び出すとかしれ。
しかしdiffにしたって行単位で違いを探すだけで、1行の中でどこからどこまでが違うとかは出さないけどな。

> そして差異のある部分をHTMLで太字にしてみるとか。
それは自分でstr_replace()などで処理すべきことだ。
「どのように表示するか」を勝手にやるような関数なんて普通あるわけないでしょう。
694nobodyさん:2006/07/19(水) 00:47:50 ID:???
>>688
その解決が絶対パス??数百のHTMLがあったらそれぞれに絶対パス書いちゃって、
サーバー環境が変わったり、同一サーバーに同じ構成のプログラムを2つ入れる羽目になったら、
全ファイル一括置換とかしてるわけ?
少なくとも>>684は全く解決案になってないと思うんだが、何そんな偉そうなんだ。
695nobodyさん:2006/07/19(水) 00:52:37 ID:???
>何そんな偉そうなんだ。
馬鹿だからw
696nobodyさん:2006/07/19(水) 01:24:44 ID:???
>>694
一括で変換する必要があれば変換すれば良いだけだろ?
やり方知らんの?w
697nobodyさん:2006/07/19(水) 01:28:08 ID:???
>>696
ようするに君の>>604への回答は
「ディレクトリの変更があったら全部置換すればいい」
でFAなわけだw
698nobodyさん:2006/07/19(水) 01:37:29 ID:???
>>697
違うけどw
あほすぎwww
699nobodyさん:2006/07/19(水) 01:44:32 ID:???
>>698
アホかお前。初心者は解答すんなよ。
700nobodyさん:2006/07/19(水) 02:00:51 ID:???
質問者置いてけぼりで議論を始めることも無かろう、と思うわけですが。
前向きな議論なら大変結構なのですがね。
701nobodyさん:2006/07/19(水) 02:25:05 ID:???
SNS作ってんだけど、ユーザの情報をすべてDBに格納するのはまずいかな。
pass情報はハッシュだけにしたほうが良い?
702nobodyさん:2006/07/19(水) 02:26:20 ID:???
そのほうが良いと思うよ。
703656:2006/07/19(水) 02:39:22 ID:???
>>694
>数百のHTMLがあったらそれぞれに絶対パス書いちゃって

相変わらずものすごい勘違いしてるね・・・
いや、勘違いっていうか、>>656で示した手法を全く理解できてないみたいね。

誰が「数百のHTMLの絶対パスを書け」なんて言ったのよ? 誰も言ってないでしょうよ。
俺が>>656で示した手法なら、絶対パスを書くファイルはconfig.php一つのみ。

せっかく他人がいろいろと具体例を挙げて説明してやってんのに、
自分がバカで理解できないからってそんな偉そうに文句つけてたら誰も教えてくれなくなるよ。
704nobodyさん:2006/07/19(水) 02:50:58 ID:???
>>703
いやだから、そのconfig.phpをincludeする部分はどーすんのって話でしょうが。
そこは結局相対パスで書くのか?
705701:2006/07/19(水) 03:42:26 ID:???
じゃpassはどこに保存すればいいですか。
706nobodyさん:2006/07/19(水) 04:21:12 ID:???
>>704
ヒント:
config.php自体のincludeパスのみを定義・格納したメタconfigを用意する。
707nobodyさん:2006/07/19(水) 04:31:22 ID:???
youtubeのURLで使っているような「wNbaCwt05ng」みたいな
ユニークなID文字列をPHPで作りたいのですが、
どうするのがよいでしょうか?
tempnam()を使うとそれっぽい文字列を取得できるのですが、
同時にファイルを作成してしまうのが、余計に思っています。
708nobodyさん:2006/07/19(水) 04:48:34 ID:???
>>705
DBにハッシュで保存
709nobodyさん:2006/07/19(水) 04:50:13 ID:???
710nobodyさん:2006/07/19(水) 04:59:37 ID:???
>>709
uniqid()?もまぁありなんですが、
できれば現在時間に依存せず、完全にランダムな文字列で、
大文字も使用して、短い文字列を希望しています。。
711nobodyさん:2006/07/19(水) 05:11:41 ID:???
>>710
なんか適当にランダムな数値を作って、それを base_convert で 36 進数にする
712nobodyさん:2006/07/19(水) 06:43:23 ID:???
>>706
無限るーぷかwww
713nobodyさん:2006/07/19(水) 07:10:43 ID:???
つか、どういう手法で実装するかはケースバイケースだろう。
それは質問者の方が無い知恵絞って自分のケースに合った実装方法を選択するべき。
このスレで議論するのはあくまで「一般的な」「よく目にする」ものであって・・・ここまで書いといてなんだが言葉が続かん。
とりあえずもちつけ。俺もおまいらも。
714nobodyさん:2006/07/19(水) 08:25:22 ID:???
>>710
「他と重複しない完全なランダム」をどこにも記録せずに一発で生成するのは無理があるから
ファイルを作るのがイヤならDBに過去のキーを全部記録しとくとかしないと無理じゃない?
uniqid()は衝突の危険を回避するために現在時間を利用してるわけで、それも無しとなると、
ランダムな名前を試しに作る→過去のデータに重複がないか検索→重複してたら再生成
みたいなループを自力でやんないと原理的に不可能だよ。
(過去データを保持できるのは自分のプログラムだけなんだから、それを自動で処理する関数はありえない)
715714:2006/07/19(水) 08:41:52 ID:???
>>710
で、単にランダムなだけで、既存と重複してるかどうかは無視していいのであれば、
function randstring($len) {
$c = array_merge(range(0, 9), range("a", "z"), range("A", "Z"));
$s = '';
for($i = 0; $i < $len; $i ++) {
$s .= $c[array_rand($c)];
}
return $s;
}
こんな程度で任意の桁数の数字・大小英文字の組み合わせでの文字列は作れる。
あとは作る→探す→作るをひたすら繰り返すだけ。
716nobodyさん:2006/07/19(水) 09:36:16 ID:???
>>705
・パスワードは保存しない、「忘れた」対応は新規に仮パスワードを振り出す
・比較用のハッシュとは別に暗号化して保存、キーはひみつの質問の答え、e-mailアドレス等から生成
こんなんでどうですか?
717nobodyさん:2006/07/19(水) 10:04:07 ID:+mavFuWs
PHP4.3.xのソースが欲しいんですが、どこかでダウンロードできますか?
本家では最新の4.4しか置いてなさそうなんですが、実はどこかにあったりします?
718nobodyさん:2006/07/19(水) 10:11:01 ID:???
>>717
PHPのサイトのDownloadのページに
Older versions of PHPってページへのリンクがあるけど?
719nobodyさん:2006/07/19(水) 10:14:46 ID:???
javascript が on になってるかどうかで
処理分岐することは可能でしょうか?
可能な場合、方法教えてくりませ
720nobodyさん:2006/07/19(水) 10:16:39 ID:???
$serial=array('\[(.+)\]','(.+)');
こうなってる
だから
print $serial[1];
が正解
721720:2006/07/19(水) 10:17:29 ID:???
誤爆しますた
722nobodyさん:2006/07/19(水) 10:19:55 ID:???
>>719
ググれば星の数ほどサンプルが転がってる。
723nobodyさん:2006/07/19(水) 10:37:09 ID:???
もはよう おまいら

何か昨日は祭りだったみたいだな
ID:n2ZEUTcJ みたいなのにはレスすんな
途中から670とか名乗ってるしw
724nobodyさん:2006/07/19(水) 10:59:42 ID:Ay+5zUkF
すみませんが、教えてください。

PHPの4.3で、クラスのメンバ関数の呼び出しを変数を使って
呼び出したいんですけどできませんか?

$func1 = "testfunc1()";
$testClass->$func1;

725nobodyさん:2006/07/19(水) 11:22:57 ID:???
>>724
$testClass->{$func1}
こうやってはいかがかな?
726nobodyさん:2006/07/19(水) 11:41:22 ID:???
>>725
レスありがとうございます。が、しかし、Undefine Propertyになってしまいます・・・
727nobodyさん:2006/07/19(水) 11:52:47 ID:???
>>724
現象が再現する最小限のソースプリーズ。
728nobodyさん:2006/07/19(水) 12:02:12 ID:???
>>724
$func1 = "testfunc1";
$testClass->$func1();
または
$testClass->{$func1}();

ってカンジでどうでしょう?
729717:2006/07/19(水) 12:20:13 ID:+mavFuWs
>>718
ありがとう。
ページの右側ばっかり見てました。
730nobodyさん:2006/07/19(水) 12:35:41 ID:???
おおぉ、皆様ありがとうございます。

>>727,728

$testClass->{$func1}();

この方法でOKでした。これなら、クラスを引数に渡せるし、
助かりました。

731nobodyさん:2006/07/19(水) 12:46:22 ID:???
皆さん何かお勧めの参考書や辞典はありますか?

自分は
PHP辞典
PHPスーパーサンプル第2版
をよく読みます。(主に辞典)

何かお勧めの参考書などがあれば教えていただけませんか?
732nobodyさん:2006/07/19(水) 12:48:54 ID:???
PHPマニュアル、Google

マジお薦め
733nobodyさん:2006/07/19(水) 12:55:32 ID:???
>>717
cvs -d :pserver:[email protected]:/repository checkout -r PHP_4_3 php-src
734707:2006/07/19(水) 13:18:50 ID:???
>>715
サンプルコードありがとう。
uniqidを、大文字も利用した短縮文字列に変換して、
必要であればなんらかの暗号的変換もかけるのはどうだろう?
と今思いつきました。
735nobodyさん:2006/07/19(水) 13:25:46 ID:???
>>731
やはり、
http://jp.php.net/manual/ja/
これがもっともお勧めだな。
736nobodyさん:2006/07/19(水) 13:46:04 ID:???
>>734
欲しいのは大文字だけなの?
uniqid()をベースにする限り、「現在時間に依存しない」「短い文字列」という希望は満たせないわけだが。

> なんらかの暗号的変換もかける
その時点でその文字列はユニークじゃなくなってしまう可能性が高いんで
最初から自力でランダムな文字列を生成するのと何も変わらなくなってしまうんだが。
737nobodyさん:2006/07/19(水) 13:51:12 ID:/PVcx7MW
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=shift_jis">
<title>test</title>
</head>
<body>
<?php echo "hello"; ?>
</body>
</html>

を実行すると

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=shift_jis">
<title>test</title>
</head>
<body>
hello</body>
</html>

になって微妙に気持ち悪いんだが、これは仕様?
738707:2006/07/19(水) 13:58:05 ID:???
>>736
>> なんらかの暗号的変換もかける
>その時点でその文字列はユニークじゃなくなってしまう可能性が高いんで
>最初から自力でランダムな文字列を生成するのと何も変わらなくなってしまうんだが。
uniqidがベースなので、ユニークにできますよ。
また厳密には、現在時間に依存しますが、
容易に推測されないランダムな文字列になっていればいい、
という感じです。
739nobodyさん:2006/07/19(水) 14:08:15 ID:???
さすが>>707
世界中の暗号学者が必死になって証明することを簡単に言ってのけるッ
740nobodyさん:2006/07/19(水) 14:09:48 ID:???
>>738
>709の示した
ttp://phpspot.net/php/pg%83%86%83j%81%5B%83N%82%C8%82h%82c%82%F0%93%BE%82%E9.html
が希望に近いと思うが、どちらにせよ既存のIDと重複しないために、重複チェックは必要になる。
「重複チェックに引っかかる→再試行」の繰り返しを忘れぬよう。
741nobodyさん:2006/07/19(水) 14:09:49 ID:???
進数変換と同様に、コード中に使える文字の種類を増やして
1対1の可逆変換で短縮した文字列を再生成するってことだな。
できるじゃね?
742nobodyさん:2006/07/19(水) 14:11:26 ID:???
>>737
仕様
743nobodyさん:2006/07/19(水) 14:15:43 ID:/PVcx7MW
>>742
まじかorz
回避方法は改行を余計に入れる、ってことくらいか?
744707:2006/07/19(水) 14:21:34 ID:???
uniqid() を16進数から36進数に変換して、
軽くシャッフルするとかシフトするとかすれば、(容易に推測されない程度の暗号化)
できそうですよね?
745nobodyさん:2006/07/19(水) 14:23:04 ID:???
好きなようにすればいいと思うよ
暗号強度についてはスレ違いだしな
746nobodyさん:2006/07/19(水) 14:23:26 ID:???
>>743
PHPタグはHTMLの途中に挿入するケースが多いから、
そのときに余分な改行が入らないように直後の改行を除去するようになってる。
逆に改行が入って欲しいなら、必要な分だけ改行を追加するしかないだろうね。
747707:2006/07/19(水) 14:24:49 ID:???
>>744
36進数は間違い。62進数(大文字つき)で。
748nobodyさん:2006/07/19(水) 14:25:36 ID:???
>>744
36進数への変換まではいいと思うけど、シャッフルはユニークさが失われるからダメじゃない?
シフトってのがA,B.C→4,5,6みたいな1対1変換を指してるならそれは問題ないと思う。
749707:2006/07/19(水) 14:31:08 ID:???
>>748
シャッフルもパターンに則って行えば、シフトと同じようなもんです。
暗号化としてはゆるいですけど、外から推測困難な程度でいいので。
750nobodyさん:2006/07/19(水) 14:32:31 ID:???
>>749
ああ、ルールに基づいて桁位置を一部入れ替えるってことね。いいんじゃね?
751nobodyさん:2006/07/19(水) 14:34:42 ID:/PVcx7MW
>>746
わかった。サンクス!
752nobodyさん:2006/07/19(水) 16:04:01 ID:???
飯食う時間ないんだけど、どうすればいい?
753707:2006/07/19(水) 16:30:05 ID:???
シフトは少し意味が薄いような感じでした。
シャッフルしてから、進数変換すると、
いい感じにランダムっぽくできました。
754nobodyさん:2006/07/19(水) 18:30:14 ID:???
知っている人には簡単なことだと思うのですが

list($a, $b) = explode("|", $str);

みたいに書いたときに、| が含まれていない $str が来た場合に
Undefined offset の NOTICE が出ます。これが出ないように
うまい具合に短く書く方法はないでしょうか。

セパレータが含まれているかどうかを事前に判定して処理を分けるのも
考えましたが、あまり賢い方法じゃないように思えて。
755マリー・アントワネット:2006/07/19(水) 18:39:31 ID:???
未定義だと言われるのなら先に定義しておけばいいじゃない。
756nobodyさん:2006/07/19(水) 18:41:59 ID:???
>>754
区切り文字の数に規則性がないのなら、左辺を配列にしてしまえば良いのではないでしょうか?

$array = explode("|", $str);
foreach($array as $val){
処理
}
757nobodyさん:2006/07/19(水) 18:42:00 ID:???
>>754
こんなのはどうですか?
list($a, $b) = explode("|", $str . "|");
758nobodyさん:2006/07/19(水) 18:43:43 ID:???
ていうか、これがよい。
list($a, $b) = @explode("|", $str);
759nobodyさん:2006/07/19(水) 18:45:45 ID:???
error_reporting(E_ALL ^ E_NOTICE);
760軟式PHP:2006/07/19(水) 18:59:40 ID:???
>>759
臭いものには蓋をする的なレスだなw
761nobodyさん:2006/07/19(水) 19:08:31 ID:ae0kzGe1
classが全然わかりません
先生助けて
foo::foget($this->hoge);

の::てどういう意味でしょう??
762nobodyさん:2006/07/19(水) 19:17:11 ID:???
>>761
>>334-338嫁ボケ!お前のかーちゃんでべそ!!
763nobodyさん:2006/07/19(水) 19:48:11 ID:???
やーい、やーい
お前のかーちゃん お・ん・な!!
764nobodyさん:2006/07/19(水) 20:14:14 ID:???
float型の 1.49080555641E+15 を、
一般的な数値の表示形式に変換して表示することはできますか?
単純にint型にすると、オーバーフローしてしまうので・・。
765764:2006/07/19(水) 20:48:57 ID:???
printf('%.0f', $float);
で、できたようです。

ところで、
echo $a = 1209314420881328;

echo $b = 1209314420881329;
は、違う値($a != $b)だけど、同じ表示(1.20931442088E+15)になるんですね・・。(いまいちよくわかってないです)
766nobodyさん:2006/07/19(水) 21:04:01 ID:???
>>763 うちのかーちゃんそろそろ60歳なんだが、ある意味すごくイヤだなそれ
767nobodyさん:2006/07/19(水) 21:54:47 ID:R8UceB4D
変数に指定の文字列が含まれている場合、処理するにはどうすればいいのでしょうか?
以下のようなソースですが、希望通りになりません。

$image="test.jpg";
if($image==".jpg"){
echo "これはJPEGファイルです";
}
768nobodyさん:2006/07/19(水) 22:03:14 ID:SHpEirXb
>>767
正規表現でマニュアル嫁
769nobodyさん:2006/07/19(水) 22:11:02 ID:???
>>767
> if($image==".jpg")
両辺が同一ではないのですから、当然、マッチしません。
正規表現を使ってください。

PHP: preg_match - Manual
ttp://jp.php.net/manual/ja/function.preg-match.php
770nobodyさん:2006/07/19(水) 22:28:02 ID:???
>>768-769
以下のソースで出来ました。アドバイスありがとうございました。
if(preg_match("/.jpg/",$image)){
echo "これはJPEGファイルです";
}
771nobodyさん:2006/07/19(水) 22:33:40 ID:???
敢えて言っておくと、

$image = 'test.jpg.png';

でも通るから正しくない
772nobodyさん:2006/07/19(水) 22:45:28 ID:???
>>770
771氏が指摘されたように、後方一致にしないと完全ではありませんね。
そのままでは部分一致です。

PHP: パターン構文 - Manual
ttp://php.liukang.com/manual/ja/reference.pcre.pattern.syntax.php
773nobodyさん:2006/07/19(水) 22:47:54 ID:???
if(preg_match("/\.jpe?g$/i",$image)){
echo "これはJPEGファイルです";
}
拡張子が.jpegの時もたまにある
774nobodyさん:2006/07/19(水) 22:54:39 ID:???
>>773
jpeのときもあるんだよなコレが。
775nobodyさん:2006/07/19(水) 23:00:07 ID:???
だったら「jeg」もあるんだなコレが。
776nobodyさん:2006/07/20(木) 00:05:34 ID:???
任意の過去の日付をあらわす8桁の数字YYYYMMDDから、曜日を割り出す関数ってありますか?
777nobodyさん:2006/07/20(木) 00:32:58 ID:???
まぁ組み込み関数ではなくてモジュールになってしまうけどあるよ。

http://search.cpan.org/~stbey/Date-Calc-5.4/Calc.pod
778nobodyさん:2006/07/20(木) 00:48:51 ID:???
>>776
まあ、関数じゃないけど、俺ならこうする。モジュール使うよりはマシ。
$a = '20060101';// 任意の日付
$weekname = array('日','月','火','水','木','金','土');
echo $weekname[date('w',strtotime($a))]; // '日'
779nobodyさん:2006/07/20(木) 01:18:02 ID:???
検索エンジンになりつつあるな
780nobodyさん:2006/07/20(木) 01:59:05 ID:???
PHPって何で3項演算子が左結合なんですか?
781nobodyさん:2006/07/20(木) 02:03:59 ID:???
>>780
開発した人に聞いて
782754:2006/07/20(木) 02:05:26 ID:???
レス遅くなりました。
>>755
>未定義だと言われるのなら先に定義しておけばいいじゃない。
$bを先に定義してもこの NOTICE は出ますよね?そういう意味ではないかな

>>756-758
試して検討してみます。ありがとうございます。

>>759
確かに NOTICE は表示されなくなりますが…
根本的な解決にならないので…
783nobodyさん:2006/07/20(木) 02:06:36 ID:???
>>782
> $bを先に定義してもこの NOTICE は出ますよね?そういう意味ではないかな
試してからやれ、このハゲ。
784nobodyさん:2006/07/20(木) 02:11:13 ID:???
>>783
Notice出るよ。
785nobodyさん:2006/07/20(木) 02:14:47 ID:???
>>773-775
横着しすぎると .j にまでマッチしてしまったり
786nobodyさん:2006/07/20(木) 02:14:53 ID:???
なんでPHPでこんな厳密なコーディングせにゃならんのだろうか
787nobodyさん:2006/07/20(木) 02:16:54 ID:???
>>785
素直に
if(preg_match("/\.(jpg|jpeg|jpe|jeg)$/i",$image)){
echo "これはJPEGファイルです";
}
って書いた方がよさげ
でも俺、.jegって見たことないよ。どんなときに作られるんだそれ。
788nobodyさん:2006/07/20(木) 02:23:44 ID:???
>>787
マジレスすると、拡張子なんて信用できない。

例えば、JPEG形式で保存された画像にファイル名を付けるとする。
そこで敢えて拡張子を「gif」にしたとする。

* * *
こんなことしてもJPEGがGIFになることはないよね。
誤解している人も多いが、HTML文書の拡張子は「html」か「htm」じゃないとダメだ ・・・なんて言う
香具師がいるけどそれは違う。

拡張子なんて関係無い。
789nobodyさん:2006/07/20(木) 02:34:35 ID:???
>>782
>>759
>確かに NOTICE は表示されなくなりますが…
>根本的な解決にならないので…
といいつつ
>>758を検討している件について。

790nobodyさん:2006/07/20(木) 02:37:27 ID:???
>拡張子なんて関係無い。
サーバーの設定とブラウザの挙動による。
791nobodyさん:2006/07/20(木) 03:40:55 ID:???
>>788
論点がずれている気がする。
拡張子を変更してもフォーマットに変更はない。
が、「拡張子を変えることで画像を表示できない」ことは問題だ。

大抵のサーバは拡張子 html で "Content-Type: text/html" を送ってくるし、
「拡張子なんて関係ない」は言い過ぎではないかと。

自前のサーバで "Content-Type" を設定するというのなら、気持ちはわからないでもないが、
それを他の人に求めるかとなると話は別だろう。
792nobodyさん:2006/07/20(木) 07:32:37 ID:???
>>789
おまけに、この場合のNoticeを消そうと思ったら
× list($a, $b) = @explode("|", $str);
○ @list($a, $b) = explode("|", $str);
だったりする罠。
793nobodyさん:2006/07/20(木) 09:42:16 ID:???
>>789
必ず $a と $b の二つの要素だけが必要になるのなら、

list($a, $b, $dummy) = explode("|", $str."||");

こうすればよい。
794nobodyさん:2006/07/20(木) 09:50:36 ID:???
ごめん。やっぱりこれでよかった。

list($a, $b) = explode("|", $str."|");
795nobodyさん:2006/07/20(木) 10:34:16 ID:???
>>754
セパレータが存在するか事前にチェックして処理を分けるのが一番賢い方法だと思う。
見た目に囚われてて視認性や可読性を犠牲にしてないか?
三項演算子のダメな使い方と同じ道を辿ってるぞ。
796754:2006/07/20(木) 12:01:05 ID:???
>>789
>>792
エラー制御演算子使うのも確かに本質的に同じですね…
で、配列のエラーなので>>792のいう通りでした。

>>795
$strの中を2度も見たくないと思って質問したのですが、
ごもっともな指摘です。
797nobodyさん:2006/07/20(木) 12:06:05 ID:???
ところで、変数に大き目の文字列(HTMLページ丸ごとのような)が入っていて、
スクリプト途中で使用済みになった場合、
$html = "";
とかって初期化すると、スクリプトの効率がよくなったりしますか?
たとえば、

$arHtml = file('aa.html');
$html = implode($arHtml);

のように読み込んだファイルを $html の文字列一つにした後、その後の処理で使用しない $arHtmlを

$arHtml = array();

とするとか。
798nobodyさん:2006/07/20(木) 12:43:44 ID:???
>>765
float の大きさはプラットフォーム依存です。
ただし、通常はおよそ 10 進数で 14 桁の精度があり、最大値は ~1.8e308 (これは 64ビット IEEE フォーマットです) となります。

1.2093144208813E+015
普通は14桁のはずだが
799nobodyさん:2006/07/20(木) 12:47:16 ID:???
>>797
どうせ消すならちゃんとunset($arHtml)で;変数管理構造体ごと消すべきだと思うけど…。
食ってるメモリ量にもよるけど、それが巨大なら効率が上がる場合もあるんじゃないかな。
HTML丸ごとくらいは大したサイズじゃないと思ったりもするけど。
メモリスワップを引き起こすほどじゃなきゃ体感できるほど変わらんと思ったりもするけど。
800nobodyさん:2006/07/20(木) 13:11:38 ID:???
>>799
ありがとうございます。
どのくらいが大きい量なのかわからなかったので。
レンタル鯖であれば、100バイトの1万行でも楽々動いていたのでさほど気にすることでもないのでしょうか。
801nobodyさん:2006/07/20(木) 13:38:24 ID:???
共有のレンタル鯖だと自分だけ省メモリにしたとこで速度的には何も変わらんよな。
単に他人への迷惑が多少減るだけ。
802nobodyさん:2006/07/20(木) 13:45:15 ID:???
>>797
> $arHtml = file('aa.html');
> $html = implode($arHtml);
使ってしまったメモリを解放するより、2回もでかいメモリアロケーションを
発生させてるのを減らす努力をした方が効率は上がると思う。
803nobodyさん:2006/07/20(木) 13:52:49 ID:???
>>802
まったくだw
804nobodyさん:2006/07/20(木) 14:06:48 ID:zh5fHket
質問です。

自分で定義したfunctionが沢山書かれたファイルを、別のサーバにあるphpファイルで呼び出そうとしたらうまくいきません。

別のサーバのphpファイルには
require_once("http://hogehoge.com/my_function.php");
としているのですが、実行すると、
Call to undefined functionといわれます。

ちなみhogehoge.comのサーバのルートからのパスをrequireで指定すると動きます。

くだらない質問ですみません、ヒントがありましたらお願いします。

805nobodyさん:2006/07/20(木) 14:10:58 ID:???
>>802
そのスクリプトは、HTMLのテンプレートの中に置き換える予定の文字を書き込んでおき ( %name% ) 等
あとで、

foreach ($Ar as $key => $value) {
$html = str_replace("%".$key."%", $value, $html);
}

でワンクッションで置き換えようとおもうたからです。
806nobodyさん:2006/07/20(木) 14:13:16 ID:???
>>804
淫狂うど
807nobodyさん:2006/07/20(木) 14:17:28 ID:zh5fHket
>806
レスありがとうございます。
includeでも同じようです。
サーバの設定にもよるのでしょうか?
808nobodyさん:2006/07/20(木) 14:40:37 ID:???
>>807
ブラウザでhttp://hogehoge.com/my_function.phpを表示させてみれ
その表示内容がrequireで読み込まれてる内容だから。
その中に自分の欲しいPHPコードは入っているかい?
809nobodyさん:2006/07/20(木) 14:44:51 ID:zh5fHket
>808
レスどうもです!
なるほど!ちょっと盲点でした。
httpで読んでもダメという解釈でいいのでしょうか?
810nobodyさん:2006/07/20(木) 14:44:57 ID:???
>>805
んー・・・・ だから?
それと無駄メモリ使いの手抜きコードと何の関連があるの?
いや別にHTMLファイル2個分くらい、たかが知れてるから
さほどこだわる必要も無いと思うけどな。
そのくせメモリ解放を気にするなんて小にこだわり大を失うって言うか。。
811nobodyさん:2006/07/20(木) 14:48:58 ID:???
>>809
http以外で何でアクセスするんだ。
そうでなく、httpでアクセスしてもちゃんとPHPコードの形で出力されるようにすればいいだけ。
812nobodyさん:2006/07/20(木) 14:51:49 ID:???
>>809
拡張子を.txtにしてインクルードしたらいい
813軟式PHP:2006/07/20(木) 14:53:14 ID:???
関数丸見えて嫌だな。
ちゃんとアクセス制限しないとな。
814nobodyさん:2006/07/20(木) 15:09:44 ID:???
拡張子をcgiにしておけば500エラーが出て表示されない
815nobodyさん:2006/07/20(木) 15:14:57 ID:???
>>810
ありがとうございます。
わからないから聞いたわけで。
HTMLファイル2個分くらいはいちいちこだわらずにおいたほうがいいということですね。
ありがとうございました。
816nobodyさん:2006/07/20(木) 15:25:46 ID:???
>>814
何の意味がw
817nobodyさん:2006/07/20(木) 15:29:35 ID:???
>>816
データファイルはよく拡張子cgiにしとくよ。
818nobodyさん:2006/07/20(木) 15:30:08 ID:???
>>813
JavaScriptだって丸見えなんだから気にしない!
819nobodyさん:2006/07/20(木) 15:33:23 ID:???
こんにちは。初めてお世話になります。
ホームページに、自作した柄のカウンターを置きたいのですが、そういったソフトはありますでしょうか?
なるだけ簡単に設置できるソフトがいいです。
出来れば、無料で。。。よろしくお願いいたしますm(_ _)m
820nobodyさん:2006/07/20(木) 15:34:18 ID:???
>>819
いっぱいある。
どこのでもだいたい簡単で、ほぼ無料。
821nobodyさん:2006/07/20(木) 15:40:16 ID:???
>>819
ここは自分で作る人のためのスレで、出来合いのソフト探しはスレ違い。
822819:2006/07/20(木) 16:16:00 ID:???
>>820
ありがとうございます。もっかい探してみます!ありがとうございました。
>>821
すれ違いスマソ。
それでは、失礼しますた。m(_ _)m
823nobodyさん:2006/07/20(木) 16:50:05 ID:???
>>817
プログラムから読むのとhttpで読むのとは訳がちがう。

訳あってあいてのftpのパスワードを知る訳にいかない。
こっちのソースは相手にみえてもよい。
という場合に、手元で相手の鯖のプログラムをいじれるというメリットはある。
824nobodyさん:2006/07/20(木) 17:03:43 ID:???
質問です。
ページを更新するたびに、
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){
処理
}

この処理

どちらのほうがサーバーに負担をかけずに良さそうですか?
825nobodyさん:2006/07/20(木) 17:06:55 ID:???
くだらない質問だと思いますがよろしくです。
文字列から最初の2文字だけを取り除くにはどうしたらいいでしょうか?
826819:2006/07/20(木) 17:10:45 ID:???
お陰様で、無料の自作画像の使えるカウンターの置いてあるサイトが見つかりました。
本当にありがとうございました。m(_ _)m
827825:2006/07/20(木) 17:12:36 ID:???
おかげさまで解決しました。
本当にありがとうございました。m(_ _)m
828nobodyさん:2006/07/20(木) 17:15:55 ID:???
829nobodyさん:2006/07/20(木) 17:24:19 ID:???
X年Y月が、A年B月〜C年D月の間にある年月かどうかを判定する
簡単な方法はないでしょうか?
830nobodyさん:2006/07/20(木) 17:28:14 ID:???
>>824
たとえば一行10バイト程度なら?サーバーの環境にもよるし。
要はケースバイケース。
831nobodyさん:2006/07/20(木) 17:40:18 ID:???
掲示板の送信内容が全て半角の場合をチェックしてキックしたいんですが
どうしたらいいでしょうか?
半角といえど色々あるので正規表現でもどう書いていいかわかりません
832nobodyさん:2006/07/20(木) 17:46:10 ID:???
>>830
1行約50byteくらいなんですが・・・
サーバーの環境にもよるのですね
アリガトウございます。
833nobodyさん:2006/07/20(木) 17:47:15 ID:???
>>831
送信内容を
$txt
に格納したとして
strlen($txt) == mb_strlen($txt)
なら
キック
834nobodyさん:2006/07/20(木) 17:58:59 ID:???
>>829
年が西暦なら普通にXYとABとCDを比較すれば良いのでは?
835nobodyさん:2006/07/20(木) 18:02:55 ID:a8uvmb5c
ちょっと、お伺い致します。「http://www〜/index.php」でアクセス
してきた人を全て、「https://www〜/index.php」に転送させてSSLで
通信させたいのですが、どうやれば良いのでしょうか?
PHPで$_SERVER['DOCUMENT_ROOT']; や $_SERVER['SCRIPT_FILENAME'];
で調べて、「https://www〜/index.php」に転送させようとしたのです
が、「http」でリクエストしてきたのか「https」でリクエストしてきた
のかまでは表示されませんでした。Apacheのバーチャルホストの設定
でも良いので、どなたか「http」でアクセスしてきた人を「https」の
同じページに転送させる方法をご存知でしょうか?宜しくお願い致しま
す。
836nobodyさん:2006/07/20(木) 18:11:46 ID:???
>>835
$_SERVER["HTTPS"] は未定義?
837nobodyさん:2006/07/20(木) 18:12:08 ID:???
何故、リファラーを調べない?
838nobodyさん:2006/07/20(木) 18:15:49 ID:???
>>837
何故、リファラーを調べない? という発言が出てくるのか意味不明。
839nobodyさん:2006/07/20(木) 18:21:14 ID:a8uvmb5c
>>836

>>835です。ありがとうございます!!
$_SERVER["HTTPS"] で調べたら、httpsの時は「on」になり、
httpの時は何も表示されませんでした。この$_SERVER["HTTPS"] が
onかどうかで、条件分岐させれば良いのですね。
どうも、ありがとうございました!!
840nobodyさん:2006/07/20(木) 18:26:40 ID:???
>>839
こういう時は phpinfo を https でアクセスして表示させてみると良いよ。
定義される $_SERVER 変数一覧が見れるから。
841nobodyさん:2006/07/20(木) 18:32:25 ID:???
>>838
ごめん。意味を取り違えていた。
842nobodyさん:2006/07/20(木) 18:37:11 ID:???
許さんよ
843nobodyさん:2006/07/20(木) 18:37:59 ID:???
許しておくれよ
844nobodyさん:2006/07/20(木) 18:43:17 ID:???
ダメと言ったらダメだ!!
845nobodyさん:2006/07/20(木) 18:45:17 ID:???
このガンコ親父が!!
846nobodyさん:2006/07/20(木) 18:47:32 ID:a8uvmb5c
>>840

>>839です。ありがとうございます。phpinfoをhttpsでアクセスして
みたら、_SERVER["SCRIPT_URI"] 等の$_SERVER 変数一覧が出てき
ました。こういう時は、phpinfoで定義済み変数を調べれば良いので
すね。ありがとうございました!!
847nobodyさん:2006/07/20(木) 18:47:56 ID:???
このウンコ親父が!!
848nobodyさん:2006/07/20(木) 18:48:20 ID:???
このチンコ親父が!!
849nobodyさん:2006/07/20(木) 18:51:02 ID:???
このマンコ親父が!!
850nobodyさん:2006/07/20(木) 18:51:49 ID:???
(´Д`;)ハァハァ
851nobodyさん:2006/07/20(木) 19:08:29 ID:???
おまいらオモロイw
けど、そんなのはマ板でやれ
852nobodyさん:2006/07/20(木) 19:09:33 ID:???
おまえら自演しすぎ、迷惑だから消えろ
853nobodyさん:2006/07/20(木) 19:59:45 ID:zh5fHket
>811
レスどうもです。遅くなってすみません。
なんとなく解決した気になっていたのですが、いままた別のパターンで同じような罠にはまりました。

A include(http://hogehoge.com/my_function.php);
B include(/home/htdocs/my_function.php);←サーバのパス

AがダメでBが大丈夫な仕組みというか理由が知りたいです。
僕はいまローカル環境で作っていますが、AのパスもBのURLもブラウザに直接入力すると、どちらも何も表示されません。


854nobodyさん:2006/07/20(木) 21:45:25 ID:x+eRwqU4
"a=1&b=2&c=3"
という文字列を与えたら
Array
(
  [a] => 1
  [b] => 2
  [c] => 3
)
という配列を返してくれる関数はありますか?
また、その逆をしてくれる関数はありますか?
855nobodyさん:2006/07/20(木) 21:47:44 ID:???
$ar=split('&', $str) ;
$str=join('&', $ar) ;
856nobodyさん:2006/07/20(木) 22:24:46 ID:???
>>853
勿論ソースを表示させての話だよね>何も表示されない
857nobodyさん:2006/07/20(木) 22:47:11 ID:???
>>854
ない

>>856
>>471
858nobodyさん:2006/07/20(木) 22:48:24 ID:???
>>857
あるある
859nobodyさん:2006/07/20(木) 23:05:47 ID:???
>>854
> という配列を返してくれる関数はありますか?
ある。

> また、その逆をしてくれる関数はありますか?
PHP5以降でならある。
860nobodyさん:2006/07/20(木) 23:06:09 ID:eXAIKTBk
マルチバイトで「山田」と「田中」のように複数の文字列のうち、
どちらか一方の文字列をマッチさせるときはどのようにしますか?

単にマッチさせるだけなので、正規表現関数ではなくて
文字列関数でループ処理した方がいいですかね?
(マルチバイトのmb_eregとか試してみたけどうまくいかなかった)
861nobodyさん:2006/07/20(木) 23:12:56 ID:???
>>853
> A include(http://hogehoge.com/my_function.php);
これはhogehoge.comのWEBサーバーにお願いしてファイルをダウンロード(名前をつけて保存と一緒)している。
そのため、取得できる内容はWEBサーバーの出力結果の内容になり、
PHPとして解釈できる拡張子だとPHPが実行されてその結果が表示されてしまう。

> B include(/home/htdocs/my_function.php);←サーバのパス
これは途中に何も介さず、PHP自身がファイルをそのまま取り込んでいる。
だから何も内容は変化せず、ファイルの内容がそのまま取得される。

通常のPHPの処理としてはBなわけだが、Aみたいに「ネット越し」でファイルを得ようとすると、
何を経由してるかによって結果が変化してしまう場合があるというわけ。
862nobodyさん:2006/07/20(木) 23:13:50 ID:???
>>860
どう試して上手くいかなかったのかkwsk
(ソース貼れ)
863nobodyさん:2006/07/20(木) 23:14:36 ID:???
>>860
mb_eregでもmb_strposでもどっちでもできると思うんだが。
mb_eregで一体どういう書き方をしたんだ。
864nobodyさん:2006/07/20(木) 23:16:50 ID:???
>>860
件数が少なくて、検索する文字列の内容が分かってるならループも要らんだろう。
865nobodyさん:2006/07/20(木) 23:53:54 ID:???
>>860
if(($str=="田中"||$str="yamada")){
    処理;
}
866nobodyさん:2006/07/21(金) 04:14:32 ID:???
>>857
意味不明
867nobodyさん:2006/07/21(金) 06:59:55 ID:???
>>866
ただの知ったかぶりさね
868nobodyさん:2006/07/21(金) 07:31:02 ID:???
>>853
ローカルで表示させるなら
http://localhost/my_function.php
869nobodyさん:2006/07/21(金) 07:49:38 ID:???
>>868
表示してどーすんだ
870nobodyさん:2006/07/21(金) 08:29:07 ID:iPhYBOeT
php超初心者で勉強を始めたばかりのものですが、phpコマンドにzlibモジュールを追加
する時に、libexpatというライブラリが必要と本に書いてあったのですが、そのrpmパッケージが
どこで入手できるのかわかりません。
大変申し訳ありませんが、ご存知の方がいらっしゃいましたら教えていただけないしょうか?

開発環境はwindowsではなく、RedHatLinux9です。

aptコマンドを使えるようにして、検索をかけてみたのですが全くヒットしません orz
871nobodyさん:2006/07/21(金) 08:36:14 ID:???
ttp://rpm.pbone.net/index.php3

ここで探してみれば?
872nobodyさん:2006/07/21(金) 08:47:09 ID:???
>>870
そんなんいるっけ?何て本?
873nobodyさん:2006/07/21(金) 08:52:48 ID:iPhYBOeT
>872さん

PHP×PostgreSQLでつくる最強webシステムという本で、その本の340ページに書いてあります

874nobodyさん:2006/07/21(金) 09:04:48 ID:???
>>873
2002年の本か…もう情報が古いよーな気がするが。
875nobodyさん:2006/07/21(金) 09:05:58 ID:iPhYBOeT
>874さん

たしかに。。。phpのバージョンが4の時の話なので。。。。

パッケージ自体がもうリリースされていないんでしょうか
876nobodyさん:2006/07/21(金) 09:10:02 ID:???
っていうか、XSLを使うわけじゃなかったらexpatなんて要らないと思うんだけど。
877nobodyさん:2006/07/21(金) 09:18:41 ID:iPhYBOeT
>876さん

なんだか、Authクラスを使うには必要っぽいような書き方されてるんですよねぇ
878nobodyさん:2006/07/21(金) 09:30:43 ID:???
くだる話はやめてください
879nobodyさん:2006/07/21(金) 09:37:00 ID:???
>>877
とりあえずその本は捨てちゃえば?
880nobodyさん:2006/07/21(金) 10:06:48 ID:5NMNDw00
>861
ありがとうございます。凄くわかりやすいです。助かりました。
質問ばかりで申し訳ないのですが、
インクルードしたいファイルが同一サーバではない場合(サーバのパスを指定できない場合)はどのようにしたらいいでしょうか?
前述のように拡張子をphp以外のもの(webサーバを経由しても内容が変化しないもの)にするのが一般的でしょうか?
881860:2006/07/21(金) 11:30:17 ID:???
mb_ereg_match使ってました
で、やっぱりマッチしない
mb_eregならマッチしてました

mb_regex_encoding('sjis');
$str = "こんにちは山田太郎です";
$pattern = "(山田|田中)";

if (mb_ereg($pattern, $str)) echo "mb_eregマッチしました";
else if (mb_ereg_match($pattern, $str)) echo "mb_ereg_matchマッチしました";
else echo "no match";
882860:2006/07/21(金) 11:32:37 ID:???

すいません
テストコード整形したので分岐がおかしい
両方チェックするようにしてもmb_ereg_matchはマッチしない
PHP4.3系
883nobodyさん:2006/07/21(金) 11:39:59 ID:???
他サーバのphpファイルをincludeってことは
allow_url_fopenが有効ってことか、
他サーバのソースをそのまま実行するってのは、
きもちわるく思ってしまう
最も、他サーバが信頼できるサーバであるなら
そういう機能は積極的に使うのが賢いのだと思いつつ
ここぞという使いどころにめぐり合っていない
allow_url_fopen のステキな使い方ないかな?
884nobodyさん:2006/07/21(金) 11:44:06 ID:???
>>880
まー、拡張子を変えちゃうか、あるいは.htaccessで拡張子に対するApacheの扱いを変えちゃうか、
あるいはラッパーのプログラムを経由してファイル内容をreadfile()とかで垂れ流させるか、ってとこじゃない?
885nobodyさん:2006/07/21(金) 14:41:49 ID:???
フォームに入力された半角のバックスラッシュまたは円マークを
全角の¥に変換したいのですがうまくできません。
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); // ワーニング変換できず

こんな感じです…。何かうまいやり方がないでしょうか?
886nobodyさん:2006/07/21(金) 14:45:03 ID:???
str_replace
887nobodyさん:2006/07/21(金) 15:14:02 ID:???
>>886
おおおおお・・・・・・・・
すんなりできました。この辺の似た機能だけど違う関数を
勉強しないとダメですね。886さんありがとうございました。助かりました。
888nobodyさん:2006/07/21(金) 15:15:36 ID:???
覚えたての正規表現ってのはなぜかかっこつけて使いたがるからね。
str_replace は天才
889nobodyさん:2006/07/21(金) 16:28:20 ID:???
>>887
文字コードがシフトジスだとstr_replaceじゃ駄目だけどね
890nobodyさん:2006/07/21(金) 16:51:58 ID:???
マニュアルに内部コードとしてsjis使うのは薦めないってちゃんと書いてあるんだから、
おとなしくUTF-8でも使ってろってもんだ。
891nobodyさん:2006/07/21(金) 17:43:50 ID:5NMNDw00
mysqlに接続するために必要な、DBの名前とかURL、パスワード、ユーザー名を
config.phpというファイルに書いて、必要なときにincludeしているのですが、
スクリプト中にパスワードとかを直接記述しているのは、やっぱりセキュリティー的に危険なのでしょうか?
また、こういう場合は一般的にどうやって対処しているのでしょうか?
892nobodyさん:2006/07/21(金) 17:46:37 ID:???
>>891
その、config.php がドキュメントルートの下にないのなら、別に問題ない
893nobodyさん:2006/07/21(金) 17:48:01 ID:???
>>891
Zend Guard
894nobodyさん:2006/07/21(金) 17:48:14 ID:???
Perlの時は、Qとか駆使してSJISで書いてたな。
895nobodyさん:2006/07/21(金) 18:00:02 ID:???
896nobodyさん:2006/07/21(金) 18:11:32 ID:???
www.example.comから飛んできた人のリファラーをチェックすればいい
897nobodyさん:2006/07/21(金) 18:12:48 ID:???
>>895
能動的にはwww.example.comを走査してリンクを探す。
受動的にはhogehoge.comにアクセス解析を設置してリファラを見る。
898nobodyさん:2006/07/21(金) 18:14:46 ID:b+2L373x
名前の入力フォームでテキストに入力された漢字をもう一つのテキストにphpで
カタカナに変換するにはどうしたら良いでしょうか?ご教授お願いします
899nobodyさん:2006/07/21(金) 18:23:35 ID:???
>>897
能動的にリンクを探したいのですが、
何か他のサイトを読み込む方法などあるのでしょうか?
900nobodyさん:2006/07/21(金) 18:36:31 ID:???
901nobodyさん:2006/07/21(金) 18:38:32 ID:???
mb_send_mail()でメールを送信しました。
From:[email protected]

From 【[email protected] ([email protected])】

となるのですが、このFromに名前をつけれないのでしょうか?

たとえば
From 【EXAMPLEからメールです。 ([email protected])】

このような感じでしたいのですが、どうすれば良いのでしょう。
どなたか教えていただけませんか?
902nobodyさん:2006/07/21(金) 18:42:33 ID:???
>>901
additional_headers に所望の From ヘッダを挿入
http://jp.php.net/manual/ja/function.mb-send-mail.php
mime_encode とか忘れずに。アドレスを囲むのは <> で。
903nobodyさん:2006/07/21(金) 18:46:14 ID:???
>>902
有難う御座います。
タイトル(?)の部分が文字化けしてしまったのですが、
mime_encodeというのは何でしょうか?
ググってみたのですが、それらしいサイトが見当たらなくて
904nobodyさん:2006/07/21(金) 18:47:58 ID:???
>>903
3分ググっただけかよ と。
905nobodyさん:2006/07/21(金) 18:49:09 ID:???
>>903
http://www.google.com/search?hl=ja&q=mime_encode&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=
それらしいサイトだらけに見えるんだけどー
906nobodyさん:2006/07/21(金) 18:49:17 ID:???
>>903
最近 mime_encode せずにメールのヘッダ部分が化けるって質問多いな。
なんだかなぁ。
907nobodyさん:2006/07/21(金) 18:50:01 ID:???
mb_encode_mimeheaderですね。
今見つけました。
908nobodyさん:2006/07/21(金) 19:01:03 ID:???
SMTPサーバーを立ち上げたいのですが、
何か参考になるサイトがあれば教えてください。
909nobodyさん:2006/07/21(金) 19:15:24 ID:???
PHPでSMTPサーバを書くっていうことか?
910nobodyさん:2006/07/21(金) 19:15:44 ID:???
>>909
いや、自分のローカルサーバーでメールが送信できるようにしたいんです
911nobodyさん:2006/07/21(金) 19:18:24 ID:???
それ、phpの質問?
912nobodyさん:2006/07/21(金) 19:21:06 ID:???
>>911
すみませ4ん、どこで質問していいのか
913nobodyさん:2006/07/21(金) 19:21:24 ID:???
>>908
>>634 だろ?
こんなところで聞かないと駄目なようなら SMTP サーバなんて立ち上げるな。
914nobodyさん:2006/07/21(金) 19:27:27 ID:???
>>913
すみませんが別人です。
915nobodyさん:2006/07/21(金) 19:31:58 ID:???
>>914
どっちでもいい。立ち上げるな。
916nobodyさん:2006/07/21(金) 19:32:25 ID:???
>>915
立ち上げてはいけないのですか・・・。


・・・あれ?
917nobodyさん:2006/07/21(金) 20:11:14 ID:???
PHPってサーバーにウプしたらソースがばれますか?
918nobodyさん:2006/07/21(金) 20:19:23 ID:???
サーバの設定による
919917:2006/07/21(金) 20:28:16 ID:???
>>918
必死につくったのがバレるのはいやだなとおもったんですが、
サーバーにどんな設定をすれば盗まれないのでしょうか?
920nobodyさん:2006/07/21(金) 20:40:06 ID:???
>>919
ロジックを記述した部分をドキュメントルートの下に置かなければ
よほどのことがない限り、ソースは流出しないよ
921nobodyさん:2006/07/21(金) 20:47:25 ID:???
>>920

ありがとうございます。ちょっと勉強してみます。
922nobodyさん:2006/07/21(金) 21:22:58 ID:5NMNDw00
>892
>みなさん

パスワードなどが書かれたファイルを、ドキュメントルートより下にしか置けない場合、対処法はありますか?

そもそも、ドキュメントルート以下に置いたPHPファイルの中身を見るのは、結構簡単なのでしょうか?
923nobodyさん:2006/07/21(金) 21:23:48 ID:???
その程度の知識で作ったコードなんて、誰も見たいとは思わんだろう
参考になるコードなら、山ほど公開されてるしな
924nobodyさん:2006/07/21(金) 22:01:11 ID:???
ajax の使いやすいグラフィックライブラリってありますか?
925924:2006/07/21(金) 22:02:12 ID:???
↓こういうのが出来るやつ
http://www.nextapp.com/platform/echo2/echo/demo/
926nobodyさん:2006/07/21(金) 22:34:26 ID:???
system()を利用してシェルをコマンドを送った場合に、
ブラウザを閉じたり、セッションが終了すると
勝手に送ったジョブが終了してしまいます。

ブラウザを閉じたりしても、
ジョブが残るにはどうすればいいんでしょ??

環境は
FedoraCore 5
PHP 5
Apache 2
です。
927nobodyさん:2006/07/21(金) 22:46:08 ID:???
>>898
漢字の正確な読みなんて人間にだって分からないんだからプログラムじゃ不可能
928nobodyさん:2006/07/21(金) 22:46:38 ID:???
>>924
PHPじゃないだろそれ
929nobodyさん:2006/07/21(金) 22:49:37 ID:???
>>922
拡張子またはパーミッションの変更、あるいは特定のディレクトリに入れた上で
そのディレクトリに対して全IP制限やBASIC認証を施すなど。
930nobodyさん:2006/07/21(金) 23:40:53 ID:???
header('Content-type: application/xml; charset=utf-8');

$rdfData = simplexml_load_file('new.rdf');
$rdfData->channel->items->Seq->addChild('li', 'testurl', 'rdf');
echo $rdfData->asXML();

このコード実行するとApacheが死ぬんだが・・・・・
931nobodyさん:2006/07/22(土) 00:02:32 ID:???
>>930
サーバモジュールとしてPHPを入れてるなら、
PHPとサーバ(Apache)は一連托生。
PHPが落ちるような時にはApacheも引きずられる。
932nobodyさん:2006/07/22(土) 11:39:11 ID:6iz1vYAq
カウンタを作るためテキストファイルの読み書きをしているのですが、ごくたまにファイル内容が壊れてしまうときがあり悩んでおります。
コードは
$fp = fopen($count_file,'r+');
if (flock($fp, LOCK_EX)){
$count = trim(fgets($fp));
if (empty($count)) $count = 0;
$count++;
ftruncate($fp, 0);
fseek($fp, 0);
fputs($fp, $count);
}
fclose($fp);

flockでロックしてるので、ftruncateでファイル内容をクリアしても他から妨害されないと思ってるのですが…
お知恵をいただきたく。
933nobodyさん:2006/07/22(土) 12:30:20 ID:???
>>932
俺は書き込んでから丸める主義
fputs($fp, $count);
ftruncate($fp, ftell($fp));
ファイルが空になる瞬間がないと思ってるんだけど
934nobodyさん:2006/07/22(土) 12:42:04 ID:QMrS4QvA
URLを指定してtitleを取得したいんですけど、
良い方法ありませんか?

XMLパーサーでなんとか、文字列にして無理やり、正規表現でなんとか、
頭の悪い私にはどれも難しくて、スマートな方法はありませんか?
お願いします。

935nobodyさん:2006/07/22(土) 12:46:35 ID:???
>>934 手動でやれば。
936nobodyさん:2006/07/22(土) 12:51:37 ID:???
>>934
file_get_contents ()で開き、正規表現でマッチさせればいいやん。
937934:2006/07/22(土) 13:05:30 ID:QMrS4QvA
preg_split ですよね?
たぶん正規表現の書き方がおかしくて、出来ませんでした。
正規表現、勉強してきます。
938nobodyさん:2006/07/22(土) 13:08:47 ID:???
PHP4でこれを使ってftp_chmodを実現してるんですが、
指定ディレクトリ以下のファイル全てのパーミッションを変更、
またはワイルドカードでの指定を可能にすることはできないでしょうか?
あるディレクトリ内のファイルのパーミッションをphpからftp関数経由で
全て変更したいのですが、数が膨大なため、苦労しています。

<?php
if (!function_exists('ftp_chmod')) {
function ftp_chmod($ftp_stream, $mode, $filename)
{
return ftp_site($ftp_stream, sprintf('CHMOD %o %s', $mode, $filename));
}
}
?>
939nobodyさん:2006/07/22(土) 13:09:04 ID:???
split?
940nobodyさん:2006/07/22(土) 13:10:43 ID:6iz1vYAq
>>933
おお、なるほど!
参考にさせていただきます。
941934:2006/07/22(土) 13:15:54 ID:QMrS4QvA
matchですね、、、、、
splitでやってました。
それにしても正規表現、苦手ッス
942nobodyさん:2006/07/22(土) 13:17:48 ID:???
>>938
普通に他のFTPクライアントがやってるように
一覧を取得して(必要なら再帰)、各々にchmodを掛ける。
943nobodyさん:2006/07/22(土) 13:36:41 ID:???
while で配列の要素数だけ繰り返し、という場合、
$i = 0;
while($i < count($array)){

$i = $i + 1;
}

としてますがもっと簡単なコーディング教えてくださいませ
944nobodyさん:2006/07/22(土) 13:44:06 ID:???
>>943
foreach($array as $value)

foreach($array as $key => $value)
945nobodyさん:2006/07/22(土) 14:16:42 ID:wSNHExxb
ああああ
946nobodyさん:2006/07/22(土) 14:45:14 ID:???
現在のURLを取得するにはどうすればいいですか?
947nobodyさん:2006/07/22(土) 14:55:26 ID:???
$host = $SERVER['HTTP_HOST'];
$req_uri = $SERVER['REQUEST_URI'];
$scr_name = $SERVER['SCRIPT_NAME'];
$php_self = $SERVER['PHP_SELF'];

// 1
$url1 = $host . $req_uri;
// 2
$url2 = $host . $scr_name;
// 3
$url3 = $host . $php_selfi;

ケースバイケースで好きなのを選べ
948nobodyさん:2006/07/22(土) 15:00:05 ID:???
>>947
ありがとうございます!
949nobodyさん:2006/07/22(土) 15:33:52 ID:???
phpのPCREパターン修正子で
「デフォルトで、PCREは検索対象文字列を(実際には複数行からなる 場合でも)単一の行からなるとして処理します。 」
の'm (PCRE_MULTILINE)'の意味が分かりません。
950nobodyさん:2006/07/22(土) 15:40:13 ID:kdb16aHf
漢字などの文字列を数字に変換するような関数ってないですか?
951nobodyさん:2006/07/22(土) 15:46:36 ID:LAiwhQ0T
>>949
文字列の途中に改行コードがあっても、複数行とは認識しないってこと

"bar\nfoo\n"
こんな場合の文字列のこと
952949:2006/07/22(土) 16:45:47 ID:???
>>951
m有りでもmナシでも同じじゃないですか。
953nobodyさん:2006/07/22(土) 16:49:24 ID:???
>>952
違う、mが付くと\nが末尾として扱われる
954nobodyさん:2006/07/22(土) 16:52:44 ID:???
≪前の5件 |1| |2| |3| 次の5件 >>

こんな感じでページ送りしたいのですが、参考になるソースをおいてる
サイトありますか?
955nobodyさん:2006/07/22(土) 16:56:53 ID:???
>>954
マルチは死ねばいいと思うよ
956nobodyさん:2006/07/22(土) 17:03:27 ID:???
>>955

今生き返りました。教えてください。
957nobodyさん:2006/07/22(土) 17:05:03 ID:???
その程度のアルゴリズムも考えられないならプログラム止めれば?
958nobodyさん:2006/07/22(土) 17:05:42 ID:???
>>954
pearのpager
959nobodyさん:2006/07/22(土) 17:25:32 ID:???
>>958
ttp://elf.no-ip.org/~elf/php/peardoc/ja/package.html.pager.html

ここを参考にして勉強してみます。 今はチンチンカンプンプンです Qrz

もう一回しんできます。 生き返ったらもう一回質問させてください。・

960nobodyさん:2006/07/22(土) 17:53:18 ID:???
>>954
パラメータでページ番号を渡す
→ページ番号から表示範囲を計算する
→表示範囲の分だけHTMLを表示する

終わり
961nobodyさん:2006/07/22(土) 18:07:19 ID:???
cron を使って PHP のプログラムを動かしたいのですが、
本来の php.ini の設定は mbstring.script_encoding = EUC-JP なのですが
cron で動かしたいプログラムが置かれているディレクトリに
.htaccess を置いて、UTF-8 で書いています。
コマンドラインから、この PHP を動かそうとすると、
どうやら文字コードが違うのでエラーが表示されます。
コマンドラインに文字コードを指定する、なんてのはできないでしょうか?
962nobodyさん:2006/07/22(土) 18:15:38 ID:???
>>961
utf-8な設定のphp.iniを書いて、実行時に読み込ませる。

$ php -h

-c <path>|<file> Look for php.ini file in this directory
963nobodyさん:2006/07/22(土) 19:21:36 ID:???
>>949
$text = "abc
123
def";
echo preg_match("/\A.*\Z/", $text)," <= /\A.*\Z/\n";
echo preg_match("/\A.*\Z/s", $text)," <= /\A.*\Z/s\n";
echo preg_match("/^\d/", $text)," <= /^\d/\n";
echo preg_match("/^\d/m", $text)," <= /^\d/m\n";
964nobodyさん:2006/07/22(土) 20:40:44 ID:???
Windows2003 + Apache2 + PHP5 をインスコして動かそうとしてます。

WebサーバにIEで接続して下記のPHPファイルを見たら
「HTTP400 正しくない要求」と怒られました

<? phpinfo(); ?>

phpがうまく動いてないんだけど、httpd.confが悪いんかな?
965nobodyさん:2006/07/22(土) 20:55:49 ID:???
>>961
.htaccessってのはApacheの設定。PHPもApacheモジュール版は
Apacheの一部分という形なので、それで設定が出来る。
PHPの設定は、基本はphp.iniの方でやるんだよ。
966nobodyさん:2006/07/22(土) 21:06:31 ID:???
>>964
もちろんIISは動いてないよな?

拡張子の設定をApacheにちゃんとしてる?
967nobodyさん:2006/07/22(土) 23:52:08 ID:???
>>966
IISは動いてない。ほかのhtmlも見れる

AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
Action application/x-httpd-php "c:/php/php-cgi.exe"

こんな感じで拡張子も設定してある

ほかのサイトを見てたら
LoadModule php5_module "c:/php/php5apache2.dll"
php-cgi.exe使わないでこうしろってのもあったけど、
なんかこれだとApache自体起動しないんだよね。

c:\php\php5apache2.dllはあるくせに
Syntax error on line 115 of C:/Program Files/Apache Software Foundation/Apache2.2/conf/httpd.conf: Cannot load C:/PHP/php5apache2.dll into server
と怒られるんだよね。PHPが設定できてないのかな?
968nobodyさん:2006/07/23(日) 00:02:14 ID:???
php4.3にて検索用の管理用データベースを作成しています。
検索時にはクエリーに日本語を含めることもあるのですが、
そのときに「ー」が入るとREG_EBRACKというエラーが返ってきます。

調べてみたところJIS特有?のエラーで別の文字コードで回避出来るらしいのですが、
システムの都合上JISで構築する必要があります。

この場合「ー」を含んだ文字のエラーを回避する方法はありますでしょうか。

よろしくお願いします。
969968:2006/07/23(日) 00:04:05 ID:???
すみません、補足です。
具体的には、

if( ereg($target, "探してるものー") ){ echo "HIT"; }

のようにereg系統の関数で上記のエラーが発生しました。
試しにmb_eregを用いてみましたが同様にエラーが発生しました。
970nobodyさん:2006/07/23(日) 00:16:40 ID:TM25KdOC
MagpieRSS【http://www.hyuki.com/yukiwiki/wiki.cgi?MagpieRSS

これを利用して仲間内で必要な情報をまとめたサイトを作ろうと考えました。
それで、実際にこれを導入してみたところ
2バイト文字が ? で表示されてしまいます。

そのため、このページの下にある 「Jcode.phpを使う方法」を試してみましたが
やはり、2バイト文字が ? で表示されてしまいます。

Windows上で下記のような条件で動かしています。
PHP Version 4.4.2-pl1
Apache 2.0 Handler

最初は、マルチバイト系の問題だと思ったのですがJcode.phpを使っても
解決しないため、原因がわからなくなってしまいました。

どなたか、経験のある方がいらっしゃったらご教授願いたいです。
宜しくお願い致します。
971968:2006/07/23(日) 00:29:17 ID:???
スミマセン自己解決しました><; パソコン止めればよかったんですね。
972nobodyさん:2006/07/23(日) 00:35:24 ID:???
>>967
お前みたいなバカには無理ってことだよ
973nobodyさん:2006/07/23(日) 01:59:11 ID:V6UlX/Ft
[root@localhost ~]# pear install DB
No releases available for package "pear.php.net/DB"
Cannot initialize 'DB', invalid or missing package file
Package "DB" is not valid
install failed

pear install の使い方間違ってるかな?
974まさお:2006/07/23(日) 02:12:02 ID:PeJIVLLO
ホームページにゲームセンターがあります!
http://www.geocities.jp/kimu19780809/
975nobodyさん:2006/07/23(日) 02:32:16 ID:???
>>968
JISでなくSJISだろ、それ…最低限の文字コードの知識も持ち合わせてないで
日本語対応データベースを構築しようとはシステム屋をなめてるな。
素直に金出して外注で作ってもらえば?
つか、それ正規表現なんて使う必要あんの?
976nobodyさん:2006/07/23(日) 02:44:05 ID:???
>>975
いちいち細かい誤字をそこまで叩いて何か楽しい?
システム屋を語る前に精神を浄化した方がいいよ、どの程度のシステム屋かしらんけどw
977nobodyさん:2006/07/23(日) 03:09:02 ID:???
JISとSJISの違いを誤字だってよ!すげーなおまえww
978nobodyさん:2006/07/23(日) 03:14:18 ID:???
>>976
そんな怒るほど叩かれてないと思う。
979nobodyさん:2006/07/23(日) 03:48:54 ID:???
何にせよ余計な事言いすぎ。煽り交じりでしかレスできないって
どんな精神の持ち主だよww
980nobodyさん:2006/07/23(日) 09:13:30 ID:???
気付いてないようだから教えてやる。どっちも同レベル。うぜぇからキエロ。
981nobodyさん:2006/07/23(日) 09:16:56 ID:???
はあ…、こういう叩きの連鎖が荒らしになっている事に当事者は気が付かないんだよね。
982nobodyさん:2006/07/23(日) 10:00:00 ID:???
すいません質問させてください。
PHPで2MB以上のファイルをアップロードする場合、php.iniを編集しなければならないようですが、
当方レンタルサーバーを使っておりまして、php.iniの編集ができません。

スクリプト中に「ini_set('upload_max_filesize', '5M');」と記述しても2MB以上アップロードできません。
.htaccessでも設定できるようなのですが、具体的な記述方法を教えてください。
983nobodyさん:2006/07/23(日) 12:31:43 ID:???
>>982
ttp://www.php.net/manual/ja/configuration.changes.php
php_value 設定名 値
ただし、.htaccessで設定できるかどうかはサーバーの設定による。
984nobodyさん:2006/07/23(日) 12:38:17 ID:???
pph.iniの編集ができないってことは共有のレンタルか?
共有鯖で2MB以上のファイルをアップロードなんてはた迷惑だと思うがね
985nobodyさん:2006/07/23(日) 13:26:24 ID:???
>>969
単純な検索ならmb_strpos使っとけば
とりあえずこけることは無くなると思う。
正規表現をどうしても使いたいなら工夫が必要。
986nobodyさん:2006/07/23(日) 15:33:51 ID:???
下らないPHPの質問はここに書き込みやがれ 25
987nobodyさん:2006/07/23(日) 16:41:08 ID:wyHjEd65
0723,hoge
0723,fuga
0722,moge
0721,sage
0719,age

ってな具合で、日付,文字列って言う順序に並んでるファイルの中のデータを
21日から23日までの分だけ取得してprintするにはどうすれば良い??
21..23とかいう書き方ってあるんだっけ?
988nobodyさん:2006/07/23(日) 17:16:50 ID:???
>>987
ファイルなら順々に読んでいくしかないのでは?

一発で読み出そうと思ったらDB化するしかないような。
989nobodyさん:2006/07/23(日) 17:34:32 ID:???
思考停止した質問ばっかだな
990nobodyさん:2006/07/23(日) 17:34:54 ID:wyHjEd65
>>988
レスthx
if($file[0] == "21..23"){
$line = $file[1];
}
print $line;
こんなんじゃだめっすか?
991nobodyさん:2006/07/23(日) 17:36:08 ID:wyHjEd65

21..23って書いたら、21のときしかtrueにならない(T_T)
992nobodyさん:2006/07/23(日) 17:45:43 ID:???
>>991
if文の中には==や!=の他にも<とか>が使えるからw
後はな。分かるよな?
993nobodyさん:2006/07/23(日) 17:49:12 ID:???
>>990
PHPじゃ使えんだろうその範囲指定は。
994nobodyさん:2006/07/23(日) 18:02:02 ID:???
>>990
foreach
995nobodyさん:2006/07/23(日) 18:41:14 ID:???
SimpleXML関数で、子要素の先頭に子要素を追加するにはどうすればいいのでしょうか。
addChildメソッドでは末尾に追加されてしまいます。
996nobodyさん:2006/07/23(日) 18:52:48 ID:???
in_array($file[0], range(21,23))
997nobodyさん:2006/07/23(日) 19:28:09 ID:???
>>990
次スレよろ
998nobodyさん:2006/07/23(日) 19:41:06 ID:wyHjEd65
>>997
りょ、了解;
999nobodyさん:2006/07/23(日) 19:44:10 ID:wyHjEd65
>>997
ゴメソ。。
ホストではじかれてる。。 ナゼT_T
1000nobodyさん:2006/07/23(日) 19:54:46 ID:???
1000!!
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。