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

このエントリーをはてなブックマークに追加
1nobodyさん
PHPに関するくだらねぇ質問用スレです。
ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
次スレは>>970あたりが建てて下さい
過去スレは>>2
2nobodyさん:2005/12/18(日) 10:10: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/
3nobodyさん:2005/12/18(日) 10:12:55 ID:???
1乙
4nobodyさん:2005/12/18(日) 10:13:22 ID:???
超絶タイミングでの次スレ立て乙!>>1
5nobodyさん:2005/12/18(日) 10:14:18 ID:???
以下のサイトのように、
Webページのキャプチャ画像をPHPで生成することはできますか?

http://webscan.jp/
6nobodyさん:2005/12/18(日) 10:21:50 ID:???
できるかと言えばできる。
でも多分お前には無理。
7nobodyさん:2005/12/18(日) 10:27:16 ID:???
>>5
PHPだけでできない事は無いが、かなり難しい。
PHPでブラウザ(htmlを解析・レンダリグ)を作成するような物だと思ってくれ。

実際にはそんな事はやってられないので、既存のブラウザが画面に描画したものを
キャプチャするという仕組みが使われる事が多い。
そのwebscanってのもそうじゃないかな?
キャプチャの方法は OS・ブラウザのapiに依存するのでPHPのスレの範疇じゃないな。
適切な板やスレで聞くとよい。
8nobodyさん:2005/12/18(日) 10:36:39 ID:???
9nobodyさん:2005/12/18(日) 11:44:54 ID:???
Warning: Invalid argument supplied for foreach() in /home1/○○○.ne.jp/WWW/sendmail.php on line 132

Fatal error: Call to undefined function: mb_convert_encoding() in /home1/○○○.ne.jp/WWW/sendmail.php on line 141

本スレ529でご質問したところくだらないってっ却下されましたので
こちらでお尋ねいたします・・・
このメッセージが出てきます。テストサイトではちゃんと実行できるの
ですが。はじめてのphp初心者です。
10nobodyさん:2005/12/18(日) 11:55:34 ID:???
>>9
訳すとこんな感じか。つーかなんで俺が訳さにゃならんのだっ!ビタン(AA略

警告 : foreachに渡された引数が正しくない 132行目
致命的エラー : 定義されていないmb_convert_encoding()という関数が呼び出されている

上は、foreachに渡した引数がおかしいと言われているので、その引数を確認してみればよい。
下は、mb_*系の関数は拡張モジュール(標準ではない)なので、
その鯖の管理者さんが不要だと思った場合はインストールされない。
mb_*の一部の関数は、jcode.phpというphpのみで書かれたライブラリを
配布してくれている人がいるのでそれを使うのも一つの手かと。
11nobodyさん:2005/12/18(日) 12:01:11 ID:???
エラーメッセージでググれ
12nobodyさん:2005/12/18(日) 12:22:16 ID:???
>>9
foreachの直前に回したい変数をvar_dumpしてみれ
13nobodyさん:2005/12/18(日) 12:33:03 ID:???
もうこれテンプレに入れといた方がいいんじゃね?

※サーバで利用可能なモジュール及び関数リストの取得方法
<?php
foreach (get_loaded_extensions() as $module)
{
echo "<b>[". $module ."]</b><br>";
foreach (get_extension_funcs($module) as $func)
{
echo $func ."<br>";
}
}
?>

[standard]以下はPHPの標準関数。それ以外はオプションな。
このリストに欲しい関数がない場合はサーバ管理者にいってオプションを
組み込んでもらわないといけない訳。分かった?>>9
14nobodyさん:2005/12/18(日) 12:55:52 ID:???
>>13
テンプレに入れたって、ここで質問する人でそれ使って
ちゃんと確認できる人はいないでしょ。意味ねぇ。
15nobodyさん:2005/12/18(日) 12:58:07 ID:???
なんでエラーが出てるのにそのまま質問するのか理解できん
16nobodyさん:2005/12/18(日) 12:58:43 ID:???
>>9
sendmail.phpの132行目にあるforeachの変数が配列じゃないらしい。
プログラムの設定か何かをミスってる可能性あり。
あと、使ってるサーバーではmb_convert_encoding()がインストールされてないので
管理者に頼んで入れてもらわない限り動作しない。
17nobodyさん:2005/12/18(日) 12:59:58 ID:???
>>15
同じPHPスクリプトがサーバーによって挙動が変わるというのが
理解できないからでしょ。
18nobodyさん:2005/12/18(日) 13:05:28 ID:???
丸投げすれば誰かが解決してくれるだろうという発想なんだろうけど
こいつ自身が最大のバグだな
19nobodyさん:2005/12/18(日) 13:07:29 ID:???
>>13
本スレのテンプレになら意味あるんじゃね?提案してみれば?
20nobodyさん:2005/12/18(日) 13:12:38 ID:???
PHPのフリーなコンパイラーは存在しないのでしょうか?
有料ばっかりで・・・
21nobodyさん:2005/12/18(日) 13:19:07 ID:???
そのコンパイラーとやらは何ができるの?
22nobodyさん:2005/12/18(日) 13:19:24 ID:lBRzm0WN
>>20
有料なのを教えて
23nobodyさん:2005/12/18(日) 13:21:26 ID:???
>>21
配布ソースのコード隠蔽じゃないの?
他にPHPコンパイラやPerlコンパイラの用途って無いと俺は思ってたけど。
24nobodyさん:2005/12/18(日) 13:32:29 ID:???
>>22
20じゃないけど俺が知ってるのはこの辺。
ttp://www.zend.com/store/products/zend-encoder.php
25nobodyさん:2005/12/18(日) 13:35:28 ID:???
peclにbcompilerがあるよβだけど
つかフリーソフトでコード隠蔽する必然性がないんだからさあ
クローズドで儲けたい人はそういう人同士だけでやればいいじゃん
26nobodyさん:2005/12/18(日) 13:56:54 ID:???
コンパイルしたほうが実行速度早くなるとかないの?
27nobodyさん:2005/12/18(日) 14:01:37 ID:???
大して変わらないか、むしろ遅くなりそうな…
速くするためならオプティマイザかコードキャッシュでしょう。
28nobodyさん:2005/12/18(日) 14:01:55 ID:???
inst('A');を使いまわそうとするとループ?に入るのかエラーで処理が中断してしまいいます。
class内でも使えるようにするにはどうしたら良いのでしょうか?。
$this使えというのは無しでお願いします(^^;。

function inst($n){
static $inst;
if (!isset($inst[$n])) $inst[$n] =& new $n;
return $inst[$n];
}

inst('A');
inst('A'); // 既にインスタンスがあるのでA::A()は実行されない


class A{
function A(){
inst('A'); // ← A::A()を実行してループに入ってる??
echo 1;
}
}
29nobodyさん:2005/12/18(日) 14:08:04 ID:???
('A`)マンドクセ
30nobodyさん:2005/12/18(日) 14:12:12 ID:???
ひょっとして前スレのグローバルなインスタンスの人か?なんだこりゃ。
31nobodyさん:2005/12/18(日) 14:27:00 ID:???
>>28
そもそも意図が分からない。
なんでクラスAの中でさらにクラスAを生成する必要があんの?これ。
ループというのは正確じゃなく、クラスAの中で生成するクラスAがさらにクラスAを必要とするから
無限に子供のクラスAを作り続けようとする感じだろ。
(同じトコの実行を繰り返すわけじゃないからループとはちょっと違う)

とりあえずすぐ思いつくのはこんなとこ。
function inst($n){
static $inst;
if (!isset($inst[$n])) { $inst[$n] = 1; $inst[$n] =& new $n; }
return $inst[$n];
}
32nobodyさん:2005/12/18(日) 14:28:37 ID:???
>>31
リファレンスは静的に保持できませんよ
3331:2005/12/18(日) 14:31:21 ID:???
あ、駄目か。これじゃクラスAが生成されない。
というか、全てのクラスAが子供のクラスAを必要とするんだから、
原理的にこれは無限実行にならなきゃいけない設計なんだな。
この階層構造を見直さない限り、ロジックを見直そうと思っても無駄だわ。
34nobodyさん:2005/12/18(日) 14:41:52 ID:jwrRezTg
http://***/example.php/1/
のような「/」を使用した変数を受け取るにはどうしたらいいのでしょうか?
35nobodyさん:2005/12/18(日) 14:47:26 ID:???
$_SERVER["PATH_INFO"]
36nobodyさん:2005/12/18(日) 14:48:17 ID:???
やはり孫classが一杯出来てしまうのですね。
最初は1つのclass内で全てを作っていたのですが、だんだん大きくなって来たので
分割しようと考えた次第です。その際にスマートに書き直したかったのであれこれと
変更を加えていたら嵌ってしまいました(^^;。

階層構造を見直さないとだめですよね。お騒がせしました。

>>30
同じ人です(^^;。

>>31
私も試してみましたがclassAの中では空になりますね。

>>34
ttp://***/example.php/1/?a=1 って事かな?
それかRewriteEngineを調べると良いかも
37nobodyさん:2005/12/18(日) 14:56:49 ID:???
よっぽどグローバス変数の方が美しいコードに見える
38nobodyさん:2005/12/18(日) 15:03:23 ID:???
>>37
グローバスとは何ぞや?
39nobodyさん:2005/12/18(日) 15:16:34 ID:???
そういえば$GLOBALS変数は使った事無いなぁ
みなさんは$GLOBALSを使って書いてるのですか?
40nobodyさん:2005/12/18(日) 15:21:14 ID:???
俺は$GLOBALS使ってるな。
稀にglobal宣言も使うけど、極めて例外的。
41nobodyさん:2005/12/18(日) 17:28:30 ID:???
質問です。
$file = preg_replace ('<!--([^-]*)-->(.*?)<!--([^-]*)-->', '', $file);
print \1;
とすると
Unexpected character in input: '\' (ASCII=92) state=1
とでちゃうのですが、Perlの
print $1;
のようにマッチした文字を取り出すにはどうすればいいのでしょうか?
42nobodyさん:2005/12/18(日) 17:32:06 ID:???
マニュアル読んだ?
43nobodyさん:2005/12/18(日) 18:01:43 ID:???
2005年度くだ質大賞ベストテンに入る
間違いない
44nobodyさん:2005/12/18(日) 18:17:52 ID:???
>>41
preg_replaceの中でしか使えない。
45nobodyさん:2005/12/18(日) 18:22:28 ID:???
eオプション
46nobodyさん:2005/12/18(日) 18:47:53 ID:???
>>41
preg_match()使え
47nobodyさん:2005/12/18(日) 20:42:40 ID:???
phpMyAdmin のコード見ると $GLOBALS 使いまくってるが
あまりスマートではないな
48nobodyさん:2005/12/18(日) 21:04:49 ID:???
>>44ー46
そんなことより変数名の頭は(ry
4941:2005/12/18(日) 21:07:18 ID:???
なんか遊ばれてるみたいなので、
PerlではできるけどPHPではできないってことにしておきます。
50nobodyさん:2005/12/18(日) 21:15:50 ID:???
>>5 >>8

仕組みを誰か詳しく説明してください
51nobodyさん:2005/12/18(日) 21:16:46 ID:???
Fatal error: Cannot redeclare vlogiew() (previously declared ...
というエラーが出て回避する方法がわからないのですが何方かご存知ありませんか?。
vlogiew()をlogprint()としてもダメでした。
52nobodyさん:2005/12/18(日) 21:26:52 ID:???
>>51
自己レスーー;
vlogiew()を複数回読み込んでた
53nobodyさん:2005/12/18(日) 22:30:48 ID:???
>>49
前スレの最後の辺りで同じような話が出てたよ
54nobodyさん:2005/12/18(日) 22:33:08 ID:???
>>50
仕組み
1.IEのエンジンを使ってブラウザの表示を画像に落とすツールをWindowsアプリで作ります
2.それをWeb上のPHPから呼び出します
3.完了
55nobodyさん:2005/12/18(日) 23:13:24 ID:???
>>49
とりあえず一言。
せめてマニュアルくらいは読もうな!な!
56nobodyさん:2005/12/19(月) 00:11:51 ID:???
>>54
Javaの製品もある。
でもまあ世の中にはWindowsのIEでしか
レイアウトが再現できないサイトも沢山あるからねぇ。
5756:2005/12/19(月) 00:17:06 ID:???
あとASPで提供してるキャプチャサービスもある。
昔はデモで指定したサイトのサムネール生成が出来て、
それをゴニョゴニョして利用出来たんだけど…
58nobodyさん:2005/12/19(月) 00:21:27 ID:???
あんま関係ないけど前スレ970はsscanfのほうが適してると思う
59nobodyさん:2005/12/19(月) 00:42:52 ID:???
>>57
ASPで提供してるのはフロントエンドの部分だけじゃないの?
結局、中身はWinIEかJavaか〜って感じかとオモウが
60nobodyさん:2005/12/19(月) 00:48:48 ID:???
mojavi2でサイトを作っていて、ユーザ登録処理を作りたいです。

emailとパスワードを入力させて、送信するとユーザにメールが送られて、URLを
クリックするとユーザ登録されるというよくあるものを作りたいのですが、よくあるコード
だと思います。
そういうコードどこかにありませんか?

PEARとZendで探しましたが、見つかりませんでした。
XOOPSのは、再利用しづらいです。

探し方だけでもよいので、よろしくお願いします。
61nobodyさん:2005/12/19(月) 00:57:44 ID:???
>>58
その辺は好みかな。
元C言語プログラマとしてはsscanfの挙動は信用したくない…。
(入力内容がイレギュラーだった場合に変な挙動をすることがあるので)
速度を優先するならsubstrを、同時にフォーマットチェックも兼ねるなら
preg_replaceを、俺なら選択するな。
62nobodyさん:2005/12/19(月) 01:09:49 ID:???
結局>>49の回答を導けない住人
SUGEEEEEEE!!111
63nobodyさん:2005/12/19(月) 01:16:17 ID:???
>>62
はぁ?
とっくに答えは出ている。
49は理解する気も無いようだが。
64nobodyさん:2005/12/19(月) 01:20:56 ID:???
そのまんまコピペで動くコードを書かなきゃいかんのかね?
65nobodyさん:2005/12/19(月) 01:40:35 ID:???
型にはめないと使えないPHPってある意味すごいな。
66nobodyさん:2005/12/19(月) 08:11:53 ID:???
>>65
自分の事しか考えていない65も負けてないよ
67nobodyさん:2005/12/19(月) 09:16:57 ID:???
test
68nobodyさん:2005/12/19(月) 09:19:37 ID:???
guest guest
69nobodyさん:2005/12/19(月) 10:26:05 ID:???
オススメのエディタ、IDEはないですか?
70nobodyさん:2005/12/19(月) 10:28:52 ID:???
>>69
最強のPHPエディタはなに?@WebProg
http://pc8.2ch.net/test/read.cgi/php/1133785416/l50
PHPエディタって、どうよ?@WebProg
http://pc8.2ch.net/test/read.cgi/php/1079460638/l50
PHP統合開発環境スレ@WebProg
http://pc8.2ch.net/test/read.cgi/php/1123912762/l50
71nobodyさん:2005/12/19(月) 12:39:54 ID:l+7IklxT
PHP4.3.11です。XML_RSSもXML_Treeもインストールして、
/usr/local/lib/php/XML以下にそれらが入っている事も確認しましたが

Warning: main(XML/Parser.php): failed to open stream: No such file or directory in /usr/local/lib/php/XML/RSS.php on line 23

Fatal error: main(): Failed opening required 'XML/Parser.php' (include_path='.:/usr/local/lib/php') in /usr/local/lib/php/XML/RSS.php on line 23

の様なエラーが発生してスクリプトが動きません。
原因分かる方居ますか?
72nobodyさん:2005/12/19(月) 12:43:39 ID:???
原因は書かれている通りだと思うが・・・
なんか変に曲解しなければならん状況なの?
73nobodyさん:2005/12/19(月) 12:44:02 ID:???
>>71
原因と言われても「/usr/local/lib/php/XML/RSS.php」がないってエラーだしねー。
74nobodyさん:2005/12/19(月) 12:53:26 ID:???
>>71
XML_Parserが入って無いんジャマイカ?
75nobodyさん:2005/12/19(月) 13:24:38 ID:pcyIPGNx
メールの送信について質問なのですが、
$header = "Content-Type: text/plain; charset=iso-2022-jp\nFrom:送信者\<[email protected]\>";
mb_language("Japanese");
if(mb_send_mail($mail,$subject,$message,$header)){
var_dump($header);
}
でのvar_dumpの結果で、Content-Type: text/plain; charset=iso-2022-jp From:送信者\
というふうに、<[email protected]\>の部分が消えてしまい正しく送信されません。
どこを修正すればよいのでしょうか。
76nobodyさん:2005/12/19(月) 13:40:36 ID:???
とりあえず突っ込みどころが多すぎる点は置いておいて・・・

ブラウザで「<〜>」がタグとして解釈されて表示上消えているだけ
という単純な問題である悪寒
77nobodyさん:2005/12/19(月) 13:44:14 ID:iBVZGmYt
localhostから
hoge.comにあるDB接続用のfunctionで
hoge.com内にあるDBにアクセスし
結果だけをreturnでlocalhostに返したかったので
hoge.comのfunctionをlocalhostのPHPでinclude_onceしました
その後でDB接続用のfunctionを実行したところ
Call to undefined functionといわれてしまいました
(DB接続用のfunctionには問題はありませんでした)

以上のことからfunctionはlocal内に無いと動かないという事でしょうか?
もしくはPHPiniなどに設定が必要なのでしょうか??
78nobodyさん:2005/12/19(月) 13:46:22 ID:iBVZGmYt
訂正
誤 hoge.comのfunctionをlocalhostのPHPでinclude_onceしました
正 hoge.comのfunctionが書かれたPHPファイルをlocalhostのPHPでinclude_onceしました
79nobodyさん:2005/12/19(月) 13:48:05 ID:???
>>77
localのどこにあるファイルをincludeしようとしてるんだ?
それ次第だろ。ちゃんと、エラー表示するようにしてみたら?
80nobodyさん:2005/12/19(月) 13:58:24 ID:???
hoge.comにあるスクリプトをincludeしようとしているんじゃないか?

>>77
hoge.comがphpをパースしていたら、渡されるのは当然実行結果だけなので
hoge.comにある関数は実行できません。
たとえphpをパースしなくても(スクリプトそのままを渡してくるなら)
localhost内で実行されるので意に沿う結果にはならないと思われ。
どっちにしてもhoge.com内のスクリプトにある関数をlocalhostで実行するのは
無理があると思うけど。
81nobodyさん:2005/12/19(月) 14:09:55 ID:???
include_once('外部URL'); つーことなら、次のような動作になる。
1. include_onceで外部URLのファイルを取得しにいく (URL fopen wrapper)
2. hoge.comのweb鯖が処理をする。
 拡張子phpならhoge.comのPHPが処理して、実行後の結果(出力)をテキストとして返す。
 実行結果をファイルにして、それをlocalhostでincludeした時と同じ様に考えるとよい。
  ・phpファイルの内容がfunctionだったら関数定義だけなので、何も返さない。
  ・実行の結果が<?php 〜 ?> ってな内容(文字列)だったら、
   そのような内容のファイルをlocalhostでncludeした事と同じになる。(localhostのPHPが処理する)
3. 残りの処理を続行。
8275:2005/12/19(月) 14:28:53 ID:pcyIPGNx
>>76
その通りでした・・・。ありがとうございます。

なんとか送信まではできたのですが文字化けしてしまいます。

mb_language()
mb_send_mail($mail,$subject,$message,$header)

mb_language()
mb_send_mail($mail,mb_encode_mimeheader($subject,"ISO-2022-JP"),mb_encode_mimeheader($message,"ISO-2022-JP"),$header)

mb_language()
mb_send_mail($mail,mb_convert_encoding($subject,"SJIS"),mb_convert_encoding($message,"SJIS"),$header)

どれも文字化けしてしまいました。
マニュアル見ると1番最初のでいいような気がするのですが、よくわかりません。
どこが問題なのでしょうか。
83nobodyさん:2005/12/19(月) 14:35:30 ID:???
>>82
PHPのバージョンによって、mb_send_mail周りにバグがあります。

http://ns1.php.gr.jp/pipermail/php-users/2005-November/028156.html

このスレッドあたりを参考に。
つーか、質問するときはバージョン書きましょう。
84nobodyさん:2005/12/19(月) 14:39:46 ID:iBVZGmYt
>>79
hoge.comにあるファイルをincludeしました

>>80-81
やはり無理があるようですね…
別の方法を模索したいと思います
ありがとうございました
85nobodyさん:2005/12/19(月) 14:42:44 ID:???
>>84
よくわからんが、そのlocalじゃないほう(hoge.comは存在するので)にある、
関数とかのファイルってローカルにもってこれないのか?
86nobodyさん:2005/12/19(月) 14:46:21 ID:vPAKLJvF
<?php
$site='http://yahoo.co.jp/';
?>

<form method="post" name="test" action="<? echo $_SERVER[PHP_SELF]; ?>" >
<textarea name="text" cols=20 rows=20>
<?php
$page = file($site);
if($page=="") die("Connection Failed");
while (list($num, $line) = each($page)){
$line=htmlspecialchars($line);
echo "$line";
}
?>
</textarea>
この状態でテキストエリアにヤフーのソースが入力されるのですが
実際に表示したいサイトが私のIPからしか接続出来ない状態です。
※PHPをUPしているサーバは別なところにあります。
ですので$siteに本来接続したいURLを入れても弾かれてしまいます。

javascriptなども覗いてみたのですが解決策が見当たりません。
PHPでなんとかなりませんでしょうか?
87nobodyさん:2005/12/19(月) 14:49:27 ID:???
>>85
DB周りのfunctionらしいよ。
88nobodyさん:2005/12/19(月) 14:54:16 ID:???
>>86
理由があってIPアドレス制限をしてるのだから、それを回避できるようなものじゃまずいかと。
まぁそれは置いておいて、自宅鯖を建てるくらしか手は無いんじゃないかねぇ。
89nobodyさん:2005/12/19(月) 14:58:30 ID:???
>>87
それがDBのあるところになきゃいけない理由がわからんのだが……
9071:2005/12/19(月) 15:00:43 ID:???
>>74
RSSとTreeの他にもParserが居るんですね!
どうもです!
91nobodyさん:2005/12/19(月) 15:06:27 ID:???
>>86
>私のIPからしか接続出来ない状態

私の所にproxyを置く
92nobodyさん:2005/12/19(月) 15:09:07 ID:???
>>89
localhostからの接続しか許可していないDBを他のサーバから使いたいのかもね。
DBと同じサーバのphpをincludeしたら使えるかもしれないと思ったんじゃないの
そんなことが出来たらセキュリティもクソもあったもんじゃないが。
93nobodyさん:2005/12/19(月) 15:11:01 ID:???
>>92
なるほど。
94nobodyさん:2005/12/19(月) 15:37:17 ID:iBVZGmYt
>>92-93
ご心配をお掛けしましたができるようになりました
ありがとうございます
結果としてincludeした時点でlocalファイルとして扱われており
動かなかったようです
なので、hoge.comにGETで渡して結果をechoで吐き出させ
それをfileでarrayにして満足な答えを得ることが出来ました
どうもお騒がせしました
95nobodyさん:2005/12/19(月) 15:43:28 ID:???
>>94
別に心配なんざしちゃいないが、
もっと日本語も勉強した方がいいぞ。
で、あんたはhoge.comの持ち主なの?
96nobodyさん:2005/12/19(月) 15:50:16 ID:???
>>95
hoge.com(仮名)のサーバーは持ち主です
(hoge.comのドメイン名は仮名なので持ち主ではありません)
97nobodyさん:2005/12/19(月) 15:51:29 ID:???
>>96
だから、hoge.comは実在するドメインだから、使うなっていってんだよ。
example.comってのを使うの、そういうときは。
98nobodyさん:2005/12/19(月) 15:55:49 ID:???
>>97
しらなかったとは言え、申し分けありませんでした
以後はexample.comを使用します
9982:2005/12/19(月) 15:57:35 ID:pcyIPGNx
>>83
大変参考になりました。
なんとか文字化けせずに送信する事ができました。

>質問するときはバージョン書きましょう。
以後気を付けます。

ありがとうございました。
100nobodyさん:2005/12/19(月) 16:21:49 ID:???
>>97
example.comも実在するドメインなわけだが・・・
fooとかhogeっていえばそれが例えだっていうのは
ほとんど誰もがわかると思うが?
101nobodyさん:2005/12/19(月) 16:26:01 ID:???
>>100
実在しないわけではないな、確かに。
例えとして使う場合には、example.comやexapm;e.netを使いましょうと
規定されているといえばいいのかな。
102nobodyさん:2005/12/19(月) 16:27:14 ID:???
103nobodyさん:2005/12/19(月) 16:42:24 ID:???
>>100
ちゃんと読めよ
http://example.com/
104nobodyさん:2005/12/19(月) 17:46:34 ID:???
PHPからMySQLのINTデータに+1ずつ更新していきたいのですが、
SQL文の中で演算させることは可能でしょうか?

たとえば、こんな感じで
”UPDATE table_name SET hoge= +1 WHERE id=100;”

hogeを+1ずつさせていきたいと思ってます。


宜しくお願いします。
105nobodyさん:2005/12/19(月) 17:48:28 ID:???
mysqlって hoge=hoge+1 ってできなかったっけ?ってDB板向けの話の気が。。
106nobodyさん:2005/12/19(月) 17:50:37 ID:???
>>105
できる。
107nobodyさん:2005/12/19(月) 17:50:50 ID:???
>>105
ありがとうございます。
それでいけましたm(_ _)mペコリ
108nobodyさん:2005/12/19(月) 18:33:07 ID:???
[ a ] が文字列の先頭の場合だけTRUEにしたいのですが、
以下でやると両方でTRUEになってしまいます。
何がいけないのでしょうか?


$str_1 = "abc";
$str_2 = "def";

if(strpos("$str_1",a) == 0){
print "TRUE";
}

if(strpos("$str_2",a) == 0){
print "TRUE";
}
109nobodyさん:2005/12/19(月) 18:46:31 ID:???
0と(aが見つからないときの)falseの区別がつかないから。
多分、==を===にするとうまくいく。

あと文字列なんだから'a'と書こうよ
110nobodyさん:2005/12/19(月) 19:10:40 ID:???
>>109 ありがとうございます。
11150:2005/12/19(月) 19:54:06 ID:???
>>54
>>56
>>57
>>59

ありがとうございました。何となくわかりました。
1127:2005/12/19(月) 20:13:35 ID:???
ウリの説明は全然分からなかったニダカ?
11350:2005/12/19(月) 20:54:49 ID:???
>>112

>>7

すみません ぬけてしまった・・・orz

ありがとうございます。
114nobodyさん:2005/12/19(月) 22:08:45 ID:???
とあるオープンソースのコードを見ていたら $fuga = $hoge{0}; という記述を
初めて見たのですが{0}は、どういう意味ですか?

ただの間違いではないですよね?
115nobodyさん:2005/12/19(月) 22:17:37 ID:???
ん?それってPHPの話なの?
116nobodyさん:2005/12/19(月) 22:21:18 ID:???
スクリプト言語でオープンソースと断りを入れるのには恐れ入りました。
117nobodyさん:2005/12/19(月) 22:22:44 ID:???
文字列への文字単位のアクセス

波括弧の後に任意の文字をゼロから始まるオフセットで指定することにより、
文字列内の文字にアクセスすることが可能です。
注意: 過去の互換性のため、配列括弧を使用することが可能です。
しかし、 この構文はPHP 4に依存しています。

つーことらしい。
118nobodyさん:2005/12/19(月) 22:40:45 ID:???
>>117
文の意味がわからないですが、サンスコ

>>116
暗号化とかエンコードできなかったっけ?

ちなみに、moodle/lib/html2text.phpの38行目あたり

$len = strlen($badStr); // Moodle
$chr = $badStr{0}; // Moodle
$goodStr = ''; // Moodle

で、Notice吐くんですよね
Uninitialized string offset: 0 in fileって。

先に $badStr =''; しておけば大丈夫ですか?
119nobodyさん:2005/12/19(月) 22:46:41 ID:???
$a = 'abc';
$b = $a{0}; // $b = 'a' = $a[0]
120nobodyさん:2005/12/19(月) 22:57:17 ID:???
>>116
オープンソースのオープンは
公開とか公知の意味合い。
121nobodyさん:2005/12/19(月) 23:27:40 ID:???
>>120
ソースコードを可読できるって意味では?
122nobodyさん:2005/12/19(月) 23:59:03 ID:???
質問です。
みなさん、コード書いてて煮詰まってしまったらどんなことをしますか?
123nobodyさん:2005/12/20(火) 00:03:01 ID:???
寝る、お茶を飲む、トイレに篭る、風呂に入る…
124nobodyさん:2005/12/20(火) 00:04:50 ID:???
あ、そうそう煙草は止めた方が良い、一酸化炭素の影響で脳みそさらに回らなくなる。
125nobodyさん:2005/12/20(火) 00:09:13 ID:???
>>122
自ら答えを出しているのでは?

「2ちゃんにカキコする」
126nobodyさん:2005/12/20(火) 02:19:09 ID:???
>>122
熱い茶を一杯 -> 風呂 -> 仮眠 -> 知人に相談 -> 断念して別の方法を模索
127nobodyさん:2005/12/20(火) 02:35:30 ID:???
>>122
他のプログラムを書く。
128nobodyさん:2005/12/20(火) 11:14:59 ID:bFU5ghZ7
おなぬ
タバコ以上に頭が回らなくなるw
129nobodyさん:2005/12/20(火) 11:34:40 ID:2GuOb5lJ
$lines = file( $filename );
をソートする方法を教えてください
130nobodyさん:2005/12/20(火) 11:37:00 ID:???
ttp://jp2.php.net/manual/ja/ref.array.php
配列をソートする関数が幾つかあるから、好きなやつを使って。
131nobodyさん:2005/12/20(火) 11:45:37 ID:2GuOb5lJ
>>130
ありがとうございます。
$linesに「名前,個数」って入っていてこの個数でソートしたいんですが
教えて頂いたとこでみてみます
132nobodyさん:2005/12/20(火) 12:00:12 ID:2GuOb5lJ
関数1ちでは無理なんですかねこれは
$linesには以下のような感じ(名前,個数)で値が入っています
あああ,5
うううう2
いいいい,4

これをこんな感じで個数でソートしたいのですが・・

うううう2
いいいい,4
あああ,5

どういう関数の組み合わせでできますか
133nobodyさん:2005/12/20(火) 12:04:20 ID:???
>>132
あー、 , 区切りでやるときはちょっとややこしい事をしなきゃいけない(関数一発では無理)。
, 区切りをexplodeするなり多次元の配列にしてから、array_multisort ってのが一番楽かな。
134nobodyさん:2005/12/20(火) 12:07:31 ID:???
>>132
お前には無理
135nobodyさん:2005/12/20(火) 12:09:16 ID:???
PHPのスクリプトってのはいろんな場所から読み込まれるのが前提だろ?
なのにスクリプトの中のファイル操作は読み込まれた場所からのパスじゃないと
アクセスできない。つまりスクリプトを置いた場所からではなくスクリプトが読み込まれる
場所からどうやったら目的のファイルにアクセスできるかを考えなくちゃならない。
これがPHPのファイル操作関連を複雑にしている諸悪の根源だと私は確信しているんですよ。
136nobodyさん:2005/12/20(火) 12:15:58 ID:???
>>135
で?
137nobodyさん:2005/12/20(火) 12:22:51 ID:???
>>135
すごい狂った人が来ましたね。
データファイルを置く場所に関して悪習慣ができているようなので直すことをお勧めする。
138nobodyさん:2005/12/20(火) 13:15:22 ID:2GuOb5lJ
>>133
ありがとうございます。
listで二重ループで普通に個数を比較しての単純ソートをしてたんですが
これがどうも数が多くなると正常にいかなかったもので
139nobodyさん:2005/12/20(火) 15:07:53 ID:qvzJW6a+
質問です!
<SPAN class="class">ここに文章
</SPAN>

上記のように途中で改行があるソースから文章を取り出したいのですが

$C = preg_match_all("%<SPAN class=\"class\">(.+?)\n</SPAN>%is", $A, $B);

と書いてもうまくできません。\r\nや\rにしたり、
実際に改行してみたんですがダメでした。どうしたらいいですか?
140nobodyさん:2005/12/20(火) 15:15:08 ID:???
>>139
preg系のパターンは/で囲むんじゃないの?
141139:2005/12/20(火) 15:26:33 ID:qvzJW6a+
>>140
そうなんですか?改行のない場所ではうまく取れてますが。。
142139:2005/12/20(火) 15:34:15 ID:???
あああ、ごめんなさいごめんなさい。
全然違う所($Aのところ)でミスしてました。お騒がせしました。
143nobodyさん:2005/12/20(火) 15:55:17 ID:???
>>140
英数\以外なら何でもいいよ
括弧系は対応する括弧で閉じる
144nobodyさん:2005/12/20(火) 16:38:59 ID:???
htmlで出力するとき、改行コードを\nにしてるんだけど、ソースを見ると\r\nになっちゃうのは仕様ですか?
145nobodyさん:2005/12/20(火) 16:53:05 ID:???
>>144
んなことは無いんじゃないかなぁ。
間に変なフィルターが入らないように、proxyを使わずにtelnetで確認してみたらどうかな?
146nobodyさん:2005/12/20(火) 16:57:59 ID:???
>>145
すまん、PHPじゃなくて、Perlでの話だった。
単純に誤爆してた、スマソorz
147nobodyさん:2005/12/20(火) 17:16:42 ID:???
>>144
Windows鯖でテキストモードだから
>>146
BINMODE FH
148nobodyさん:2005/12/20(火) 17:40:34 ID:???
外部ファイルを取得して保存する要領で外部の画像を保存することはできますか?
149nobodyさん:2005/12/20(火) 17:41:44 ID:???
PHPでそれまでに出力された内容(ブラウザから見たソース)を取得する関数ってないですか?
15050:2005/12/20(火) 17:45:22 ID:???
>>149
echo
151nobodyさん:2005/12/20(火) 17:47:58 ID:???
名前は誤爆誤爆誤爆
152nobodyさん:2005/12/20(火) 18:30:08 ID:???
XXXXserAAAAAAA;XXXXX

でAAAAAAAの部分を取得したいのですが、簡単な方法はありませんか?
Xは不特定、serと;は固定です。
153nobodyさん:2005/12/20(火) 18:34:09 ID:???
>>152
なんかデジャブだし……
154nobodyさん:2005/12/20(火) 18:39:24 ID:???
>>149
そうではなくて、例としては以下のような感じです。
――――――
<?php
$a="あいう";
echo $a;
?> えお
<?php
$X=出力取得関数();
?>
――――――
で$Xに"あいうえお"が入ってくれればいいんですが。
155152:2005/12/20(火) 18:40:56 ID:???
AAAAAAAの部分も不特定です。
i-modeの端末情報です。
156nobodyさん:2005/12/20(火) 18:47:01 ID:???
>>154
http://jp2.php.net/manual/ja/ref.outcontrol.php
これを利用すると似たようなことできない?
157nobodyさん:2005/12/20(火) 18:48:25 ID:???
>>155
933 名前:nobodyさん:2005/12/17(土) 01:04:26 ID:???
preg_match('/hoge(.*)hage/', $str, $pattern);
$result = $pattern[1];

158154:2005/12/20(火) 18:54:35 ID:???
>>156
ありがとうございます。ちらっと見た感じ、これでいけそうなんでこれを参考にして色々やってみます。
159155:2005/12/20(火) 19:01:46 ID:???
>>157
できましたー!どうもです。
160nobodyさん:2005/12/20(火) 19:37:05 ID:???
画像のサイズを取得する関数を教えてください
161nobodyさん:2005/12/20(火) 19:50:28 ID:???
>>160
ttp://www.php.net/manual/ja/ に行き、search for にキーワードを入力する。
今回は画像だから image あたりが良かろう。
で、検索すると、、、いかんな・・ダイレクトにヒットしてしまった・・
まぁいいか、、、イメージ関数つー関数群があることが分かる。
その中を見ていくと、画像のサイズに関係する関数が見つかるだろう。

さらに image size と2つのキーワード(or 検索)で探してみると、
いかにもそれっぽい関数が列挙される。
162nobodyさん:2005/12/20(火) 20:07:07 ID:???
>>148
$fp = fopen("save_filename", "w");
fwrite($fp, file_get_contents("ext_filename"));
fclose($fp);
163162:2005/12/20(火) 20:09:02 ID:???
こっちの方が単純か。
file_put_contents("save_filename", file_get_contents("ext_filename"));
164nobodyさん:2005/12/20(火) 21:19:34 ID:???
>>161
ただの誘導に10行もかけて勿体つけて書くなよキモいなお前
165148:2005/12/20(火) 22:18:27 ID:???
>>162-163
できました!!ありがとうございました!
166nobodyさん:2005/12/21(水) 09:23:55 ID:???
はじめて行読み込みをしようと思ったのですが以下の物だと行が無くてもbreak;しません。
私は何か思いっきり勘違いしているのでしょうか?。

if (is_readable($file)){
$fp = fopen($file,'r');
for($i=0;$i<10;$i++){
if (!feof($fp)) break;
echo fgets($fp);;
}
fclose ($fp);
}
167nobodyさん:2005/12/21(水) 09:33:10 ID:???
>>166
それだと行があったらbreak
168nobodyさん:2005/12/21(水) 09:35:36 ID:???
>>166
> if (!feof($fp)) break;
ここ

ttp://jp2.php.net/manual/ja/function.fgets.php
マニュアルにそのものずばりの例がある。
まずはマニュアルを確認することをお勧めする。
169nobodyさん:2005/12/21(水) 09:52:00 ID:???
>>167-168

feof()
ファイルポインタがEOFに達しているかまたはエラーの場合にTRUE 、 その他の場合にFALSEを返します。
だった(・・;。手っきり反対の動作をするのかと思い込んでいました。

ありがとうございます。
170nobodyさん:2005/12/21(水) 10:28:15 ID:???
while(!feof($fp))
は無限ループに注意
171nobodyさん:2005/12/21(水) 12:39:22 ID:RHXLhrgR
htmlspecialchars()でENT_QUOTESが、デフォルトでなく
オプション扱いになっている理由って、何が考えられますかね?
172nobodyさん:2005/12/21(水) 12:55:23 ID:???
>>171
PHP/FI Version 2.0の同名の関数が<>&"しか対応してなったから後方互換性のためだと思われる
PHP/FIが ' に対応しなかった理由は知らない
173nobodyさん:2005/12/21(水) 13:02:28 ID:RHXLhrgR
>>171
なるほど、歴史的な理由である可能性が高いですか。
デフォルトでついてた方が楽なんだけどな〜。
これ、ただでさえ関数名長いから、めんどくさいですね。
174nobodyさん:2005/12/21(水) 13:09:37 ID:???
>>173
ENT_QUOTESをいれた形でユーザー関数にしておけばいいだけでは?
175nobodyさん:2005/12/21(水) 13:11:51 ID:???
>>173
関数名や引数の補完機能の付いているエディタや開発環境を使うと便利ですよ。
この板にもエディタや開発環境のスレが3つくらいあったかな。
おいらはシンプルなエディタで補完機能を使わずにキーワードの強調表示だけしてますが。
(補完時の入力・表示に瞬間的に引っ掛かる感じがどーも苦手で。。)
176nobodyさん:2005/12/21(水) 14:52:12 ID:???
date<>title<>message<>
となってて、長いmessageを携帯用に分割して表示するようにしたいのですが
何か良い方法はありますか?
177nobodyさん:2005/12/21(水) 14:55:11 ID:???
>>176
好きなところで分割すればいいじゃん
178nobodyさん:2005/12/21(水) 14:56:19 ID:???
>>172
JavaScriptとかで「'」を利用する場合の方が多いと考えられてるんじゃないのかな。
逆に「'」を常に変換したい場合ってそんなにあるもの?
JavaScriptで普通に「'」を使うように、通常は「'」なんて参照文字に変換する必要って無いと思うんだけど。
179nobodyさん:2005/12/21(水) 15:06:11 ID:???
180nobodyさん:2005/12/21(水) 15:08:58 ID:???
>>179
DWが上位なのが意外だ・・・
181nobodyさん:2005/12/21(水) 16:32:54 ID:???
あれ?DWのPHPってそんなに使い勝手良かったっけ・・?
182nobodyさん:2005/12/21(水) 16:48:01 ID:???
マニュアルにも載ってるPHP向けエディタリスト
ttp://www.thelinuxconsultancy.co.uk/phpeditors.php
183nobodyさん:2005/12/21(水) 17:09:36 ID:???
>>180
それってただ並べてるだけじゃないの?
User Raitingは低いよ。
一番はPHP Designer 2005
184nobodyさん:2005/12/21(水) 17:17:17 ID:???
それより更に下をいくZendStudio・・・
185nobodyさん:2005/12/21(水) 17:23:20 ID:???
186nobodyさん:2005/12/21(水) 17:43:03 ID:???
エディタは補完機能+軽さかなぁ
いろいろ使ってみたけど、どれもしっくりこないんだよね・・・
何か良いのがないかしら

あ、本題です。require('./'.$dir.'.dat');とする場合に$dirに含まれると問題がある文字は
あるのでしょうか?。先頭に「./」を付けていてもディレクトリをさかのぼられる事はあり
ますか?。
187nobodyさん:2005/12/21(水) 18:06:40 ID:???
いろんなエディタを使って結局xyzzyに落ち着いてる自分ガイル。
188nobodyさん:2005/12/21(水) 18:50:05 ID:???
>>186
ある。 ../ は .././.././ のようになっててもきちんと動く。
189nobodyさん:2005/12/21(水) 18:51:17 ID:???
英語よめんからphp_editor使ってる
190nobodyさん:2005/12/21(水) 19:09:55 ID:???
Eclipse(TruStudio)だろ。
サーバでテストするまでもなくエラー箇所出してくれるし。
細かい手間が省ける。
191nobodyさん:2005/12/21(水) 19:19:35 ID:???
こんばんは。お邪魔します。
テキストファイルに書き込む毎に1増やすようにしたのですが

1,2,3,4,5,6・・・

と記入されていきます。
ここまではいいのですが、例えば3と5を消す処理をしたとします。

1,2,4,6・・・とテキストファイルには表示されます。

ここで次にファイルに書き込む時に3を、その次に書き込む時は5としたいのです。
漠然とした例えで分り難いかもしれませんが、よろしければ教えて頂けないでしょうかm(_ _)m
192nobodyさん:2005/12/21(水) 19:23:09 ID:???
>>191
頭から調べればいいじゃん
193186:2005/12/21(水) 19:31:24 ID:???
>>188
どうしたら良いのかなぁ
while(preg_match('|\./|',$dir)) $dir = str_replace('./','',$dir);
これでどうでしょうか?

>>191
欠番補完したいなら分割して1つずつ確かめて行くしかないと思うよ(^^;
194186:2005/12/21(水) 19:36:34 ID:???
$dir = '.././..././///////';
while(strpos($dir,'./') !== false) $dir = str_replace('./','',$dir);

結果が「////」となりましたが、これは問題があるでしょうか?
195nobodyさん:2005/12/21(水) 22:24:02 ID:???
GDを使って折れ線グラフを作るのは難しいんですか?
調べてもよく分からないのですが。
196nobodyさん:2005/12/21(水) 22:31:11 ID:???
特に難しいもんでもないよ。
かといって、配列を渡せば折れ線グラフが自動作成される
つーよーな便利関数があるわけでもない。
197nobodyさん:2005/12/21(水) 23:00:04 ID:???
>>195
GDでゴリゴリ書いてもいいけど、普通はJpGraphなんかを使う罠。

ttp://www.aditus.nu/jpgraph/
ttp://www.asial.co.jp/products/jpgraph/
198nobodyさん:2005/12/21(水) 23:04:37 ID:???
ライセンスの心配がある場合は、phplotってのもありかな。
199nobodyさん:2005/12/21(水) 23:19:31 ID:???
ファイルをアップロードするPHPを記述した時に

$filename = $_FILES['rep']['name'];
if(file_exists($_FILES['rep']['tmp_name'])){ //ファイルの存在を確認 tempの状態で確認
if(ereg("(^[a-zA-Z0-9_-]+)\.(lzh)",$filename)){
list($filenamea,$filenameb) = explode(".",$filename);
$repnum = $_GET['repnum'];
move_uploaded_file($_FILES['rep']['tmp_name'],$repnum.".".$filenameb);
exit;
}
}

とし、「aiueo.lzh」を送信した所、「.lzh」と保存されてしまいます。
ちゃんと$_GET['repnum']が通っていないのかと思い、
echo $repnumすると、きちんとGETによって渡された数字が表示される様子。
何がおかしいのかさっぱりなのですが、どこか間違った点があれば教えて下さいm○m
200nobodyさん:2005/12/21(水) 23:57:58 ID:???
>>199
$repnumが日本語で文字コードが絡んでるとエスパってみる
201nobodyさん:2005/12/22(木) 00:12:32 ID:???
>>200さん
レスありがとうございます
$repnumには10や11など数字がはいっております…。
アプロダのあるphpは一つ上の階層なんですが、関係無いですよね。
202nobodyさん:2005/12/22(木) 01:37:25 ID:???
>>191
$list = "1,2,3,5,8,9";

for($ar = explode(",", $list), $i = 0; $i < (count($ar) - 1); $i ++) if($ar[$i + 1] != $ar[$i] + 1) break;
$num = $ar[$i] + 1;

print "ret = $num";
203nobodyさん:2005/12/22(木) 01:43:55 ID:???
>>199
素朴な疑問なんだが、アップロードしてるってことは<form>のmethodはPOSTなんだろ?
なんでrepnumはGETで渡した値を参照してるの?
repnumの値をどこでどのように確認したのか気になる…
204nobodyさん:2005/12/22(木) 02:11:34 ID:f6FkYizC
mail関数が使えない現象が出ています。
phpinfoのstandard項目にsendmail_pathの記述がない。

ぐぐった結果、qmailのwrapperをシンボリックリンクにして
再度コンパイルしてインスコ。

それでも現象は変わらぬ。
php.iniも確認してsendmail_pathの記述は書かれているの
確認したんだけどなー
205nobodyさん:2005/12/22(木) 02:16:34 ID:???
現象ってどういう現象が出てるんだ。
何かエラーメッセージが出てくるの?
206nobodyさん:2005/12/22(木) 02:18:08 ID:f6FkYizC
出てきません。
mail関数が有効にならない。

qmailのsendmail-injectでサンプルメールを飛ばしたが
それは動いています。
207nobodyさん:2005/12/22(木) 02:39:47 ID:NhSg4vO8
eregi_replaceを使って
>>[0-9]+
の数字の部分をリンクにしたいのですが
>>の部分を認識して貰えません。

$str = eregi_replace("(>>)(0-9]+)","<a href=\"#\\2\">\\1\\2</a>",$str);

>>と書くだけでは駄目なのでしょうか?他にも適当に試しましたがうまくいきませんでした。
208修正:2005/12/22(木) 02:42:23 ID:NhSg4vO8
× "(>>)(0-9]+)",
○ "(>>)([0-9]+)",
209nobodyさん:2005/12/22(木) 02:46:50 ID:???
ここまで独り言
210nobodyさん:2005/12/22(木) 02:58:30 ID:???
>>207
「>>」はhtmlspecialchar()しないとブラウザじゃまともに表示されないかも
211nobodyさん:2005/12/22(木) 04:50:58 ID:???
>>210

"(&gt;&gt;)([0-9]+)",

で出来ました。
ありがとうございました。
212nobodyさん:2005/12/22(木) 07:50:01 ID:???
>>193
$dirって外から入力された値?
だったら".."が含まれた時点で不正な入力と表示して終了。
213nobodyさん:2005/12/22(木) 08:38:23 ID:???
>>203さん
レスありがとうございます。
http://〜/a.phpには

http://〜/upload/b.php?repnum=15

というリンク先にリンクしております。
このような感じでGetでrepnumを渡しているのですが…。
空白が表示されるという事は
値が入っていない = ファイルをPostされた時点でGetの中身が消えてるのでしょうか…。

$repnum = Get_['repnum'];

の位置を変えてみるも駄目でした。
相変わらず「.lzh」になるようです
214nobodyさん:2005/12/22(木) 09:15:49 ID:???
>>213
$newfilename = $_GET['repnum'].".".$filenameb;
echo $newfilename;
move_uploaded_file($_FILES['rep']['tmp_name'],$newfilename);

とやって$newfilenameはどう表示されるの?
まさかと思うけど、typoしてるってことないよね。
215nobodyさん:2005/12/22(木) 09:55:11 ID:???
>>214さん
レスありがとうございます。
只今外出先の為確認できないので、お昼休憩の際に早速確認させて頂きます。
ちなみに、聞き覚えの無い言葉ですが、typeoとは何でしょう?
無知で申し訳ないですTT
216nobodyさん:2005/12/22(木) 10:04:52 ID:???
>>213
ブラウザにもよるんだが、POSTでフォーム送信したときは
URLの後ろに?〜でパラメータつけても無視される場合があるぞ。
設計から見直した方がいい。
217nobodyさん:2005/12/22(木) 10:07:17 ID:???
>>215
ty・po
━━ n. 〔話〕 誤植, タイプミス.
                         三省堂提供「EXCEED 英和辞典」より
218nobodyさん:2005/12/22(木) 10:11:19 ID:???
>>213
> http://〜/a.phpには
> http://〜/upload/b.php?repnum=15
> というリンク先にリンクしております。
意味が分からん。
a.phpがアップロードのFORMが書いてあるページなのか?
それともb.php?repnum=15がアップロードFORMのページなのか?
ちょっとFORM部分のHTMLを書いてみろよ。特にacdtion=がどうなってるか。
なんかWebプログラミングを根本的に勘違いしてるヨカーン
219nobodyさん:2005/12/22(木) 10:12:22 ID:???
おっと。typo。acdtionでなくactionな。
220nobodyさん:2005/12/22(木) 10:14:50 ID:???
>>215自身がtypoしてるじゃないか。
221nobodyさん:2005/12/22(木) 10:55:36 ID:???
>>218
http://〜/a.phpのFORMのactionにhttp://〜/upload/b.php?repnum=15
がかかれているということだと思ったり思わなかったり…
222nobodyさん:2005/12/22(木) 11:07:09 ID:???
>>216-220さん
レスありがとうございます。

>>216さん
そうなのですか、知らなかったです…。
当ブラウザはIE6.0ですが、設計の見直しも必要かもしれないのですねTT

>>217さん
ありがとうございます、勉強になりました。

>>218さん
formが書いてあるのはbの方法です。form部分は

<form method="post" enctype="multipart/form-data" action="b.php">
<input type="file" name="rep" size="30">
<input type="image" name="submit" src="画像のURL">
</form>

となっております。
HTML部分はPHP記述の下です。

皆さん意見下さってありがとうございます。
もう少し面倒見て頂ければ嬉しいですm○m
223nobodyさん:2005/12/22(木) 11:12:23 ID:???
>>218さん
formの記述はb.phpの方にしており、a.phpには

http://〜/upload/b.php?repnum=15

へのリンクだけとなっています。
やはりform部分に問題がありそうでしょうか…?
224nobodyさん:2005/12/22(木) 11:33:13 ID:???
>>223
b.phpに以下を足して中身を確認したら…
print_r($_POST);
print_r($_GET);
225nobodyさん:2005/12/22(木) 11:58:23 ID:???
すみません。PHPを勉強中のものですが、以下のエラーがでてどうしても
原因がわかりません。おしえてください。

エラー:Errors parsing D:\Program\APACHE~1\Apache2\htdocs\1-5.php
PHP Parse error: parse error, unexpected $end in D:\Program\APACHE~1\Apache2\htdocs\1-5.php on line 15
226225:2005/12/22(木) 11:59:40 ID:nKaKNsDz
本文:ちなみに一番下の行が15行目です。

<?php
if($_POST['user']){
print "Hello,";
print $_POST['user'];
print "!";
} else {
print <<< _HTML_
<form method="post" action="$_SERVER[PHP_SELF]">
Your Name:<input type="text" name="user">
<br>
<input type="submit" value="Say Hello">
</form>
_HTML_;
}
?>
227nobodyさん:2005/12/22(木) 12:10:58 ID:???
>>223さん
レスありがとうございます。
もうすぐお昼なので、確認してみたいと思いますm○m

>>225さん
定義されていない変数があるという事だと思います。

$_SERVER["PHP_SELF"]

ではないでしょうか?
228nobodyさん:2005/12/22(木) 12:14:27 ID:???
ヒアドキュメントまったく使わない俺だがよく見る質問なので覚えた。
{}で括れと
229nobodyさん:2005/12/22(木) 12:16:35 ID:???
>>222
> <form method="post" enctype="multipart/form-data" action="b.php">
> <input type="file" name="rep" size="30">
> <input type="image" name="submit" src="画像のURL">
> </form>
この中に
<input type="hidden" name="repnum" value="<?=$repnum?>">
を追加しないとそもそも2度目の送信(アップロード時)にはrepnumは渡らん。
おまえ、1度送信しとけば値はずっと保存されると勘違いしてるだろう。

その上で、アップロード時のrepnumの受け取りは$_GETから$_POSTに変更シレ
230225:2005/12/22(木) 12:17:07 ID:???
>>227
速レス感謝です。
今、偶然、違う本に解決方法がのっていました。

ヒアドキュメントの終わり、_HTML_;の行には、
タブ、スペース、コメント又その他の文字は書いていけないらしいです。
書いていいのはヒアドキュメントの終わりの印(この場合だと_HTML_)と
文の終了を示すセミコロン(;)だけだそうです。

速レス感謝します。
231nobodyさん:2005/12/22(木) 12:17:41 ID:???
失礼しました
$_SERVER['PHP_SELF']

かな…?
232nobodyさん:2005/12/22(木) 12:19:04 ID:???
>>230
外れ
>>231
それも外れ
233nobodyさん:2005/12/22(木) 12:19:17 ID:???
>>225
問題なく動くが?
234nobodyさん:2005/12/22(木) 12:19:42 ID:???
解決しましたか^^;
的外れでしたが良かったです。
235225:2005/12/22(木) 12:21:45 ID:???
>>228
使用しなければいけない場面になったら、参考にします。
ありがとうございます。
2361.0008(破滅挑発) ◆rzOmotimAo :2005/12/22(木) 14:59:24 ID:DhSg+gn2
新スレ、誰か立てて
自分で立てようとしたら
「このホストではしばらくスレ立てができません」
ってなる。

【板名】webprog板
【板のURL】http://pc8.2ch.net/php/
【タイトル】中央銀行システムを作らせながらPHP屋を捕獲するスレ2匹目
【名前】Omoti

【本文】
中央銀行システムをつくることで
経済、金融を理解しようというスレ。
237nobodyさん:2005/12/22(木) 15:49:47 ID:???
( ´,_ゝ`)プッ
238nobodyさん:2005/12/22(木) 15:59:13 ID:???
Omotiさんそろそろやめとけっていう神の思し召しじゃないの?
2391.0008(破滅挑発) ◆rzOmotimAo :2005/12/22(木) 16:14:05 ID:???
>>238
あなたは神の声が聞こえちゃう人ですか?
240nobodyさん:2005/12/22(木) 16:18:46 ID:???
  _
  \ヽ, ,、
   `''|/ノ
    .|
_   |
\`ヽ、|
 \, V
    `L,,_
    |ヽ、)                ,、
   .|                   ヽYノ
   /                     r''ヽ、.|
  /        ,.. -──- .、    `ー-ヽ|ヮ
 .|      , ‐'´   __     `ヽ、  `|
  |    / , ‐'"´       ``''‐、  \  |
  |   / /             \ ヽ |
  ヽ,  y'   /` ‐ 、    ,.. -'ヘ   ヽ. }ノ
   ヽ,'     /   /`,ゝ' ´     ヽ   Y.
.    i    ,'     { {        ヽ   `、
    l    ,イ─- 、.._ ヽ ,, _,.. -─:}   !
.    |  r‐i| ー=ェェ:ゝ ,.∠ィェェ=ー' |r 、.  l
   |  {ト」l|.      : | "    ``: |!トリ  |
.  │  ヽ、|      ;.」_      |'ソ    !
.  │     ヽ     r──ッ    /ノ    |
    |      lヽ    ̄ ̄     / イ    │
.    !    丶ヾヽ    ~   , ' ノ │   !
    ト.    ミ.ゝ ヽ.____./  /  l   /
    ヽ  ヽ           イ ,' / , '       ┼ヽ  -|r‐、. レ |
     \.             ノレ'/         d⌒) ./| _ノ  __ノ
241nobodyさん:2005/12/22(木) 16:29:59 ID:???
>>236
俺は貴重なスレ立て権をそんなクソスレで使うのはいやだ
この板のBBS_THREAD_TATESUGI=64だからあと64個新スレがたてば同じIPでスレが立てられるぞ
242nobodyさん:2005/12/22(木) 16:44:30 ID:???
ここの立てすぎは新仕様じゃないの
2431.0008(破滅挑発) ◆rzOmotimAo :2005/12/22(木) 16:45:10 ID:???
>>241
ケーブルだからIP代わるまで3日かかるな
次スレたてるまで3日も待たないとだめなのか

とりあえず
http://orz.my.land.to/omoti/
だけ動くように復旧してもらえないかな?
動かして遊びながらいろいろ考えるんだから
http://image02.wiki.livedoor.jp/o/4/omoti4/2476ae40ddca3894.png
2441.0008(破滅挑発) ◆rzOmotimAo :2005/12/22(木) 16:45:45 ID:???
>>242
新仕様って?
鯖全部で64個とか?
2451.0008(破滅挑発) ◆rzOmotimAo :2005/12/22(木) 16:47:26 ID:???
緊急の手段として、
ノーパソ持ってグレ電からダイヤルアップかな
246nobodyさん:2005/12/22(木) 16:54:43 ID:???
>>1とかを正規表現で認識する方法を教えてください
247nobodyさん:2005/12/22(木) 17:47:30 ID:3rnz5g5i
>>178
JavaScriptなら、"も変換されると困るわけだから、
デフォルトで、"は変換されて'は変換されない理由にはなってないかと。

"は変換されて欲しいけど、'が変換されて欲しくないケースって、
ほとんどないんじゃないかな、と思う。
それがデフォルト設定になっているけれど。
2481.0008(破滅挑発) ◆rzOmotimAo :2005/12/22(木) 17:47:40 ID:???
中央銀行システムを作らせながらPHP屋を捕獲するスレ2匹目
http://pc8.2ch.net/test/read.cgi/php/1135240078/

新スレたったからいいや。
249nobodyさん:2005/12/22(木) 19:11:47 ID:vwG+O/GX
513 名前:もしもし、わたし名無しよ 投稿日:2005/12/22(木) 18:37:36
505です
先週来、うちのサーバのアクセスログに、こちらの(うちには存在しない)PHPを呼び出そうとする
ようなアクセスがあったというエラーが延々と記録されてます。
ありそうな名前のPHPを呼び出して、何かをさせようとしているみたいです。
たとえば /blog/xmlrpc.php とか。
うちは、今のところはエラーログが太る程度で済んでいるのですが。
パターンは2つ。
ひとつは、ある種のスクリプトを起動させて、妙なクエリ渡して、結果をどこかに送信させようとしているみたい。
もうひとつは、直接ブログ(らしい)PHPに対してPOSTで何かを送りつけています。
アクセス元のアドレスを探ってみると、多くは個人サーバ(らしき所)でPHPでブログが動いているようなんです。
あくまで推測ですが、
ある種のPHPに何かの脆弱性が見つかって、これを突いて伝染するのではないかと。
感染した所は別のブログを探して・・・だと怖いなあと。
今回の手口は、ありそうなPHPの名をそのまま呼び出しす機械的なパターンです。
CGIもそうですが、他所から貰ってきたスクリプトなどを置く場合は、
(1)ファイル名を変えるか、設置する場所の名を標準的な名でなくする。
(2)変数や引数の名を推測しにくい名に変更する。
ぐらいはしておく方が安心だと思います。

というレスを別の板で見たんだけど、
この板で話題になってるスレってありますか?
250nobodyさん:2005/12/22(木) 20:06:23 ID:???
>>249
それウイルスだよ
うちにも来てた

こんな文章書かずに/blog/xmlrpc.php でぐぐれば直ぐ解ると思うが・・・
釣りか-;
251nobodyさん:2005/12/22(木) 20:49:52 ID:iK3Yz+s2
<form action='entry.php' method='post'>
<input name="password" type="password" value="" size="12" maxlength="12">
<input type='submit' name='update' value='更新'>
<input type='submit' name='delete' value='削除'>
<input type='hidden' name='id' value='hogeid'>
</form>

上記のようなフォームを作り、掲示板の中身を更新、削除を実行したいと思っています。
このとき、1つの<form>に二つのボタンが存在するのですが、どちらが押されたかを正確にPHPに伝えるにはどうしたらよいのか分かりません。
「更新」や「削除」というテキスト情報が送られるのでそれでチェックとか
やろうとすると文字コードとかその辺が原因なのかうまくいきません。。
また、下記のように情報が入っているかでやってみましたが何度か成功するものの、やはり高確率で失敗します。

if(isset($_POST['delete'])){ delete($_POST['id']); }
else if(isset($_POST['update'])){ update($_POST['id']);}
何卒、よろしくお願いしますm(_ _)mペコリ
252nobodyさん:2005/12/22(木) 20:58:05 ID:???
>>251
submitのnameを統一して
<input type="submit" name="action" value="更新">
<input type="submit" name="action" value="削除">
if ($_POST["action"] == "更新") ・・・・・
ってやればいいんじゃね?
253nobodyさん:2005/12/22(木) 20:58:46 ID:???
>>251
PC用のブラウザが相手ならその書き方で普通に動かないか?
携帯はボタン2個は無理な端末があるからどうしようもないけど。
254nobodyさん:2005/12/22(木) 21:09:07 ID:???
>>250
釣りじゃないです。それほど詳しくないもので・・・。ありがとうございました。
255nobodyさん:2005/12/22(木) 21:09:21 ID:wNhRz1jC
そんなまわりくどいことしないで素直にラジオボタンかセレクトボックス使えや
256nobodyさん:2005/12/22(木) 21:11:01 ID:???
input type="password" の中で打ち込んだ後で、
よっこいしょっとリターンキーを押してるんじゃないかなぁ。
そんくらいしか不都合が起きるケース無さそう。
257nobodyさん:2005/12/22(木) 21:57:47 ID:???
>>229さん
レスありがとうございます。
思ったより忙しくなってしまった為、現在まで仕事というハメになってしまいました。
ご報告が遅れてしまって申し訳ないです。

先程、試してみた所、見事$repnumを表示させる事が出来ました。
仕組みを理解しておらず、恥さらしとなってしまいましたが、
今後とも頑張って勉強していこうと思います。

教えて下さった方々、本当にありがとうございました。
258nobodyさん:2005/12/22(木) 21:58:53 ID:???
丁寧なレスだけどどうみて精子ですがチラついてしょうがない
259nobodyさん:2005/12/22(木) 22:01:37 ID:???
>>258
今時精子ですも無いもんだ
260nobodyさん:2005/12/22(木) 23:08:50 ID:???
配列の途中を削除して空いた場所を詰める関数はないのでしょうか?
$a = array(0,1,2,3);を$a = array(0,1,3);という風にしたいのです
unset($a[2])では空白が出来てしまいます
261260:2005/12/22(木) 23:13:15 ID:???
勘違いでした(・・;失礼
262nobodyさん:2005/12/22(木) 23:15:15 ID:???
今酷い自爆を見た。
263nobodyさん:2005/12/23(金) 02:02:31 ID:???
imagettftextを使って日本語を縦書きで出力したいのですが、
どうもうまくいきません。

$arry1="【ぬるぽ!】";
$count1=mb_strlen($arry1);
$i=0;
while($i <= $count1) {
imagettftext($image, $size, 0, $yoko, $tate, $fontcollar, "$font", mb_substr($arry1,$i,1));
$tate=$tate+25;
$i++;
}

こんな感じでやって、一文字ずつやれば一応できるんですが、
それだと【】なんかが文字列に含まれていると、それは横向いたままで出力されるから不恰好で、、
どなたかうまい方法あればご教授願えませんでしょうか?
264nobodyさん:2005/12/23(金) 02:16:59 ID:???
【】があったら縦のものに置き換えればいいだけの話じゃないのか?
265nobodyさん:2005/12/23(金) 17:52:19 ID:???
画像使うとかね
266nobodyさん:2005/12/23(金) 19:24:54 ID:???
昔は縦書き用に回転したフォントを別に持っていた気がするな

あとはこれか
ttp://www.tt.rim.or.jp/~rudyard/torii009.html
267nobodyさん:2005/12/23(金) 19:39:13 ID:???
むしろ単に縦書きにするなら角度に270を指定すればいいんじゃ?って感じだが、
回転させないといけない特定の文字だけ1文字ずつ処理が必要な感じだな。
特定の文字が指定されたときだけ、1度別のイメージリソースに出力しといて、
それをimagerotate()で回転させてからimagecopymerge()で本来の画像に
マージコピーする、って手順じゃダメか?
268nobodyさん:2005/12/23(金) 20:46:42 ID:???
Fatal error: Call to a member function on a non-object
in /local/Web/sites/phpweb/include/ip-to-country.inc on line 65

http://www.php.net/


m9(^Д^)プギャー
269nobodyさん:2005/12/23(金) 20:52:53 ID:gfPK9X7h
くだらない質問ですが、公式マニュアル見ようとしたら
>>268みたいなエラーが出て見れなかったので質問させてください。


includeを使う時、相対パスで…
<?php include("../include.inc"); ?> は大丈夫でしょうか?

以前includeは「絶対パス」で書けって言われたのですが、相対でも出来てしまうので
どっちが正しいのか分からなくなってしまいました。
270nobodyさん:2005/12/23(金) 21:00:57 ID:???
271nobodyさん:2005/12/23(金) 21:03:34 ID:???
>>267
angleに角度を指定したら、縦書きじゃなくて全体的に回転させただけになると思う
回転させるとおかしい文字をテーブルにしておき、1文字処理する際に
出くわしたらangleに90や270を指定してやればいいのでは?
272nobodyさん:2005/12/23(金) 21:04:35 ID:???
>>269
プログラムを配置する環境さえ間違えなければ
相対パスで全然問題ない。
ページの配置がディレクトリレベルでコロコロ変わるなら
絶対パスの方が安全で自由度が高い、ってだけだろう。
273nobodyさん:2005/12/24(土) 12:04:08 ID:???
274nobodyさん:2005/12/24(土) 15:45:55 ID:???
mb_send_mailで以下のようにヘッダーに日本語を使いたいのですがこのままではメールサーバーに
怒られてしまいます。日本語の部分をどう変換したら受け取ってもらえるのでしょうか?。

$headers = "From: 日本語 <post@mail>\nReply-To: post@mail\nX-Mailer: PHP/".phpversion();
275nobodyさん:2005/12/24(土) 15:57:45 ID:???
どう怒られるの?
メールヘッダがちゃんとJIS+base64エンコードになってないってこと?
それと改行は横着せずちゃんと¥r¥nした方がいいと思うよ。
276nobodyさん:2005/12/24(土) 16:04:00 ID:fujLuwhq
<?php
system("ほげほげ");
system("ふがふが");
system("ふー");
system("ばー");
?>

のようなものがある場合、
「ほげほげ」の実行が終了してから「ふがふが」の実行がはじまる
「ふがふが」の実行が終了してから「ふー」の実行がはじまる
「ふー」の実行が終了してから「ばー」の実行がはじまる

という順番になっているのでしょうか?
あるいはそうでない場合、
上記順番で順次に実行させるにはどうすればよろしいのでしょうか?

よろしくお願いします。
277nobodyさん:2005/12/24(土) 16:06:45 ID:???
マニュアル読め
278nobodyさん:2005/12/24(土) 16:37:42 ID:???
>>276
ほげほげとかの後ろに & つけなきゃ大丈夫
279nobodyさん:2005/12/24(土) 17:17:09 ID:???
mb_send_mail()でccとかbccとか
付けられないのでしょうか?

よろしくお願い致します。
280nobodyさん:2005/12/24(土) 17:24:44 ID:???
>>279
こちらこそよろしくお願いします。
281nobodyさん:2005/12/24(土) 17:25:47 ID:???
>>280
いえいえ、そういわずにこちらこそよろしくお願いします。
282nobodyさん:2005/12/24(土) 18:12:54 ID:???
>>279
付けられるよ。
283nobodyさん:2005/12/24(土) 19:36:51 ID:???
>>282
RFCに準拠すれば付けられます
284nobodyさん:2005/12/24(土) 20:49:43 ID:???
どこ見てんだオラオラァ!
285nobodyさん:2005/12/24(土) 21:04:30 ID:???
最近、ファイルシステムよりMySQLの方が読み書きが早い感じがするのですが
実際の所どうなのでしょうか?
286nobodyさん:2005/12/24(土) 21:09:18 ID:???
mysqlもOSのファイルシステムに依存してる
287nobodyさん:2005/12/24(土) 21:36:00 ID:???
>>285
データの分量とか入出力の方法とかマシンのCPU・メモリ・HDD性能とか
色んな要素で違ってくる。
288nobodyさん:2005/12/24(土) 22:05:33 ID:???
メモリー上にキャッシュされる状態を作ればファイル直より速いなるが、
そうでなければファイルを読んだ方が速いことが多い。
ただ、PHPってファイルアクセスや配列のメモリアロケーションとかがかなり遅いので、
その辺を同じように処理させてないと一概にどっちが速いとか判断できなくなる。
289nobodyさん:2005/12/24(土) 22:59:47 ID:???
DBと体感差が出るなら相当むちゃしてると思われ
ベターな方法を選ぶのは大事だよ
290nobodyさん:2005/12/25(日) 00:12:45 ID:BQDdD2yN
xmlベースの簡単なCMSを作ろうと思うのですが、
phpでのXML読み書きを解説した良いページってありますか?
291nobodyさん:2005/12/25(日) 00:35:38 ID:???
ソケット取得も出来ないヘタレですー。

とある板では、専用スレなるものが立っていて、スレが進むと
「過去ログ倉庫」にきちんと整理しているところがあります。
手動でログを収集し、dat2htmlなどでhtml化してwebサイトに
まとめているようです。

これを、アンテナみたいに2ch鯖から現行スレを自鯖に随時ミラーし(
ミラーも随時読めると良)、1000いったらそのまま過去ログ
として保存・・・みたいに自動化されている方はいらっしゃいませんか?

こんだけ板があってスレがあって有能な人たちがいれば、ありそうな気がする。
292nobodyさん:2005/12/25(日) 01:17:51 ID:xdx8WIxl
PHPで他のサイト掲示板に一括で書き込むのを作っているんですが
ttp://www.kent-web.com/bbs/joyful/joyful.cgi
のようなHTTP_REFERERをチェックしている掲示板に対して
どうにか書き込める方法は無いでしょうか?
お願いします。
293nobodyさん:2005/12/25(日) 01:18:15 ID:???
自鯖立てて専ブラの dat 公開すりゃいーじゃん(*´・д・)(・д・`*)ネー
294nobodyさん:2005/12/25(日) 01:49:15 ID:???
業者ウザス
295nobodyさん:2005/12/25(日) 01:49:24 ID:???
>>292
>他のサイト掲示板に一括で書き込むの
その行為の目的が正当なものであることを説明して頂戴。
こっちがスパマーでないと判断できる理由をね。
296292:2005/12/25(日) 01:57:06 ID:xdx8WIxl
目的は当方のお客さんが広告を宣伝する為に当方が提携している
サイトの広告用掲示板に一括で書き込めると言う
サービスを提供する為です。
もちろんスパムのような行為を行う気もございませんし、
他のサイトへの書き込みが出来る様にも致しません。

よろしくお願い致します。
297nobodyさん:2005/12/25(日) 02:06:19 ID:???
>>296
相手が関連サイトなら、許可REFERERの中に
自分とこも加えてもらえばいーじゃん。
298292:2005/12/25(日) 02:13:00 ID:xdx8WIxl
>>297
許可REFERERの中に入れる事で解決致しました。
ありがとうございます。
ちなみに、それ以外の方法はないでしょうか?
PHPではそういった事はできないのでしょうか?
299nobodyさん:2005/12/25(日) 02:14:58 ID:???
>>298
できるけど相手サイトのセキュリティを破る方法の公開になるから
こんなとこで書きたくない。
REFERERチェックがいくら軽度のチェック方法でしかないとしても
クラック方法を公にしていいってこたあるまい。
300292:2005/12/25(日) 02:19:14 ID:xdx8WIxl
>>299
わかりました。ありがとうございます。
301291:2005/12/25(日) 09:54:59 ID:???
>>293
なるほど。
自鯖でP2使ってるんで、公開用のスクを書けばいいですね。
あとはdat取り込みを自動化させる、と。ふむふむ。
302nobodyさん:2005/12/25(日) 10:43:39 ID:???
parse error, unexpected '='
ってどう意味デツカ?
303nobodyさん:2005/12/25(日) 10:48:32 ID:???
お前が変なところに'='を置いてるって意味。
304nobodyさん:2005/12/25(日) 12:00:30 ID:???
ワンタイムトークンのクラスってPEARとかにあります?
無かったらXOOPSとかにあるのを移植するとかしなきゃだめかなぁ?
305nobodyさん:2005/12/25(日) 12:27:45 ID:???
やあ、サンタだよ。
クリスマスプレゼントとして、君たちの質問になんでも答えてあげようじゃないか。
306nobodyさん:2005/12/25(日) 12:57:24 ID:BQDdD2yN
フォルダの生成はmkdirで出来たけど、
ファイルはどうやって生成したらいいですか?
307nobodyさん:2005/12/25(日) 13:05:32 ID:???
>>305
年収いくら?
308nobodyさん:2005/12/25(日) 13:20:02 ID:???
>>306
/dev/null
309nobodyさん:2005/12/25(日) 13:32:09 ID:???
eval()って邪道ですか?
310nobodyさん:2005/12/25(日) 13:48:03 ID:???
>>306
touch()
311nobodyさん:2005/12/25(日) 13:58:34 ID:???
メールの添付で日本語名を使おうとしているのですがmb_encode_mimeheaderで変換しても
正しく受信できないようです。日本語をどう変換すると良いのでしょうか?。

Content-Type: image/jpeg; name="日本語"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="日本語"
312nobodyさん:2005/12/25(日) 15:52:29 ID:???
>>306
file_put_contents("ファイル名", "");
313nobodyさん:2005/12/25(日) 16:12:23 ID:???
現在1つのPHPで1つのページしか出力できないんですが、
複数のページを出力するようにしたいと思っています。
PHP等でできた掲示板を見ると、修正削除などの処理を、
1つのPHPでできるようになってますよね?
語尾に?mode=modifyとかついているやつです。
ソースを見てもいまいちわからなかったのですが、
どういった関数?を使えばいいのでしょうか?
やり方などにもヒントがあれば教えていただきたいです。
314nobodyさん:2005/12/25(日) 16:23:58 ID:???
スナソMySQLの方は今一盛り上がりに欠けているので、ホットなここでオナガイシマス
time_1というレコードでMySQL側でのデータ形式はtimeとなっています、
` time_1` time NOT NULL default '00:00:00',
phpの方から
First time:<input type="text" name="first_time"
value="<?php echo $first_time ?>"><br>
テキストタイプのデータとしてデータベースにインサートしているのですが
データベースでは、見かけ上、正常に登録されている様に見えるのですが、
問題ないのでしょうか?
<input type=
の方でデータ形式を特別に時間の形式を指定してやらなければならない様な事は
無いのでしょうか?
御教授お願いします。
315nobodyさん:2005/12/25(日) 16:33:06 ID:???
盛り上がりに欠けるのは
聞き方がまずいからだろうね
316nobodyさん:2005/12/25(日) 16:42:42 ID:???
>>313
特に関数がある訳ではない。
ifとかswitchなどで処理を切り替えてるだけ。
317nobodyさん:2005/12/25(日) 16:53:33 ID:???
>>313
んじゃヒント

if($mode == 'コマンド1') {
 コマンド1の処理とHTMLの表示
} else if($mode == 'コマンド2') {
 コマンド2の処理とHTMLの表示
} else if($mode == 'コマンド3') {
 コマンド3の処理とHTMLの表示
}
318nobodyさん:2005/12/25(日) 17:42:35 ID:???
HTMLと分けておくと管理もラク。
319nobodyさん:2005/12/25(日) 17:56:53 ID:???
ifで処理を分けることも想像できない人が
外部HTMLファイルなんて扱えるのか?
320nobodyさん:2005/12/25(日) 18:01:17 ID:???
>>314
読みにくい質問だなぁ…
しかも結局何が聞きたいんだって感じ。

> <input type= の方でデータ形式を特別に時間の形式を指定してやらなければ
inputの部分で形式の指定なんてことはできません。

> データベースでは、見かけ上、正常に登録されている様に見えるのですが、
> 問題ないのでしょうか?
入力内容を何のチェックもしないでDBに放り込んでるなら問題ありまくりです。

PHPでちゃんと形式チェックして必要があれば加工シル!!
321nobodyさん:2005/12/25(日) 18:07:55 ID:???
>>316
modeに合わせて丸っきり別のプログラムをinclude()するって手もあるけどな
322313:2005/12/25(日) 19:10:24 ID:???
>>316>>317>>321
レス、ヒントどうもありがとうございます。
ifとswichですか。
swichは使ったことがないので、早速マニュアル引いて
やってみたいと思います。
323nobodyさん:2005/12/25(日) 19:32:06 ID:???
クリスマスですが。
324nobodyさん:2005/12/25(日) 19:57:15 ID:???
仏滅ですので、
325nobodyさん:2005/12/25(日) 20:25:22 ID:???
結局、友引です
326nobodyさん:2005/12/25(日) 21:54:50 ID:???
マイフレンドのPC君です
つPC
327nobodyさん:2005/12/25(日) 22:13:52 ID:???
つまり
みんなで(´Д⊂
328nobodyさん:2005/12/25(日) 22:50:38 ID:???
>>313
漏れはcase文を使う。
もう一つチェック用の変数をセッションで持ち回せばそのフラグで管理者だけしか表示させないとか、同じページでも管理者だけ[削除]とかを表示させたりできる。
ただ、うまく分けないとスパゲティになるから注意
329nobodyさん:2005/12/26(月) 00:46:47 ID:???
とりあえず、マニュアル検索しながらcaseでわけて
HTMLと分けて管理するのを作ったら見事にスパゲティ
になりました
330nobodyさん:2005/12/26(月) 01:48:21 ID:???
おまえ、才能ねーな
331nobodyさん:2005/12/26(月) 02:48:31 ID:xVIqedOU
正規表現でも使用する文字のエスケープがイマイチ理解できないんですが、
"[TEST]"という文字列を処理したい場合は
"\[TEST\]"であってますでしょうか?
332nobodyさん:2005/12/26(月) 02:58:53 ID:???
あってる
333313:2005/12/26(月) 03:11:44 ID:???
>>328
レスどうもありがとうございます。
swichのマニュアルを見ていたところ、
同ページにcaseもでてきていたので、
小さなスクリプトを書いて、動作を検証しています。
まだいまいち思ったとおり動きませんが、
なんとかなりそうな気がします。
本当にどうもありがとうございました。
334nobodyさん:2005/12/26(月) 11:22:41 ID:???
以下、お礼の文脈で精子ネタ禁止
335nobodyさん:2005/12/26(月) 12:19:02 ID:???
>>334
m9(^Д^)プギャーーーッ
336nobodyさん:2005/12/26(月) 13:38:06 ID:???
>>335は知らんのか?
337nobodyさん:2005/12/26(月) 13:39:27 ID:???
別におもしろくないから引き伸ばさなくていいよ。
338nobodyさん:2005/12/26(月) 13:43:37 ID:???
どうみてもPHPです。
本当にありがとうございました。
339nobodyさん:2005/12/26(月) 14:04:32 ID:???
PHPのスレ乱立してるけど、
よくよく見るとこういったネタで埋まってるのな。
340nobodyさん:2005/12/26(月) 14:05:48 ID:???
>>339
どうみても釣りです。
本当にありがとうございました
341nobodyさん:2005/12/26(月) 14:55:26 ID:???
つかswitchとcaseは別々に使うもんじゃないだろ
342nobodyさん:2005/12/26(月) 15:03:30 ID:???
どうみてもネタスレです。
本当にありがとうございました。
343nobodyさん:2005/12/26(月) 15:04:51 ID:???
どうみても殺人予告です。
本当にありがとうございました。
http://hobby7.2ch.net/test/read.cgi/car/1135550661/l50
344nobodyさん:2005/12/26(月) 15:12:35 ID:???
どうみてもネタスレ・・・じゃなかったです。
本当にありがとうございました。
345nobodyさん:2005/12/26(月) 18:04:54 ID:???
こんばんは、お世話になります。
ホットメールに以下の要領でメールを送信しようとしているのですがmb_encode_mimeheader($char)を
加えるとメールを受け付けてくれなくなります。
$headers = "From: ".mb_encode_mimeheader($char)." <[email protected]>"

件名を省いて以下のようにすると受け付けてくれるのですが件名を加えてメールを受信して貰う方法は
ないのでしょうか?。
$headers = "From: <[email protected]>"
346nobodyさん:2005/12/26(月) 18:10:13 ID:???
>>345
$headers = "From: ".mb_encode_mimeheader(mb_convert_encoding($char,"JIS"))." <[email protected]>"
としたら?
347nobodyさん:2005/12/26(月) 18:25:19 ID:???
迷惑メールフォルダに入ってたりして。
348nobodyさん:2005/12/26(月) 18:33:40 ID:???
>>346-347
だめでした(^^;

ErrCode = -81
ErrString = [MAIL FROM:] not permitted by remote SMTP server
ErrInfo = 501 Invalid Address
SMAIL SMTP-Send MX = "pamx1.hotmail.com." SMTP = "test.co.jp" From = " =?ISO-2022-JP?B?GyRCJGYkJiRsJCQbKEI=?= <[email protected]" To = "[email protected]" Failed !
SMTP-Error = "501 Invalid Address"
SMTP-Server = "pamx1.hotmail.com."
349nobodyさん:2005/12/26(月) 18:46:10 ID:???
>>348
ちなみに345には「件名」ってあるけど、Subjectのことじゃないんだよね。
350nobodyさん:2005/12/26(月) 19:05:36 ID:???
>>349
Subjectです。ホットメールから逆に送ってみて比較したりするのですが良くわかりません。
ISO-2022-JPでエンコードしたら日本語が使えるというものではないのでしょうか?。
351nobodyさん:2005/12/26(月) 19:12:04 ID:???
>>350
へ?
お前、Fromのとこに書いてるじゃん。
352nobodyさん:2005/12/26(月) 19:13:10 ID:???
>>351
mailもしくはmb_send_mailのパラメーターをよくみてみな。
353nobodyさん:2005/12/26(月) 19:21:33 ID:???
>>348
エラーメッセージは「そのアドレスは無効」と言っているから,
日本語云々以前の問題…というオチじゃないんだよね.
日本語入れなきゃ通るみたいだし.

ダブルクォーテーションは関係ないかなぁ.
うちのメーラーは「てすと <[email protected]>」とするとエラーが出て,
「"てすと" <[email protected]>」に訂正してしまうので.
半角英数のみだとクォーテーションなしでも通るけど.
的外れだったらゴメン.
354nobodyさん:2005/12/26(月) 19:40:01 ID:???
>>351-353
あ、勘違いしていました。
subjectではなくて差出人名です(^^;すいません。
「"」を試してきます。
355354:2005/12/26(月) 19:59:49 ID:???
["]付けてもダメでした(--; くやしい
From: ここに文字(英語含めて)が入るとだめみたいです <[email protected]>"
356nobodyさん:2005/12/26(月) 21:03:46 ID:???
そもそもhotmailのSMTP鯖がそれに対応してるのかが大前提の問題な気もするが。
357nobodyさん:2005/12/26(月) 21:44:13 ID:???
PHPで添付メールを受け取りたいのですが、メールの仕様が良く分かりません。
メールの仕様を詳しく解説してるサイトありませんか?
探したんですが見つかりませんでした。
358nobodyさん:2005/12/26(月) 21:58:36 ID:???
>>356
俺んとこでは普通のメーラーからニックネームつきメアドが届いてるから大丈夫じゃないの?
1度、全く同じFromアドレスを一般的なメーラーで送ってみて、
エンコ内容やヘッダ内容の違いでも比較してみればいいんじゃないかと。
359nobodyさん:2005/12/26(月) 22:01:05 ID:???
>>357
RFC2045〜RFC2049にMIME1〜5の規定が書かれてるから
それの邦訳をググればよろしい。
360nobodyさん:2005/12/26(月) 22:43:32 ID:???
array_searchで配列を検索しヒットしたときだけ処理を行いたいんですが、
戻り値が「0」のことも考慮すると、
if (array_search($foo, $bar) === false) {
} else {
(やりたい処理)
}

という極めて美しくないソースになります。
こんなとき皆さんはどうされますか?
361nobodyさん:2005/12/26(月) 22:45:13 ID:???
in_array()を使う。
362360:2005/12/26(月) 23:04:46 ID:???
>>361
マニュアル確認しました。
まさに求めていたとおりの関数です。
ありがとうございました。
363354:2005/12/26(月) 23:11:06 ID:???
メールサーバーのバージョンアップしたらヘッダーの内容が変わった
Received: from home ([127.0.0.1]:1859)
by nature.dip.jp with [Mail Server]
id <S21> for <[email protected]> from <[email protected]>>;
Mon, 26 Dec 2005 23:05:58 +0900

「>>」とかなってるし・・・
前はここにも from  =?ISO-2022-JP?B?GyRCJGYkJiRsJCQbKEI=?= <[email protected]>
とかなってたから、これが原因な気がします

どちらにしろ送信できないんですけどね(^^;
364354:2005/12/26(月) 23:14:02 ID:???
てか失敗した(*ノ-;*)見逃してっ
365nobodyさん:2005/12/27(火) 00:09:06 ID:???
>>363
エラーの内容がMAIL FROMがおかしいって言われてたよね?
それってヘッダじゃなくてSMTPのエンベロープFROMアドレスの事じゃないの?
sendmailで送信してるなら -f オプションでちゃんと指定してみたら。
366354:2005/12/27(火) 10:10:17 ID:???
おはようございます。他のメールソフトのヘッダーやエラーメッセージの内容を比較しながら色々と試してみた結果、
やはりPHPのmb_send_mailの「Form:」ヘッダーに「<」「>」が含まれている場合、他のヘッダー情報に「<<」や「>>」などの
悪影響を及ぼしてしまうように思います。FromはメールアドレスだけにしてReturn-Pathに同じように差出人名を入れた
場合はちゃんと届くのですが・・・。

x From: abc <[email protected]>\r\n
x From: abc [email protected]\r\n
x From: <[email protected]>\r\n
o From: [email protected]\r\n
367nobodyさん:2005/12/27(火) 10:18:51 ID:???
>>366
ならmb_send_mailではなくてmailでやってみては?
368nobodyさん:2005/12/27(火) 10:30:05 ID:???
header ("HTTP/1.1 403 Forbidden");
echo ("<html><head><title=\"403 Forbidden\"></head><body>");
echo ("403 Forbidden<br>");
echo ("$host_name<br>");
echo ("$host_ip");
echo ("</body></html>");
exit;


こんなのって有りですか? IEとFirefox で挙動が違う。
369nobodyさん:2005/12/27(火) 10:37:47 ID:???
>>368
どう違うんだ?
370nobodyさん:2005/12/27(火) 10:37:59 ID:???
Return-Path: っていうと、-f オプションで指定したんだね?
まさか extra-headers にReturn-Path:行を追加したのではないよね

ちなみに、OSとPHPのバージョンとか、関連する設定はどうなってる?
371354:2005/12/27(火) 10:39:39 ID:???
>>367
結果は全く同じでした(*ノ-;*)
PHP > X-Mail > メールソフトは差出人名を入れても上手く行くのですが
PHP > X-Mail > HotMail になるとエラーになります(^^;。
372354:2005/12/27(火) 10:42:40 ID:???
>>370
あ、すいません。
Windowsなのでsendmail_path = の設定は出来ないと思うのですがどうなのでしょうか?。

XPSP2+XMail+PHP5.1.0です。
373nobodyさん:2005/12/27(火) 10:47:39 ID:???
>>372
塚さ、WindowsでX-Mail使っているとか情報小出しにするなよ。

要するに、SMTPがX-Mailとかいうので、
宛先がホットメール以外だとうまくいくけど、
宛先がホットメールだとダメってことか?

差し出し人名を日本語でなくて英字だとどうなる?

ちなみに、ソース晒してみたら?
374nobodyさん:2005/12/27(火) 11:06:54 ID:???
>>370
windowsならメールを送る前にini_set("sendmail_from","[email protected]");
してみたらどうかな。

ヒマなのでソースを斜め読みしたら、windowsの場合そいつがエンベロープFromに
優先的になってるようだ。

なんかfrom:ヘッダーから自動的に抽出してるみたいだけど、
そこのところが腐ってるのかも。
375nobodyさん:2005/12/27(火) 11:07:49 ID:???
ごめん、上のレスは>>370宛じゃなくって>>372
376354:2005/12/27(火) 11:08:31 ID:???
色々すいません(^^;。
ヤフーには正しく届きます。
ソースと言っても以下のようにやっているだけなのでこれと言って特別な事はしていないのです。
ホットメール厳しい(*ノ-;*)。

mb_language('Japanese');
mb_detect_order('sjis-win,eucjp-win');
mb_internal_encoding("UTF-8");

$mime_from = mb_encode_mimeheader(mb_convert_encoding($headers,"JIS"))." <[email protected]>\r\n";

$headers = "From: ".$mime_from;
$headers .= "Return-Path: ".$mime_from;
$headers .= "X-Mailer: PHP"."\r\n";

@mb_send_mail(
$to
,$subject
,$message
,$headers
);
377354:2005/12/27(火) 11:13:14 ID:???
(ノ´▽`)ノオオオオッ♪
374さんのおっしゃるとおりでした。
ini_setしたら届きました<(_ _)>。

php.iniをちゃんと設定しろという話しでしたね・・・。

みなさま、ありがとうございました。
378nobodyさん:2005/12/27(火) 11:15:52 ID:???
ああ、たぶんwindowsの場合はどうも強制的に<>でくくって
MAIL FROM でエンベロープを指定するようだ。

だから "From: hoge <[email protected]>" の場合は

MAIL FROM: <hoge <[email protected]>>

という事になって、これがSMTP的に正しくなくてエラーになるんじゃないかな。
つまりini_set("sendmail_from","[email protected]")しておくのは必須の気がする。


と、ここまで書いたところでもう解決してたのね。
379nobodyさん:2005/12/27(火) 11:39:22 ID:???
>>368
とりあえず
<title=\"403 Forbidden\">
これは無いな
<title>403 Forbidden</title>
だろ
それとecho に( )使うのも違和感ある
380nobodyさん:2005/12/27(火) 11:52:48 ID:???
>>379

echo () はどうかわからないけど

"" でくくってるから<title=\"403 Forbidden\">でいいんじゃない
381nobodyさん:2005/12/27(火) 11:53:04 ID:???
jpgraphですが、

txtファイルから読み込んでグラフの値に代入する時
txtファイルを配列に格納→y軸データの配列にそれぞれ変数を代入する。

の流れで出来ないのでしょうか?
382nobodyさん:2005/12/27(火) 12:02:03 ID:???
>>381
やりたいことが良くわからんが、やってできなかったの?
だったらルーチン晒しなさいな。
383nobodyさん:2005/12/27(火) 12:15:19 ID:???
>>380
お前はHTMLの基礎から勉強しなおせ
384nobodyさん:2005/12/27(火) 12:17:11 ID:???
>>380
title要素とtitle属性がごっちゃになってないか
要素もないのに属性だけはありえんだろ
385380:2005/12/27(火) 12:26:41 ID:???
>>384

おっしゃるとおりです

勘違いしますた
386nobodyさん:2005/12/27(火) 14:01:31 ID:???
で、>>368はどう違うのか?

あれで 403 エラーページ作る気か…
387381:2005/12/27(火) 15:16:55 ID:???
失礼しました。
上手く出来なかったのです。
jpgraph1.19使用、レンタルサーバのphpinfoを見るとGD関連はenableでした。

解凍した中にあるsrcを
public_htmlの下にアップロードしました。日本語使用予定は無いので日本語化しておりません。

public_html/src/Examples/testsuit.phpを起動すると
この時点でいくつかのグラフは表示されませんでした。
この中で表示された一つのexample0.phpのソースを試しに改変する事に。
適当にy軸値を変えるとグラフも変わり、感動しつつ本題のテキストファイルのデータをグラフに反映しようとしました。
追加したのは、example0.phpのinclude以下に

$ufile = "./ufile.txt";
$fp = file($ufile);
list($a1,$a2) = explode(",",$fp[0]);
とし、$ydataの最後二つを$a1,$a2としてみたのですがグラフにはこの二つの変数は表示されませんでした。

public_html/ufile.txtとなっており、ファイルの中身は
10,15
となっています。

分かりにくい点などあるやもしれませんが、どうぞアドバイス宜しくお願いします。
388nobodyさん:2005/12/27(火) 16:35:37 ID:???
>>387
example0.phpの<?phpの次に
ini_set("display_errors", 1);
error_reporting( E_ALL );
を追加する
389nobodyさん:2005/12/27(火) 18:25:47 ID:???
PHPでは、数値や真偽値のラッパークラスってありますか?
JavaではintやbooleanのラッパークラスとしてIntegerやBooleanがありますが、それに相当するものです。
自作するのは簡単なのですが、PHPあるいはPECLなどにすでに用意されてあればそちらを使おうと思います。

あと、日付や時刻をあらわすクラスなんてのも探しているんですが、あれば教えてください。
よろしくお願いします。
390nobodyさん:2005/12/27(火) 22:11:03 ID:???
>>389
こんなところで聞くより
ttp://pear.php.net/
に行って探せよ。
391nobodyさん:2005/12/27(火) 22:18:13 ID:???
なんか、PHP使いはじめのとき自分の書いたメソッドの引数を
全部型チェックさせてたのを思い出した。

いま? やめた。なんか文句言われたから。
392381:2005/12/28(水) 00:00:11 ID:???
>>387
ありがとうございます、お陰様で出来ました。
感謝ですm(_ _)m
393nobodyさん:2005/12/28(水) 08:38:44 ID:???
これって使ってますか?
ttp://www.phpclasses.org/
394nobodyさん:2005/12/28(水) 15:04:17 ID:???
ファイルではなく変数内のデータのmime-typeを得たいのですが一度ファイルにして
mime_content_typeするしかないのでしょうか?。
395nobodyさん:2005/12/28(水) 15:10:22 ID:???
>>394
自前で関数を作る
396nobodyさん:2005/12/28(水) 18:02:58 ID:???
>>394
変数にバイナリデータがあるって事は、そのデータは作ったか取得したかのどっちかだよねぇ?
作ったのならmime-type決定してるはずだし、取得したならどーせ保存するんだからファイルに落とせばいいし。
何がしたいかによってやり方も変わる。
397nobodyさん:2005/12/28(水) 18:20:02 ID:???
>>395-396
それがファイルに落とすなら良いのですがDBに入るので出来る事ならファイルに落とさずに処理したいのです。
やはり自作関数作るしかないですよね。そこまでするなら最初の何バイトかファイルに落として識別させるかな、
なんて考えています。ファイル名は拾得出来るので拡張子から判断するのも手だとは思うのですが、なんか
スッキリしない感じがします。
398nobodyさん:2005/12/28(水) 18:42:31 ID:???
>>397
DBにファイル入れるのはあまりオススメできないが・・・
そーゆーことならテンポラリ作って処理するしかないだろうねぇ
399nobodyさん:2005/12/28(水) 18:51:25 ID:???

地震なかった?
400nobodyさん:2005/12/28(水) 19:16:44 ID:???
しらねーよ バカ?
おれはいつも揺れてるから関係ないし
401nobodyさん:2005/12/28(水) 19:22:28 ID:???
新しいwindowの大きさを指定する時、JAVAを使いますが、
アドレスに、PHPの変数を混ぜたい時どうすればいいのでしょうか?

<SCRIPT language="JavaScript">
<!--
function winopen(w,h){
win1=window.open("$x.html","","width="+w+","+"height="+h);
}
//-->
</SCRIPT>

などにしたいのですが・・・。
402nobodyさん:2005/12/28(水) 19:28:11 ID:???
>>400
kwsk
403nobodyさん:2005/12/28(水) 19:30:54 ID:???
関係ない話はよそでやれ。

>>401
JavaじゃなくてJavaScriptだ。
で、言ってることがよくわからん。
404nobodyさん:2005/12/28(水) 19:39:53 ID:???
お堅い人ねぇ。
ちょっとくらい外れてたっていいじゃない。
405nobodyさん:2005/12/28(水) 19:40:33 ID:???
授業だって先生いつも話しが脱線してたでしょ!
406nobodyさん:2005/12/28(水) 19:42:55 ID:???
<SCRIPT language="JavaScript">
<!--
 function winopen(w,h){
  win1=window.open("<?php echo $x;?>.html","","width="<?php echo $w;?>","height="<?php echo $h;?>");
 }
//-->
</SCRIPT>

ってことじゃないの?
407401:2005/12/28(水) 19:47:07 ID:???
ごめんなさい(´・ω・`)

>>406
ありがとうございますm(_ _)m
408nobodyさん:2005/12/28(水) 20:05:27 ID:HUgW2hhm
メールフォームを作ろうと思い
連続送信対策をしたいのですが

方法として、
送信者のIPを記録するログファイルを用意し
送信しようとするたびに、ログファイルから送信者のIPを
探し、ログファイルに存在しない、
もしくは存在してもタイムスタンプが規定の時間を経過している場合
送信を完了させる。

というものを考えています。

そこで、ログファイルからのIP検出の際
fgets()でシーケンスに調べていく他に、
一気に調べたりする方法
(1行ずつ見ず指定文字列がファイル内にあるか見るような関数)
はありますか?

あるなら、よろしければ関数名だけでも教えてください
409nobodyさん:2005/12/28(水) 20:20:52 ID:???
>>408
file_get_contents
410nobodyさん:2005/12/28(水) 20:42:21 ID:???
PHP内の<STYLE>タグでリンクの下線を消すコマンドを書こうと思い、

<STYLE type="text/css">
<!--
body {
background-color: black;
font-size : 14px;
line-height : 27px;
word-spacing : 3px;
letter-spacing : 3px;
font-family : Verdana,sans-serif;
 overflow-x:hidden;
}
-->
</STYLE>

とした所、リンクの下線は消えず・・・。
もしかして、PHP側にスタイルの制限あったりでしょうか?
411nobodyさん:2005/12/28(水) 20:46:46 ID:???
次のような文字列 $s と配列 $a があります。

$s = 'xx<0>x<3><2>x';
$a = array('A', 'B', 'C', 'D');

これを、<0> を $a[0] で置き換える、<1> を $a[1] で置き換える、.... ということをしたいです。
今はこうしています。

for ($i = 0; $i < count($a); $i++) {
 $pat = '/<' . $i . '>/';
 $s = preg_replace($pat, $m[i], $s);
}

しかし、これだと配列の長さが長くなるほどループの回数が増えます。
できれば、preg_replace()を1回だけ呼び出すだけにしたいのですが、できますでしょうか。
preg_replace_callback() を使えばできるのかと思いましたが、コールバック関数に $a を渡すことができないため、できなさそうです。

どなたか教えてください。
412nobodyさん:2005/12/28(水) 20:46:54 ID:???
それPHP関係ない。
CSSスレ行きなされ。
413nobodyさん:2005/12/28(水) 20:47:34 ID:???
>>398
ファイル保存も考えたのですが、そのファイルをURL自打ちされて外部からアクセスされたくないので
特定のディレクトリに置いてしまうのは気がひけたのです。ファイルを作成してURL外において要求
された時だけPHP経由で公開すると言うのが良いのでしょうか?。

>>408
私は邪道だからIP毎にファイル作成してます(^^;。
414nobodyさん:2005/12/28(水) 20:48:56 ID:???
>>410

<style type="text/css" media="all">
<!--
a {
     text-decoration: none;
}
-->
</style>
415nobodyさん:2005/12/28(水) 20:49:36 ID:???
>>410
PHP以前の問題でしょ。
文体からして>>401と同じ人だと思うけど、
もうちょっとcssスレやjsスレで勉強してからきたほうがいいと思う。
これだけじゃかわいそうなので、
下線を消すためのcssは、border-style:none;など。
416nobodyさん:2005/12/28(水) 20:50:10 ID:???
>>414
リンクの下線消すとアクセシビリティが低下するって聞いたぞ。
:hover なら俺もやってるが。
417416:2005/12/28(水) 20:50:50 ID:???
間違えた >>410 だた。
418415:2005/12/28(水) 20:56:23 ID:???
リンク下線か、早とちりしてた。
border-style:none;ってのはきにしないでください。
419nobodyさん:2005/12/28(水) 21:00:06 ID:???
cssとjsが分からなくて・・・。
申し訳ないです。

サイトで勉強してきますorz
答えて下さった方ありがとうございました。
420nobodyさん:2005/12/28(水) 21:00:07 ID:???
板違いなのに答えてくれる住人テラヤサシス('・ω・`)
良スレの悪寒……w
421nobodyさん:2005/12/28(水) 21:32:32 ID:???
冬厨の悪寒……w
422nobodyさん:2005/12/28(水) 21:48:05 ID:???
>>408
in_array($IP, file("ファイル名"))
とかダメか?
423nobodyさん:2005/12/28(水) 21:55:23 ID:???
同じファイルに書く(書ける)からってHTMLとCSSとJavaScriptとPHPはそれぞれ違うぞ〜
424nobodyさん:2005/12/28(水) 21:59:14 ID:???
>>411
preg_replace('/<(\d+)>/e', '$a[$1]', $s);.
425nobodyさん:2005/12/28(水) 22:04:55 ID:???
コマンドっていうのに不覚にもワロタ
426408:2005/12/28(水) 22:26:08 ID:HUgW2hhm
>>409さん
file_get_contentsを調べてみました
確かに便利ですね
どうもありがとうございます


>>413さん
それも、便利そうですね
だけど、アクセス数が高くなってくると
ログファイルでパンパンになりませんかね^^;
利用人数に応じてそれも検討してみます
ありがとうございます

>>422さん
file()で配列扱いになるんですね
知りませんでした^^;
よろしければ、どういう形式で配列に入るか教えていただけませんか?

***.***.***.****(IP) , 2005/12/28/23:00(改行)
***.***.***.****(IP) , 2005/12/28/23:25(改行)

という形式とさせてください
427408:2005/12/28(水) 22:26:50 ID:HUgW2hhm
IPの桁数がおかしい・・・不覚
428nobodyさん:2005/12/28(水) 22:32:01 ID:???
>>426
1行の内容がそのまま配列1要素(改行付き)
なので、in_array()じゃ探せないな。

preg_grep('/^'.preg_quote($IP).',/', file("ファイル名"))
ってとこでどーよ?
429nobodyさん:2005/12/28(水) 23:07:39 ID:???
$IPにも改行つけたら良いのでは(^^?
430nobodyさん:2005/12/28(水) 23:11:31 ID:???
>>429
後ろに不確定な日付文字列が入ってるからin_array()じゃ無理っしょ
431nobodyさん:2005/12/28(水) 23:14:59 ID:???
>>430
あ、日付かぁ・・・それは無理だ(^^;失礼
それで先頭からの正規表現なのですね
432408:2005/12/29(木) 00:50:22 ID:ziv/ZkA5
>>レスくださった各位
勉強不足で、教えてもらった関数が使いこなせないので
とりあえず、勉強しなおしてからまた明日にでも質問させていただきます
どうもありがとうございました。

IP
時刻
IP
時刻




みたいな書き出しかつ、シーケンス方式でIPを検出させれば楽なんですが
あまりにも、芸がないもので・・・

ちなみに、
アクセスするたびにDB(mysql)にログを残していって
DBから調べて・・・エラーか否かっていうのは
アクセス量にも寄ると思いますが、どんなもんでしょう?(鯖負荷など)

それではまた明日・・・ありがとうございました
433nobodyさん:2005/12/29(木) 01:04:49 ID:???
>>432
大量のアクセスがあるならファイルに保存するよかDBがいいだろ。
その辺はアクセス数次第だから両方実装してみてベンチでも取って
想定されるアクセス量のときに速い方を選べ。一般的正解など無い。
434nobodyさん:2005/12/29(木) 04:10:14 ID:1WTCJJ6c

引数が ?test=hoge の場合 文字例 AAAを出力し、員数が無い
場合何も表示しないようにしたいのですが:

$mode = $_GET['test'];
if ($mode = 'hoge'){print("AAA");}

とまではやってみたのですが、員数が無い場合
何も表示しない方法が分からなくて行き詰まってしまいました。
こんな私ですがよろしくお願いします。
435nobodyさん:2005/12/29(木) 04:26:08 ID:???
員数ってなんじゃ?ってのはとりあえず置いといて。

if(count($_GET) == 0) { exit; }
とか
if($_SERVER["QUERY_STRING"] == "") { exit; }
とか。

POSTデータもチェック要るのか?これ。
436434:2005/12/29(木) 04:56:52 ID:1WTCJJ6c
>>435
ありがとうございます、員数は誤字でした。

>POSTデータもチェック要るのか?これ。
よく考えてみたら必要ありませんでした。

<?php
if($_GET['test'] == 'hoge'){echo "<p>マンセー</p>";}
if(count($_GET) == 0){exit;}
?>
としてみましたが、何故か「<p>マンセー</p>」がprintされません。(当然ですが「.php?test=hoge」としました)
echoの使い方は間違ってないと思うのですが…
エラーも出力されません。
437nobodyさん:2005/12/29(木) 05:08:54 ID:???
すいません。
2chのIDからホスト名生成してください
438nobodyさん:2005/12/29(木) 05:10:56 ID:???
>>436
<?php
var_dump($_GET);
if($_GET['test'] == 'hoge'){echo "<p>マンセー</p>";}
if(count($_GET) == 0){exit;}
?>
とするとどんな内容が表示される?
439nobodyさん:2005/12/29(木) 05:15:18 ID:???
>>437
???
440434:2005/12/29(木) 05:19:55 ID:1WTCJJ6c
>>438
あ、何かの手違いでした。
ちゃんと 「まんせー」と表示されていました。すみません。

>するとどんな内容が表示される?
ちなみにやってみるテスト…
array(1) {
["test"]=>
string(4) "hoge"
}
でした。ありがとうございました。
441434:2005/12/29(木) 06:00:20 ID:1WTCJJ6c
やっぱり exit関数を使うとスクリプトを終了してしまうので
後ろの処理が全部駄目になってしまいます。

そこで、[test]キーの値が[hoge]の場合のみ
「<p>まんせー</p>」をプリントして、それ以外または引数が指定されてない場合は
何もプリントしないでそのまま…なんてことは出来るのでしょうか?
442nobodyさん:2005/12/29(木) 07:28:04 ID:???
>>441
if ($_GET['test'] == 'hoge') {
echo "<p>まんせー</p>";
}
443nobodyさん:2005/12/29(木) 07:41:42 ID:N/LCxJEV
マルチバイトで正規表現つかいたいんですけど、
マニュアルを探す気力がありません。

"あいうえお。かきくけこ★さしすせそ"

この文字列から「。★」以外を配列に入れるには
どう書いたらいいですか?
文字コードはUTF8です

$matches[0] に "あいうえお"
$matches[1] に "かきくけこ"
$matches[2] に "さしすせそ"

っていう配列を得たいです
444nobodyさん:2005/12/29(木) 08:30:41 ID:???
> マニュアルを探す気力がありません。
まず精神科か心理カウンセラーの診察を受けて然るべき治療を施した上でマニュアルが読めるようになるまでは来なくていいよ。
マニュアル読めればその程度の問題は非常に簡単。mb_splitで一撃。
445nobodyさん:2005/12/29(木) 09:07:36 ID:???
>>444
お前やさしいな。レス番が怖いけど。
446443:2005/12/29(木) 09:13:34 ID:N/LCxJEV
>>444
マニュアル読めたyo!
寝たら読めた。みんなありがとう
447nobodyさん:2005/12/29(木) 09:48:37 ID:???
>>434
もしかして「引数」を「いんすう」って読んでる?
448nobodyさん:2005/12/29(木) 09:49:51 ID:???
なんで 引数は「ひきすう」って読むんだよ と書かないんですか?
449nobodyさん:2005/12/29(木) 10:00:09 ID:???
思ったことをそのまま書いたから
450nobodyさん:2005/12/29(木) 10:11:04 ID:???
頭が悪いですね
451nobodyさん:2005/12/29(木) 10:19:38 ID:???
少し考えればできそうな質問なんですが、頭がこんがらがっています。

$a = 0;
if ($a) { echo "あ"; }
if (!$a) { echo "い"; }
if ($a == "") { echo "う"; }
if ($a != "") { echo "え"; }
if ($a == 0) { echo "お"; }

の結果が
いうお
になります。
$aに0〜の数字が入っていれば真としたいのですが、条件をどのようにすればよいのでしょうか?
452nobodyさん:2005/12/29(木) 10:27:43 ID:???
とりあえず入門書の1冊なり読みなよ…
453nobodyさん:2005/12/29(木) 10:31:53 ID:???
===
!==
454nobodyさん:2005/12/29(木) 10:33:15 ID:???
>>451
少し考えればできそうなのに頭がこんがらがるお前は頭いいね。
つーか
> $aに0〜の数字が入っていれば
って意味ワカンネ。
455nobodyさん:2005/12/29(木) 11:15:25 ID:???
つ is_numeric()
456nobodyさん:2005/12/29(木) 11:26:02 ID:???
>>451
数字限定なら
if (is_numeric($a))
457nobodyさん:2005/12/29(木) 11:27:09 ID:???
質問の仕方が悪かったですね。
$aが数字の場合、真
$aが空や数字以外なら偽
としたかったのです。

>>455
でできました。ありがとうございました。
458nobodyさん:2005/12/29(木) 12:11:14 ID:???
>>456
かぶってました。ありがとうございます。
459434:2005/12/29(木) 15:45:06 ID:1WTCJJ6c
>>442
クエリが test=hoge 以外だとエラー吐いたのですが
ちょっと強引に error_reporting(0); で誤魔化しました。

>>447
「ひきすう」だったのね…orz

おかげで解決しました。
本当にありがとうございました。
460nobodyさん:2005/12/29(木) 16:45:34 ID:???
>>459
じゃあ
if (isset($_GET['test'] ) and $_GET['test'] == 'hoge') {
echo "<p>まんせー</p>";
}
461nobodyさん:2005/12/29(木) 20:50:49 ID:???
>>441
たしかにサンプルなんかだと
むやみにexitとかdie使っててどうすりゃいいんだ!とか悩んだな。昔は。
ちゃんとhtmlのケツの方まで出したかったりするんだったらエラー処理時の関数を作っておくとよい。
そういう事をしてるうちに見通しのよいソースが書けるようになってくるし、自分の関数をほかのプログラムでも使い回ししやすくなる
462nobodyさん:2005/12/29(木) 21:07:10 ID:???
ファイルを扱うプログラム書いてるんですが、
ファイル処理時にファイルの内容なんかをmysqlにもデータ保持させて、
読み込む必要がある場合は、
mysqlから読み込んだりしてます。
この方法ってやっぱりナンセンスでしょうか?
今まで簡単だからとmysqlに逃げてましたがそろそろ真剣に
考えなきゃいけないかなと感じてます。

理由はデータベースからひっぱってくるデータは非常に処理が
しやすいからです。
でも整合性(ファイルとデータベースの違い)とかで
たまに苦しみます。整合性自体も考慮して書けばいいんでしょうが。
463nobodyさん:2005/12/29(木) 21:52:07 ID:???
>>462
「整合性」って具体的に何の話をしてるんだかよくわからんけど、
DBで処理できる範囲ならそのままでいいんじゃない?
負荷が大きくなってくると少し考えなくちゃいけないけど。
464nobodyさん:2005/12/29(木) 23:11:37 ID:???
>>461
どっちにしろエラー処理でプログラム終了しちゃったらそこで終わっちゃうし、
かといって終了させないと、実行させたくない正常時処理まで走ってしまう。
結局のとこ、全体の流れをちゃんと組めてないだけだろ?
その程度のごくごく基本的なロジックも組めないならプログラミングなんてやめてしまえと。
関数化しないといけないのはエラー時の表示はもちろん、メインの処理も含めて全体。

元の質問者は「他にどんな処理があるかは教えませんが、表示だけしないで終わるように、
かつ自分で考えなくてもそのまんま動くプログラムを教えてください」とアホ質問してるだけなので、
ここはそういうスレだからそれ自体を怒りはしないけど、ちっとは考えて回答を読めと。
465nobodyさん:2005/12/29(木) 23:15:54 ID:???
>>462
ファイルをどのように扱うプログラムなのかが分からんので何とも。
ざっと読んだ限りじゃ、そもそもファイル扱う必要ないんじゃない?って思うけど。

でもやってることはファイル内容をキャッシュして扱ってる、ってのと同じだと思うので、
そういう処理は当然のように整合性問題がついて回るけど、だからといって
その種の手法がナンセンスだとは思わない。必然があるならどんどんやればいい。
検索の高速化やファイルロックの堅実性など、下手に悩むよりずっといいこともある。

メリット・デメリットを全然考えずにやってるならナンセンスなんだろうけどね。
466nobodyさん:2005/12/30(金) 01:41:08 ID:???
a,b,c,d,e・・・と40個ぐらい配列$hairetuに

$hairetu = array(
"a","b"
);

格納してあるんですが、これをランダムに順序を並べ替えて
r,d,c,g,aみたいに40個順に出力するにはどうすればいいでしょうか。
467nobodyさん:2005/12/30(金) 01:48:09 ID:???
あれい_らんど
468nobodyさん:2005/12/30(金) 02:08:10 ID:???
しゃっふる
469nobodyさん:2005/12/30(金) 02:11:41 ID:???
>>467-468
どうも。shuffleなんてあったんですね。
array_randはポケットリファレンスに載ってないのはなんでだろ。
470nobodyさん:2005/12/30(金) 02:19:29 ID:???
shuffle()が用意されたのはPHP3.0.8以降で非情に古い関数。
それに対してarray_rand()はPHP4以降。
そのリファレンス本が古いんじゃね?

つーかPHPは仕様の変化が早いからマニュアル系で良書と呼べる本はあんま無いぞ。
テクニック本ならともかくリファレンスとして使うなら本家なりミラーなりの
オンラインマニュアルに勝るものなし、って感じ。
俺は普段、それをローカルに保存して使ってるけど、それだって年に1度は
保存し直しとかないといつの間にか内容変わってて怖いくらいだ。
471nobodyさん:2005/12/30(金) 04:18:40 ID:???
PHPなんて比較的最近の4.3.xでも関数が増え続けてるし、
(このスレの回答でも出てきてるfile_get_contents()とか4.3.0で追加された)
戻り値とかの仕様も変わっちゃう(特に配列系はかなり変わってる)んだから、
その辺の安い本なんて読みながらコーディングしてるようなやつは
現場じゃ使い物にならないと思うけどな。

ま、趣味で書いてる分には別に構わないけど、それなら他人に質問すんなって感じ。
自分の使ってるバージョンのマニュアルも読まずに質問するのは失礼じゃね?
472nobodyさん:2005/12/30(金) 04:30:28 ID:???
どうでもいい
473nobodyさん:2005/12/30(金) 04:58:26 ID:???
現場も9割方はレベル低いから大丈夫!w
474nobodyさん:2005/12/30(金) 10:31:47 ID:FPBgif0X
バージョンPHP4.3.11です。

「test.php」というファイルに別のディレクトリにあるtest2.phpもしくはtest3.phpというファイルの
どちらを上書きするか、セレクトメニューで選択した方を上書きコピーしたいのですが

■select.php (選択した方を読み込むファイル)
require("filecopy.php");
if ($sentaku == true) { //選択ボタンが押された時コピー実行
copyfile();
}

■filecopy.php(select.phpで呼び出された動作)
function copyfile{
switch ($datafile) {
case "test2": //test2が選択された時はtest.phpにtest2.phpを上書き
chmod ("test.php",0666);
copy ("file/test2.php","test.php");
chmod ("test.php",0666);

case "test3": //test3が選択された時はtest.phpにtest3.phpを上書き
chmod ("test.php",0666);
copy ("file/test3.php","test.php");
chmod ("test.php",0644);
}

という感じで書きましたが、
Fatal error: Call to undefined functionエラーが発生します。
どうすれば良いでしょうか?
475nobodyさん:2005/12/30(金) 10:37:30 ID:???
むーぶ_アップロード_ファイル
476nobodyさん:2005/12/30(金) 10:38:17 ID:???
>>474
>Fatal error: Call to undefined functionエラーが発生します。
>どうすれば良いでしょうか?
エラー表示を全部書かないのは嫌がらせか?
あとエラー行の位置を示さないのも嫌がらせの一種だからな。
477nobodyさん:2005/12/30(金) 10:39:39 ID:???
あと、function copyfile{}って書き方は見た事が無いが
()は省略可能かどうかは確認したか?
478nobodyさん:2005/12/30(金) 10:40:56 ID:???
> Call to undefined function 〜
つーのは、 〜って関数が定義されて無いのに呼び出そうとしたのでガッした、って事。
479nobodyさん:2005/12/30(金) 10:41:43 ID:???
>>476
失礼。
Fatal error: Call to undefined function: copyfile() in /home/rika/public_html/test/select.php on line 23

23行目は上のselect.php の copyfile(); の部分
480474:2005/12/30(金) 10:43:04 ID:???
>>477
function copyfile() {

}
って感じで書きましたがやはり同じエラーが出ます。
481474:2005/12/30(金) 10:44:50 ID:???
>>478
すぐ上でrequireしてるので定義されているはずなんですが、、
482nobodyさん:2005/12/30(金) 10:47:04 ID:???
括弧が空じゃ意味無いんじゃぼけ
483nobodyさん:2005/12/30(金) 10:49:21 ID:???
意味ないってことはないけどな。
呼び出し元も何の引数も与えてないんだからfunction側をいくらいじったところで…
こいつ、PHPとPerlを勘違いしてそうな予感。

そのレベルでいきなりrequireで別ファイル定義してたって解決が遅くなるだけだ。
まず最初のうちはselect.phpの中でfunctionの定義して、動くようになってから分離シレ
484474:2005/12/30(金) 10:50:44 ID:???
>>482-483
すいません、select.php側の()を消すとエラーは消えました。
が、コピー動作が作動していない様です。
485nobodyさん:2005/12/30(金) 10:51:53 ID:???
>>474
エラーに関係ないけど,
switch内のcase文は,きちんとbreakしないと,次のcase文まで実行してしまうよ.
test2が選択されても,最後にはtest3がコピーされるね,このままだと.
486474:2005/12/30(金) 10:55:27 ID:???
>>485
あ、本当だ。忘れてました。。

でもコピーはされてない様です。
エラーは出ていないのに、、
487nobodyさん:2005/12/30(金) 10:57:09 ID:???
>>484
そんなとこ消すな。アホ。
488474:2005/12/30(金) 10:58:34 ID:???
実行すらされてないですね。

>>487
ぼけとかアホとか・・・ここは下らない質問スレじゃないんでしょうか?
489nobodyさん:2005/12/30(金) 10:59:29 ID:???
>>484
今のうちに言っておくが、エラーがなくなったところでそのコピーは絶対動かないぞ。
$datafileってどっから出てきたんだよ。
「HTMLのフォームで渡してます」とか勘違い回答禁止。
490nobodyさん:2005/12/30(金) 10:59:34 ID:???
質問者も痛いが、妙に気性の荒い痛い香具師が居るなww
お前は分かっとるのかと。
ちなみに>>482括弧が空でも動くぞ。
491nobodyさん:2005/12/30(金) 11:00:32 ID:???
>>488
下らない質問スレだが、その質問に親切丁寧に回答してやるスレではない。
無視しないだけありがたく思え。
492474:2005/12/30(金) 11:03:19 ID:???
>>489
$datafileはデータファイル(data.dat)の中に。

例えばtest2を選択した時はdata.datの中には
test2 という値が保存される様になってます。
この値は既に確認済みです。
493474:2005/12/30(金) 11:06:00 ID:???
print $datafile; を実行すると正常に test2 と出力されます。
494nobodyさん:2005/12/30(金) 11:06:38 ID:???
>>492
function copyfile() の中で
print $datafile;
とかやってみれ。でてこねーから。
495491:2005/12/30(金) 11:07:06 ID:???
functionなんかで呼び出さずに、フォームで実行する部分

require("filecopy.php");
if ($sentaku == true) { //選択ボタンが押された時コピー実行

ここ

}

に、functionの中身を書けば動くだろが ボケカス氏ね糞
496474:2005/12/30(金) 11:07:45 ID:???
>>494
それだと出て来ない。何ででしょう・・?
497491 == 487 != 482:2005/12/30(金) 11:09:17 ID:???
ちょっとまてこら。人の名前を勝手に騙るんじゃねー
498474:2005/12/30(金) 11:09:54 ID:???
>>495
その手がありました・・・
まあ最終手段ですが・・・

すいません、これでやります。。
499494=487:2005/12/30(金) 11:11:56 ID:???
>>496
PHPはPerlと違って、普通に$datafileとか書くとローカル変数として扱われて
関数内の$datafileとその外の$datafileは別物だから。
500nobodyさん:2005/12/30(金) 11:12:36 ID:???
>>499
へえー、そうなんですか・・
501485:2005/12/30(金) 11:15:50 ID:???
>>498
…いや,これが最初の手段でしょ.
関数を作るのは,その処理を頻繁に行う必要が出てきてから.
>>494で変数が出てこないのは,変数のスコープが違うから.
502nobodyさん:2005/12/30(金) 11:16:43 ID:???
そのレベルでいきなりcopy()とかchmod()とか使うのは危険だから、
最初のうちはprintだけ書いて処理の流れを確認した方がいいと思うぞ。
503474:2005/12/30(金) 11:19:47 ID:???
>>501
「ファイルは分けた方が動作が軽快」と聞かされてたんで、
requireを使って、動作の目的ごとにファイルを分けてたんです。
>>502
了解です
504nobodyさん:2005/12/30(金) 11:21:00 ID:???
>>503
基礎も分かってないうちからいきなり複雑にしても動くわけがない、ってことですな。
505nobodyさん:2005/12/30(金) 13:09:47 ID:???
結論・基礎からやれ
506nobodyさん:2005/12/30(金) 15:32:37 ID:???
>>503
聞かせたバカはどこのどいつなんだろな
507nobodyさん:2005/12/30(金) 15:39:37 ID:???
>>462
データだけでなくタイムスタンプも保存するようにして、
ファイルのタイムスタンプと比較したら?
つかそういうの何もせずにデータが分散しちゃうのは
全然よくない方法だと思うんだけど。
508nobodyさん:2005/12/30(金) 17:51:40 ID:???
echo 'kudaraneeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee!!!!!!!!!';
509nobodyさん:2005/12/30(金) 18:50:48 ID:???
>>508
書くならdieで(笑
510nobodyさん:2005/12/30(金) 21:02:19 ID:???
>>503
あるスクリプトを3つに7つぐらいに分割したのと、
まとめたものの出力タイムを算出したら、
倍ぐらい違ったぞ。
もちろんまとめたほうが早かった。
スクリプトを分けるのはいいけど、早くなるってわけじゃないってこと。
511nobodyさん:2005/12/30(金) 21:11:34 ID:???
・スクリプト自体は小さい方が速い。 <- コメントアウトを1MBくらいすると体感できる。
・includeやrequire処理は遅い。 <- まぁファイルを開く処理なんで当然っちゃー当然。
なので、
・滅多に使わない処理を別ファイルにすると、普段の処理は速くなる。
つーあたりが落とし所かと。
スクリプトの管理が楽になるってのもあるけど。
512nobodyさん:2005/12/30(金) 21:57:56 ID:???
別々のページを表示させる複数の機能をまとめるよりは分割した方が良くて、
その上で共通の部分は1つにまとめてrequire()しましょ、って話でしょ。
理由もなく分ければ速いとか遅いとか言ってもしょーがないよね。
513nobodyさん:2005/12/30(金) 22:14:09 ID:WrjQPiei
>>510
アクセレータは入れてる?
速度向上を求めるなら、スクリプトをまとめるよりも、
アクセレータ入れた方がいいよ。
514nobodyさん:2005/12/30(金) 22:18:34 ID:???
高速化の話をしたいわけじゃなく、分割が高速化に役立つのかの話だし。
515nobodyさん:2005/12/30(金) 22:47:43 ID:???
話題ってのはどんどん流れていくものなのだよ。
516nobodyさん:2005/12/30(金) 23:00:40 ID:???
DreamWeaverみたいな入力支援機能があるPHPエディターって何がありますか?
517nobodyさん:2005/12/30(金) 23:03:27 ID:???
518nobodyさん:2005/12/30(金) 23:10:26 ID:???
>>517
とってもありがとう、そしてごめん
519nobodyさん:2005/12/31(土) 03:35:38 ID:TV9EjbIm
自分で作ったブラウザ連出ブラクラを間違って起動させちゃったんだけど
再起動させれば問題ないよね?
520nobodyさん:2005/12/31(土) 03:36:13 ID:???
自分に聞け
521nobodyさん:2005/12/31(土) 08:05:19 ID:???
間抜けやなぁ
522nobodyさん:2005/12/31(土) 09:25:13 ID:GIcF9gPa
ダウンロードするときにhtml表示させて、そこにダウンロードURLが書かれてるみたいなphpのあぷろだないっすかねえ。
Sn Uploaderのphp版があれば最高なんだけど・・・詳しい人いたら教えていただきたいです。。
523nobodyさん:2005/12/31(土) 09:59:51 ID:???
普通のロダとどう違うのか分からん
そして、何がしたいのかも分からん

DL用のリンクじゃなくてURLを単純に文字列として表示したいのか?
それならスクリプト内のHTML出力部分をちょっと手直しするだけだけど、それだったらスレ違いやし

エスパーキボン
524nobodyさん:2005/12/31(土) 10:16:32 ID:???
そもそもスレ違い
525nobodyさん:2005/12/31(土) 11:03:55 ID:???
>>522
そうだ、sourceforgeでいいじゃん。
ミラー管理、会員管理、ファイルのバージョン管理、ML、
なんでも付いてるphp製アップローダだぞ
526nobodyさん:2005/12/31(土) 11:21:27 ID:???
527nobodyさん:2005/12/31(土) 14:26:52 ID:NkWpneAF
>>424
返事がおくれましたが、それでいけました。あまりに素っ気ない回答だったんで最初はわからなかったんですが、
よくみてみるとeオプションなんてのがあるんですね、勉強になります。
どうもありがとうございました。
528nobodyさん:2005/12/31(土) 16:26:59 ID:ytK+M4x0
サーバにMySQL(MyISAM)がインストールされているかどうかを
調べる構文はありますか?
529nobodyさん:2005/12/31(土) 16:31:00 ID:???
>>528 phpinfo()
530nobodyさん:2005/12/31(土) 16:50:24 ID:???
>>529
MySQLライブラリがPHPに組み込まれているかどうかでは無く、
MySQLがサーバにインストールされているかどうか、
そのMySQLでMyISAMが有効であるかどうか、です
531nobodyさん:2005/12/31(土) 17:00:17 ID:???
>>530
PHPから使えなくてもMySQLが入ってればいいってこと?
PHPから使えない=PHPからアクセスできない=MySQLが入ってても認識できない
ってことだから「構文」としてはそんなものは存在しないと思うけど。

強いて言えば
passthru("find / -name mysql");
とかやれば探せるかもしれない。が、共有サーバーとかでこんなの走らせると怒られるかも。
532nobodyさん:2005/12/31(土) 17:02:15 ID:???
で、さらにMyISAMが有効かどうかを調べるなら、findで見つかったmysqlのコマンドを実行して
現在のmysqlの状態を表示させるしかないんじゃないかな。

つーか、こういうのはサーバー管理者に質問して確認すべきものであって、
ユーザが勝手に調べたりしていいものじゃないと思うぞ。
533nobodyさん:2005/12/31(土) 17:03:48 ID:???
>>531-532
なるほど、一発で調べる構文など存在しないという事ですね。。
ありがとうございました。
534nobodyさん:2005/12/31(土) 18:25:15 ID:???
MySQLに接続しに行って、
show variables like 'have_myisam'
でYESになればサポートしてる。
535nobodyさん:2005/12/31(土) 18:39:31 ID:???
それ、まず接続できることが大前提だけど、
接続に失敗するのが
・MySQLがインストールされてないため
・DB接続の指定を間違っているため
のどっちなのかをどうやって判別するんだ
536nobodyさん:2006/01/01(日) 00:27:10 ID:???
あけましておめでとうございます
年の初めから、悩んでおります・・・

送信元 html
<form name="form1" method="post" action="c.php">
<input type="text" name="a">
<input type="submit" name="Submit" value="送信">
</form>

受け取りphp
<?
$a=$_POST['a'];
print($a);
?>

これは動作しました。
ですが↓はヘッダのメタ部だけ読み込まれて
POSTで情報を送ったものは失敗しているようで表示されません
537nobodyさん:2006/01/01(日) 00:28:09 ID:???
送信元 php
<form method="POST" action="hogehoge.php" name='reserve'>
<input type="text" name="name" maxlength="30">
<input type="text" name="mail" maxlength="50">
<input type="text" name="phone" maxlength="15">

<select name="select" onChange="PushPulldown(this.options[this.options.selectedIndex].value)">
<option value=''>月</option>
<? for($a=1;$a<13;$a++){
echo "<option value='".$a."'>".$a."</option> ";
} ?> </select>//javascriptで連動するプルダウンを2つ作っています

<select name='day' onChange="this.options[this.options.selectedIndex].value">
<option value=''>日</option>
</select>
<select name="hour">
<? for($d=1;$d<25;$d++){
print("<option>".$d."</option>");
} ?> </select>

<select name="detail">
<option>頃</option>
<option>30分頃</option>
</select>
<input type="text" size="3" name="number">
<input type="submit" value="確認画面へ">
<input type="reset" value="クリア">
538nobodyさん:2006/01/01(日) 00:29:27 ID:???

受け取りphp
<?
$name=_HS(_SS($_POST['name']));
$mail=_HS(_SS($_POST['mail']));
$phone=_HS(_SS($_POST['phone']));
$select=_HS(_SS($_POST['select']));
$day=_HS(_SS($_POST['day']));
$hour=_HS(_SS($_POST['hour']));
$detail=_HS(_SS($_POST['detail']));
$number=_HS(_SS($_POST['number']));

echo "$name";
echo "$mail";
echo "$phone";
echo "$select";
echo "$day";
echo "$hour";
echo "$detail";
echo "$number";

//_HS はhtmlspecialcharsと同動作
//_SS はstripslashesと同動作
?>

同じようなことをしているんですが、片方だけうまくいかないことの
考えられる理由を教えてください…
鯖側PHPは4.3です
539nobodyさん:2006/01/01(日) 00:34:04 ID:???
あけおめ〜
こんな新年の夜中から何やってんだか。
_HS()とか_SS()とかが正しく動くもんなのかこれだけじゃ判別つかんので、
受け取りPHPの1番先頭に
<?php var_dump($_POST); ?>
の1行を入れてくれたまい!
540nobodyさん:2006/01/01(日) 00:38:53 ID:???
>>539
こんばんは、あけましておめでとうございます。
array(8) {
["name"]=> string(3) "aaa"
["mail"]=> string(11) "[email protected]"
["phone"]=> string(10) "0301111111"
["select"]=> string(1) "1"
["day"]=> string(1) "1"
["hour"]=> string(1) "1"
["detail"]=> string(2) "頃"
["number"]=> string(2) "12" }

1行入れたところこんな、配列が発掘されました・・・
541nobodyさん:2006/01/01(日) 00:47:45 ID:???
なら_HS()だの_SS()だのという変な関数がおかしいんだろ。
542nobodyさん:2006/01/01(日) 00:50:04 ID:???
echo "$hoge";

echo $hoge;
543nobodyさん:2006/01/01(日) 00:51:42 ID:???
>>542
は?
544434:2006/01/01(日) 00:54:20 ID:xNWERqNS
あけましておめでとうございます。

遅レスですが…
>>460
出来ました。ありがとう。

>>464
ごめんなさい。
マニュアル読んで勉強します。
545nobodyさん:2006/01/01(日) 00:57:48 ID:???
>>541
そのようでした・・・ほかのところにも使っていたんですが
それでは問題なく動作していたために、灯台下暗し・・・・でしたorz
ありがとうございました。
今夜はよく眠れそうです・・・

ちなみに_SSと_HSはこんなfunctionでした
function _hs($_val){
$_val = htmlspecialchars($_val);
return( $_val );
}
function _ss($_val){
if(get_magic_quotes_gpc()){
$_val = stripslashes($_val);
}
$_val = trim($_val);
return($_val);
}
546nobodyさん:2006/01/01(日) 03:08:25 ID:???
>>544
君はマニュアルより先に、プログラミングの基礎みたいな本を読んだ方がいいと思う。
マニュアルは命令一覧とかは書いてあってもロジックの書き方は書いてないから。
547434:2006/01/01(日) 03:12:23 ID:xNWERqNS
>>546
なるほど、本ですか…
ifも他人のスクリプトのソースみて覚えたものなので…

本やサイトを見て勉強したいと思います。
ありがとうございました。
548nobodyさん:2006/01/01(日) 03:23:21 ID:???
PHPでバイナリが入っている変数から何文字目から何ビット切り出す方法はありませんか?
substrはバイトごとみたいで
549nobodyさん:2006/01/01(日) 03:43:16 ID:???
バイト単位で切り出した上でビット演算をかけるしかないと思う。
550nobodyさん:2006/01/01(日) 07:02:18 ID:???
>>548
バイナリなのか文字列なのかどっちだよw
おまえみたいな素人はしねよ。
551nobodyさん:2006/01/01(日) 08:02:55 ID:???
winXP PHP5.0.5(cli)
>>548見て何となくsubstr試したら、気になる結果が出たので質問

<?php
$str = "abc\0def";
echo substr($str, 5)."\n"; # ef
echo substr($str, 1)."\n"; # bc def
?>

表示出来ない文字列(null含む)は、空白文字として表示されるでおk?
552nobodyさん:2006/01/01(日) 08:24:16 ID:???
>>551
substrと関係ないどころかPHPとすら関係ない環境依存。
553nobodyさん:2006/01/01(日) 08:25:39 ID:???
PHPのglob()は、glob('**/*.php') でディレクトリを再帰的に辿ってくれないんでしょうか。
あるいは、辿ってくれるような関数はないでしょうか。
554nobodyさん:2006/01/01(日) 09:43:59 ID:???
PHP 5.1.1 Released
555nobodyさん:2006/01/01(日) 10:29:42 ID:???
>>550
すみません〜
「何文字目」じゃなく「何ビット目」ですね。
あと他の人が作ったスクリプトなど読んでいるとやはりビット演算で求めているみたいなんで
それでやってみます。ありがとうございました。
556nobodyさん:2006/01/01(日) 10:38:01 ID:???
>>553
無いんじゃないかな
再帰的に処理させるだけだから自分で作ると良いと思う。
557nobodyさん:2006/01/01(日) 10:56:10 ID:???
>>556
ありがとうございます。ないのが確認できただけでもよしとします。
今から自作してみようと思いますが、もしかしたらまたここで聞くかもしれませんが、
そのときはよろしくお願いします。
558nobodyさん:2006/01/01(日) 12:00:44 ID:???
質問です。

htmlspecialcharsで変換した文字列から、変換前の文字列に戻すにはどうすればいいですか?
559nobodyさん:2006/01/01(日) 12:03:54 ID:???
>>558
逐一置換
560nobodyさん:2006/01/01(日) 12:15:48 ID:ckK+9Xqr
>>559
やっぱりそれしかないんでしょうか…
html_entity_decodeで戻せることはわかったんですけど、サポートしてるのが4.3以上だから厳しい…
561nobodyさん:2006/01/01(日) 13:20:34 ID:???
>>560
4.3より古いバージョンを使ってるほうがよっぽど厳しいというかなんというか・・・
562nobodyさん:2006/01/01(日) 13:44:05 ID:???
関数化しときゃいいだろ。
563nobodyさん:2006/01/01(日) 14:25:36 ID:???
MacOS X 10.4 で PHP5.1.1 CLI つかってます。
ネストしたディレクトリを一気に作成しようとして
<?php mkdir("hoge/geji", 0777, TRUE); ?>
というプログラムを実行させると、
Warning: mkdir(): No such file or directory
というエラーがでてしまいます。
PHP5からはmkdir()の第3引数をつかえば、mkdir -p 相当の動作になると思っていたのですが、勘違いですっけ?
564nobodyさん:2006/01/01(日) 22:46:05 ID:???
>>563
ディレクトリの区切り文字がスラッシュとは限らない
http://jp.php.net/manual/en/function.mkdir.php#53075
565563:2006/01/02(月) 10:55:07 ID:???
>>564
MacOS X でやっているので、スラッシュで問題ないと思います。
566nobodyさん:2006/01/03(火) 00:05:44 ID:???
<?php mkdir("hoge/geji", 0777); ?>
<?php mkdir("hoge", 0777, TRUE); ?>

この辺りするとどうなる?
567nobodyさん:2006/01/03(火) 11:04:22 ID:???
substr関数で文字列の末尾1文字を削除することはできますか?

【 abcd 】 → 【 abc 】
【 あいうえお 】 → 【 あいうえ 】
568nobodyさん:2006/01/03(火) 11:21:13 ID:???
mb_substrで-1かな
569nobodyさん:2006/01/03(火) 11:22:58 ID:???
>>567
つ substr($hoge, 0, -1);

マニュアル読めばそっくりそのまま出てるんだがな。
570nobodyさん:2006/01/03(火) 12:14:24 ID:???
<?php
$hoge = "a-b_c.d#e";
$enc1 = urlencode($hoge);
$enc2 = rawurlencode($hoge);
$enc3 = base64_encode($hoge);
?>
<html><body>
<a href="/?<?php echo $enc1; ?>">LINK1</a><br>
<a href="/?<?php echo $enc2; ?>">LINK2</a><br>
<a href="/?<?php echo $enc3; ?>">LINK3</a><br>
</body></html>

このソースをブラウザで表示すると、IE 6では#が%23に変換されるのに、
FireFox 1.5では#のままです(urlencode系)。
#などを含む文字列をurlに埋め込む場合はbase64_encodeを使用する
方が安全なんでしょうか??
571nobodyさん:2006/01/03(火) 12:21:09 ID:???
つurl_encode_in_sp
572570:2006/01/03(火) 12:54:37 ID:???
>>571
英語版マニュアルも検索しましたが、url_encode_in_spというのは
見当たらないのですが・・・。

あと、>>13のソースで確認しましたが、サーバでは有効でないようです。
(PHP 5.0.5です)
573nobodyさん:2006/01/03(火) 13:38:38 ID:???
>>572
url_encode_in_spなんてものは知らない(ググル先生もご存知無い)けど、
鯖に文字として#を渡したい場合は、urlencodeで十分だよ。
ブラウザによって変わるつーのは単に確認ミスでしょ。
574nobodyさん:2006/01/03(火) 15:24:35 ID:dg0Kk76m
ほんっとくだらない質問ですみません。PHPはPerlより簡単っていいますけど、
何%くらい簡単なんですか?概算でかまいません。
575nobodyさん:2006/01/03(火) 15:37:40 ID:???
$url = parse_url($u);
$host = $url['host'];
$path = $url['path'];
$query = $url['query'];

if(isset($query)){
$query = "?".$query;
}else{
$query = "";
}
$fp = @fsockopen($host,80,$errno,$errstr,30);
$header = "GET ".$path.$query." HTTP/1.0\r\n";
$header .= "Host: ".$host."\r\n";
$header .= "User-Agent: PHP/".phpversion()."\r\n";
$header .= "\r\n";

fputs($fp,$header);
while (!feof($fp)) {
echo fgets($fp, 1024);
}
fclose($fp);

フォームから受け取ったURLを開くと時々、Apacheのテストページが表示されることがあるんですが正常にそのHPを表示させる方法は無いでしょうか?
環境はXREA S181鯖です。
Apacheのテストページが表示されるURLはhttp://hogehoge/?id=hogeなどの場合です
576nobodyさん:2006/01/03(火) 15:40:37 ID:???
>>574
そんな質問をするあなたにはとても難しいです><
577nobodyさん:2006/01/03(火) 15:44:00 ID:???
>>574
だいたい2%くらい
578nobodyさん:2006/01/03(火) 15:47:52 ID:???
>>574
お手軽にいじる分には30%くらい。
真面目にチューニングはじめると-10%くらい。
579nobodyさん:2006/01/03(火) 15:49:19 ID:???
>>574
Perlが理解できてれば超簡単。10%くらいの時間であっさり習得。
WebProg初めてならどっちもさほど変わらん。
580nobodyさん:2006/01/03(火) 15:50:41 ID:???
>>575
> Apacheのテストページが表示されるURLはhttp://hogehoge/?id=hogeなどの場合です
その指定の場合には、どういうURLにアクセスすれば正解の予定なんでしょう?
581nobodyさん:2006/01/03(火) 15:54:11 ID:???
>>575
同じURLをブラウザで開けば正常に表示されるって意味?
前情報がすっぽ抜けすぎててわけわからん。
582nobodyさん:2006/01/03(火) 16:06:24 ID:???
何%簡単って、100%簡単だとどういう状態?
583nobodyさん:2006/01/03(火) 16:35:09 ID:???
>>581
同じURLをプラウザで開けば正常に表示されるということです。
本来ならUser-agentを偽装した状態でそのURLのページを表示するってことです。
それが何故かApacheのテストページに・・・
584nobodyさん:2006/01/03(火) 16:59:26 ID:???
>>583
hint:port
585563:2006/01/03(火) 18:02:58 ID:???
>>566
どうもありがとうございます。

<?php mkdir("hoge/geji", 0777); ?>
//=> Warning: mkdir(): No such file or directory

<?php mkdir("hoge", 0777, TRUE); ?>
//=> 'hoge' というディレクトリが作成されます。

mkdir()で、せめてファイル名が表示されれば手がかりになると思うのですが。
引き続き、お助けをお願いします。
586nobodyさん:2006/01/03(火) 18:07:08 ID:???
>>585
いや、前者は「hogeがないからhoge/gejiは作れへんよ」という事だろ。
hoge作ってからhoge/geji作ればいいだけの話。
587nobodyさん:2006/01/03(火) 18:47:40 ID:???
>>584
portを80番から変えるとしてもフォームから受け取ったURLのポート番号を80以外で見つけるのは無理じゃないですか?
588nobodyさん:2006/01/03(火) 18:52:50 ID:???
>>583
User-Agent変えられるブラウザ使って見るとどうなる?
単に相手の鯖の仕様だと思うが
589nobodyさん:2006/01/03(火) 19:03:21 ID:???
>>583
つかテストページ帰ってくるときのhttpエラー番号に何番が返ってきてるんだよ。
590nobodyさん:2006/01/03(火) 19:13:29 ID:???
>>589
HTTP/1.1 403 Forbiddenです。
画面はApacheのテストページです。
>>588
鯖の仕様だと思い他サイトにあるProxyなどPHPのfsockopenでやっていると思われるもので同じURLを試してみると通常に表示できます。
591nobodyさん:2006/01/03(火) 19:16:19 ID:???
>>590
403が返ってきてる時点でダメだろ。
592nobodyさん:2006/01/03(火) 19:19:27 ID:???
>>590
User-agentがイレギュラーだと弾くようにしてあるんじゃないの?
まず正常なシーケンスで試してから偽装なり何なりやればいいのに。
593nobodyさん:2006/01/03(火) 19:20:08 ID:???
つか>>590は基礎的な部分がすっぽ抜けてると思われ
594nobodyさん:2006/01/03(火) 22:45:27 ID:???
mojavi2でアプリを作っているのですが、ユーザのセッションのところで勉強が
足らず足止めを食らっています。

自分で勉強しますので、サンプルや参考になるドキュメントなど教えて頂けないでしょうか?

具体的につまづいている所は、mojavi2では、セッション、認証などあるのですが、誰がどの
ユーザIDかをどのようにセッションで繋いでいくのかあたりの知識がなくてよくわかりません。

595594:2006/01/03(火) 23:01:01 ID:???
ちょっと調べた限りでは、

例えばDBにsessionというテーブルを作ってSIDとユーザIDに結び付けて、ユーザIDを
特定するという感じだと思うのですが、mojavi2だとどうするのかがよくわからないというか

596nobodyさん:2006/01/03(火) 23:13:45 ID:???
>>594
Mojaviの話はこちらでどうぞ。

[PHP]フレームワークについて語るスレ2[総合]
http://pc8.2ch.net/test/read.cgi/php/1135847024/
597594:2006/01/03(火) 23:35:32 ID:???
>>596
そっちで質問するとここは語るスレだと怒られたので…
598nobodyさん:2006/01/03(火) 23:45:15 ID:???
もしかして
> Mojavi初心者なんですが
> エスパー募集してもよろしいでしょか?
って書いた人?
だとしたらその後、質問はOKだけどエスパー募集はナシっていう流れだったんだけど。
599nobodyさん:2006/01/04(水) 00:05:04 ID:???
>>586
元々の質問>>563までリカーシブに読んでやれよ。
> PHP5からはmkdir()の第3引数をつかえば、mkdir -p 相当の動作になると思っていたのですが、勘違いですっけ?
PHP5なら2階層以上のディレクトリを一発で掘れるんじゃないの?って話だろ。

http://php.s3.to/man/function.mkdir.html
> bool mkdir ( string pathname [, int mode [, bool recursive [, resource context]]] )
> 注意: パラメータ recursive は、 PHP 5.0.0 で追加されました。
って話だよな。俺もこのパラメータは使ったことないから正直わかんね。
PHP5のテスト環境は会社に行けばあるから正月終わるまで待ってくれれば試してみる。
600nobodyさん:2006/01/04(水) 01:01:05 ID:???
他人が書いたソース読んでたら

$lv_bSize = (int) ord(($lv_bytes[0]) + (ord($lv_bytes[1]) << 8) + (ord($lv_bytes[2]) << 16) + (ord($lv_bytes[3]) << 24);

というのがあったんだが、こういう << ってどういう意味があるんじゃ?
601586:2006/01/04(水) 01:08:45 ID:???
>>599
>>563も読んだよ。でも>>585の前者って第三引数入れてないじゃん。
何か俺間違った話してる?

>>600 ビットシフト
602nobodyさん:2006/01/04(水) 01:16:38 ID:???
>>601
>>585のやつは>>566で「これやってみてくれ」って言われたからだな。
意図不明。

とりあえず>>563
> <?php mkdir("hoge/geji", 0777, TRUE); ?>
> というプログラムを実行させると、
> Warning: mkdir(): No such file or directory
だけ着目してればいいんちゃう?
603nobodyさん:2006/01/04(水) 01:29:58 ID:???
>>585
<?php mkdir("hoge/geji", 0777); ?>

<?php mkdir("./hoge/geji", 0777); ?>
<?php mkdir("/usr/hage/hoge/geji", 0777); ?>
とかでやってみ。Windowsなら¥かDIRECTORY_SEPARATORでセパレート。
604603:2006/01/04(水) 01:33:03 ID:???
あー違う。適当に摘んでるからこれだ…

>>563
<?php mkdir("hoge/geji", 0777, TRUE); ?>

<?php mkdir("./hoge/geji", 0777, TRUE); ?>
<?php mkdir("/usr/hage/hoge/geji", 0777, TRUE); ?>
だな
605600:2006/01/04(水) 01:34:26 ID:???
>>601
ありがとう!!
606nobodyさん:2006/01/04(水) 14:08:10 ID:???
$_SERVER['PHP_SELF']って偽装できますか?
607nobodyさん:2006/01/04(水) 14:47:33 ID:???
スパムメールを送るんですか?
608nobodyさん:2006/01/04(水) 14:55:03 ID:???
ちがう。
作ったスクリプトの<form >で結構使ってるから気になっただけだよ。
$_SERVER['QUERY_STRING']とかもどうでしょうか。
鯖がやられてなければ大丈夫だと思いますけど
どうでしょうか。
609nobodyさん:2006/01/04(水) 15:05:40 ID:???
偽装する意味はあるの?
610nobodyさん:2006/01/04(水) 15:10:24 ID:???
偽装される確率はどうなの?
611nobodyさん:2006/01/04(水) 15:25:21 ID:???
偽装される確立を議論するなんて何考えてるの?
612nobodyさん:2006/01/04(水) 15:26:33 ID:???
>>606
「偽装される」ってのが何を意味しているかは知らないけど、
echo $_SERVER['PHP_SELF];
とか
echo $_SERVER['QUERY_STRING'];
とかすると、クロスサイトスクリプティング脆弱性が出来上がるよ。
'
>>610
セキュリティを考える場合確率は関係ないだろ。
613612:2006/01/04(水) 15:27:07 ID:???
echo $_SERVER['PHP_SELF'];
ねorz
614nobodyさん:2006/01/04(水) 15:28:34 ID:???
なんで
echo $_SERVER['PHP_SELF];
がクロスサイトスクリプティングになるの
615nobodyさん:2006/01/04(水) 15:31:33 ID:???
>>614
パスインフォが通るサーバ設定だと
/hoge.php/">
とかを$_SERVER['PHP_SELF']に入れられるから。
616nobodyさん:2006/01/04(水) 15:35:50 ID:???
入力側を偽装する意味がわからん・・・
action属性を誤魔化すぐらいならwebサーバに直接叩きにいくだろうし。
617nobodyさん:2006/01/04(水) 15:39:08 ID:???
>>616
クロスサイトスクリプティングをしらないのか!?
618nobodyさん:2006/01/04(水) 15:51:58 ID:LqFUITlR
class Hoge{
var $hoge;
}
と、var宣言するのとしないのとで、機能的な違いは何かありますか?
619nobodyさん:2006/01/04(水) 15:53:36 ID:???
Hoge->hogeで参照できん
620nobodyさん:2006/01/04(水) 15:54:58 ID:???
俺もよく$_SERVER['PHP_SELF']つかうけど、
チェックボックスと、プルダウン選択だけなら問題ないよね?
セキュリティ考慮は全然してなかったからそろそろ考えないといかんな・・・
621nobodyさん:2006/01/04(水) 15:59:06 ID:???
622nobodyさん:2006/01/04(水) 15:59:10 ID:???
トラックバック送るのまんどくせ
623nobodyさん:2006/01/04(水) 16:15:05 ID:???
>>621
これはいい参考サイトを・・THX!
624nobodyさん:2006/01/04(水) 16:18:46 ID:???
625nobodyさん:2006/01/04(水) 16:20:39 ID:???
キーワードから関連するトラックバックURLやらpingurlやらを
自動で収集するプログラムないかな?
626nobodyさん:2006/01/04(水) 16:42:21 ID:???
>>625
自分で探すか作るかしろよ。
627618:2006/01/04(水) 16:42:38 ID:LqFUITlR
>>619
宣言しなくても、値を入れれば参照できますよね?
628nobodyさん:2006/01/04(水) 16:58:59 ID:???
>>627
public、protected、privateとか設定汁
ooするならあったほうがよし。
629nobodyさん:2006/01/04(水) 17:04:28 ID:???
pearとpeclってどういう関係なんでしょう?
久しぶりにWindowsにPHP 5.1.1をインストールしてgo-pear.batで
PEARをインストールしたのですが、pear.batは拡張子の後ろに
[_old]が付いていました。[_old]をとるとUNIX上と同じくpearコマンドが
使えますが、もう一つあるpecl.batを使うべきなんでしょうか?

pecl list-all と pear list-all した結果では表示される内容も異なるのですが
このままpearコマンドを使用しても良いのでしょうか???
630nobodyさん:2006/01/04(水) 17:06:38 ID:???
>>629
PEARはPHPで書かれた拡張
PECLはバイナリ形式の拡張
631nobodyさん:2006/01/04(水) 17:09:39 ID:???
peclってどう読んでる?
pearはペアで間違いないと思うのだけど
632629:2006/01/04(水) 17:16:41 ID:???
>>630
速レスありがとうございます。
ではpearは推奨されないということではないのですね。
安心しました。

>>631
"pick・le"と読んでます。
ピクルス(漬物)だったかと。
633nobodyさん:2006/01/04(水) 17:20:14 ID:???
>>625
マルチうざ
634nobodyさん:2006/01/04(水) 17:22:10 ID:???
ttp://pear.php.net/manual/en/introduction.php
PEAR 〜 is pronounced just like the fruit
PECL (pronounced "pickle") used to be a sub-repository of PEAR for C extensions
635nobodyさん:2006/01/04(水) 20:14:13 ID:???
>>632
中身違うがな。推奨されないとかだれもいっとらんがな。
636nobodyさん:2006/01/05(木) 00:06:39 ID:???
phpとmysql使うつもりですが扱う言語を気にする必要はないですよね?
てかphpはutf8扱えるんですよね?
637nobodyさん:2006/01/05(木) 00:50:34 ID:???
>>636
>扱う言語を気にする必要はないですよね?
ある

>てかphpはutf8扱えるんですよね?
別にphpに限らずperlでもrubyでも扱える。
638nobodyさん:2006/01/05(木) 01:41:35 ID:???
PHPとMySQLでそれぞれUTF-8使ってれば
言語(日本語でもロシア語でもアラビア語でも)は
気にする必要ないですよね、って質問じゃなかったのか
639nobodyさん:2006/01/05(木) 02:16:10 ID:???
>>638
仮にそうだとして>>636の文面だけで「おっけー」とは言えないなぁ
640nobodyさん:2006/01/05(木) 03:12:55 ID:???
だね。
641nobodyさん:2006/01/05(木) 10:53:48 ID:JFblkuhc
PHP4.3環境
日本語を含むヘッダーでメール送信をしたいのですが、
MACOSX10.4の付属メーラーで受信したとき送信者の日本語部分が文字化けしてしまいます。
本文、件名は文字化けしません。
WINでは問題ありませんでした。
まだ勉強中で、参考書の通りに書いているようなレベルですので
根本的に解っていないのかも知れませんが、

$header = "From: ROBO-ONE事務局 <[email protected]>"として

メッセージや件名はmb_convert_encodingでエンコードしていたので
同じように
$header = mb_convert_encoding($header,"EUC-JP","auto")
と書いても文字化けしてしまい

$header = mb_encode_mimeheader($header,"ISO-2022-JP")
では送信すらされませんでした。

OSX10.4環境でも問題なく表示するにはどのようにしたらよいのでしょうか。
642nobodyさん:2006/01/05(木) 11:40:43 ID:GYuqexB9
MySQLのtextフィールドに5%とinsertできるけど、
それをphpで表示しようとすると printfでエラーとなってしまう。
%が問題だとおもうのだけど、いい方法ない?
643nobodyさん:2006/01/05(木) 11:46:11 ID:???
>>642
%を%%に変換
644642:2006/01/05(木) 12:34:14 ID:GYuqexB9
>>643
助かった〜、ありがと
645nobodyさん:2006/01/05(木) 13:01:14 ID:???
646nobodyさん:2006/01/05(木) 17:07:24 ID:Bm50yWip
perlのgrep関数を使いたいときって、
phpではどうやってますか?
foreachで回してifで判定して新配列にpushしかないんですかね。
647nobodyさん:2006/01/05(木) 17:30:32 ID:???
>>646
preg_grep() ?
648646:2006/01/05(木) 17:38:41 ID:???
すいません、自己解決しました。
array_filterで何とかなりそうです。

>>647
ありがとうございます。
正規表現のときはpreg_grepなんですね。
array_grepにすればいいのに・・・。
649nobodyさん:2006/01/05(木) 18:22:30 ID:???
Perl互換の正規表現をコンパイルオプションでON/OFFしたときに
ごっそり利用可否が切り替わるんだから、関数名で識別できた方が分かりやすいよ
650nobodyさん:2006/01/05(木) 18:49:49 ID:???
2ちゃんのトリップはcrypt関数を使うとおもうのですが
これに何を与えると2ちゃんと同じトリップになりますか?
651nobodyさん:2006/01/05(木) 19:21:46 ID:???
FOXに聞け
652nobodyさん:2006/01/05(木) 19:58:29 ID:???
ググればすぐでてくるのに
653nobodyさん:2006/01/05(木) 20:16:34 ID:???
function Trip($name){
if(strpos($name,"#")){
$names = explode("#", $name);
$name = $names[0];
$passwd = $names[1];
$salt = substr($passwd."H.", 1, 2);
$salt = ereg_replace("[^\.-z]", "\.", $salt);
$salt = ereg_replace(":;<=>?@[\\]^_`", "ABCDEFGabcdefg", $salt);
$trip = substr(crypt($passwd, $salt),-10);
$name = "$name</b> ◆$trip <b>";
}
return $name;
}

Trip関数。
654nobodyさん:2006/01/05(木) 20:21:26 ID:???
>>651
でもプログラムを作ったのはひろゆき氏じゃなくて?
655nobodyさん:2006/01/06(金) 02:27:52 ID:???
>>653
見難い。

function Trip($name = '名無しさん'){
 list($name, $passwd) = explode('#', $name, 2);
 if($passwd) {
  $salt = substr($passwd."H.", 1, 2);
  $salt = ereg_replace("[^\.-z]", "\.", $salt);
  $salt = ereg_replace(":;<=>?@[\\]^_`", "ABCDEFGabcdefg", $salt);
  $trip = substr(crypt($passwd, $salt),-10);
  $name = $name.'</b> ◆'.$trip.' <b>';
 }
 return $name;
}
656nobodyさん:2006/01/06(金) 03:22:58 ID:???
PEARのHTML_QuickForm QuickForm.phpのコードなのだが、エラーを吐く
この中の$thisってどういうこと?

function accept(&$renderer)
{
$renderer->startForm($this);
foreach (array_keys($this->_elements) as $key) {
$element =& $this->_elements[$key];
$elementName = $element->getName();
$required = ($this->isElementRequired($elementName) && !$element->isFrozen());
$error = $this->getElementError($elementName);
$element->accept($renderer, $required, $error);
}
$renderer->finishForm($this);
} // end func accept
657nobodyさん:2006/01/06(金) 05:26:31 ID:???
>>656
自己解決しますた
ただ$rendererの中身がないからエラーとなっていただけでした
すまそ
658nobodyさん:2006/01/06(金) 09:24:43 ID:???
>>624
pear install Services_Trackback
とかしてもDLできないんだけどなんで?
というかlist-allしてもサービス関連のやつ出てこないし。
自動で探してきてくれるもんじゃなかったんだっけ。
659nobodyさん:2006/01/06(金) 09:41:07 ID:???
>>658
α版だからじゃないか?

pear install Services_Trackback-alpha

としてみたらどうなる?
660nobodyさん:2006/01/06(金) 13:58:57 ID:???
POSTするものを複数変数にいれているんですが、
$a=$_POST['a'];$b=$_POST['b'];...
掲示板のスクリプトを見ると、このような書き方はしていないようです。
しかしどのように書いたらいいかわからないんですけど、
スマートに書く方法ありませんでしょうか?
661nobodyさん:2006/01/06(金) 13:59:14 ID:???
ユーザ関数の返値で$test[color]と$test[size]と$test[depth]の3つを返したい場合はどうすればいいですか?
662nobodyさん:2006/01/06(金) 14:22:02 ID:???
2006-01-06T13:13:00+09:00
という形式を
Y-m-d H:i:s
という形式に変換するにはどうすればいいでしょうか…?
663nobodyさん:2006/01/06(金) 14:25:54 ID:???
>>660

register_globals = on というオチか?

>>661

return $test; // $test:Array

664nobodyさん:2006/01/06(金) 14:37:29 ID:???
>>663
660はextractでいいんじゃねーの?
665nobodyさん:2006/01/06(金) 15:35:10 ID:???
>>660
そのままでええやん
666nobodyさん:2006/01/06(金) 15:40:43 ID:???
>>661
function a() {
  return array("color"=>$color,"size"=>$size,"depth"=>$depth);
}

$test = a();
667nobodyさん:2006/01/06(金) 15:43:02 ID:???
スマートに書かなくても動けばいいと思う。
668nobodyさん:2006/01/06(金) 15:51:01 ID:???
>>667
保守性は重要
669nobodyさん:2006/01/06(金) 15:56:22 ID:???
>>667
君は明日交通事故に遭う
670nobodyさん:2006/01/06(金) 16:20:20 ID:???
富豪的プログラミング
671nobodyさん:2006/01/06(金) 16:25:38 ID:???
>>667
スパゲッティが大好きで毎日食べてると見た。
672nobodyさん:2006/01/06(金) 16:30:20 ID:???
セッションで質問ですが
$name = "aaa bbb";
$_SESSION['name'] = $name;
$name = $_SESSION['name'];
こんな感じで登録してから中身を取り出すと$nameがaaaになってしまいます。
これはスペース切られてるとおもうんですが、スペースごと登録する方法を教えてください
673nobodyさん:2006/01/06(金) 16:40:23 ID:???
>>672
無理
674nobodyさん:2006/01/06(金) 16:45:45 ID:???
あ、無理なんですか・・・
ちなみに、色々HPをみていると
$_SESSION['name'] = $name;
↑みたいにシングルクォーテーションを使ってたり
$_SESSION["name"] = $name;
ダブルクォーテーションを使ってたりするのですが
これの違いってなんでしょうか?
675nobodyさん:2006/01/06(金) 16:49:04 ID:???
PHP初心者で本を片手に、ダウンロードしてきた
プログラムをテストしたりしているのですが、
(初心者的に)理解できない振る舞いがあったので
誰か教えていただけないかと…

サーバ:ロリポップのレンタルサーバ
PHPのバージョン:4.3.11
スクリプトのエンコーディング:SJIS

という環境なんですが、

var $str1 = "テスト";

$str2 はフォームからテストと入力すると

ereg($str1, $str2) ⇒ 偽

になるので、はまっていました。
色々ためしたら、下の2つの書き方では真になるのが
判明したのですが、その理由がよくわかりません。

mb_ereg($str1, $str2) ⇒ 真
ereg($this->str1, $str2) ⇒ 真


mb_eregで正しく動くようになったのは
日本語の処理絡みなんだと思うのですが、
$this->str1にしたら、eregのままでも
だいじょうぶになったのは、なぜなんでしょうか…。
676nobodyさん:2006/01/06(金) 16:52:55 ID:???
>>674
単なる文字列の表現の違い。つかシングルとダブルの違いわかってるよな?
677nobodyさん:2006/01/06(金) 16:53:00 ID:???
>>641
受信したメールのFrom:部分のソース貼ってみれば?
これだけの情報じゃ、原因が特定できない。
他で起こらないからMail.appのせいっぽいけど。
678nobodyさん:2006/01/06(金) 16:54:46 ID:???
>>672
URLEncodeとか
679nobodyさん:2006/01/06(金) 17:01:40 ID:???
>>676
PHPでの違いは知らね、Cなら文字と文字列だがな。
680nobodyさん:2006/01/06(金) 17:18:44 ID:???
URLをフォームに入力してfopenなどで開いてfgetsなどで配列に一行ずつ格納した場合、<a href="http://〜/">のhttp://〜/を変数に格納するにはどうすればいいんでしょうか。
681nobodyさん:2006/01/06(金) 17:41:04 ID:???
正規表現で取り出すのがいいと思うけど、
<a href="http://〜/">って形に絶対なっている(ダブルクォートされている)なら、

$array = explode("\"", $query);
$result = $array[1];

みたいな感じでいいかなぁ。
#変数名は適当、$queryは<a href="http://〜/">が入ってるもの。
682nobodyさん:2006/01/06(金) 17:47:09 ID:???
>>679
なんでそんなに偉そうなんだろう
683681:2006/01/06(金) 17:48:18 ID:???
あー意味取り違えました。

この場合、explodeは使えないですね。
正規表現がいいとはおもいますが、そのURLによってはアンカータグの書式が違うので、
結構難しいかもです。

<a href="URL">TEXT</a>
<a href=URL>TEXT</a>
<a href="URL" MOREATTR="MOREVALUE">TEXT</a>
などなど。
684nobodyさん:2006/01/06(金) 18:03:54 ID:???
>>682
その前の奴が偉そうに言ってるからじゃね?
685nobodyさん:2006/01/06(金) 18:07:00 ID:???
>>680
>URLをフォームに入力してfopenなどで開いてfgetsなどで配列に一行ずつ格納した場合
の流れの繋がりが端折り過ぎで良く判らんが。

><a href="http://〜/">のhttp://〜/を変数に格納するには
正規表現関数を使うのが一般的だと思う。
preg_match('/<a href="([^"]*)/i',$line,$ary); var_dump($ary);
とかでどう?

>>683
><a href=URL>TEXT</a>
これって、ありなの?
686nobodyさん:2006/01/06(金) 18:24:52 ID:???
>>685
683じゃないけれど、"を省略して書いている記述はママある。
もちろんHTML的には正しくないけど、
たいていのブラウザはちゃんと認識する。
687軟式PHP:2006/01/06(金) 18:30:24 ID:???
DreamWeaverとかで作ると""で括らないタグを生成するときがあるからイラつくよな。
688nobodyさん:2006/01/06(金) 18:32:50 ID:???
>>685
HTML4(てかSGMLかな)の仕様では、特定の文字のみで構成される場合は省略可能な場合もある。
URLに使える文字より範囲が狭いので、" か ' を付けておく方が無難。
689nobodyさん:2006/01/06(金) 18:54:36 ID:Zg0ssy+R
$a = array(0, 1, 2);
$b = array(0=>0, 1=>1, 2=>2);

$aと$bを見分ける方法はありますか?
690nobodyさん:2006/01/06(金) 18:58:55 ID:???
>>689
変数名
691nobodyさん:2006/01/06(金) 19:02:27 ID:???
変数名以外で
692nobodyさん:2006/01/06(金) 19:06:21 ID:???
>>691
何がしたいのかよくわからんが、中身的には一緒だから
見分けも何もないよ。
693nobodyさん:2006/01/06(金) 19:13:06 ID:???
見分ける必要があるのなら、最初から見分けが付くように作りましょう。
694nobodyさん:2006/01/06(金) 19:42:04 ID:???
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING inはどうやったら解決できる?
695nobodyさん:2006/01/06(金) 19:45:13 ID:???
syntax error は全体を見ないとな
まーがんばれ
どこかが間違っている
696nobodyさん:2006/01/06(金) 19:45:35 ID:???
>>694
しょぼいエラーだしてる癖に態度がでかいな。
単なるコーディングミスだ。よくみれ
697nobodyさん:2006/01/06(金) 19:50:57 ID:???
単純なミスほど探すのに苦労するってことない?
698nobodyさん:2006/01/06(金) 19:51:56 ID:???
そうやって苦労を重ねた分だけ人は強くなる
699nobodyさん:2006/01/06(金) 20:01:58 ID:???
>>694
PHPの構文を理解するエディタ(PHP用のエディタ・開発環境スレもあった希ガス)を使うと、
パースエラーはほとんど防げるかと。

そういうものを利用できない場合は、
・じっくりソースを見る
・show_source()等を使って色がおかしい所を探す。
・エラーが出るあたりを適当に削除しながら、エラーになる/ならないポイントを探す。
700nobodyさん:2006/01/06(金) 20:38:37 ID:???
たまにfunction名のつけかたで文句言われるけど、IDEは便利だね。
701nobodyさん:2006/01/06(金) 20:59:16 ID:???
>>685
配列を一行一行読み込んで↓
if(preg_match('/<a href="([^"]*)/i',$line[1],$link))
やってるんですが参照した$line[1]に$linkを挿入して表示したいのですがどうしてもArrayになってしまいます。
702nobodyさん:2006/01/06(金) 23:15:36 ID:oWzCmWic
$list=file("./ldat.log");
$listr=file("./sdat.log");

foreach($listr as $listrs){
list($s0,$s1,$s2,$s3,$s4)=explode("<>",$listrs);
foreach($list as $lines){
list($p0,$p1,$p2,$p3,$p4,$p5,$p6,$p7)=explode("<>",$lines);
if($s0==$p0){処理が入ります}
}
}
のような2つのファイルのp0とs0が同じ値の場合のみ処理を実行するようにしたいのですが
このままだと何も表示されないです。解決の手段をどなた様かお願い致します。
703nobodyさん:2006/01/06(金) 23:38:47 ID:???
>>702
echoするなりdump取るなりして中身を確認してみては?
704nobodyさん:2006/01/06(金) 23:42:04 ID:wWI7IcSM
外部JavaScriptをHTMLファイルに読み込む感覚で、HTMLファイルとは別に作成したPHPファイルを複数のHTMLファイルに読み込んで実行することはできますか?
705nobodyさん:2006/01/07(土) 00:51:43 ID:???
>>704
require()
706nobodyさん:2006/01/07(土) 00:52:14 ID:???
>>704
PHPファイルに外部のPHPファイルを読み込ませて実行させることはできる。
HTMLファイルに外部のPHPファイルを読み込ませても、(通常は)サーバ側で処理してくれないので実行させることはできない。
やりたいことは当然前者だと思うので、詳しくはマニュアルでincludeなりrequireなりを調べるがよろし。
707nobodyさん:2006/01/07(土) 00:55:47 ID:???
>>702
$listrの行の数だけ$listの行を毎回explodeし直しとは糞重そうな書き方だな。
まー、それと動かないのは全然別問題だからいいけどさ。

ifの直前で$s0と$p0をvar_dumpでもしてみりゃ原因は分かるでしょ。
708nobodyさん:2006/01/07(土) 02:08:32 ID:???
PHP+MySQLでPHPのソースはUTF8でプログラミングしています。

MySQLのデータの中身もUTF8にするべきと思うのですが、ブラウザから来るデータは
全てUTF8に一回変換してからデータベースに入れなくてはいけない

という認識であっていますでしょうか?

MySQLは、4.0系です。
709nobodyさん:2006/01/07(土) 02:18:37 ID:???
別にデータの中身をUTF-8にした方がいい理由なんて全然ないと思うけど。
ちなみに表示されるHTMLもUTF-8なの?だったら変換は無くてもいいんじゃない?
たまに変なブラウザもあるから変換した方がいいけど。
710nobodyさん:2006/01/07(土) 02:24:03 ID:???
>>708
>ブラウザから来るデータは全てUTF8に一回変換してから
>データベースに入れなくてはいけない
いや、別に飛んできたままでも良いよ。
それがMySQLでサポートされてるエンコードならば。
仮にサポートされてなくてもbinaryとして扱っても良い
"文字"として扱えないデメリットがあるけど。

でも、現状でもスクリプトの中で扱いやすいように
ブラウザから来るデータをUTF-8に手動なり自動で
変換してるんじゃないの?ならばそのままUTF-8で
データべースに突っ込んだ方が良いよね。

711nobodyさん:2006/01/07(土) 02:27:01 ID:???
>>709
そうですね。
変換しなくて良さそうなのでUTF8がいいのかなという位に考えてました。

> ちなみに表示されるHTMLもUTF-8なの?だったら変換は無くてもいいんじゃない?
> たまに変なブラウザもあるから変換した方がいいけど。

これは出力という意味でしょうか?出力は、UTF8と携帯用にSJISを想定しています。
入力は、色んな文字コードで送ってくると思われるので、どちらにしても統一の
文字コードに変換する必要があるような気がするのですが、自信がありません。

perlの掲示板ではそんな作業をしたと思いますが、
PHP+MySQLではどうかが良くわからないのです…
712nobodyさん:2006/01/07(土) 10:58:29 ID:???
>>711
どういう風にデータをいじるのか分からないからなんとも言えないけど、
統一しておいた方が何かと楽でしょ。いちいち変換するオーバーヘッドが
惜しいってほどパフォーマンス要求がシビアなら別だけど。
713nobodyさん:2006/01/07(土) 10:59:53 ID:???
>>702
つかとりあえず配列につっこみなさい。
見にくいし、凡ミスを誘発するコードの典型だぞ。
714nobodyさん:2006/01/07(土) 11:10:19 ID:???
>>701
685 じゃないが、意味がわかんね

$link にマッチ結果が配列で入るのが当然であって、
$line[1] になんか何も代入されないだろ?
715nobodyさん:2006/01/07(土) 11:29:22 ID:???
みなさんデバッグ等の環境は何使ってらっしゃるんでしょうか?
当方今までずっと

サーバサイドでEmacs直接編集→Apacheの公開用ディレクトリにコピー→直接WEBから参照

でやってたんですが、
さすがになにかしらマトモなデバッガや開発環境使った方がいいかなと思い始めまして…

Eclipse+dbg辺りかなぁと思っているのですが使用されてる方のコメント等聞けたらな、と
716nobodyさん:2006/01/07(土) 11:32:34 ID:???
>>715
>>70のIDEスレで聞くといいかもよ。
717715:2006/01/07(土) 11:36:33 ID:???
>>716
ありがとうございます
統合環境スレ辺りでログ漁りしてみます
718nobodyさん:2006/01/07(土) 11:42:13 ID:???
デバッガで追う前にテストちゃんとやれと思うんだが、どうか
719nobodyさん:2006/01/07(土) 12:21:51 ID:jsajv2SX
CSVファイルをダウンロードさせるプログラムを書いたんですが、
テスト環境ではうまく動いたのに本番環境では動きませんでした。

[テスト環境]
Fedora Core 3
Apache 1.3.33
PHP 4.3.11/Apacheモジュールとして組込

[本番環境]
Redhat Enterprise Linux 3
Apache 2.0.46
PHP 4.3.2/Apache2Filterとして組込

レスポンスヘッダを見てみると、なぜか本番環境ではConnectionヘッダが常にcloseだったので、
これが原因かと思ってhttpd.confでKeepAliveディレクティブをOnにしました。
それでもConnection: closeになってしまうので、
PHP側でheader("Connection: Keep-Alive/r/n");と書いたんですが、
それでも後からcloseが追加されてConnection: Keep-Alive, closeみたいになってしまいます。
他のhtmlやcssファイルなどの静的コンテンツも常にConnection: closeで返ってきます。
httpd.confのHeaderディレクティブで書き換えても同様なので、
何かが後から強制的に書き換えているように思えます。
何か対応策をご存知の方、ご教示頂ければと思います。
720nobodyさん:2006/01/07(土) 13:49:10 ID:???
>>719
ブラウザ側で Persistent Connection が無効になっていると
当然 Apache は Keep-Alive をしようとしない。
ブラウザ側の設定はどうなってるのか確かめた?
721nobodyさん:2006/01/07(土) 14:03:57 ID:TbKqhVyi
配列の最後に要素を追加したいのですが例えばhoge => hello
というデータを入れたい場合どうしたらよいのでしょうか?
array_pushだと値だけなら格納できますがキーまで入れることできないみたいなので・・。
722nobodyさん:2006/01/07(土) 14:22:54 ID:???
キーを指定している段階で「最後」という概念から外れると思うのだが。
723nobodyさん:2006/01/07(土) 14:35:18 ID:TbKqhVyi
>>722 ・あれ・・
配列の認識自体間違っていたら教えてください。
例えば上の値を最初に入れたら
配列の中は 0 => hello,hoge=>hello でこれはあくまで1つの箱に入っているんですよね?
724nobodyさん:2006/01/07(土) 14:42:21 ID:???
ばかだなー
0 => helloなんてどっからでてきたんだ。
つーかふつうに$array["hoge"] = "hello"ってやれば「最後」に入るし。
725nobodyさん:2006/01/07(土) 14:46:45 ID:???
hoge => hello という記述自体が hoge がキーで hello が値という
意味なので、「上の値を最初に入れる」という段階でおかしい。

あと >>724 の言う「最後」は PHP 独自のことなので気をつけておくこと。
他の言語では、ハッシュ(連想配列)に順番なんてものはない。
726nobodyさん:2006/01/07(土) 16:31:59 ID:???
他人のサイトを紹介するサイト作ってて、他人のページがいつ更新されたかを調べるプログラム作りたいんだけど、どうすればいいの?
filemtime()で取得出来るのは、自分のサーバーにある物だけらしいし・・・
教えて下さい。
727nobodyさん:2006/01/07(土) 16:41:36 ID:???
>>726
実際に箱を開けて見なきゃ猫が生きているかどうか分からないわけで。。
簡易チェックであれば、HTTPヘッダを調べればよいかと。
728nobodyさん:2006/01/07(土) 16:56:59 ID:???
>>727
返事トンクス
そのHTTPヘッダを調べる簡易チェックでも更新日とか分かりますか?
また、どのようにすればいいのでしょうか?
ググってるのですが、なかなかページが見つからなくて・・・
729nobodyさん:2006/01/07(土) 16:59:32 ID:???
$req = HEAD ".$url." HTTP/1.0\r\n";
$req .= "Host: ".$host."\r\n";

$fp = @fsockopen($host, "80", $errno, $errstr, "30");
if(!$fp) {
$res .= "Error: ".$errstr." (".$errno.")";
} else {
fputs($fp, $req);
while (!feof($fp)) {
$res .= fgets($fp, 164000);
}
fclose($fp);
}

ヒントみたいなもの。
730nobodyさん:2006/01/07(土) 17:00:54 ID:???
あ、HTTPヘッダからは、htmlとかの静的ファイルしかできませんよ、
(CGI/PHPの類は無理です、と。)
731nobodyさん:2006/01/07(土) 17:01:47 ID:???
ありがとです!
参考にして頑張ってみます!
732nobodyさん:2006/01/07(土) 18:03:24 ID:???
PHPを使用していて
2つのサーバーでセッションの共有がしたいのですが
何かいい方法ありませんでしょうか?
733nobodyさん:2006/01/07(土) 18:07:39 ID:???
>>732
・DBに格納してDBMSから共有
・ファイルに格納してNFSとかでファイル共有
734719:2006/01/07(土) 18:41:48 ID:jsajv2SX
>>720
有効になっているので、サーバ側に問題があるんじゃないかと考えています。
テストサーバでは問題なくKeep-Aliveを返すので、
PHPがhandler型じゃなくてfilter型なのも一因となっている可能性ってあるんでしょうか?
735nobodyさん:2006/01/07(土) 18:44:13 ID:???
apache2 のテスト環境は用意できないの?
736719:2006/01/07(土) 19:02:51 ID:jsajv2SX
>>735
確かにそうすれば良かったんですが、
工数が少なかったため既存のテスト環境を利用しました。
本番と同一環境であれば今更困ることはなかったと承知しています。
737nobodyさん:2006/01/07(土) 19:39:47 ID:???
ところで、csvファイルののダウンロードが出来ない件と、Keep-Aliveできないのとは
関係ないと思うけど。
738nobodyさん:2006/01/07(土) 19:46:33 ID:???
PHPはWeb特化言語らしいですが、
ブラウザを通すことなく、
Windows用のプログラムを作ったりすることは可能なのでしょうか?
739nobodyさん:2006/01/07(土) 19:48:47 ID:???
>>738
ローカルでwebサーバも起動すればできるけど
740nobodyさん:2006/01/07(土) 19:52:13 ID:???
>>739
コマンドラインで利用できる
741nobodyさん:2006/01/07(土) 19:57:49 ID:???
PATH通してperl代わりに文章整形につかってる
curlとか使って通信するのも便利
742nobodyさん:2006/01/07(土) 20:05:22 ID:???
>>733
便乗質問

外部のサーバと、だとどうだろ。
やっぱ両サーバからDBアクセスできるようにしておいて、かなぁ…
743nobodyさん:2006/01/07(土) 20:32:34 ID:???
>>738
php-gtkとかWinBinderとかがあるよ。

>>742
外部鯖とセッション共有って、、、なんて恐ろしい子!
744nobodyさん:2006/01/07(土) 20:58:07 ID:???
>>733
ありがd
共有のDBにセッション情報を入れるという事でOK?
745nobodyさん:2006/01/07(土) 21:32:09 ID:???
>>741
Perl 代わりにはすげー使いにくいと思うがなぁ
746nobodyさん:2006/01/07(土) 22:59:57 ID:???
>>745
mb系関数をメインで使うなら案外便利かもよ
747nobodyさん:2006/01/07(土) 23:01:43 ID:???
mb_* はバギーだけどね
748nobodyさん:2006/01/07(土) 23:29:15 ID:???
エンコ関係はバギーだけど、編集関係はそんなこともないと思ってたけど違う?
749nobodyさん:2006/01/08(日) 00:52:50 ID:Gpu+sfrF
初歩的な質問ですいません。
PHPでメールフォームを作成予定です。
mb_send_mailなどで以前メールフォームを作成した経験があります。

ただ今回作成予定のレンタルサーバのサポートに下記のような記述がありました。
>PHPはCGIモードでインストールされている為、モジュール特化の機能は利用出来ません。
これってどのような意味なのでしょうか?

以前作成したレンタルサーバでは拡張子は.phpで実行できました。
>CGIモード
とは拡張子を.cgiで実行する場合のことなのでしょうか?
また「モジュール特化の機能」とはどのような機能なのでしょうか?
750nobodyさん:2006/01/08(日) 01:08:45 ID:???
>>749
>>PHPはCGIモードでインストールされている為、モジュール特化の機能は利用出来ません。
>これってどのような意味なのでしょうか?
主にこんな機能
http://www.php.net/manual/ja/ref.apache.php
あとCGI版にsuEXECなんかを組み合わせてると
また別に違いが出てくるけど、それは機能の違いというより機構による差異。

>CGIモード
とは拡張子を.cgiで実行する場合のことなのでしょうか?
これは関係ない。拡張子による動作の割り当てはWebサーバの設定の話であって
PHPがApacheモジュールか、CGI版かには関わらない。
751nobodyさん:2006/01/08(日) 01:31:01 ID:Gpu+sfrF
>>750
ありがとうございます。
mb_send_mailなどは使えるようですね。

またいろいろ調べてみたら、ソースの頭に
#! /usr/local/bin/php
などのパスが必要な場合などあるなどを見ました。

以前のレンタルサーバではサンプルソースなど色々
情報が載っていたので初心者の私でもなんとかなったんですが
今回のレンタルサーバにはPHPは使用可能。
とはあるですが、上記のようなパスの設定が必要なのか?パーミッションの設定は?
などは特に説明がありません。

基本を勉強しないとダメですね・・
とにかく>>750さん
ありがとうございます。





752nobodyさん:2006/01/08(日) 01:44:03 ID:???
HTTPが理解できないやつはPEARを使えばいいと思う。
753nobodyさん:2006/01/08(日) 01:55:00 ID:???
>>752
長距離パスすぎてどれのことか分からん。レスアンカーくらいつけてくれ。
754nobodyさん:2006/01/08(日) 05:03:26 ID:???
携帯向けにjpgファイルをリサイズして出力するスクリプトを書いています。
指定したサイズより大きい画像をリサイズする処理は完成しているのですが、
それ以下のサイズの画像もimagejpeg()の段階で画像が劣化してしまいます。
何かうまく回避する方法はないでしょうか?
755nobodyさん:2006/01/08(日) 05:06:33 ID:???
>>754
劣化させなたくなかったらリサイズしなければいいじゃない
756nobodyさん:2006/01/08(日) 05:11:17 ID:???
>>754
サイズを判定して処理不要ならそのまま出力すれば?
757754:2006/01/08(日) 05:20:48 ID:???
>755,756
ありがとうございます。

サイズ判定はやっています。
ブラウザにjpgを出力するにはimagejpeg()使う以外に無いですよね?
私の勘違いでしょうか?

>そのまま出力する
とは画像ファイルにリダイレクトするということでしょうか?
なるべくなら、それは避けたいのです。
758nobodyさん:2006/01/08(日) 05:40:18 ID:???
んー。readfile()とかfpassthru()とかfread()+fwrite()とか。
バイナリで出力できるやつならなんだって構わないと思うんだけど。
759754:2006/01/08(日) 05:48:57 ID:???
ありがとうございます。解決できそうです。
画像処理にばかり気を取られて頭が固くなってました。
760nobodyさん:2006/01/08(日) 10:47:15 ID:???
>>748
mb_ereg ってこと?
まぁ出所違うからね。そういう判断もできるかも。
761nobodyさん:2006/01/08(日) 15:05:00 ID:???
ハッスルサーバーかりて、

<html>
<head>
<title>SaveCookie</title>
<?php
mb_language('Japanese');
mb_detect_order('sjis-win,eucjp-win');
mb_internal_encoding("UTF-8");
?>
</head>
<body>
<?php setcookie("email",$_POST['email'],time()+(60*60*24*90)); ?>
SAVED COOKIE "email"
</body>
</html>

を表示してみたところ下のようなメッセージが返ってきたなり。

Warning: Cannot modify header information - headers already sent by
(output started at /home/happylife/public/www/cookie_rec.php:4)
in /home/happylife/public/www/cookie_rec.php on line 13
SAVED COOKIE "email"

セキュリティの設定をすべてのクッキーを有効にしても、
ファイヤーウオールを無効にしてもこのメッセージが出続けます。

どうしたら良いのでしょう?
762nobodyさん:2006/01/08(日) 15:10:32 ID:???
[俺サマ訳]
警告: (HTTP)ヘッダー情報を修正することができません
- だって、ヘッダーは既に送信されていたんだもん。
763nobodyさん:2006/01/08(日) 15:16:20 ID:???
>>761
setcookieは、"<?php"の前に何かがあっては送信できませんし、
setcookieより前にecho等があっても送信できません。

"<?php"の前は、たとえ空行でも、入れちゃだめよ。
764nobodyさん:2006/01/08(日) 21:57:56 ID:???
>762,763

ありがとうございます。
動きました♪
765nobodyさん:2006/01/08(日) 22:37:56 ID:???
$fp = fopen("hoge.txt", "r+");
flock($fp, LOCK_EX);
こんな感じでファイルロックを行うと、ファイルをオープンしてからロックするまでの間に他のプロセスがファイルをオープンすることはないのでしょうか?
766nobodyさん:2006/01/08(日) 22:41:05 ID:???
>>765
ある
767nobodyさん:2006/01/08(日) 22:55:29 ID:???
>>765
>ファイルをオープンしてからロックするまでの間
どんな一瞬だよw
768nobodyさん:2006/01/08(日) 23:12:10 ID:???
DBに頼りすぎてファイルロックの基礎も分かってない素人が多すぎだよね >PHP開発者
769nobodyさん:2006/01/08(日) 23:15:37 ID:???
オープンされてもロックが取得できなきゃいい
というか、意外とまともに説明されてることって少なくね? < flock
770765:2006/01/08(日) 23:30:43 ID:???
hoge.txtを毎回書き換える場合(カウンターなど)これだとまずいですよね。
ロック用のファイルを作っておいてそれをロックするようにすればいいでしょうか?
771nobodyさん:2006/01/08(日) 23:34:36 ID:???
'w' で fopen しちゃうとアウトだね
772nobodyさん:2006/01/08(日) 23:48:15 ID:???
強固なflockのサンプルコード

↓よろ
773nobodyさん:2006/01/08(日) 23:51:54 ID:???
>>770
パターン的には2通り。
1つは複数のプロセスでopenはできることを前提に、flockが解除されて
順番が回ってきたプロセスは「まずrewindして中身を読み直す」ことから始める。
ファイルのオープンモードがw系以外であることが条件。
もう1つは対象ファイル以外にロック専用のファイルを用意しといて
それがロック中は以降の処理全体を止める。いわゆるプロセスロック。
ファイルをいきなり消しちゃう場合や、複数のファイルを扱う場合などはこれ。

この種の「ロックの粒度」の話はRDBMSの試験にも出ますよw
774nobodyさん:2006/01/09(月) 00:01:04 ID:???
まぁ細かいこと考えずに安心したいっつーんならロックファイルを用意
するのがいちばんやね。ファイルが増えて邪魔くさいって欠点はあるけど
775765:2006/01/09(月) 00:08:16 ID:???
>>773
rewindするとオープンした後に書き換えられたデータも読めるんですか?
776nobodyさん:2006/01/09(月) 00:08:18 ID:???
1分置きにクーロンで破損検査すれば解決
777nobodyさん:2006/01/09(月) 00:15:19 ID:???
rewind しなくても読めるよ
rewind が何をするものなのか考えてみよう
778nobodyさん:2006/01/09(月) 00:20:19 ID:???
他のプロセスに書き換えられた場合ポインタの位置がずれているからですか。
779nobodyさん:2006/01/09(月) 00:21:50 ID:???
>>778>>765です
780php developer teams:2006/01/09(月) 13:07:16 ID:r4dXJ2hk
DBに書き込む際、改行(enterでの)が \n となってしまい、PHPで実際に表示してみると改行できていないのです。

どうすれば改行できるようになるのでしょうか?
781nobodyさん:2006/01/09(月) 13:09:17 ID:???
>>780
つ nl2br
782nobodyさん:2006/01/09(月) 18:06:26 ID:???
file()を使えば、1行目を[0]に、2行目を[1]に入れることが出来ますが、
[0]にfile()で読み込んだソース全部を入れることは出来ないんでしょうか?
783nobodyさん:2006/01/09(月) 18:12:36 ID:???
>>782
file_get_contents使えよ
784nobodyさん:2006/01/09(月) 18:15:21 ID:???
>>782
>>783のでいいと思うがPHPのバージョンが古くて(4.2.x以前)使えない場合は
join("",file(〜))で同じことができる。(が、file_get_contents()の方が速い)
785nobodyさん:2006/01/09(月) 18:16:35 ID:???
>>780
それ、別にDB関係ないし。
改行と<br>の区別くらいつけろ。
786nobodyさん:2006/01/09(月) 18:33:38 ID:???
>>783-784
トンクスです
787nobodyさん:2006/01/09(月) 18:46:35 ID:???
マニュアルにもあるけど
fopen して fread( filehandle, filesize( filename ) )
って手もあるな
788nobodyさん:2006/01/09(月) 20:03:42 ID:???
a
は1バイトですが、

は3バイトですか?
789nobodyさん:2006/01/09(月) 20:13:30 ID:???



790nobodyさん:2006/01/09(月) 20:13:49 ID:???
>>788
「あ」もそうですが「a」も 文字エンコードによって変わります。
791nobodyさん:2006/01/09(月) 20:15:04 ID:???
>>790
あっ、なるほど
謎が解けました。ありがとです
792nobodyさん:2006/01/09(月) 22:34:46 ID:+5WHmeqf
もし\が2個以上重なっていたら(\\) ひとつ省き\と、又\\\\となっていたら\\\を省きひとつにと\がひとつ以上の場合はすべてひとつに変換するようにしたいのですがうまくPHPでプログラムを組めません。

どなたか簡単なプログラムを作成してください。お願いします。
793nobodyさん:2006/01/09(月) 23:12:01 ID:???
>>792
preg_replaceで正規表現を使うのが筋だが、嫌なら
$str = stripslashes($str); とか

つか少し頭使うなり調べるなりせんと上達しないよ?
794nobodyさん:2006/01/09(月) 23:26:06 ID:???
みなさんはワンタイムチケットの実装をどうしてますか?

HTML_QuickFormを利用していますが、なんか面倒で。
795723:2006/01/10(火) 12:55:21 ID:s2ru7jHC
>>724-725
遅くなってすいません、ありがとうございました。
796nobodyさん:2006/01/10(火) 13:11:23 ID:???
自宅鯖ではなく、レンタルサーバを利用しています。

一つのディレクトリに納まっている複数のファイルをまとめ、一つのファイルにし、
これを圧縮するにはどうしたら良いのでしょうか。

圧縮はさておきまとめるというとtarを使うと思うのですが、
 $aaa = system('tar -cf ./after.tar ./before', $bbb);
なんてことをしてもできないようなのです。
system関数が使えないとなると、他に手はないでしょうか。
797nobodyさん:2006/01/10(火) 13:55:20 ID:???
レンタルサーバー、レンタルサーバー言うやつは、どこか晒せよ。
特にさくらの鯖とか、CGI版だって知らないで聞いてるアホも多いんだから。

「system関数が使えない」ってのは、「関数が」使えないの?
それとも、`ls`なんかは出来るわけ?

パスが通ってない可能性も踏まえ、which tarしたフルパスにするとかしてみれ。
tarが使えないようになっている以外なら多分出来るはずだ。
798675:2006/01/10(火) 15:23:09 ID:???
>>675
簡単に分からない問題なのか、それとも初歩過ぎてレスがつかないのか…
799nobodyさん:2006/01/10(火) 15:34:18 ID:???
要素が大杉

var $str1 なんだから本来 $str1 と比較してマッチするはずがない
ereg に日本語を突っ込んでも信用できない
スクリプトを sjis で書いてると他にもおかしなこと起きやすい

以上から、たぶん晒した以外のところもかなりおかしなことになってるはず

結論としてはもっと勉強してくれ
800nobodyさん:2006/01/10(火) 16:04:59 ID:hzjvsGhO
$2cht = preg_replace("/\\\\+\/","",$2ch);こういった使い方は可能でしょうか?

\が1つ以上ある場合はすべて消去したいのですがエラーが表示され機能してくれません。
801nobodyさん:2006/01/10(火) 16:08:12 ID:???
>>798
判断に迷う質問だから放置してた。
ふつーに考えたら$str1と$this->str1を入れ替えるなんてこと自体がありえないので、
一体何をやろうとして何に引っかかってしまったんだか想像がつかない感じ。

結論:かなり大ボケかましてない?

というか多分、$this->str1は中身が空っぽになってて、
それで何にでもマッチしちゃうだけじゃないの?という気がする。
802nobodyさん:2006/01/10(火) 16:09:17 ID:???
>>800
"/\\\\+\/" は "/\\\\+/" の間違いじゃないのか。
最後の \ は何に対しての \ なんだよ。
803nobodyさん:2006/01/10(火) 16:24:04 ID:???
>>798
ありえないというか意味不明でレスのつけようがない
<?php
class test {
var $str1 = "テスト";
function view($str1) {
echo "\$this->str1=".$this->str1;
echo "<br>\n";
echo "\$str1=".$str1;
}
}
$a = new test;
$a->view("ホゲ");
?>
804nobodyさん:2006/01/10(火) 16:55:37 ID:Gn5rV4CT
mysql_escape_stringでエスケープした文字を元に戻す関数とかありますか?

\と入力すると\\になったりして入力と異なるのでそれを直したいです。
805nobodyさん:2006/01/10(火) 17:29:27 ID:???
>>797
申し訳ございません。XREAにてmod_phpで動かしています。

仰るとおり $aaa = system('which tar', $bbb); を試みましたが、
>>796のコード同様、$bbbには127という値が入っているのみでした。
806nobodyさん:2006/01/10(火) 17:55:04 ID:???
>>804
入力元をコピーして残しとけば?
普通、mysql_escape_stringなんてDBに書き込む直前以外には実行しないだろー
807nobodyさん:2006/01/10(火) 17:55:41 ID:???
マニュアルを読むんだ
808nobodyさん:2006/01/10(火) 18:38:31 ID:???
809nobodyさん:2006/01/10(火) 19:06:48 ID:???
>>800
数字で始まる変数
810nobodyさん:2006/01/10(火) 21:52:48 ID:???
>>808
Pearなどを使うのは初めてでしたが、適当にいじってるうちに成功しました。
ありがとうございました。
811nobodyさん:2006/01/10(火) 21:57:13 ID:Gn5rV4CT
Wikiみたいに[ほげ[http://hoge.vom/]]と入力されたら<a href="http://hoge.vom">ほげ</a>と変換するにはどうしたらいいのでしょうか?
812nobodyさん:2006/01/10(火) 22:02:39 ID:???
Wikiを入れる
813nobodyさん:2006/01/10(火) 22:20:29 ID:V6LwtE82
Winの最新IEで試したのですが、
setcookie()する場合、適用ドメインを「.example.com」で発行すると、
それを「hoge.example.com」で上書きすることはできないんですね?
逆は可能なようですが・・・。
この仕様?って普通の感覚とは逆な気がするのですが、どんなもんでしょう?
814813:2006/01/10(火) 22:27:18 ID:???
どうもPHPの方が変な気がしてきました。
ブラウザが、「.example.com」と「hoge.example.com」
でクッキーを持っていると、
PHPの$_COOKIEは「.example.com」の方を優先して読み込むようです。
815nobodyさん:2006/01/10(火) 22:46:58 ID:???
PHPでブラウザが送ってきたHTTPヘッダを見ることはできますか?
816nobodyさん:2006/01/10(火) 22:54:11 ID:???
module版なら、apache_request_headers()で取得できるよ。
817nobodyさん:2006/01/10(火) 23:29:28 ID:???
>>816
どうもありがとう!!

>>814-815 の続きですが、IEで調べたところ、
「example.com」と「hoge.example.com」で同じ名前のCookieがある時、
hoge.example.com にアクセスすると、
IEは、「example.com」のクッキー、「hoge.example.com」のクッキーの
順番で同時に送信してくるようです。
これをPHPの$_COOKIE['XXX']で取得すると、「example.com」の方の
クッキーが返されます。

広域指定が局所指定よりも優先されているわけですが、
これってクッキーの仕様に合致しているのかなぁ…。
818nobodyさん:2006/01/11(水) 00:00:43 ID:???
PHPって、どのくらい勉強すればいいんかねぇ。
819nobodyさん:2006/01/11(水) 00:02:19 ID:fOyKkotG
>>801
>>803
レスありがとうございます。

確かにちょっと状況が説明不足ですね。

実は、レッツPHP!にあるTree BBS
http://php.s3.to/bbs/bbs6.php
に書き込み禁止処理を追加しようと思ったのです。
$comに納められたコメントの内容にNGワードが
入っていたらエラーが出るようにしようとしました。

それで最初
if(eregi($bad_word, $com))
としたのですが、うまくいかなくて

if(eregi($this->bad_word, $com))
または
if(mb_eregi($bad_word, $com))

にしたら、うまく動いたんです。ちゃんと動いているので
中身空っぽになって何でもマッチしているわけではないようです。

なお、このif分を追加したのは、function add_chkの中の
ifがずらっと並んでいるところです。

最初からスクリプト中にある
if($com=="" || ereg("^( | |[¥r¥n])*$",$com))
というところは、そのままで全角スペースにちゃんと
マッチしているので、ますますわけがわかないのです。
なので、もしかしたら文字エンコーディングに起因する問題?とか
いろいろ考えたのですがよくわかりません…。
820nobodyさん:2006/01/11(水) 07:42:19 ID:???
>>819
スクリプトの先頭に
ini_set("display_errors", 1);
error_reporting(E_ALL);
と書け。

if(mb_eregi($bad_word, $com))
は$bad_wordが未定義なのにうまくいくはずない。
821nobodyさん:2006/01/11(水) 09:29:54 ID:???
>>804
エスパー的には、mysql_escape_stringの問題ではなく、
マジッククォートの問題だと思う。
つ php.ini

初心者は問題の本質を捕らえる努力と伝える努力をすべきだと思う。
822nobodyさん:2006/01/11(水) 10:32:50 ID:???
ま、それができたら最初からバグ出してないと思うがなw
823nobodyさん:2006/01/11(水) 12:26:46 ID:???

for ($i = 0; $i < $max; $i++)

より

for ($i = $max; $i > 0; $i--)

の方が早いって聞いたんですけどマジですか?
824nobodyさん:2006/01/11(水) 12:29:42 ID:???
早いのは
for($i = $max; $i ; -- $i)
じゃないのか?
でも微々たるもんだと思うけどね。
825nobodyさん:2006/01/11(水) 12:50:14 ID:???
>>823
試せばすぐわかることじゃん
826824:2006/01/11(水) 12:59:20 ID:???
試してみた。
1.for($i = 0; $i < $max; $i ++) {print ""}

2.for($i = $max; $i > 0; $i --) {print ""}

3.for($i = $max; $i; -- $i) {print ""}
をそれぞれ$max=1000000;で実行した結果、
おおよそ
1.0.50〜0.52秒
2.0.39〜0.40秒
3.0.31〜0.32秒
という結果になった。(複数回、順番入れ替えも行った上での結果)
環境:WinXP PHP4.3.10 CLI版

おまけ。
4.for($i = 0; $i < 1000000; $i ++) {print ""}
にするだけで
4.0.39秒
になる。
…PHPの変数参照っておせー
827nobodyさん:2006/01/11(水) 13:22:09 ID:???
PHP書くのにお勧めにエディタおしえて
828nobodyさん:2006/01/11(水) 13:40:48 ID:???
>>827
エディタスレ、開発環境スレへどうぞ
829nobodyさん:2006/01/11(水) 13:43:51 ID:???
>>826
4 と 1 の違いが分からない
他の言語と比べてくれなきゃ PHP が遅いのか分からない
830nobodyさん:2006/01/11(水) 13:51:56 ID:???
831nobodyさん:2006/01/11(水) 14:17:54 ID:???
>>829
あれで分からないなら気にスンナ
832nobodyさん:2006/01/11(水) 14:22:10 ID:h33/EqTj
データベース内にあるデータを消去するスクリプトを作成したいんだけど普通にdelet from ... を使ってアクセスすると
確認もないままに消してしまう。

同じスクリプト内に消去するまえの確認メッセージを表示してOKボタンをクリックした場合のみ消去させるにはどうしたらいいのでしょうか?
833nobodyさん:2006/01/11(水) 14:27:23 ID:qDYFXRNq
最近の釣りは豪快だね
834nobodyさん:2006/01/11(水) 14:29:52 ID:???
>>832
OKボタンのFORM入力が無ければOKボタンを表示して終了、
FORM入力があれば実際にdelete実行、ってだけ。
835nobodyさん:2006/01/11(水) 15:19:07 ID:???
二次元配列で
$aa[0][0] = 1;
などとCみたいに扱えないんですか?
836nobodyさん:2006/01/11(水) 15:23:44 ID:???
>>835
普通にできるが?
837nobodyさん:2006/01/11(水) 15:32:16 ID:???
え、まじですか?
$aa[0][0] = 1;
として、これの中身を
echo "$aa[0][0]";とかすると
1[0]
って表示されるのですが・・
表示方法がまずいとか?
838nobodyさん:2006/01/11(水) 15:37:00 ID:???
あ、できてますねこれ。
どうやら表示方法がまずかったみたいな
$aa[0][0]をいったん別の変数にとって
$bb = $aa[0][0];
として、$bbを表示したらうまくいきました。
839nobodyさん:2006/01/11(水) 15:40:09 ID:???
>>837
"〜"の中で添え字([〜])やメンバ変数参照(->)みたいな記述はそのままでは使えない。
"{$env[0][1]}" みたいに {} で括る必要あり。

参考
【PHP】質問スレッドpart32【php】
http://pc8.2ch.net/test/read.cgi/php/1136276300/4
840nobodyさん:2006/01/11(水) 15:40:29 ID:???
>>838
echo $aa[0][0];
echo "{$aa[0][0]}";
841nobodyさん:2006/01/11(水) 15:50:27 ID:CQ4aDWhi
http://www.hero.ne.jp/~db/herodb.shtml
このデータベース型CGIを
http://www.breeze.jp/s02_faq_01.php#q23
ここに設置しようと思っています

$datpath = "./";
$binpath = "./";
$BinUrl = "http://www.***.com/~user/";

これらの変更すべき部分に何を書けばいいのかよく分かりません
どなたかお願いします
842nobodyさん:2006/01/11(水) 15:53:01 ID:???
>>841
スレ違い
843675:2006/01/11(水) 16:06:44 ID:???
>>820
おー、理解しました(多分)。スコープの問題?

if(mb_eregi($bad_word, $com))
が動いていたような気がするのは気のせいですよね、きっと…。
844nobodyさん:2006/01/11(水) 16:07:55 ID:???
>>841
842の言うとおりだが、
何より
http://www.hero.ne.jp/~db/herodb-othersite.shtml
に説明が書いてあるだろ。
それで分からないなら使わない方がいいだろう。
845nobodyさん:2006/01/11(水) 16:09:09 ID:???
>>843
if文の前に
echo $bad_word;
echo $com;
とでもして変数の中身確認すれば分かることでは?
846nobodyさん:2006/01/11(水) 16:14:50 ID:CQ4aDWhi
>>842,844
またスレ違いでしたか;;
失礼しました
他をあたります
レスありがとうございました
847nobodyさん:2006/01/11(水) 17:22:57 ID:???
>>839-840
激しくありがとう!!!
なるほど!それで謎がとけたきがします
848nobodyさん:2006/01/11(水) 18:08:12 ID:h33/EqTj
PHPで文字化けします。いろいろ調べたのですがShift-JISを使わないと文字化けしないと分かりました。

しかし意味が分かりません。Shift-JISを使わないってどこをどうすればいいのですか?
849nobodyさん:2006/01/11(水) 18:11:15 ID:???
適切な文字コードを指定すればいいのですよあえr4ん6j34kl
850nobodyさん:2006/01/11(水) 18:25:34 ID:h33/EqTj
指定方法を教えてください。Plz
851nobodyさん:2006/01/11(水) 18:38:15 ID:???
meta タグや htaccess を使うのでおおっと板違いだぁ
852nobodyさん:2006/01/11(水) 19:07:51 ID:???
何がどう板違いなんだか;;
853nobodyさん:2006/01/11(水) 19:11:28 ID:???
>>848
まずマニュアルを読む
マニュアルを読んで分からなければ丁寧な解説がされていそうな本を読む

こんなところで聞くだけ時間の無駄
854nobodyさん:2006/01/11(水) 19:23:12 ID:923d4820
質問です。
簡単なデータの入力システムをphpとmysqlでつくっています。

"select * from テーブル"で

<table>
while ($col = mysql_fetch_array($rst)) {
<tr>
<td>$col["あああ"]</td>
<td>$col["いいい"]</td>
<td>$col["ううう"]</td>
</tr>

</table>

みたいにして、whileでループして表を表示させてるのですが、
表を見易くするために、一行ごとにバックの色を変えるにはどうすればいいでしょうか?
1行目は白、2行目はちょっとグレー、3行目は白.....みたいな。
よろしくお願いします。


855nobodyさん:2006/01/11(水) 19:30:42 ID:???
条件分岐させればよいでしょ。

それにしても全角とは恐れ入った。
856nobodyさん:2006/01/11(水) 19:40:25 ID:???
forの方がやり易いかな.

for ( $lp = 0; $col = mysql_fetch_array($rst); $lp++ ) {
$bg_class = ( $lp % 2 == 0 )? "bg_white" : "bg_gray";
echo <<<EOS
<tr class="$bg_class">
<td>$col["aaa"]</td><td>$col["bbb"]</td><td>$col["ccc"]</td>
</tr>
EOS;
}

といった感じ.スタイルシートは自分で書いてね.
857nobodyさん:2006/01/11(水) 19:41:18 ID:???
>>854
俺はこんな感じでやってる
$max = 3;
$color = array("#000000","#ff00ff","#00ff00");

行 $lineとして
色 $color[$line % $max]
858nobodyさん:2006/01/11(水) 19:58:53 ID:h33/EqTj
JavaScriptでエンコードした文字をPHPのrawurldecodeで元に戻すことは可能ですか?
859nobodyさん:2006/01/11(水) 20:15:13 ID:???
>>858
そのエンコードによる。
860まっぷ:2006/01/11(水) 20:35:46 ID:+n0M4RUL
mapserverでphp_mapscriptをつかって地図表示をさせようとしているのですが、
アクセスする際に
Warning: dl(): Unable to load dynamic library '/usr/lib/php/20020429/php_mapscript.so'
- /usr/lib/php/20020429/php_mapscript.so: cannot open shared object file:
No such file or directory in /home/httpd/html/phpinfo_mapscript.phtml on line 21

というエラーがでてしまって困っています。
環境は
vinelinux-3.1
php-4.4.1
mapserver-4.0.1 を使っています。

phpの何かがおかしいと思うのですが。。
/usr/lib/php/20020429というディレクトリは存在せず、
/usr/lib/php/の中にはphp_mapscript.soが存在します。

いろんなとこを調べ、php.iniのextension_dir = ./の部分を
extension_dir = "/usr/local/php-4.4.1/modules/"
にしたりしてみたのですがエラーはかわりませんでした。

何分初心者ですのでつたない文章ですみません。
御指導いただければと思います。。
お願いします。
861nobodyさん:2006/01/11(水) 20:46:40 ID:???
>>860
/usr/lib/php/20020429/php_mapscript.soを作る
862854:2006/01/11(水) 20:50:00 ID:923d4820
855,856,857
スタイルシートのclassを変数にして条件分岐ですね。
すばらしいですねー。
最近phpを勉強しはじめました。
forはなんとなく好きになれません。
array()っていうのも使ったことないです。
前途多難ですががんばります。
ありがとうございました。
863nobodyさん:2006/01/11(水) 21:04:06 ID:???
じゃあ foreach かな
864nobodyさん:2006/01/11(水) 21:27:20 ID:???
だったらwhileでええやん
865nobodyさん:2006/01/11(水) 21:44:45 ID:a+2jPX+b
なんでもええやん
866nobodyさん:2006/01/11(水) 23:52:35 ID:???
>>862
漏れは、普通にmysql_fetch_arrayでまわすけど、まわす前にカウント用の変数を$iとして、それが偶数のときはこのcssクラス、奇数のときは・・・って感じだな。
先に件数を取得しておくと、テーブルなんかおしゃれにできる。
(最後の一行がわかるから。)
867nobodyさん:2006/01/12(木) 00:33:48 ID:???
まじで下らねぇだと思うんですが、インスコ段階で詰まってます。
httpd下で動作させようと思ってるんですが
一応解説サイトや書籍などを見て、
php5ts.dll php.ini-dist を C:\WINDOWS\system32にコピって php.iniにリネームし
cgi.force_redirect = 0 に書き換えても
Security Alert! The PHP CGI cannot be accessed directly 言われます。

とりあえづXAMPPインスコして、そっちではPHP動くんであまり問題ないと言えばないのですが、
今度はこっちではCGIが動きません(htdocs.confでDocumentRootのパスとかは変えたんですが)
余談ですが、ActivePerlとかXAMPPアンインスコして
XAMPPだけインスコした状態で試したりもしたんですがダメでした。
まあそれはどうでもよくて、実際cgiとphpを連動させる事もないだろうから
別にcgiのテストはhttpdでやって、PHPはXAMPPでやればいいだろ、って言われればそれまでなんですが。
原因が気になってオナニーもロクにできません。
あ、オナニーはインスコ中にやってたのでどうでもいいです。
とにかくよろしくお願いします。
868867:2006/01/12(木) 01:24:21 ID:???
自己解決しました。
オナニーして寝ます。
869nobodyさん:2006/01/12(木) 09:51:22 ID:???
Smartyの {cycle}
870nobodyさん:2006/01/12(木) 11:17:59 ID:???
キーと値が格納された連想配列を文字列としてシリアライズしたり、
文字列から連想配列へデシリアライズする手段をさがしてます。そういう便利なものないですか。
(PHP4です)

871nobodyさん:2006/01/12(木) 11:26:53 ID:???
>>870
extractとcompactではだめ?
872nobodyさん:2006/01/12(木) 11:38:49 ID:???
>>871
ありがとう。調べてみます。
ぐぐってみたところ、serialize(),unserialize() というのもみつけました。

入力された複数の値→連想配列を作る→シリアライズしてDBに入れる
→別の画面などでDBからシリアライズしてきた文字をデシリアライズ(連想配列化)して表示

といった感じに使おうかと思ってました。
873nobodyさん:2006/01/12(木) 14:35:20 ID:???
>>872
そういうのは普通にserialize()でよく行われてると思うよ。
874872:2006/01/12(木) 14:41:36 ID:???
>>873
ありがとうございマッスル
875nobodyさん:2006/01/12(木) 15:00:00 ID:lQx6xwTN
ありがとうございマイケル
876nobodyさん:2006/01/12(木) 15:38:55 ID:???
構造体の使い方かいてるサイトおしえてください
877nobodyさん:2006/01/12(木) 15:44:35 ID:???
PHPの構造体って何?
878nobodyさん:2006/01/12(木) 15:55:20 ID:???
ないの?
879nobodyさん:2006/01/12(木) 15:56:23 ID:???
ちょっと前に見た、構造体と case 文のない言語はやだって言ってたやつとは違うよな?
880nobodyさん:2006/01/12(木) 16:06:13 ID:???
あ、無いのか・・・
では、話が変わるのですが、変数の型がバリアントっぽいのですが
Cみたいにcharの配列でバイナリを扱う方法を教えてください
881nobodyさん:2006/01/12(木) 16:09:11 ID:???
何がしたいのだ
知ってる言語の流儀を押し通そうとするのは賢い方法とは言えないぞ
882nobodyさん:2006/01/12(木) 16:12:43 ID:???
あ、えーっと、じゃあわかりやすくCで書くなら
char aa[8]={ 0x01, 0x02, 0x03, 0x04, 0x00, 0x02, 0x03, 0xAA };
short bb = ((aa[[5] << 8) | aa[6]) & 0xFF;
例えばこんなこと↑
char のバイナリ配列なんでコードにNULLが含まれてることもあるみたいな
883nobodyさん:2006/01/12(木) 16:17:12 ID:???
>>882
マニュアル見てこいよ
884nobodyさん:2006/01/12(木) 16:27:14 ID:???
マニュアルじゃないけどPHPの説明を書いてるHPを何箇所かみたんだけど
バイトって概念がないのかわからんけど、なんかできないっぽいなあ
ちょっとマニュアルみてくるかな
885nobodyさん:2006/01/12(木) 16:28:18 ID:???
てきとーなサイト見るよりマニュアルを見る方が何百倍もよい
886nobodyさん:2006/01/12(木) 16:33:29 ID:???
>>884
概念はあるんだよ。
使っている奴が少ないだけ。
ユーザ側がまだまだCほど錬れていないから。
887nobodyさん:2006/01/12(木) 16:33:51 ID:???
unpack して配列に突っ込んでやってみたら?
888nobodyさん:2006/01/12(木) 16:38:00 ID:???
>>885
マニュアルて何故か簡単に説明してくれてないから敬遠しちゃうんだよね
>>886
おろ?まじですか。でもこれってCよりBasicに近い変数の扱いですよね
>>887
ああああああああああああああああああああ!!!
こんな関数があったんですか!!
これ早速ためしてみます
889nobodyさん:2006/01/12(木) 16:42:52 ID:???
>>882
<?php
$a[] = pack("c", 0x01);
$a[] = pack("c", 0x02);
$a[] = pack("c", 0x03);
$a[] = pack("c", 0x04);
$a[] = pack("c", 0x00);
$a[] = pack("c", 0x02);
$a[] = pack("c", 0x03);
$a[] = pack("c", 0xAA);
$b = (($a[5] << 8) | $a[6]) & 0xFF;
echo bin2hex($b);
?>
890nobodyさん:2006/01/12(木) 17:01:27 ID:???
>>889
激しくあり(ノД`。)
やっぱりやる方法はあるんですね。感謝です
891nobodyさん:2006/01/12(木) 17:24:13 ID:???
元がcharの配列だったことには意味があったんじゃないのか??
892nobodyさん:2006/01/12(木) 17:30:39 ID:???
Cではファイルから読み込んだりする時にchar型が便利だからじゃねえの?
893nobodyさん:2006/01/12(木) 17:41:14 ID:???
それ以前に躓くPHPで書くよりC言語で書いた方が良いのではないかと。
894nobodyさん:2006/01/12(木) 17:50:31 ID:???
a.txtというテキストファイルの内容をソートし、保存しなおしたいのですが
$a = "./a.txt";
$af = fopen($a, "w");
flock($af, 2);
asort($a);
fclose($af);
このコードでは上手くいきませんでした。正しいコードをご教授願います
895nobodyさん:2006/01/12(木) 17:59:07 ID:???
>>894
とりあえずマニュアルを読む事をお勧めします。
896nobodyさん:2006/01/12(木) 18:04:47 ID:???
>>894
asortに与えるべき配列はファイルの中身を配列にしたものであって、"./a.txt"という文字列ではない。
897889:2006/01/12(木) 18:06:37 ID:???
>>890
すまん。バイナリだと演算できなかった
バイナリをビット操作するときはunpackしてやらないとだめだ
それなら最初からpackするなよってことか
898nobodyさん:2006/01/12(木) 18:10:07 ID:???
>>894
簡単に言うとファイルを開いてるだけで保存はおろか読み込みもしてない
899nobodyさん:2006/01/12(木) 18:16:31 ID:???
>>897
あ、ひょっとして論理演算が?
phpはなかなか難しいですねー
900nobodyさん:2006/01/12(木) 18:18:40 ID:???
つ $aa = "\x01\x02\x03\x04\x00\x02\x03\xAA";

論理演算て・・・
901nobodyさん:2006/01/12(木) 18:26:26 ID:???
>>900
シフトは算術演算って言っといたほうがよかったかい?
902nobodyさん:2006/01/12(木) 18:28:45 ID:???
>>901
ビット演算だろボケが。論理演算はtrue/falseとかand/orの類。
903nobodyさん:2006/01/12(木) 18:34:58 ID:???
確かにPHPでbool型を使いたくなる時がある
904nobodyさん:2006/01/12(木) 18:36:44 ID:???
使ったらいいじゃない
905nobodyさん:2006/01/12(木) 18:37:00 ID:???
Mac OS X 10.4.3
$ /opt/local/bin/php -version PHP 5.1.1 (cli) (built: Jan 11 2006 20:26:52)
$ /opt/local/bin/phpunit --version PHPUnit 2.3.4 by Sebastian Bergmann.
$ pear -V
PEAR Version: 1.4.6
PHP Version: 5.1.1
Zend Engine Version: 2.1.0
/opt/local/lib/php/extensions/no-debug-non-zts-20050922/xdebug.so
で、
<?php
class Numeric {
 public function add($x, $y) {
  return ($x + $y);
 }
 public function sub($x, $y) {
  return ($x-$y);
 }
}
?>

$ ls -a Numeric.php
$ phpunit --skeleton Numecir
 PHPUnit 2.3.4 by Sebastian Bergmann.
$
とプロンプトが返ってきて、「Wrote test class skeleton for Numeric to NumericTest.php」はなし。
NumericTest.php という空のファイルが生成されているだけで、中身はなし。
何が原因なのか、誰か教えて…・
906nobodyさん:2006/01/12(木) 18:44:38 ID:???
phpunitは使ったことないけど、
Numeric
Numecir の違いじゃないの?
907905:2006/01/12(木) 19:04:16 ID:???
>>906
ファイル名とクラス名が同じだから、
名称が問題になっているわけではないと思うんだ。
いちおうスケルトンは生成されているし。

ttp://www.phpunit.de/pocket_guide/2.3/en/installation.html
ファイル名の変更は問題ないと思うし…。
$ ls -l /opt/local/bin/ | grep php
-rwxr-xr-x 2 root admin 8918652 Jan 11 20:27 php
-rwxr-xr-x 2 root admin 1326 Jan 11 20:29 php-config
lrwxr-xr-x 1 naotaka admin 18 Jan 3 19:32 php5 -> /opt/local/bin/php
-rwxr-xr-x 2 root admin 4107 Jan 11 20:29 phpize
-rwxr-xr-x 1 root admin 1801 Jan 12 18:11 phpunit

xdebug は有効になっているし、assert 関数の評価も有効になっているので、
設定の問題なのかどうかもちょっと切り分けられなくて、困っている…。
ググッても検索結果に参考になるものがないのが、利用者数が少ないのを物語っているよ。
908854:2006/01/12(木) 19:06:04 ID:pSKfqlaX
みなさんのレスを読んで納得したつもりだったのですが、
家に帰って帰ってみたら、やっぱり分かってませんでした。

857さんのやりかたがシンプルでいいなと思ったのですが、
行$lineを取得する方法がわかりませんでした。

ttp://php.thm.jp/index.php?know=table_color
これは、856さんのやり方に近いと思うのですが、自分のコードにはうまくあてはめられませんでした。

866さんの方法もよさそうなのですが。。。

どなたかアドバイスをお願いします。
909nobodyさん:2006/01/12(木) 19:09:40 ID:???
>>908
866でやってみろよ、簡単だから
910854:2006/01/12(木) 19:26:34 ID:pSKfqlaX
レスどうもです。
自分のコードには866のやり方が合ってると思うのですが、
具体的にどう書くのか、いろいろと試しているのですが、
全部同じ色になってしまって困っています。
ヒントでもいただけるとうれしいです。
911nobodyさん:2006/01/12(木) 19:43:55 ID:???
>>910
単純に現在の行が何行目なのかを判定するための変数を設定して、
行が変わる毎に何行目なのかを判定して、背景のコードを print 文なりで付加すればいいだけ。

これぐらいは自分で考えて条件式を書けないと、
プログラムのセンスがないのかもしれないよ。
912911:2006/01/12(木) 19:47:13 ID:pSKfqlaX
ですよねぇ。ありがとうございます。

>単純に現在の行が何行目なのかを判定するための変数を設定して、
>行が変わる毎に何行目なのかを判定して、背景のコードを print 文なりで付加すればいい

という理屈はわかっているのですが、「現在の行が何行目なのか」を判断できませんorz

もうちょっと格闘します。ありがとうございました。
913nobodyさん:2006/01/12(木) 20:03:14 ID:???
以前、リファレンス渡しの話題で、リファレンス渡しをすると遅くなってしまう場合がありましたが、
ログをなくしてしまったので、どのような場合にすべきではないかもういちど挙げていただけませんか?
914nobodyさん:2006/01/12(木) 20:08:39 ID:???
>>913
リファレンス渡し自体をしなければいい。
915911:2006/01/12(木) 20:49:12 ID:???
>>912
単純に書けば、こんなもんだ。
スマートに書きたいのなら、自分で工夫する。
print("<table>\n");
$i = 0; // 行数を単純にカウント
while($col = mysql_fetch_array($rst)) {
 if($i == 0) {
   print("\t<tr bgcolor=\"#ffffff\"\n");
   $i++;
  } elseif($i == 1) {
   print("\t<tr bgcolor=\"#000000\"\n");
   $i++;
  } else {
   print("\t<tr bgcolor=\"cccccc\"\n");
   $i = 0; // 3行目に来たら、行数を0にして、最初の背景色に戻す
  }
  print("\t\t<td>$col['あああ']</td>\n");
  print("\t\t<td>$col['いいい']</td>\n");
  print("\t\t<td>$col['ううう']</td>\n");
  print("\t</tr>\n");
}
print("</table>\n");
916912:2006/01/12(木) 21:30:28 ID:pSKfqlaX
>>915
ありがとうございます!
悩んだ結果一応ちゃんと動作するコードを書けたことを報告にきたのですが、
見にきたらコード全文が載っててびっくりしました。

僕の書いたコードはこれです。

while ($col = mysql_fetch_array($rst)) {

$col[0]=0;
@$i++;
if ($i%2 == 0) {
$body .= "<tr bgcolor='#ffffff'>";
}
else {
$body .=  "<tr bgcolor='#cccccc'>";
}

$body .= "<td>".$col["あああ"]."</td>\n";
$body .= "<td>".$col["いいい"]."</td>\n";
$body .= "<td>".$col["ううう"]."</td>\n";
}
$body .="</tr>";
917912:2006/01/12(木) 21:31:26 ID:pSKfqlaX
$col[0]には自動採番のインデックスが入っていて、
レコードを削除したりすると欠番になったりするので、
強引に$col[0]=0;とやって++しました。
++の前に@を付けないと、Noticeエラーがでます。

これは、ダメな感じの書き方なんでしょうか?アドバイスお願いします。
今から915さんのコードと比較検証します。

918nobodyさん:2006/01/12(木) 23:13:02 ID:???
>>917
> ++の前に@を付けないと、Noticeエラーがでます。
$i = 0; ってどこかでやってる?
$col[0]=0; も謎…
919911:2006/01/13(金) 00:11:54 ID:???
>>917
> ++の前に@を付けないと、Noticeエラーがでます
>>918が指摘しているけれど、変数 $i を必ず初期化すること。
Notice エラーが出るのは、$i++; を記述する前に、
$i = 0; と初期化していないから。

> $col[0]には自動採番のインデックスが入っていて、
> レコードを削除したりすると欠番になったりする
必要のないカラムなら、SQL で SELECT する際にそのカラムを
取得しない。
必要なカラムなら、条件式でカラムに値が格納されているかどうかを
判定したら?
920nobodyさん:2006/01/13(金) 00:54:15 ID:???
>>916
css
.line0 { background-color: #ffffff }
.line1 { background-color: #cccccc }

$index = 1;

while ( …

$index = 1 - $index;
$body .= '<tr class="line' . $index . '">';

921912:2006/01/13(金) 01:00:42 ID:SV3c3aSx
レスありがとうございます。
915さんのコードを参考に、本を読んだりしながら検証した結果、
自分の書いたコードがいかにダメかわかりました。
確かに$col[0]=0は謎ですね...。というか、ホントに意味がないです。
mysql_fetch_arrayで取得した配列の中身をどうにかするものだと
思いこんでいた為にひらめいた苦肉の策でした。
変数の初期化はお約束のようなものなのでしょうか?
$i=0;をやらないと、Noticeエラーが出るというのは初耳です。
なにより、$hoge++というのを今まで使ったことがなかったので
かなり勉強になりました。
本当にありがとうございました。
922912:2006/01/13(金) 01:06:15 ID:SV3c3aSx
>>920
すごいシンプルですね。すばらしいです。
$hoge++とかはやらないんですか?
いまぱっと見ただけでは、$index = 1 - $index;
がどういう値を出すのか、自分には分からないです。
ちょっと本を読んで研究してみます。
ありがとうございます。
923911:2006/01/13(金) 01:10:53 ID:???
>>921
> $i=0;をやらないと、Noticeエラーが出るというのは初耳です。
基本的に変数の初期化は必須。今後、Java なり C をやればわかる。
今回、Notice エラーが出るのは、初期化されていない変数 $i には、
何も値が代入されていないため、$i++; をした際に、PHP はインクリメント後の
値が不明なため、Notice エラー が出るの。
そのため、$i = 0; と初期化することによって、0 + 1 = 1という加算が成立する。

もしかして、++$i; と $i++; も曖昧なようなら、演算式が詳しく書かれている
参考書から参考にした方がいいと思うよ。
924675:2006/01/13(金) 01:18:43 ID:FGHLzOq/
>>845
確かにそうですね。今度検証してみます。
ありがとうございます。
925nobodyさん:2006/01/13(金) 01:21:18 ID:???
>>920の $index = 1 - $index; にちょっと感動。
こういうやり方もあるんだねぇ。

>>922
いや、本を読んでも分からないと思う。
ちょっと考えれば分かることだから、紙にでも書いてじっくり考えてみて。
分かるときっとプログラミングが楽しくなるよ。
926nobodyさん:2006/01/13(金) 01:21:55 ID:???
$color = "";
while ( … ) {
$color = ($color == "#ffffff")? "#cccccc" : "#ffffff" ;
echo "<tr bgcolor=\"$color\">\n";

これも置いとくね
927nobodyさん:2006/01/13(金) 09:35:55 ID:???
ところでNoticeってエラーなのか?
928nobodyさん:2006/01/13(金) 09:37:06 ID:???
>>922
> いまぱっと見ただけでは、$index = 1 - $index;
> がどういう値を出すのか、自分には分からないです。

どういう値を出すのかは、
その直後にecho $indexとでもすれば分かること。
変数の中身を表示して確認しながらやると分かりやすくなるぞ。
929nobodyさん:2006/01/13(金) 11:32:17 ID:???
>>927
一応エラーだね。
『これは、スクリプト実行時に何かエラーが発生したが、
通常のスクリプト実行を継続できることを示します。
例えば、値が設定されていない変数にアクセスしようとした場合や、
存在しないファイルについて stat() をコールした場合 です。』

NOTICE(通知) < WARNING(警告) < ERROR(エラー) の順。
NOTICE、WARNINGは実行を継続、ERRORは停止みたい。
930nobodyさん:2006/01/13(金) 11:35:19 ID:???
Noticeはなんか重箱の隅つついたようなモノばっかりでいやになった。
931nobodyさん:2006/01/13(金) 11:41:27 ID:???
初期化しないで使える、ほぼ形無し変数も凄いと思うけどな。
だから初心者でも使える仕様になっているんだしね。
932nobodyさん:2006/01/13(金) 11:49:55 ID:???
>>930
でもつぶしておくと変なハマり方しにくくなるのは間違いないよ
933nobodyさん:2006/01/13(金) 11:55:00 ID:???
そりゃそーだが、ほとんどの場合はそんなとこじゃはまらないようなものばかりで、
Notice対応の方がバグ潰しよりよっぽど手間にならないか?
何のために省略ができるようになってるのか考えると不毛だと思うんだけどな。
934nobodyさん:2006/01/13(金) 12:05:00 ID:???
別に全部の省略が Notice 対象になるわけじゃないし、そんなに
手間とも思わないけど。
935nobodyさん:2006/01/13(金) 12:10:52 ID:???
変数名が被ったりすると、たま〜に変数の初期化忘れて嵌る時があるw
936nobodyさん:2006/01/13(金) 12:18:10 ID:???
$array = array('foo', 'bar', 'baz');
$new_array = array();
foreach ($array as $item) {
 $new_array[] = $item . '.html';
}

これを一発でやってくれる関数はありますか?
マニュアル読んだのですが、それらしいのが見つかりませんでした。
しかしPHPならあるんじゃないかと思って、質問してみました。

937nobodyさん:2006/01/13(金) 12:31:04 ID:???
>>936
$new_array = array_map(create_function('$v', 'return "$v.html";'), $array);
938889:2006/01/13(金) 12:31:37 ID:???
>>936
>>936
俺に出来るのは
<?php
$array = array('foo', 'bar', 'baz');
array_walk($array, create_function('&$v', '$v = $v.".html";'));
var_dump($array);
?>
ここまでだ
939nobodyさん:2006/01/13(金) 13:02:14 ID:???
>>935
そんな変数名がかぶるような長いブロック書いちゃダメ
(ひょっとすると全部グローバルかもしれんが)
細かく function で分けるべし
class にしてしまえば必要なものだけ var で(class内で)
共有できる

オブジェクト指向とか考えなくてもメリットは大きいぞ
940nobodyさん:2006/01/13(金) 13:06:12 ID:???
>>914
できればそうしたいのですが、
70kBほどのXMLのオブジェクトを扱いたいので、 それを値渡しするのはできるだけ避けたいと考えています。
941nobodyさん:2006/01/13(金) 13:27:19 ID:???
>>940
値渡し(&を使わず代入)を避ける必要がない。素直に書けば不必要なコピーは起こらない。
パフォーマンス改善を目的とするリファレンス渡しはいかなる場合も避けるべき。
942nobodyさん:2006/01/13(金) 13:29:31 ID:???
>>937,938
そのものズバリという関数はないということですね。
素直に関数を定義します。
ありがとうございました。

function array_suffix($array, $suffix) {
 if (! $array) return NULL;
 $array2 = array();
 foreach ($array as $item) {
  $array2[] = $item . $suffix;
 }
 return $array2;
}
943nobodyさん:2006/01/13(金) 14:14:30 ID:???
>>942
贅沢なやつだな。
$new_array = preg_replace('/$/', '.html', $array);
944nobodyさん:2006/01/13(金) 16:46:16 ID:???
>>941
分かりました。
PEARのDBのサンプルソースに&が必ずついているので、参照渡しは必須のものだと思っていました。
ありがとうございます。
945nobodyさん:2006/01/13(金) 21:35:56 ID:???
perlでいうuse encoding()に当たる関数ってないですか?
946nobodyさん:2006/01/13(金) 23:12:04 ID:???
use encodingは関数じゃないよーな。
そんでもってPHPはその機能は内蔵してないか。
php.iniで入出力文字コードの設定するだけじゃないの?
947nobodyさん:2006/01/14(土) 00:44:57 ID:???
>>945
Perlは知らないけど、>>946の話を聞く限り
mb_http_output() と mb_internal_encoding() あたりじゃないかと思われ。
php.iniいじったり ini_set() 使うのもありだけど。
948nobodyさん:2006/01/14(土) 04:30:51 ID:???
外部ファイルに設定データなんかを保存している場合、
変数への代入等のPHP文をそのファイルに記述してrequireするのと、file()で読み込んで本体のスクリプトで処理するのとではどっちの方が軽快に動くんでしょうか?
949nobodyさん:2006/01/14(土) 04:38:46 ID:???
ほとんどの場合、requireの方が速くなるかと
950nobodyさん:2006/01/14(土) 07:45:24 ID:aUotD7Tf
クラスのextends元を動的に選択することはできますか?
951nobodyさん:2006/01/14(土) 11:56:08 ID:???
そんなにいろんなものが extends できるってのが作りとして
よく分からないが…

逆に聞きたい。なんでそんなことしようと思ったの?
952nobodyさん:2006/01/14(土) 12:46:22 ID:???
とある事情でbody[1]の中にHTMLソースが入ってるんですがこれの中身をまた一行ずつ配列に格納するにはどうすればいいにでしょうか?
953nobodyさん:2006/01/14(土) 13:00:35 ID:???
改行されてるとこで分割すればいいじゃない。
954nobodyさん:2006/01/14(土) 13:15:18 ID:???
>>952
explode()
955nobodyさん:2006/01/14(土) 13:45:50 ID:???
>>953-954
解決できました。
どうもありがとうございます。
956nobodyさん:2006/01/14(土) 15:29:15 ID:???
関数がない、という Fatal と、
array じゃないのを foreach して出る Warning を
検出するにはどうしたらいいでしょう?
957nobodyさん:2006/01/14(土) 15:30:09 ID:???
>>950
できない。パターンごとのextendsするクラスを作れば
958nobodyさん:2006/01/14(土) 15:36:54 ID:???
クラス定義のPHPコードを動的生成してevalするとかw
959nobodyさん:2006/01/14(土) 15:43:29 ID:/np9stAG
日付の質問です。
DBに入っている日付型データがn分経過しているかどうかを判定したかったんですが、
日付関数でn分経過した日付型を返すようなものが見あたりませんでした。
よい方法ないでしょうか?
960nobodyさん:2006/01/14(土) 15:49:01 ID:???
n分経過、でなく、n分前の日付データを生成して、それと大小比較すればいいんじゃないの?
961nobodyさん:2006/01/14(土) 15:49:38 ID:???
生成するのは「現在時刻のn分前の日付データ」ね。
962nobodyさん:2006/01/14(土) 15:52:43 ID:???
>>956
起きたエラーの検出じゃなくて
function_exists と is_array でチェックするって方法は?
963nobodyさん:2006/01/14(土) 15:56:49 ID:???
>>962
全部の関数呼び出しで書き間違いをチェックしてられないから
文法チェックみたいな形で一気に検出したい、ってことじゃないの?
理屈からいくと動的な関数呼び出しも可能なPHPで完璧なチェックってのは不可能なんだけど。

配列の方はis_arrayでチェックするのは割と基本だよね。
ま、直前で配列初期化してるようなものまで書き間違いによるミスが無いか
チェックしようとしてるんじゃないかと思ったりするけど。
書き間違いの可能性まで考えたらis_arrayに渡してる引数からして疑われるわけだし。
964nobodyさん:2006/01/14(土) 16:02:56 ID:???
>>962
どうしてもチェック抜けがあるので
それを検知したいんです。
965959:2006/01/14(土) 16:06:43 ID:???
>>960 ありがd〜
966nobodyさん:2006/01/14(土) 16:13:33 ID:???
>>964
エラーハンドラ定義して自分でやるって手もあるけど、
たぶん普通に地味にチェックしていく方が楽だと思うよ
967nobodyさん:2006/01/14(土) 16:14:01 ID:???
>>964
基本的には全ての条件パターンでのロジックを通して実行してみるってのは
プログラムテストの基本であり、それもできないやつはプログラマ失格なんだけどな。
(で、システム全体で全条件を通すのは非常に難しいので、関数単位で単体テストとかするわけだけど)
968nobodyさん:2006/01/14(土) 16:26:28 ID:???
正規表現で全ての文字(改行を含む)をあらわしたいのですが、
[.\n]って間違ってる?これを使うとなぜかうまくいかないです
969964:2006/01/14(土) 16:29:19 ID:???
>>966-967
おっしゃることもっともです。
とはいえ、全チェックや二重チェック、地道にテストをしても
人間がやることなんで抜けがあるのでシステム側で検知したいんです。
970nobodyさん:2006/01/14(土) 16:32:28 ID:???
配列初期化ミスとかは実行時の致命的エラーなんだから
事前にチェックする方法ってのは原理的に存在しないよ。
それって結局、ロジックによって通過先が変われば状態が変わってしまうもの。
諦めたら?
971nobodyさん:2006/01/14(土) 16:41:20 ID:???
>>968
間違ってる。[〜] の中での「.」はただの「.」という文字であって全ての文字は表さない。
「.|\n|\r」じゃないの?
972nobodyさん:2006/01/14(土) 16:43:32 ID:???
>>969
いやー
だからね、その方が難しいんだって
エラーハンドラの定義でも例外処理でもいいけど、その分
作り込む量は多くなるし、エラーの処理も全部チェックしなきゃ
いけないわけ。検知ったってさ、検知だけできてもしゃーないわけ
でしょ。何をしたいのか知らないけど、要求レベルがかなり
高いと思うよ
973968:2006/01/14(土) 16:45:43 ID:???
うわー言われてみればそうだわ、
めちゃくちゃはまってたんでマジ助かりました、ありがとう
974969:2006/01/14(土) 16:49:39 ID:???
>>970,972
ですね。例外を用意せずに
set_error_handler() のように Fatal や Warning, Notice をキャッチして
その場所をメールで報告、とかできれば楽だと思ったのです。
ありがとうございました。
975nobodyさん:2006/01/14(土) 16:53:29 ID:???
>>969
その目的って事前チェック?それとも致命的エラーを出してもユーザに見えなければOK?
後者だったらset_error_handler()でとりあえずお待ちください画面でも出してお茶濁しとけば。
976950:2006/01/14(土) 16:54:40 ID:aUotD7Tf
できないですか・・・

DBのデータを操作するDAOクラス(基本DAOクラス)があるんですが、
それのextends元クラス(DBクラス)を変更することで、
対応DB(MySQLなど)を選択することができるんです。

で、普段はこの基本DAOクラスをさらに継承した
個別アプリ用のクラス(拡張DAOクラス)を作成して、利用する形です。

基本DAOクラスはどのDBでも同じ内容(メソッド)なので、
拡張DAOクラスからDBを指定して、基本DAOクラスのextends元DBクラスを
選択できればと思った次第です。

今はextends元だけが異なる基本DAOクラスを複数用意していますが、
これは重複していて無駄だし、ソース改良時も複数ファイルで同じ変更を
しなくてはならず手間です。

設計を変えたほうがいいのかなあ。でもすぐにはいい方法を思いつきません。
977nobodyさん:2006/01/14(土) 16:55:44 ID:???
クラスのextends元を複数選択して、統合されたクラスを作成することはできますか?
978nobodyさん:2006/01/14(土) 17:02:06 ID:???
>>976
class定義の1行しか違わないんなら、元になるソースファイルを1個だけ用意して
それをベースに改良等を行い、修正したらバッチでDBの数だけ置換コピーして
実際に使用するクラス定義ファイルを生成する。みたいな手順にしちゃえば?
動的に実行時指定できるようにするほどの内容には思えないけど。
979nobodyさん:2006/01/14(土) 17:02:52 ID:???
>>977
PHPでは多重継承はサポートしていません
980nobodyさん:2006/01/14(土) 17:03:08 ID:???
>>976
extends したクラスをインスタンス化したものを保持する
ラッパークラスを作る

外からの操作はそのラッパーオブジェクトを介して行う
981950:2006/01/14(土) 17:23:30 ID:aUotD7Tf
>>980
$this->wrapper->method() となるのはちょっとやだなと思ってたのですが、
よく考えると、それをさらにラップすれば、$this->method() で取り扱えますね。
継承の階層が多くなっちゃいますけど、方法としてはこうなるのかな。
982977:2006/01/14(土) 17:24:01 ID:???
>>979
そうですか、ありがとう。
983nobodyさん:2006/01/14(土) 18:35:21 ID:???
>>980
Strategyパターン
984nobodyさん:2006/01/14(土) 18:37:40 ID:ILCMT976
こういう場合はどうすれば良いのでしょうか?

print("<strong>"$data[0]."</strong>は面白い\n");

こうすると「syntax error, unexpected T_VARIABLE」という
エラーが出てしまいます。
985nobodyさん:2006/01/14(土) 18:54:06 ID:???
986985:2006/01/14(土) 18:55:25 ID:???
と思ったら違った。
print("<strong>".$data[0]."</strong>は面白い\n");
「.」が抜けてるだけだ。
987nobodyさん:2006/01/14(土) 18:55:55 ID:???
>>984
$data[0] の前の . が抜けてるだけ
もっと頑張りましょう
988nobodyさん:2006/01/14(土) 18:57:35 ID:???
俺はこの種のミスを防止するため、文字列連結の . は必ず . の前後に空白を空けるようにしてる。
同様に引数区切りなどの , は後ろに空白を空けるようにしてる。
989nobodyさん:2006/01/14(土) 19:12:43 ID:ILCMT976
ホントだ、小さなミスを見落としていた。
もっとガンバロ((`・ω・)
990nobodyさん:2006/01/14(土) 19:53:46 ID:???
次スレ立てときましょうかね。
なんかここって本スレより勢いある上に
本スレよりまともな質問も多い気がするのは気のせい?w
991nobodyさん:2006/01/14(土) 20:01:56 ID:???
>>949
ありがとうございます
992nobodyさん:2006/01/14(土) 20:07:28 ID:???
次スレ

【PHP】下らねぇ質問はここに書き込みやがれpart15
http://pc8.2ch.net/test/read.cgi/php/1137236771/
993nobodyさん:2006/01/14(土) 20:28:39 ID:???
微妙だな、埋めろ。
994nobodyさん:2006/01/14(土) 20:29:11 ID:???
>>992
995nobodyさん:2006/01/14(土) 20:29:38 ID:???
次スレ

【PHP】下らねぇ質問はここに書き込みやがれpart15
http://pc8.2ch.net/test/read.cgi/php/1137236771/
996nobodyさん:2006/01/14(土) 20:29:46 ID:???
次スレ

【PHP】下らねぇ質問はここに書き込みやがれpart15
http://pc8.2ch.net/test/read.cgi/php/1137236771/
997nobodyさん:2006/01/14(土) 20:30:09 ID:???
次スレ

【PHP】下らねぇ質問はここに書き込みやがれpart15
http://pc8.2ch.net/test/read.cgi/php/1137236771/
998nobodyさん:2006/01/14(土) 20:30:17 ID:???
次スレ

【PHP】下らねぇ質問はここに書き込みやがれpart15
http://pc8.2ch.net/test/read.cgi/php/1137236771/
999nobodyさん:2006/01/14(土) 20:30:42 ID:???
次スレ

【PHP】下らねぇ質問はここに書き込みやがれpart15
http://pc8.2ch.net/test/read.cgi/php/1137236771/
1000nobodyさん:2006/01/14(土) 20:30:54 ID:???





次スレ

【PHP】下らねぇ質問はここに書き込みやがれpart15
http://pc8.2ch.net/test/read.cgi/php/1137236771/





10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。