トップページphp
1001コメント315KB

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

レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん2005/12/18(日) 10:10:12ID:???
PHPに関するくだらねぇ質問用スレです。
ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
次スレは>>970あたりが建てて下さい
過去スレは>>2
0002nobodyさん2005/12/18(日) 10:10:46ID:???
・過去スレ
【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/
0003nobodyさん2005/12/18(日) 10:12:55ID:???
1乙
0004nobodyさん2005/12/18(日) 10:13:22ID:???
超絶タイミングでの次スレ立て乙!>>1
0005nobodyさん2005/12/18(日) 10:14:18ID:???
以下のサイトのように、
Webページのキャプチャ画像をPHPで生成することはできますか?

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

実際にはそんな事はやってられないので、既存のブラウザが画面に描画したものを
キャプチャするという仕組みが使われる事が多い。
そのwebscanってのもそうじゃないかな?
キャプチャの方法は OS・ブラウザのapiに依存するのでPHPのスレの範疇じゃないな。
適切な板やスレで聞くとよい。
0008nobodyさん2005/12/18(日) 10:36:39ID:???
>>5
http://fula.jp/blog/index.php?no=r701
これもPHPやね
0009nobodyさん2005/12/18(日) 11:44:54ID:???
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初心者です。
0010nobodyさん2005/12/18(日) 11:55:34ID:???
>>9
訳すとこんな感じか。つーかなんで俺が訳さにゃならんのだっ!ビタン(AA略

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

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

※サーバで利用可能なモジュール及び関数リストの取得方法
<?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
0014nobodyさん2005/12/18(日) 12:55:52ID:???
>>13
テンプレに入れたって、ここで質問する人でそれ使って
ちゃんと確認できる人はいないでしょ。意味ねぇ。
0015nobodyさん2005/12/18(日) 12:58:07ID:???
なんでエラーが出てるのにそのまま質問するのか理解できん
0016nobodyさん2005/12/18(日) 12:58:43ID:???
>>9
sendmail.phpの132行目にあるforeachの変数が配列じゃないらしい。
プログラムの設定か何かをミスってる可能性あり。
あと、使ってるサーバーではmb_convert_encoding()がインストールされてないので
管理者に頼んで入れてもらわない限り動作しない。
0017nobodyさん2005/12/18(日) 12:59:58ID:???
>>15
同じPHPスクリプトがサーバーによって挙動が変わるというのが
理解できないからでしょ。
0018nobodyさん2005/12/18(日) 13:05:28ID:???
丸投げすれば誰かが解決してくれるだろうという発想なんだろうけど
こいつ自身が最大のバグだな
0019nobodyさん2005/12/18(日) 13:07:29ID:???
>>13
本スレのテンプレになら意味あるんじゃね?提案してみれば?
0020nobodyさん2005/12/18(日) 13:12:38ID:???
PHPのフリーなコンパイラーは存在しないのでしょうか?
有料ばっかりで・・・
0021nobodyさん2005/12/18(日) 13:19:07ID:???
そのコンパイラーとやらは何ができるの?
0022nobodyさん2005/12/18(日) 13:19:24ID:lBRzm0WN
>>20
有料なのを教えて
0023nobodyさん2005/12/18(日) 13:21:26ID:???
>>21
配布ソースのコード隠蔽じゃないの?
他にPHPコンパイラやPerlコンパイラの用途って無いと俺は思ってたけど。
0024nobodyさん2005/12/18(日) 13:32:29ID:???
>>22
20じゃないけど俺が知ってるのはこの辺。
ttp://www.zend.com/store/products/zend-encoder.php
0025nobodyさん2005/12/18(日) 13:35:28ID:???
peclにbcompilerがあるよβだけど
つかフリーソフトでコード隠蔽する必然性がないんだからさあ
クローズドで儲けたい人はそういう人同士だけでやればいいじゃん
0026nobodyさん2005/12/18(日) 13:56:54ID:???
コンパイルしたほうが実行速度早くなるとかないの?
0027nobodyさん2005/12/18(日) 14:01:37ID:???
大して変わらないか、むしろ遅くなりそうな…
速くするためならオプティマイザかコードキャッシュでしょう。
0028nobodyさん2005/12/18(日) 14:01:55ID:???
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;
}
}
0029nobodyさん2005/12/18(日) 14:08:04ID:???
('A`)マンドクセ
0030nobodyさん2005/12/18(日) 14:12:12ID:???
ひょっとして前スレのグローバルなインスタンスの人か?なんだこりゃ。
0031nobodyさん2005/12/18(日) 14:27:00ID:???
>>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];
}
0032nobodyさん2005/12/18(日) 14:28:37ID:???
>>31
リファレンスは静的に保持できませんよ
0033312005/12/18(日) 14:31:21ID:???
あ、駄目か。これじゃクラスAが生成されない。
というか、全てのクラスAが子供のクラスAを必要とするんだから、
原理的にこれは無限実行にならなきゃいけない設計なんだな。
この階層構造を見直さない限り、ロジックを見直そうと思っても無駄だわ。
0034nobodyさん2005/12/18(日) 14:41:52ID:jwrRezTg
http://***/example.php/1/
のような「/」を使用した変数を受け取るにはどうしたらいいのでしょうか?
0035nobodyさん2005/12/18(日) 14:47:26ID:???
$_SERVER["PATH_INFO"]
0036nobodyさん2005/12/18(日) 14:48:17ID:???
やはり孫classが一杯出来てしまうのですね。
最初は1つのclass内で全てを作っていたのですが、だんだん大きくなって来たので
分割しようと考えた次第です。その際にスマートに書き直したかったのであれこれと
変更を加えていたら嵌ってしまいました(^^;。

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

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

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

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

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

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

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

探し方だけでもよいので、よろしくお願いします。
0061nobodyさん2005/12/19(月) 00:57:44ID:???
>>58
その辺は好みかな。
元C言語プログラマとしてはsscanfの挙動は信用したくない…。
(入力内容がイレギュラーだった場合に変な挙動をすることがあるので)
速度を優先するならsubstrを、同時にフォーマットチェックも兼ねるなら
preg_replaceを、俺なら選択するな。
0062nobodyさん2005/12/19(月) 01:09:49ID:???
結局>>49の回答を導けない住人
SUGEEEEEEE!!111
0063nobodyさん2005/12/19(月) 01:16:17ID:???
>>62
はぁ?
とっくに答えは出ている。
49は理解する気も無いようだが。
0064nobodyさん2005/12/19(月) 01:20:56ID:???
そのまんまコピペで動くコードを書かなきゃいかんのかね?
0065nobodyさん2005/12/19(月) 01:40:35ID:???
型にはめないと使えないPHPってある意味すごいな。
0066nobodyさん2005/12/19(月) 08:11:53ID:???
>>65
自分の事しか考えていない65も負けてないよ
0067nobodyさん2005/12/19(月) 09:16:57ID:???
test
0068nobodyさん2005/12/19(月) 09:19:37ID:???
guest guest
0069nobodyさん2005/12/19(月) 10:26:05ID:???
オススメのエディタ、IDEはないですか?
0070nobodyさん2005/12/19(月) 10:28:52ID:???
>>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
0071nobodyさん2005/12/19(月) 12:39:54ID: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

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

ブラウザで「<〜>」がタグとして解釈されて表示上消えているだけ
という単純な問題である悪寒
0077nobodyさん2005/12/19(月) 13:44:14ID: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などに設定が必要なのでしょうか??
0078nobodyさん2005/12/19(月) 13:46:22ID:iBVZGmYt
訂正
誤 hoge.comのfunctionをlocalhostのPHPでinclude_onceしました
正 hoge.comのfunctionが書かれたPHPファイルをlocalhostのPHPでinclude_onceしました
0079nobodyさん2005/12/19(月) 13:48:05ID:???
>>77
localのどこにあるファイルをincludeしようとしてるんだ?
それ次第だろ。ちゃんと、エラー表示するようにしてみたら?
0080nobodyさん2005/12/19(月) 13:58:24ID:???
hoge.comにあるスクリプトをincludeしようとしているんじゃないか?

>>77
hoge.comがphpをパースしていたら、渡されるのは当然実行結果だけなので
hoge.comにある関数は実行できません。
たとえphpをパースしなくても(スクリプトそのままを渡してくるなら)
localhost内で実行されるので意に沿う結果にはならないと思われ。
どっちにしてもhoge.com内のスクリプトにある関数をlocalhostで実行するのは
無理があると思うけど。
0081nobodyさん2005/12/19(月) 14:09:55ID:???
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. 残りの処理を続行。
0082752005/12/19(月) 14:28:53ID: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番最初のでいいような気がするのですが、よくわかりません。
どこが問題なのでしょうか。
0083nobodyさん2005/12/19(月) 14:35:30ID:???
>>82
PHPのバージョンによって、mb_send_mail周りにバグがあります。

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

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

>>80-81
やはり無理があるようですね…
別の方法を模索したいと思います
ありがとうございました
0085nobodyさん2005/12/19(月) 14:42:44ID:???
>>84
よくわからんが、そのlocalじゃないほう(hoge.comは存在するので)にある、
関数とかのファイルってローカルにもってこれないのか?
0086nobodyさん2005/12/19(月) 14:46:21ID: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でなんとかなりませんでしょうか?
0087nobodyさん2005/12/19(月) 14:49:27ID:???
>>85
DB周りのfunctionらしいよ。
0088nobodyさん2005/12/19(月) 14:54:16ID:???
>>86
理由があってIPアドレス制限をしてるのだから、それを回避できるようなものじゃまずいかと。
まぁそれは置いておいて、自宅鯖を建てるくらしか手は無いんじゃないかねぇ。
0089nobodyさん2005/12/19(月) 14:58:30ID:???
>>87
それがDBのあるところになきゃいけない理由がわからんのだが……
0090712005/12/19(月) 15:00:43ID:???
>>74
RSSとTreeの他にもParserが居るんですね!
どうもです!
0091nobodyさん2005/12/19(月) 15:06:27ID:???
>>86
>私のIPからしか接続出来ない状態

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

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

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

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

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


宜しくお願いします。
0105nobodyさん2005/12/19(月) 17:48:28ID:???
mysqlって hoge=hoge+1 ってできなかったっけ?ってDB板向けの話の気が。。
0106nobodyさん2005/12/19(月) 17:50:37ID:???
>>105
できる。
0107nobodyさん2005/12/19(月) 17:50:50ID:???
>>105
ありがとうございます。
それでいけましたm(_ _)mペコリ
0108nobodyさん2005/12/19(月) 18:33:07ID:???
[ 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";
}
0109nobodyさん2005/12/19(月) 18:46:31ID:???
0と(aが見つからないときの)falseの区別がつかないから。
多分、==を===にするとうまくいく。

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

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

>>7

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ttp://www.aditus.nu/jpgraph/
ttp://www.asial.co.jp/products/jpgraph/
0198nobodyさん2005/12/21(水) 23:04:37ID:???
ライセンスの心配がある場合は、phplotってのもありかな。
0199nobodyさん2005/12/21(水) 23:19:31ID:???
ファイルをアップロードする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
0200nobodyさん2005/12/21(水) 23:57:58ID:???
>>199
$repnumが日本語で文字コードが絡んでるとエスパってみる
0201nobodyさん2005/12/22(木) 00:12:32ID:???
>>200さん
レスありがとうございます
$repnumには10や11など数字がはいっております…。
アプロダのあるphpは一つ上の階層なんですが、関係無いですよね。
0202nobodyさん2005/12/22(木) 01:37:25ID:???
>>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";
0203nobodyさん2005/12/22(木) 01:43:55ID:???
>>199
素朴な疑問なんだが、アップロードしてるってことは<form>のmethodはPOSTなんだろ?
なんでrepnumはGETで渡した値を参照してるの?
repnumの値をどこでどのように確認したのか気になる…
0204nobodyさん2005/12/22(木) 02:11:34ID:f6FkYizC
mail関数が使えない現象が出ています。
phpinfoのstandard項目にsendmail_pathの記述がない。

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

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

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

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

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

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

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

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

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

$repnum = Get_['repnum'];

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

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

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

へのリンクだけとなっています。
やはりform部分に問題がありそうでしょうか…?
0224nobodyさん2005/12/22(木) 11:33:13ID:???
>>223
b.phpに以下を足して中身を確認したら…
print_r($_POST);
print_r($_GET);
0225nobodyさん2005/12/22(木) 11:58:23ID:???
すみません。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
02262252005/12/22(木) 11:59:40ID: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_;
}
?>
0227nobodyさん2005/12/22(木) 12:10:58ID:???
>>223さん
レスありがとうございます。
もうすぐお昼なので、確認してみたいと思いますm○m

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

$_SERVER["PHP_SELF"]

ではないでしょうか?
0228nobodyさん2005/12/22(木) 12:14:27ID:???
ヒアドキュメントまったく使わない俺だがよく見る質問なので覚えた。
{}で括れと
0229nobodyさん2005/12/22(木) 12:16:35ID:???
>>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に変更シレ
02302252005/12/22(木) 12:17:07ID:???
>>227
速レス感謝です。
今、偶然、違う本に解決方法がのっていました。

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

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

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

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

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

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

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

新スレたったからいいや。
0249nobodyさん2005/12/22(木) 19:11:47ID: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)変数や引数の名を推測しにくい名に変更する。
ぐらいはしておく方が安心だと思います。

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

こんな文章書かずに/blog/xmlrpc.php でぐぐれば直ぐ解ると思うが・・・
釣りか-;
0251nobodyさん2005/12/22(木) 20:49:52ID: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ペコリ
0252nobodyさん2005/12/22(木) 20:58:05ID:???
>>251
submitのnameを統一して
<input type="submit" name="action" value="更新">
<input type="submit" name="action" value="削除">
if ($_POST["action"] == "更新") ・・・・・
ってやればいいんじゃね?
0253nobodyさん2005/12/22(木) 20:58:46ID:???
>>251
PC用のブラウザが相手ならその書き方で普通に動かないか?
携帯はボタン2個は無理な端末があるからどうしようもないけど。
0254nobodyさん2005/12/22(木) 21:09:07ID:???
>>250
釣りじゃないです。それほど詳しくないもので・・・。ありがとうございました。
0255nobodyさん2005/12/22(木) 21:09:21ID:wNhRz1jC
そんなまわりくどいことしないで素直にラジオボタンかセレクトボックス使えや
0256nobodyさん2005/12/22(木) 21:11:01ID:???
input type="password" の中で打ち込んだ後で、
よっこいしょっとリターンキーを押してるんじゃないかなぁ。
そんくらいしか不都合が起きるケース無さそう。
0257nobodyさん2005/12/22(木) 21:57:47ID:???
>>229さん
レスありがとうございます。
思ったより忙しくなってしまった為、現在まで仕事というハメになってしまいました。
ご報告が遅れてしまって申し訳ないです。

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

教えて下さった方々、本当にありがとうございました。
0258nobodyさん2005/12/22(木) 21:58:53ID:???
丁寧なレスだけどどうみて精子ですがチラついてしょうがない
0259nobodyさん2005/12/22(木) 22:01:37ID:???
>>258
今時精子ですも無いもんだ
0260nobodyさん2005/12/22(木) 23:08:50ID:???
配列の途中を削除して空いた場所を詰める関数はないのでしょうか?
$a = array(0,1,2,3);を$a = array(0,1,3);という風にしたいのです
unset($a[2])では空白が出来てしまいます
02612602005/12/22(木) 23:13:15ID:???
勘違いでした(・・;失礼
0262nobodyさん2005/12/22(木) 23:15:15ID:???
今酷い自爆を見た。
0263nobodyさん2005/12/23(金) 02:02:31ID:???
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++;
}

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

あとはこれか
ttp://www.tt.rim.or.jp/~rudyard/torii009.html
0267nobodyさん2005/12/23(金) 19:39:13ID:???
むしろ単に縦書きにするなら角度に270を指定すればいいんじゃ?って感じだが、
回転させないといけない特定の文字だけ1文字ずつ処理が必要な感じだな。
特定の文字が指定されたときだけ、1度別のイメージリソースに出力しといて、
それをimagerotate()で回転させてからimagecopymerge()で本来の画像に
マージコピーする、って手順じゃダメか?
0268nobodyさん2005/12/23(金) 20:46:42ID:???
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(^Д^)プギャー
0269nobodyさん2005/12/23(金) 20:52:53ID:gfPK9X7h
くだらない質問ですが、公式マニュアル見ようとしたら
>>268みたいなエラーが出て見れなかったので質問させてください。


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

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

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

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

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

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

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

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

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

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

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

Content-Type: image/jpeg; name="日本語"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="日本語"
0312nobodyさん2005/12/25(日) 15:52:29ID:???
>>306
file_put_contents("ファイル名", "");
0313nobodyさん2005/12/25(日) 16:12:23ID:???
現在1つのPHPで1つのページしか出力できないんですが、
複数のページを出力するようにしたいと思っています。
PHP等でできた掲示板を見ると、修正削除などの処理を、
1つのPHPでできるようになってますよね?
語尾に?mode=modifyとかついているやつです。
ソースを見てもいまいちわからなかったのですが、
どういった関数?を使えばいいのでしょうか?
やり方などにもヒントがあれば教えていただきたいです。
0314nobodyさん2005/12/25(日) 16:23:58ID:???
スナソ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=
の方でデータ形式を特別に時間の形式を指定してやらなければならない様な事は
無いのでしょうか?
御教授お願いします。
0315nobodyさん2005/12/25(日) 16:33:06ID:???
盛り上がりに欠けるのは
聞き方がまずいからだろうね
0316nobodyさん2005/12/25(日) 16:42:42ID:???
>>313
特に関数がある訳ではない。
ifとかswitchなどで処理を切り替えてるだけ。
0317nobodyさん2005/12/25(日) 16:53:33ID:???
>>313
んじゃヒント

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

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

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

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

件名を省いて以下のようにすると受け付けてくれるのですが件名を加えてメールを受信して貰う方法は
ないのでしょうか?。
$headers = "From: <test@test.co.jp>"
0346nobodyさん2005/12/26(月) 18:10:13ID:???
>>345
$headers = "From: ".mb_encode_mimeheader(mb_convert_encoding($char,"JIS"))." <test@test.co.jp>"
としたら?
0347nobodyさん2005/12/26(月) 18:25:19ID:???
迷惑メールフォルダに入ってたりして。
0348nobodyさん2005/12/26(月) 18:33:40ID:???
>>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=?= <test@test.co.jp" To = "test@hotmail.co.jp" Failed !
SMTP-Error = "501 Invalid Address"
SMTP-Server = "pamx1.hotmail.com."
0349nobodyさん2005/12/26(月) 18:46:10ID:???
>>348
ちなみに345には「件名」ってあるけど、Subjectのことじゃないんだよね。
0350nobodyさん2005/12/26(月) 19:05:36ID:???
>>349
Subjectです。ホットメールから逆に送ってみて比較したりするのですが良くわかりません。
ISO-2022-JPでエンコードしたら日本語が使えるというものではないのでしょうか?。
0351nobodyさん2005/12/26(月) 19:12:04ID:???
>>350
へ?
お前、Fromのとこに書いてるじゃん。
0352nobodyさん2005/12/26(月) 19:13:10ID:???
>>351
mailもしくはmb_send_mailのパラメーターをよくみてみな。
0353nobodyさん2005/12/26(月) 19:21:33ID:???
>>348
エラーメッセージは「そのアドレスは無効」と言っているから,
日本語云々以前の問題…というオチじゃないんだよね.
日本語入れなきゃ通るみたいだし.

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

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

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

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

x From: abc <testt@test.co.jp>\r\n
x From: abc test@test.co.jp\r\n
x From: <testt@test.co.jp>\r\n
o From: test@test.co.jp\r\n
0367nobodyさん2005/12/27(火) 10:18:51ID:???
>>366
ならmb_send_mailではなくてmailでやってみては?
0368nobodyさん2005/12/27(火) 10:30:05ID:???
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 で挙動が違う。
0369nobodyさん2005/12/27(火) 10:37:47ID:???
>>368
どう違うんだ?
0370nobodyさん2005/12/27(火) 10:37:59ID:???
Return-Path: っていうと、-f オプションで指定したんだね?
まさか extra-headers にReturn-Path:行を追加したのではないよね

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

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

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

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

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

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

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

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"))." <test@test.co.jp>\r\n";

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

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

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

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

だから "From: hoge <fuga@example.com>" の場合は

MAIL FROM: <hoge <fuga@example.com>>

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


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

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

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

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

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

おっしゃるとおりです

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

あれで 403 エラーページ作る気か…
03873812005/12/27(火) 15:16:55ID:???
失礼しました。
上手く出来なかったのです。
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
となっています。

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

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

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

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

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

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

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

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

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

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

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

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

あるなら、よろしければ関数名だけでも教えてください
0409nobodyさん2005/12/28(水) 20:20:52ID:???
>>408
file_get_contents
0410nobodyさん2005/12/28(水) 20:42:21ID:???
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側にスタイルの制限あったりでしょうか?
0411nobodyさん2005/12/28(水) 20:46:46ID:???
次のような文字列 $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 を渡すことができないため、できなさそうです。

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

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

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

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


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

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

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

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

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

IP
時刻
IP
時刻




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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ま、趣味で書いてる分には別に構わないけど、それなら他人に質問すんなって感じ。
自分の使ってるバージョンのマニュアルも読まずに質問するのは失礼じゃね?
0472nobodyさん2005/12/30(金) 04:30:28ID:???
どうでもいい
0473nobodyさん2005/12/30(金) 04:58:26ID:???
現場も9割方はレベル低いから大丈夫!w
0474nobodyさん2005/12/30(金) 10:31:47ID: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エラーが発生します。
どうすれば良いでしょうか?
0475nobodyさん2005/12/30(金) 10:37:30ID:???
むーぶ_アップロード_ファイル
0476nobodyさん2005/12/30(金) 10:38:17ID:???
>>474
>Fatal error: Call to undefined functionエラーが発生します。
>どうすれば良いでしょうか?
エラー表示を全部書かないのは嫌がらせか?
あとエラー行の位置を示さないのも嫌がらせの一種だからな。
0477nobodyさん2005/12/30(金) 10:39:39ID:???
あと、function copyfile{}って書き方は見た事が無いが
()は省略可能かどうかは確認したか?
0478nobodyさん2005/12/30(金) 10:40:56ID:???
> Call to undefined function 〜
つーのは、 〜って関数が定義されて無いのに呼び出そうとしたのでガッした、って事。
0479nobodyさん2005/12/30(金) 10:41:43ID:???
>>476
失礼。
Fatal error: Call to undefined function: copyfile() in /home/rika/public_html/test/select.php on line 23

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

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

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

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

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

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

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

ここ

}

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

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

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

エスパーキボン
0524nobodyさん2005/12/31(土) 10:16:32ID:???
そもそもスレ違い
0525nobodyさん2005/12/31(土) 11:03:55ID:???
>>522
そうだ、sourceforgeでいいじゃん。
ミラー管理、会員管理、ファイルのバージョン管理、ML、
なんでも付いてるphp製アップローダだぞ
0526nobodyさん2005/12/31(土) 11:21:27ID:???
>>522

http://pc8.2ch.net/test/read.cgi/mysv/1128273012/605
0527nobodyさん2005/12/31(土) 14:26:52ID:NkWpneAF
>>424
返事がおくれましたが、それでいけました。あまりに素っ気ない回答だったんで最初はわからなかったんですが、
よくみてみるとeオプションなんてのがあるんですね、勉強になります。
どうもありがとうございました。
0528nobodyさん2005/12/31(土) 16:26:59ID:ytK+M4x0
サーバにMySQL(MyISAM)がインストールされているかどうかを
調べる構文はありますか?
0529nobodyさん2005/12/31(土) 16:31:00ID:???
>>528 phpinfo()
0530nobodyさん2005/12/31(土) 16:50:24ID:???
>>529
MySQLライブラリがPHPに組み込まれているかどうかでは無く、
MySQLがサーバにインストールされているかどうか、
そのMySQLでMyISAMが有効であるかどうか、です
0531nobodyさん2005/12/31(土) 17:00:17ID:???
>>530
PHPから使えなくてもMySQLが入ってればいいってこと?
PHPから使えない=PHPからアクセスできない=MySQLが入ってても認識できない
ってことだから「構文」としてはそんなものは存在しないと思うけど。

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

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

送信元 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で情報を送ったものは失敗しているようで表示されません
0537nobodyさん2006/01/01(日) 00:28:09ID:???
送信元 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="クリア">
0538nobodyさん2006/01/01(日) 00:29:27ID:???

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

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

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

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

>>464
ごめんなさい。
マニュアル読んで勉強します。
0545nobodyさん2006/01/01(日) 00:57:48ID:???
>>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);
}
0546nobodyさん2006/01/01(日) 03:08:25ID:???
>>544
君はマニュアルより先に、プログラミングの基礎みたいな本を読んだ方がいいと思う。
マニュアルは命令一覧とかは書いてあってもロジックの書き方は書いてないから。
05474342006/01/01(日) 03:12:23ID:xNWERqNS
>>546
なるほど、本ですか…
ifも他人のスクリプトのソースみて覚えたものなので…

本やサイトを見て勉強したいと思います。
ありがとうございました。
0548nobodyさん2006/01/01(日) 03:23:21ID:???
PHPでバイナリが入っている変数から何文字目から何ビット切り出す方法はありませんか?
substrはバイトごとみたいで
0549nobodyさん2006/01/01(日) 03:43:16ID:???
バイト単位で切り出した上でビット演算をかけるしかないと思う。
0550nobodyさん2006/01/01(日) 07:02:18ID:???
>>548
バイナリなのか文字列なのかどっちだよw
おまえみたいな素人はしねよ。
0551nobodyさん2006/01/01(日) 08:02:55ID:???
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?
0552nobodyさん2006/01/01(日) 08:24:16ID:???
>>551
substrと関係ないどころかPHPとすら関係ない環境依存。
0553nobodyさん2006/01/01(日) 08:25:39ID:???
PHPのglob()は、glob('**/*.php') でディレクトリを再帰的に辿ってくれないんでしょうか。
あるいは、辿ってくれるような関数はないでしょうか。
0554nobodyさん2006/01/01(日) 09:43:59ID:???
PHP 5.1.1 Released
0555nobodyさん2006/01/01(日) 10:29:42ID:???
>>550
すみません〜
「何文字目」じゃなく「何ビット目」ですね。
あと他の人が作ったスクリプトなど読んでいるとやはりビット演算で求めているみたいなんで
それでやってみます。ありがとうございました。
0556nobodyさん2006/01/01(日) 10:38:01ID:???
>>553
無いんじゃないかな
再帰的に処理させるだけだから自分で作ると良いと思う。
0557nobodyさん2006/01/01(日) 10:56:10ID:???
>>556
ありがとうございます。ないのが確認できただけでもよしとします。
今から自作してみようと思いますが、もしかしたらまたここで聞くかもしれませんが、
そのときはよろしくお願いします。
0558nobodyさん2006/01/01(日) 12:00:44ID:???
質問です。

htmlspecialcharsで変換した文字列から、変換前の文字列に戻すにはどうすればいいですか?
0559nobodyさん2006/01/01(日) 12:03:54ID:???
>>558
逐一置換
0560nobodyさん2006/01/01(日) 12:15:48ID:ckK+9Xqr
>>559
やっぱりそれしかないんでしょうか…
html_entity_decodeで戻せることはわかったんですけど、サポートしてるのが4.3以上だから厳しい…
0561nobodyさん2006/01/01(日) 13:20:34ID:???
>>560
4.3より古いバージョンを使ってるほうがよっぽど厳しいというかなんというか・・・
0562nobodyさん2006/01/01(日) 13:44:05ID:???
関数化しときゃいいだろ。
0563nobodyさん2006/01/01(日) 14:25:36ID:???
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 相当の動作になると思っていたのですが、勘違いですっけ?
0564nobodyさん2006/01/01(日) 22:46:05ID:???
>>563
ディレクトリの区切り文字がスラッシュとは限らない
http://jp.php.net/manual/en/function.mkdir.php#53075
05655632006/01/02(月) 10:55:07ID:???
>>564
MacOS X でやっているので、スラッシュで問題ないと思います。
0566nobodyさん2006/01/03(火) 00:05:44ID:???
<?php mkdir("hoge/geji", 0777); ?>
<?php mkdir("hoge", 0777, TRUE); ?>

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

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

マニュアル読めばそっくりそのまま出てるんだがな。
0570nobodyさん2006/01/03(火) 12:14:24ID:???
<?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を使用する
方が安全なんでしょうか??
0571nobodyさん2006/01/03(火) 12:21:09ID:???
つurl_encode_in_sp
05725702006/01/03(火) 12:54:37ID:???
>>571
英語版マニュアルも検索しましたが、url_encode_in_spというのは
見当たらないのですが・・・。

あと、>>13のソースで確認しましたが、サーバでは有効でないようです。
(PHP 5.0.5です)
0573nobodyさん2006/01/03(火) 13:38:38ID:???
>>572
url_encode_in_spなんてものは知らない(ググル先生もご存知無い)けど、
鯖に文字として#を渡したい場合は、urlencodeで十分だよ。
ブラウザによって変わるつーのは単に確認ミスでしょ。
0574nobodyさん2006/01/03(火) 15:24:35ID:dg0Kk76m
ほんっとくだらない質問ですみません。PHPはPerlより簡単っていいますけど、
何%くらい簡単なんですか?概算でかまいません。
0575nobodyさん2006/01/03(火) 15:37:40ID:???
$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などの場合です。
0576nobodyさん2006/01/03(火) 15:40:37ID:???
>>574
そんな質問をするあなたにはとても難しいです><
0577nobodyさん2006/01/03(火) 15:44:00ID:???
>>574
だいたい2%くらい
0578nobodyさん2006/01/03(火) 15:47:52ID:???
>>574
お手軽にいじる分には30%くらい。
真面目にチューニングはじめると-10%くらい。
0579nobodyさん2006/01/03(火) 15:49:19ID:???
>>574
Perlが理解できてれば超簡単。10%くらいの時間であっさり習得。
WebProg初めてならどっちもさほど変わらん。
0580nobodyさん2006/01/03(火) 15:50:41ID:???
>>575
> Apacheのテストページが表示されるURLはhttp://hogehoge/?id=hogeなどの場合です。
その指定の場合には、どういうURLにアクセスすれば正解の予定なんでしょう?
0581nobodyさん2006/01/03(火) 15:54:11ID:???
>>575
同じURLをブラウザで開けば正常に表示されるって意味?
前情報がすっぽ抜けすぎててわけわからん。
0582nobodyさん2006/01/03(火) 16:06:24ID:???
何%簡単って、100%簡単だとどういう状態?
0583nobodyさん2006/01/03(火) 16:35:09ID:???
>>581
同じURLをプラウザで開けば正常に表示されるということです。
本来ならUser-agentを偽装した状態でそのURLのページを表示するってことです。
それが何故かApacheのテストページに・・・
0584nobodyさん2006/01/03(火) 16:59:26ID:???
>>583
hint:port
05855632006/01/03(火) 18:02:58ID:???
>>566
どうもありがとうございます。

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

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

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

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

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

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

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

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

[PHP]フレームワークについて語るスレ2[総合]
http://pc8.2ch.net/test/read.cgi/php/1135847024/
05975942006/01/03(火) 23:35:32ID:???
>>596
そっちで質問するとここは語るスレだと怒られたので…
0598nobodyさん2006/01/03(火) 23:45:15ID:???
もしかして
> Mojavi初心者なんですが
> エスパー募集してもよろしいでしょか?
って書いた人?
だとしたらその後、質問はOKだけどエスパー募集はナシっていう流れだったんだけど。
0599nobodyさん2006/01/04(水) 00:05:04ID:???
>>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のテスト環境は会社に行けばあるから正月終わるまで待ってくれれば試してみる。
0600nobodyさん2006/01/04(水) 01:01:05ID:???
他人が書いたソース読んでたら

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

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

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

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

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

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

<?php mkdir("./hoge/geji", 0777, TRUE); ?>
<?php mkdir("/usr/hage/hoge/geji", 0777, TRUE); ?>
だな
06056002006/01/04(水) 01:34:26ID:???
>>601
ありがとう!!
0606nobodyさん2006/01/04(水) 14:08:10ID:???
$_SERVER['PHP_SELF']って偽装できますか?
0607nobodyさん2006/01/04(水) 14:47:33ID:???
スパムメールを送るんですか?
0608nobodyさん2006/01/04(水) 14:55:03ID:???
ちがう。
作ったスクリプトの<form >で結構使ってるから気になっただけだよ。
$_SERVER['QUERY_STRING']とかもどうでしょうか。
鯖がやられてなければ大丈夫だと思いますけど
どうでしょうか。
0609nobodyさん2006/01/04(水) 15:05:40ID:???
偽装する意味はあるの?
0610nobodyさん2006/01/04(水) 15:10:24ID:???
偽装される確率はどうなの?
0611nobodyさん2006/01/04(水) 15:25:21ID:???
偽装される確立を議論するなんて何考えてるの?
0612nobodyさん2006/01/04(水) 15:26:33ID:???
>>606
「偽装される」ってのが何を意味しているかは知らないけど、
echo $_SERVER['PHP_SELF];
とか
echo $_SERVER['QUERY_STRING'];
とかすると、クロスサイトスクリプティング脆弱性が出来上がるよ。
'
>>610
セキュリティを考える場合確率は関係ないだろ。
06136122006/01/04(水) 15:27:07ID:???
echo $_SERVER['PHP_SELF'];
ねorz
0614nobodyさん2006/01/04(水) 15:28:34ID:???
なんで
echo $_SERVER['PHP_SELF];
がクロスサイトスクリプティングになるの
0615nobodyさん2006/01/04(水) 15:31:33ID:???
>>614
パスインフォが通るサーバ設定だと
/hoge.php/">
とかを$_SERVER['PHP_SELF']に入れられるから。
0616nobodyさん2006/01/04(水) 15:35:50ID:???
入力側を偽装する意味がわからん・・・
action属性を誤魔化すぐらいならwebサーバに直接叩きにいくだろうし。
0617nobodyさん2006/01/04(水) 15:39:08ID:???
>>616
クロスサイトスクリプティングをしらないのか!?
0618nobodyさん2006/01/04(水) 15:51:58ID:LqFUITlR
class Hoge{
var $hoge;
}
と、var宣言するのとしないのとで、機能的な違いは何かありますか?
0619nobodyさん2006/01/04(水) 15:53:36ID:???
Hoge->hogeで参照できん
0620nobodyさん2006/01/04(水) 15:54:58ID:???
俺もよく$_SERVER['PHP_SELF']つかうけど、
チェックボックスと、プルダウン選択だけなら問題ないよね?
セキュリティ考慮は全然してなかったからそろそろ考えないといかんな・・・
0621nobodyさん2006/01/04(水) 15:59:06ID:???
>>620
htmlspecialcharsを噛ませろ。

http://www.ipa.go.jp/security/awareness/vendor/programming/a01_02.html
http://takagi-hiromitsu.jp/diary/20051227.html#p01
0622nobodyさん2006/01/04(水) 15:59:10ID:???
トラックバック送るのまんどくせ
0623nobodyさん2006/01/04(水) 16:15:05ID:???
>>621
これはいい参考サイトを・・THX!
0624nobodyさん2006/01/04(水) 16:18:46ID:???
http://pear.php.net/package/Services_Trackback/
0625nobodyさん2006/01/04(水) 16:20:39ID:???
キーワードから関連するトラックバックURLやらpingurlやらを
自動で収集するプログラムないかな?
0626nobodyさん2006/01/04(水) 16:42:21ID:???
>>625
自分で探すか作るかしろよ。
06276182006/01/04(水) 16:42:38ID:LqFUITlR
>>619
宣言しなくても、値を入れれば参照できますよね?
0628nobodyさん2006/01/04(水) 16:58:59ID:???
>>627
public、protected、privateとか設定汁
ooするならあったほうがよし。
0629nobodyさん2006/01/04(水) 17:04:28ID:???
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コマンドを使用しても良いのでしょうか???
0630nobodyさん2006/01/04(水) 17:06:38ID:???
>>629
PEARはPHPで書かれた拡張
PECLはバイナリ形式の拡張
0631nobodyさん2006/01/04(水) 17:09:39ID:???
peclってどう読んでる?
pearはペアで間違いないと思うのだけど
06326292006/01/04(水) 17:16:41ID:???
>>630
速レスありがとうございます。
ではpearは推奨されないということではないのですね。
安心しました。

>>631
"pick・le"と読んでます。
ピクルス(漬物)だったかと。
0633nobodyさん2006/01/04(水) 17:20:14ID:???
>>625
マルチうざ
0634nobodyさん2006/01/04(水) 17:22:10ID:???
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
0635nobodyさん2006/01/04(水) 20:14:13ID:???
>>632
中身違うがな。推奨されないとかだれもいっとらんがな。
0636nobodyさん2006/01/05(木) 00:06:39ID:???
phpとmysql使うつもりですが扱う言語を気にする必要はないですよね?
てかphpはutf8扱えるんですよね?
0637nobodyさん2006/01/05(木) 00:50:34ID:???
>>636
>扱う言語を気にする必要はないですよね?
ある

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

$header = "From: ROBO-ONE事務局 <info@robo-one.com>"として

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

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

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

>>647
ありがとうございます。
正規表現のときはpreg_grepなんですね。
array_grepにすればいいのに・・・。
0649nobodyさん2006/01/05(木) 18:22:30ID:???
Perl互換の正規表現をコンパイルオプションでON/OFFしたときに
ごっそり利用可否が切り替わるんだから、関数名で識別できた方が分かりやすいよ
0650nobodyさん2006/01/05(木) 18:49:49ID:???
2ちゃんのトリップはcrypt関数を使うとおもうのですが
これに何を与えると2ちゃんと同じトリップになりますか?
0651nobodyさん2006/01/05(木) 19:21:46ID:???
FOXに聞け
0652nobodyさん2006/01/05(木) 19:58:29ID:???
ググればすぐでてくるのに
0653nobodyさん2006/01/05(木) 20:16:34ID:???
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関数。
0654nobodyさん2006/01/05(木) 20:21:26ID:???
>>651
でもプログラムを作ったのはひろゆき氏じゃなくて?
0655nobodyさん2006/01/06(金) 02:27:52ID:???
>>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;
}
0656nobodyさん2006/01/06(金) 03:22:58ID:???
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
0657nobodyさん2006/01/06(金) 05:26:31ID:???
>>656
自己解決しますた
ただ$rendererの中身がないからエラーとなっていただけでした
すまそ
0658nobodyさん2006/01/06(金) 09:24:43ID:???
>>624
pear install Services_Trackback
とかしてもDLできないんだけどなんで?
というかlist-allしてもサービス関連のやつ出てこないし。
自動で探してきてくれるもんじゃなかったんだっけ。
0659nobodyさん2006/01/06(金) 09:41:07ID:???
>>658
α版だからじゃないか?

pear install Services_Trackback-alpha

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

register_globals = on というオチか?

>>661

return $test; // $test:Array

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

$test = a();
0667nobodyさん2006/01/06(金) 15:43:02ID:???
スマートに書かなくても動けばいいと思う。
0668nobodyさん2006/01/06(金) 15:51:01ID:???
>>667
保守性は重要
0669nobodyさん2006/01/06(金) 15:56:22ID:???
>>667
君は明日交通事故に遭う
0670nobodyさん2006/01/06(金) 16:20:20ID:???
富豪的プログラミング
0671nobodyさん2006/01/06(金) 16:25:38ID:???
>>667
スパゲッティが大好きで毎日食べてると見た。
0672nobodyさん2006/01/06(金) 16:30:20ID:???
セッションで質問ですが
$name = "aaa bbb";
$_SESSION['name'] = $name;
$name = $_SESSION['name'];
こんな感じで登録してから中身を取り出すと$nameがaaaになってしまいます。
これはスペース切られてるとおもうんですが、スペースごと登録する方法を教えてください
0673nobodyさん2006/01/06(金) 16:40:23ID:???
>>672
無理
0674nobodyさん2006/01/06(金) 16:45:45ID:???
あ、無理なんですか・・・
ちなみに、色々HPをみていると
$_SESSION['name'] = $name;
↑みたいにシングルクォーテーションを使ってたり
$_SESSION["name"] = $name;
ダブルクォーテーションを使ってたりするのですが
これの違いってなんでしょうか?
0675nobodyさん2006/01/06(金) 16:49:04ID:???
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のままでも
だいじょうぶになったのは、なぜなんでしょうか…。
0676nobodyさん2006/01/06(金) 16:52:55ID:???
>>674
単なる文字列の表現の違い。つかシングルとダブルの違いわかってるよな?
0677nobodyさん2006/01/06(金) 16:53:00ID:???
>>641
受信したメールのFrom:部分のソース貼ってみれば?
これだけの情報じゃ、原因が特定できない。
他で起こらないからMail.appのせいっぽいけど。
0678nobodyさん2006/01/06(金) 16:54:46ID:???
>>672
URLEncodeとか
0679nobodyさん2006/01/06(金) 17:01:40ID:???
>>676
PHPでの違いは知らね、Cなら文字と文字列だがな。
0680nobodyさん2006/01/06(金) 17:18:44ID:???
URLをフォームに入力してfopenなどで開いてfgetsなどで配列に一行ずつ格納した場合、<a href="http://〜/">のhttp://〜/を変数に格納するにはどうすればいいんでしょうか。
0681nobodyさん2006/01/06(金) 17:41:04ID:???
正規表現で取り出すのがいいと思うけど、
<a href="http://〜/">って形に絶対なっている(ダブルクォートされている)なら、

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

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

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

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

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

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

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

そういうものを利用できない場合は、
・じっくりソースを見る
・show_source()等を使って色がおかしい所を探す。
・エラーが出るあたりを適当に削除しながら、エラーになる/ならないポイントを探す。
0700nobodyさん2006/01/06(金) 20:38:37ID:???
たまにfunction名のつけかたで文句言われるけど、IDEは便利だね。
0701nobodyさん2006/01/06(金) 20:59:16ID:???
>>685
配列を一行一行読み込んで↓
if(preg_match('/<a href="([^"]*)/i',$line[1],$link))
やってるんですが参照した$line[1]に$linkを挿入して表示したいのですがどうしてもArrayになってしまいます。
0702nobodyさん2006/01/06(金) 23:15:36ID: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が同じ値の場合のみ処理を実行するようにしたいのですが
このままだと何も表示されないです。解決の手段をどなた様かお願い致します。
0703nobodyさん2006/01/06(金) 23:38:47ID:???
>>702
echoするなりdump取るなりして中身を確認してみては?
0704nobodyさん2006/01/06(金) 23:42:04ID:wWI7IcSM
外部JavaScriptをHTMLファイルに読み込む感覚で、HTMLファイルとは別に作成したPHPファイルを複数のHTMLファイルに読み込んで実行することはできますか?
0705nobodyさん2006/01/07(土) 00:51:43ID:???
>>704
require()
0706nobodyさん2006/01/07(土) 00:52:14ID:???
>>704
PHPファイルに外部のPHPファイルを読み込ませて実行させることはできる。
HTMLファイルに外部のPHPファイルを読み込ませても、(通常は)サーバ側で処理してくれないので実行させることはできない。
やりたいことは当然前者だと思うので、詳しくはマニュアルでincludeなりrequireなりを調べるがよろし。
0707nobodyさん2006/01/07(土) 00:55:47ID:???
>>702
$listrの行の数だけ$listの行を毎回explodeし直しとは糞重そうな書き方だな。
まー、それと動かないのは全然別問題だからいいけどさ。

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

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

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

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

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

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

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

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

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

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

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

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

Eclipse+dbg辺りかなぁと思っているのですが使用されてる方のコメント等聞けたらな、と
0716nobodyさん2006/01/07(土) 11:32:34ID:???
>>715
>>70のIDEスレで聞くといいかもよ。
07177152006/01/07(土) 11:36:33ID:???
>>716
ありがとうございます
統合環境スレ辺りでログ漁りしてみます
0718nobodyさん2006/01/07(土) 11:42:13ID:???
デバッガで追う前にテストちゃんとやれと思うんだが、どうか
0719nobodyさん2006/01/07(土) 12:21:51ID: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ディレクティブで書き換えても同様なので、
何かが後から強制的に書き換えているように思えます。
何か対応策をご存知の方、ご教示頂ければと思います。
0720nobodyさん2006/01/07(土) 13:49:10ID:???
>>719
ブラウザ側で Persistent Connection が無効になっていると
当然 Apache は Keep-Alive をしようとしない。
ブラウザ側の設定はどうなってるのか確かめた?
0721nobodyさん2006/01/07(土) 14:03:57ID:TbKqhVyi
配列の最後に要素を追加したいのですが例えばhoge => hello
というデータを入れたい場合どうしたらよいのでしょうか?
array_pushだと値だけなら格納できますがキーまで入れることできないみたいなので・・。
0722nobodyさん2006/01/07(土) 14:22:54ID:???
キーを指定している段階で「最後」という概念から外れると思うのだが。
0723nobodyさん2006/01/07(土) 14:35:18ID:TbKqhVyi
>>722 ・あれ・・
配列の認識自体間違っていたら教えてください。
例えば上の値を最初に入れたら
配列の中は 0 => hello,hoge=>hello でこれはあくまで1つの箱に入っているんですよね?
0724nobodyさん2006/01/07(土) 14:42:21ID:???
ばかだなー
0 => helloなんてどっからでてきたんだ。
つーかふつうに$array["hoge"] = "hello"ってやれば「最後」に入るし。
0725nobodyさん2006/01/07(土) 14:46:45ID:???
hoge => hello という記述自体が hoge がキーで hello が値という
意味なので、「上の値を最初に入れる」という段階でおかしい。

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

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

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

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

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

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

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

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

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

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





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

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

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

<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"

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

というか多分、$this->str1は中身が空っぽになってて、
それで何にでもマッチしちゃうだけじゃないの?という気がする。
0802nobodyさん2006/01/10(火) 16:09:17ID:???
>>800
"/\\\\+\/" は "/\\\\+/" の間違いじゃないのか。
最後の \ は何に対しての \ なんだよ。
0803nobodyさん2006/01/10(火) 16:24:04ID:???
>>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("ホゲ");
?>
0804nobodyさん2006/01/10(火) 16:55:37ID:Gn5rV4CT
mysql_escape_stringでエスケープした文字を元に戻す関数とかありますか?

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

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

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

広域指定が局所指定よりも優先されているわけですが、
これってクッキーの仕様に合致しているのかなぁ…。
0818nobodyさん2006/01/11(水) 00:00:43ID:???
PHPって、どのくらい勉強すればいいんかねぇ。
0819nobodyさん2006/01/11(水) 00:02:19ID: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))
というところは、そのままで全角スペースにちゃんと
マッチしているので、ますますわけがわかないのです。
なので、もしかしたら文字エンコーディングに起因する問題?とか
いろいろ考えたのですがよくわかりません…。
0820nobodyさん2006/01/11(水) 07:42:19ID:???
>>819
スクリプトの先頭に
ini_set("display_errors", 1);
error_reporting(E_ALL);
と書け。

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

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

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

より

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

の方が早いって聞いたんですけどマジですか?
0824nobodyさん2006/01/11(水) 12:29:42ID:???
早いのは
for($i = $max; $i ; -- $i)
じゃないのか?
でも微々たるもんだと思うけどね。
0825nobodyさん2006/01/11(水) 12:50:14ID:???
>>823
試せばすぐわかることじゃん
08268242006/01/11(水) 12:59:20ID:???
試してみた。
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の変数参照っておせー
0827nobodyさん2006/01/11(水) 13:22:09ID:???
PHP書くのにお勧めにエディタおしえて
0828nobodyさん2006/01/11(水) 13:40:48ID:???
>>827
エディタスレ、開発環境スレへどうぞ
0829nobodyさん2006/01/11(水) 13:43:51ID:???
>>826
4 と 1 の違いが分からない
他の言語と比べてくれなきゃ PHP が遅いのか分からない
0830nobodyさん2006/01/11(水) 13:51:56ID:???
http://www.asahi-net.or.jp/~dp8t-asm/java/tips/OptCompareZero.html
0831nobodyさん2006/01/11(水) 14:17:54ID:???
>>829
あれで分からないなら気にスンナ
0832nobodyさん2006/01/11(水) 14:22:10ID:h33/EqTj
データベース内にあるデータを消去するスクリプトを作成したいんだけど普通にdelet from ... を使ってアクセスすると
確認もないままに消してしまう。

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

参考
【PHP】質問スレッドpart32【php】
http://pc8.2ch.net/test/read.cgi/php/1136276300/4
0840nobodyさん2006/01/11(水) 15:40:29ID:???
>>838
echo $aa[0][0];
echo "{$aa[0][0]}";
0841nobodyさん2006/01/11(水) 15:50:27ID: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/";

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

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

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

こんなところで聞くだけ時間の無駄
0854nobodyさん2006/01/11(水) 19:23:12ID: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行目は白.....みたいな。
よろしくお願いします。


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

それにしても全角とは恐れ入った。
0856nobodyさん2006/01/11(水) 19:40:25ID:???
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;
}

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

行 $lineとして
色 $color[$line % $max]
0858nobodyさん2006/01/11(水) 19:58:53ID:h33/EqTj
JavaScriptでエンコードした文字をPHPのrawurldecodeで元に戻すことは可能ですか?
0859nobodyさん2006/01/11(水) 20:15:13ID:???
>>858
そのエンコードによる。
0860まっぷ2006/01/11(水) 20:35:46ID:+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/"
にしたりしてみたのですがエラーはかわりませんでした。

何分初心者ですのでつたない文章ですみません。
御指導いただければと思います。。
お願いします。
0861nobodyさん2006/01/11(水) 20:46:40ID:???
>>860
/usr/lib/php/20020429/php_mapscript.soを作る
08628542006/01/11(水) 20:50:00ID:923d4820
855,856,857
スタイルシートのclassを変数にして条件分岐ですね。
すばらしいですねー。
最近phpを勉強しはじめました。
forはなんとなく好きになれません。
array()っていうのも使ったことないです。
前途多難ですががんばります。
ありがとうございました。
0863nobodyさん2006/01/11(水) 21:04:06ID:???
じゃあ foreach かな
0864nobodyさん2006/01/11(水) 21:27:20ID:???
だったらwhileでええやん
0865nobodyさん2006/01/11(水) 21:44:45ID:a+2jPX+b
なんでもええやん
0866nobodyさん2006/01/11(水) 23:52:35ID:???
>>862
漏れは、普通にmysql_fetch_arrayでまわすけど、まわす前にカウント用の変数を$iとして、それが偶数のときはこのcssクラス、奇数のときは・・・って感じだな。
先に件数を取得しておくと、テーブルなんかおしゃれにできる。
(最後の一行がわかるから。)
0867nobodyさん2006/01/12(木) 00:33:48ID:???
まじで下らねぇだと思うんですが、インスコ段階で詰まってます。
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でやればいいだろ、って言われればそれまでなんですが。
原因が気になってオナニーもロクにできません。
あ、オナニーはインスコ中にやってたのでどうでもいいです。
とにかくよろしくお願いします。
08688672006/01/12(木) 01:24:21ID:???
自己解決しました。
オナニーして寝ます。
0869nobodyさん2006/01/12(木) 09:51:22ID:???
Smartyの {cycle}
0870nobodyさん2006/01/12(木) 11:17:59ID:???
キーと値が格納された連想配列を文字列としてシリアライズしたり、
文字列から連想配列へデシリアライズする手段をさがしてます。そういう便利なものないですか。
(PHP4です)

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

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

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

論理演算て・・・
0901nobodyさん2006/01/12(木) 18:26:26ID:???
>>900
シフトは算術演算って言っといたほうがよかったかい?
0902nobodyさん2006/01/12(木) 18:28:45ID:???
>>901
ビット演算だろボケが。論理演算はtrue/falseとかand/orの類。
0903nobodyさん2006/01/12(木) 18:34:58ID:???
確かにPHPでbool型を使いたくなる時がある
0904nobodyさん2006/01/12(木) 18:36:44ID:???
使ったらいいじゃない
0905nobodyさん2006/01/12(木) 18:37:00ID:???
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 という空のファイルが生成されているだけで、中身はなし。
何が原因なのか、誰か教えて…・
0906nobodyさん2006/01/12(木) 18:44:38ID:???
phpunitは使ったことないけど、
Numeric
Numecir の違いじゃないの?
09079052006/01/12(木) 19:04:16ID:???
>>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 関数の評価も有効になっているので、
設定の問題なのかどうかもちょっと切り分けられなくて、困っている…。
ググッても検索結果に参考になるものがないのが、利用者数が少ないのを物語っているよ。
09088542006/01/12(木) 19:06:04ID:pSKfqlaX
みなさんのレスを読んで納得したつもりだったのですが、
家に帰って帰ってみたら、やっぱり分かってませんでした。

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

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

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

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

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

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

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

もうちょっと格闘します。ありがとうございました。
0913nobodyさん2006/01/12(木) 20:03:14ID:???
以前、リファレンス渡しの話題で、リファレンス渡しをすると遅くなってしまう場合がありましたが、
ログをなくしてしまったので、どのような場合にすべきではないかもういちど挙げていただけませんか?
0914nobodyさん2006/01/12(木) 20:08:39ID:???
>>913
リファレンス渡し自体をしなければいい。
09159112006/01/12(木) 20:49:12ID:???
>>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");
09169122006/01/12(木) 21:30:28ID: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>";
09179122006/01/12(木) 21:31:26ID:pSKfqlaX
$col[0]には自動採番のインデックスが入っていて、
レコードを削除したりすると欠番になったりするので、
強引に$col[0]=0;とやって++しました。
++の前に@を付けないと、Noticeエラーがでます。

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

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

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

$index = 1;

while ( …

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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





次スレ

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





10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。