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

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

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

過去スレは>>2
2nobodyさん:2006/06/23(金) 02:15:16 ID:???
 本 ス レ は も う 無 く な り ま し た
3HTML_Template_Flexy:2006/06/23(金) 03:13:33 ID:???
【PHP】くだらねぇ質問はここに書き込みやがれ
http://pc5.2ch.net/test/read.cgi/php/1099322141/
【PHP】くだらねぇ質問はここに書き込みやがれpart2
http://pc5.2ch.net/test/read.cgi/php/1105218084/
【PHP】くだらねぇ質問はここに書き込みやがれpart3
http://pc5.2ch.net/test/read.cgi/php/1107780435/
【PHP】くだらねぇ質問はここに書き込みやがれpart4
http://pc8.2ch.net/test/read.cgi/php/1110697712/
【PHP】くだらねぇ質問はここに書き込みやがれpart5
http://pc8.2ch.net/test/read.cgi/php/1114787573/
【PHP】くだらねぇ質問はここに書き込みやがれpart6
http://pc8.2ch.net/test/read.cgi/php/1117945031/
【PHP】くだらねぇ質問はここに書き込みやがれpart7
http://pc8.2ch.net/test/read.cgi/php/1121100429/
【PHP】くだらねぇ質問はここに書き込みやがれpart8
http://pc8.2ch.net/test/read.cgi/php/1123431535/
【PHP】くだらねぇ質問はここに書き込みやがれpart9
http://pc8.2ch.net/test/read.cgi/php/1125716012/
【PHP】下らねぇ質問はここに書き込みやがれpart10
http://pc8.2ch.net/test/read.cgi/php/1127581425/
【PHP】下らねぇ質問はここに書き込みやがれpart11
http://pc8.2ch.net/test/read.cgi/php/1129582431/
【PHP】下らねぇ質問はここに書き込みやがれpart12
http://pc8.2ch.net/test/read.cgi/php/1130835396/
【PHP】下らねぇ質問はここに書き込みやがれpart13
http://pc8.2ch.net/test/read.cgi/php/1132921016/
【PHP】下らねぇ質問はここに書き込みやがれpart14
http://pc8.2ch.net/test/read.cgi/php/1134868212/
【PHP】下らねぇ質問はここに書き込みやがれpart15
http://pc8.2ch.net/test/read.cgi/php/1137236771/
4nobodyさん:2006/06/23(金) 03:14:33 ID:???
【PHP】下らねぇ質問はここに書き込みやがれpart16
http://pc8.2ch.net/test/read.cgi/php/1139146534/
【PHP】下らねぇ質問はここに書き込みやがれpart18
http://pc8.2ch.net/test/read.cgi/php/1142417901/
【PHP】下らねぇ質問はここに書き込みやがれ Part19
http://pc8.2ch.net/test/read.cgi/php/1144513878/
【PHP】下らねぇ質問はここに書き込みやがれpart20
http://pc8.2ch.net/test/read.cgi/php/1146165153/
【PHP】下らねぇ質問はここに書き込みやがれpart21
http://pc8.2ch.net/test/read.cgi/php/1148389517/
【PHP】下らねぇ質問はここに書き込みやがれ 22
http://pc8.2ch.net/test/read.cgi/php/1149710968/
5HTML_Template_IT:2006/06/23(金) 03:15:20 ID:???
・part17よりテンプレ化

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

hoge.php?_SESSION[user_pw]=hogehoge

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

extract($_GET)

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

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

それを避けるために

extract($_GET, EXTR_SKIP)

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

extract($_GET, EXTR_PREFIX_ALL, "get")

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


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

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・オブジェクト指向については良スレがないから本を買え
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
8nobodyさん:2006/06/23(金) 03:28:11 ID:???
関連リンク
■本家マニュアル   http://www.php.net/manual/ja/
■日本PHPユーザ会 http://www.php.gr.jp/
■PEARマニュアル  http://pear.php.net/manual/ja/
■メーリングリスト   http://ns1.php.gr.jp/mailman/listinfo/

 (以下英語)
■Smarty       http://smarty.php.net/
■Zend本家      http://www.zend.com/
■Zend Framework  http://framework.zend.com/
■php | architect   http://www.phparch.com/
■Smartyマニュアル http://smarty.php.net/manual/en/
■ZFマニュアル    http://framework.zend.com/manual/en/
■PECL本家(英語) http://pecl.php.net/

まだ英語しかないマニュアルも後々/manual/en/を/manual/ja/に変えてみたら日本語があるかもしれません。
9nobodyさん:2006/06/23(金) 03:41:07 ID:???
関連スレ
PHP関連の書籍 第3版
http://pc8.2ch.net/test/read.cgi/php/1150558685/
PHP関連サイト
http://pc8.2ch.net/test/read.cgi/php/982694601/
【PHP】PEAR Part2
http://pc8.2ch.net/test/read.cgi/php/1122899232/
【Smarty】PHPのテンプレートエンジン【Flexy】
http://pc8.2ch.net/test/read.cgi/php/1118799352/
[PHP]フレームワークについて語るスレ3[総合]
http://pc8.2ch.net/test/read.cgi/php/1145971945/
Webでオブジェクト指向プログラミング
http://pc8.2ch.net/test/read.cgi/php/1133489897/
【PHP】セッションについて語ろう!【PHP】
http://pc8.2ch.net/test/read.cgi/php/1064399467/
PHP統合開発環境スレ
http://pc8.2ch.net/test/read.cgi/php/1123912762/
最強のPHPエディタはなに?
http://pc8.2ch.net/test/read.cgi/php/1133785416/

[PHP-users MLヲチ9]丸投げした覚えは全くありません
http://pc8.2ch.net/test/read.cgi/php/1143731062/
中学生がPHPを習得するスレ
http://pc8.2ch.net/test/read.cgi/php/1139746974/
【PHP】Lvうpしたいので宿題ください
http://pc8.2ch.net/test/read.cgi/php/1147830986/
親切な人が初心者にPHPの関数を使い方を教える
http://pc8.2ch.net/test/read.cgi/php/1068190843/
くだすれPHP(超初心者用)
http://pc8.2ch.net/test/read.cgi/php/1150088761/
10nobodyさん:2006/06/23(金) 03:42:46 ID:???
関連板
データベース(SQL、DBMSの話題はこちら)
http://pc8.2ch.net/db/
プログラム(CLI、アルゴリズム、インタプリタの話題はおそらくこちら)
http://pc8.2ch.net/tech/
Web制作(クライアントサイドの話題は問答無用でこちら)
http://pc8.2ch.net/hp/
11nobodyさん:2006/06/23(金) 03:44:04 ID:???
【簡易FAQ】
1. ブラウザに何も表示されないんだけど・・・
 → error_reporting()や、php.iniのdisplay_errors、log_errorsを確認
2. include/requireに「〜.php?a=b&c=d」のようなパラメータをつけたい
 → できません
3. $a1, $a2, $a3 ... のような変数名をうまく扱いたい
 → 可変変数で実現できるけど、むしろ配列を使って$a[1], $a[2], $a[3]等とするのがベター
4. echo "$arr['hoge']['fuga']"; がうまくいかない
 → {おっぱい括弧}でくくって"{$arr['hoge']['fuga']}"にする
5. echo?print?
 → echoはコンマ区切りで書けるけど関数ではない。printは関数。パフォーマンスは気にするな
6. 値渡しと参照渡し(「&」を使う)のパフォーマンス
 → この二つはパフォーマンス目的で使いわけたらダメ。よく知らずに参照渡しにすると遅くなったりする
  参照渡しは引数に戻り値を設定したり引数を関数内で変更するなど、正しい目的に使うこと
7. CSVやTSVのファイルをスマートに扱いたい
 → まずはfgetcsv()
8. ファイル入出力関数(fopen等)でリモートファイル(http://〜とか)を扱う際の限界
 → fsockopen()でソケット通信 or PEARのHTTP系 or CURLで解決
  必要ならHTTPをはじめとする各種プロトコル(どんなデータを送受信するか)はRFCなどで調べる
9. 一定時間ごとに何かしたい
 → cron、タスクスケジューラ
10. 画像処理一般 or GDの限界
 → ImageMagick(PECLのやつ or シェルから実行)
12nobodyさん:2006/06/23(金) 03:48:15 ID:???
11. 画像・音・動画はファイルで保存?DBに保存?
 → 好きにしてください
12. クッキーの情報をユーザから隠したい
 → セッション使え。ただしクッキーとセッションは仕組みが違うから同じように扱うな
13. このスレに書き込むときに自分のサイト名を晒したくない
 → http://example.com/が例文などのために予約されている
14. SQLの質問はどこで?
 → データベース板に誘導されるのが嫌ならPHPにうまく関連させて質問する
15. 記号の意味がわからないけどググりようがない
 → 「@」 エラー表示を抑制、「->」 オブジェクトのメンバにアクセス
  「==」は暗黙の型変換をしてゆるい比較、「===」は型情報も含めた厳密な比較
16. 文字列のなかに、英字のみとか数字のみとか記号が入っちゃいやんとかはどうしたらいいの?
 → ctype_〜()が手軽。複雑なパターンはpreg_〜()あたりで正規表現を使う。
17. strip_tags()で削除しないタグを複数指定したい
 → strip_tags($html, '<a><p><font>'); // htmlspecialchars()も検討すべし
18. そもそもインストールの時点でうまくいかない
 → 確認すべきはPHPのconfigureの引数、php.iniの内容と置き場所、
  Webサーバの設定(Apacheならhttpd.conf)、起動&再起動あたり
19. PHPからPOSTリクエストしたい
 →8.を参照
13909:2006/06/23(金) 05:15:15 ID:lPdqGX0Z
さ、参考になりますねぇ^^;

みなさん書き込みお疲れ様です!
14nobodyさん:2006/06/23(金) 10:52:39 ID:8iUOatGT
>>7

なんでハードウェアを明記する必要があるんですか?機械語じゃあるまいし
15nobodyさん:2006/06/23(金) 11:13:55 ID:???
>>14
amd64とx86では同じOSを入れられるが挙動が変わることがある。
ってケースがあるからでしょ?
16nobodyさん:2006/06/23(金) 11:34:33 ID:???
file($data);でファイルを開くのと
$fp=fopen($data,"r");でファイルを開くのは何が違うのでしょうか?
17nobodyさん:2006/06/23(金) 11:58:14 ID:???
file()は有無を言わせず全部メモリに読み込んで終わり。
巨大なファイルを読み込んだりしたら大変なことになる。
fopen()なら任意の部分だけをメモリに読み込ませたり
同じ場所を何度も読んだりなど自由な処理ができる。
18nobodyさん:2006/06/23(金) 12:02:29 ID:???
>>16
率直に言うと、
flockを介して読み書きを行うスクリプトであれば、
単に file($data) で読み込むのはよくない。

例を挙げると、
表示する場合だけ file 、書き込みを行う場合は fopen(r+) から flock(2) とした場合でも、
fopen-flock 中のファイルでも、 file は問題なくファイルの内容を読み込んでくるからだ。

これは、flock中のプロセスが、ファイルを書き換えるために ftruncate(0) などを行って
ファイルの内容が0の時に 他プロセスがfileで読み込むと、
エラーもなく空のファイルを読み込んでくる。

以上から、もっともまずいスクリプトの書き方は、
$ar = file($data); で読み込んできた配列を処理して、その後
fopen(+r) flock(2) ftruncate(0) fputs するようなやり方だ。

ロックファイルを用いて処理全体のロックを行わないと、データが全部失われる可能性がある。
19nobodyさん:2006/06/23(金) 12:43:12 ID:???
>>15

そんな事例のニュースいままで聞いたことありません?
20nobodyさん:2006/06/23(金) 14:31:31 ID:???
>>19
そう。幸せなんだね。
21nobodyさん:2006/06/23(金) 17:04:24 ID:???
srand((double)microtime()*1000000);
$iro1=round(rand(1,4));//マーク
$iro2=round(rand(1,4));
$iro3=round(rand(1,4));
$num1=round(rand(1,13));//数字
$num2=round(rand(1,13));
$num3=round(rand(1,13));
//途中 略//
$card1=$mark1.$num1;
$card2=$mark2.$num2;
$card3=$mark3.$num3;

トランプ3枚を表示させようとしています。
echo $card1."-".$card2."-".$card3;
表示し終わってから戻るボタンでページを一枚戻り
進むボタンを押すとまたトランプが変わってしまいます。
進むボタンや戻るボタンでトランプを変わらないように
簡単にやる方法はありませんでしょうか?
22nobodyさん:2006/06/23(金) 17:08:53 ID:???
>>21
なにをやろうとしてるのかわからないけど、
クッキーに $mark1,$num1,$mark2 ・・・
を持たせておいて、
スクリプト実行時に、まずクッキーにデータがないかを読み込むようにすれば?
2321:2006/06/23(金) 17:20:44 ID:???
簡易ゲームのページで手持ち100Pあり
ページAのボタンによりページBに移動
その際に1Pを消費します。
ページBでトランプ3枚を表示するのですが
戻るボタン、進むボタンを押されると
何回でもポイント消費なしでゲームできてしまいます。
何か良い対策方法はないでしょうか?
24nobodyさん:2006/06/23(金) 17:41:07 ID:???
>>23
だからクッキーにデータを・・・
セッションでもいいけどさ
25nobodyさん:2006/06/23(金) 17:44:13 ID:???
クッキーは改ざんの恐れがあるし、この場合はセッションがベストじゃね?
26nobodyさん:2006/06/23(金) 17:47:48 ID:???
2721:2006/06/23(金) 17:47:49 ID:???
遅れましたが携帯専用のページとなります。
28nobodyさん:2006/06/23(金) 17:47:59 ID:???
簡易ゲームのページで手持ち100Pあり
ページAのボタンによりページBに移動
その際に1Pを消費します。
ページBでトランプ3枚を表示するのですが
戻るボタン、進むボタンを押されると
何回でもポイント消費なしでゲームできてしまいます。
何か良い対策方法はないでしょうか?
2916:2006/06/23(金) 18:58:44 ID:???
遅くなりました。

>>17-18
つまり、file()は読み込む、fopen(r)は開くだけ
と考えれば良いのでしょうか?
30nobodyさん:2006/06/23(金) 19:48:52 ID:???
>>29
そうだよ
それくらいはマニュアル読んでね
31nobodyさん:2006/06/23(金) 19:50:23 ID:???
>>28>>21じゃないっぽい?
>>21の要望をまとめてくれたのかな?
まぁ、答えはもう>>22,>>24-26にあるけどね
32前スレ996:2006/06/23(金) 20:04:48 ID:???
$NA1 = $_POST['NA1'];
$NB1 = $_POST['NB1'];
$EA1 = $_POST['EA1'];
$EB1 = $_POST['EB1'];
$NA2 = $_POST['NA2'];
$NB2 = $_POST['NB2'];
$EA2 = $_POST['EA2'];
$EB2 = $_POST['EA2'];

$NA = $NA1 + (NA2 / 60);
$EA = $EA1 + (EA2 / 60);
$NB = $NB1 + (NB2 / 60);
$EB = $EB1 + (EB2 / 60);

$NA = 3.1415926535 * $NA / 180;
$EA = 3.1415926535 * $EA / 180;
$NB = 3.1415926535 * $NB / 180;
$EB = 3.1415926535 * $EB / 180;

$NA = $NA - ((11.55 / 60) * 3.1415926535 / 180) * sin (2 * $NA);
$NB = $NB - ((11.55 / 60) * 3.1415926535 / 180) * sin (2 * $NB);

$c = cos($NA)*cos($NB)*cos($EA-$EB)+sin($NA)*sin($NB);
$s = sqrt(1-c^2);
$t = $s/$c;
$z = atan($t);
$z = $z * 6369;

としたのですが、全てを0にすると「距離は 6669.60120357 です。」になります。
ソースの部分と何が違うのでしょうか。
33前スレ996:2006/06/23(金) 20:10:07 ID:???
すみません。
間違いだらけでした、解決です。
34前スレ996:2006/06/23(金) 20:52:50 ID:???
もう一度お願いします

echo $_POST['listA']."<BR>";
echo $_POST['listB']."<BR>";
list($NA1,$NA2,$NA3,$NA4,$EA1,$EA2,$EA3,$EA4) = split(".",$_POST['listA']);
list($NB1,$NB2,$NB3,$NB4,$EB1,$EB2,$EB3,$EB4) = split(".",$_POST['listB']);
echo $NA1;

と書いたのですが、リストにある$NA1〜$EB4までの間に変数が入りません。
出力では、

34.41.56.713.35.29.53.705
43.3.57.897.141.21.15.765

となっているのですが。
35前スレ996:2006/06/23(金) 20:59:13 ID:???
split(".",$_POST['listA']);をsplit('[.]',$_POST['listA']); で解決できました。すみません
36nobodyさん:2006/06/23(金) 21:27:41 ID:rAXE6ZzN
携帯むけの投票スクリプトをつくっているんだが、1日1回だけクリックさせたい。
クッキーでやってみたんだが、FOMAが対応していないorz
なにか案があったらおながいします。
37nobodyさん:2006/06/23(金) 21:32:26 ID:???
>>36
固定IPではどうでしょうか?
3837:2006/06/23(金) 21:33:16 ID:???
>>36
投票するとIPが記録され、
次に投票するときにIPが投票されているか調べるというのはどうでしょう
39nobodyさん:2006/06/23(金) 21:34:00 ID:???
IP?固有番号使えばいいじゃん。
40nobodyさん:2006/06/23(金) 21:34:26 ID:???
パーミッションで他の人が観覧できないデータファイルにするにはどうすればよいですか?
41nobodyさん:2006/06/23(金) 21:35:10 ID:???
>>37-39
むちゃくちゃな回答ばっかりやな。
42nobodyさん:2006/06/23(金) 21:37:29 ID:???
リンクに配列の値を文字列に変換してくっつけて、GET送信しているのですが、リンクのアドレス表示が物凄く長くなります。

これはPOST送信と同じくほぼ際限なく長くても問題ないと考えてもいいのでしょうか?
もし限界などがあれば教えてください。


43nobodyさん:2006/06/23(金) 21:43:15 ID:???
>>4
前から気になってたけど、なんで17だけないの?

【PHP】下らねぇ質問はここに書き込みやがれpart17
http://pc8.2ch.net/test/read.cgi/php/1140786348/
44nobodyさん:2006/06/23(金) 21:48:43 ID:???
>>42
RFCで決まってたと思うが。
決まってればそれが保証限界ってところかと
(対応できてなければ改良を求める根拠)
45nobodyさん:2006/06/23(金) 21:51:34 ID:???
>>42
RFC 調べろって話は当然出るとして、それ以前に、検索することも知らないのか?
http://www.google.co.jp/search?hl=ja&q=GET+URL+%E9%95%B7%E3%81%95+%E5%88%B6%E9%99%90
46nobodyさん:2006/06/23(金) 22:05:20 ID:???
session_start();
$_SESSION['cnt']++;
echo $_SESSION['cnt'];
同じページだと中身が表示されるのですが
次のページで
echo $_SESSION['cnt'];
を記述しても中身が表示されません。
お願いします。
4746:2006/06/23(金) 22:16:46 ID:???
解決しました。すいません。
48nobodyさん:2006/06/23(金) 22:19:46 ID:???
http://localhost/web/index.php

この場合、

http://localhost/web/

この部分を取得したいのですがどうすれば良いのでしょうか?
49nobodyさん:2006/06/23(金) 23:15:28 ID:???
mysqlのデータベース内にデータが無い(テーブルが無い)場合は、
という if 文を作りたいのですが、
教えて栗
50nobodyさん:2006/06/23(金) 23:36:00 ID:???
>>48
意味がわかんない
もうちょっと具体的に説明ヨロ

>>49
テーブル一覧取得関数
mysql_list_tables

蛇足だが、そういう構造はあまりよろしくない
特殊な場合を除いて必要なテーブルは最初から全て揃っているのが望ましい
51nobodyさん:2006/06/23(金) 23:38:51 ID:???
>>48
URLが固定の場合
dirname('http://localhost/web/index.php').'/'

固定じゃない場合
(!empty($_SERVER['HTTPS']) ? 'https' : 'http').'://'
  .$_SERVER['HTTP_HOST'].($_SERVER['SERVER_PORT'] != 80 ? ':'.$_SERVER['SERVER_PORT'] : '')
  .dirname($_SERVER['SCRIPT_NAME'])
52nobodyさん:2006/06/23(金) 23:52:35 ID:???
テキストリンクでPOST送信するにはどうすればよいのでしょうか。

echo "<form method=\"POST\" action=\"" . $_SERVER["PHP_SELF"] . "\"><TD width =\"14\">";
echo "<a href=\"" . $_SERVER["PHP_SELF"] . "\">" . $hoge . "</a> ";
echo "<input type=\"hidden\" name=\"hoge\" value=\"$hoge\">";
echo "<input type=\"hidden\" name=\"hoge2\" value=\"$hoge2\">";
echo "<input type=\"hidden\" name=\"hoge3\" value=\"$hoge3\">";
echo "</TD></FORM>";

上記のようにして試してみましたが上手く行きませんでした。
どなたかよろしくお願いします。
53nobodyさん:2006/06/24(土) 00:08:20 ID:???
>>52
普通に<input type="submit">使っとけ。
どうしてもリンクでやりたいなら、GETとPOSTの違いを勉強して、onclickハンドラとjavascriptでやればいい。
54nobodyさん:2006/06/24(土) 01:11:59 ID:???
>>52
>>53の言うとおりJavaScriptでやるのが一番手っ取り早いと思う。
PHPやHTMLでは不可能だ
55nobodyさん:2006/06/24(土) 01:16:00 ID:???
56nobodyさん:2006/06/24(土) 01:16:29 ID:???
大量のデータ(1000行くらい)を、一番下の行から順番に
読み込んでいきたいのですが、やっぱりfile()を使わないと無理でしょうか
57nobodyさん:2006/06/24(土) 01:18:29 ID:???
>>56
面倒臭いがfopenでも可能
データが大量だと分かってるならfileは使わない方がいいよ
58nobodyさん:2006/06/24(土) 01:19:06 ID:???
>>56
一番下からは無理だよ
一番上からになっちゃう
5956:2006/06/24(土) 01:22:14 ID:???
fopenですよね。
どのような手順ですればよいのでしょうか?
どうしても下からしたいのですが・・
60nobodyさん:2006/06/24(土) 01:26:47 ID:???
読み込みは絶対にファイルの先頭からになっちゃうっす
6156:2006/06/24(土) 01:29:55 ID:???
了解です。諦めますT_T
62nobodyさん:2006/06/24(土) 01:33:20 ID:???
>>60
うそつくな
fseekで任意の位置から読み込み可能
63nobodyさん:2006/06/24(土) 01:36:14 ID:???
>>52
<form name='hoge' action='fuga.php' method='POST'>
  <a href='javascript:document.hoge.submit();'>Submit</a>
  <input type='hidden' name='foo' value='bar' />
</form>

PHP以前にHTMLとJavascriptを勉強した方がいい。
6456:2006/06/24(土) 01:42:35 ID:???
ファイルの一番上の行に追加していくというのはできないのでしょうか?
file()を使わない方法で・・・
65nobodyさん:2006/06/24(土) 01:46:17 ID:???
>>64
無理。そうしなくてもいい方法(設計)を考えろ。
何のために脳みそついてるんだ。
66nobodyさん:2006/06/24(土) 01:47:45 ID:???
>>64
できるよ
テンポラリファイル作ればOK
6756:2006/06/24(土) 01:55:46 ID:???
>>65
今必死に考えています。
他の方法でもダメそうなので・・・

>>66
宜しければもっと詳しく教えてください。
68nobodyさん:2006/06/24(土) 02:02:16 ID:???
一回全部読み込んで書き込めば良いだけ
6956:2006/06/24(土) 02:05:06 ID:???
>>68
・・・だから読み込めないんですよ。
70nobodyさん:2006/06/24(土) 02:12:25 ID:???
>>53 54
おとなしく、submitにしました。
検索サイトのような、ヒット数に応じて下部にリンク数字が出るやつをしようかと思ったのですが、
もう一度検索させるのは重たくなりそうなのであきらめました。
ありがとうございました。
71nobodyさん:2006/06/24(土) 02:19:07 ID:???
10MBのファイルをfile()で普通に読み込めたんだが
それでもやめたほうがいい?
ちなみに行数は150000ちょっと
72nobodyさん:2006/06/24(土) 02:29:53 ID:???
ファイルじゃなくてDBを使うというのも一つの手ではないのか?
73nobodyさん:2006/06/24(土) 02:32:38 ID:???
ご め ん な さ い D B 使 え ま せ ん 

本 当 に す み ま せ ん
74nobodyさん:2006/06/24(土) 02:56:00 ID:???
カレントURLを取得する方法はありませんか?
75nobodyさん:2006/06/24(土) 02:59:26 ID:???
>>69
1行ずつ読み込みながら書き出せばいいじゃん
全部まとめて読もうとするなよ
76nobodyさん:2006/06/24(土) 03:26:03 ID:aJs1PJvk
>>20
どういう事例があるか教えて頂けませんか?勉強不足でございまして恐縮ですがなぜハードウェアが関係するのか理解できるレスをお願いいたします。
77nobodyさん:2006/06/24(土) 03:48:24 ID:???
<a href="device:location?http://exsample.com/">現在地を更新</a>

これでは普通に現在地を取得できるのですが

<a href="device:location?http://exsample.com/?var=1900&var2=1111">現在地を更新</a>

みたいに、変数を加えるとうまく動作してくれません。
どうすれば良いのでしょうか?
78nobodyさん:2006/06/24(土) 04:18:08 ID:???
exsample...
79nobodyさん:2006/06/24(土) 05:12:55 ID:???
>>76
確かに聞いたこと無いな。
まぁ、もしあったとしてもスクリプト言語だからなぁ・・・俺らにはどうしようもないか?
80nobodyさん:2006/06/24(土) 06:06:38 ID:???
そもそもこのテンプレって本スレ33で提案されて34で初めて使われて、
で、34を最後にスレ自体が無くなっちまった、という代物なんだよな。

ハードウェアの話については本スレ34ですでに論議されてる。

7 名前:nobodyさん[sage] 投稿日:2006/03/21(火) 10:52:53 ID:???
>>1
乙です。

以前、
> 2. ハードウェア、OSのバージョン等を明記すること。
について議論なかったっけ?
バージョンに関しては、基本的に必要なのはPHPのバージョンだけで、内容によってはWebサーバとそのバージョン、もしくはOSやハードウェアって感じになると思うんだけど。

まあ「そんなテンプレ律儀に守る奴いねーよ」って言われればそれまでなんだけどさ。

8 名前:nobodyさん[sage] 投稿日:2006/03/21(火) 11:00:37 ID:???
> 2. ハードウェア、OSのバージョン等を明記すること。

確かにハードのバージョン書くよりは
phpやサーバのバージョンのほうが情報として意味があるよな

9 名前:nobodyさん[sage] 投稿日:2006/03/21(火) 11:10:13 ID:???
ハードウェア情報を書かれても困る
もっと大事な情報が欲しい

10 名前:nobodyさん[sage] 投稿日:2006/03/21(火) 11:21:23 ID:???
最低限PHPのバージョンだな。PHP4と5では違いが大きすぎる。
まさかPHP3使ってるやつはそういないだろうが…
81nobodyさん:2006/06/24(土) 06:24:34 ID:???
>>77
<a href="device:location?url=http://exsample.com/index.html/1900/1111/">現在地を更新</a>
みたいにパラメータをURLパスに含めて、PATH_INFOで取得する、ってのはムリかな
82nobodyさん:2006/06/24(土) 06:28:00 ID:???
>>76
バイナリ値を扱ったときにバイト並びがビッグエンディアンだったかリトルエンディアンだったか、
みたいなのくらいしか思いつかないなー
83nobodyさん:2006/06/24(土) 08:08:16 ID:29S7mcCw
>>77
×exsample
○example
84nobodyさん:2006/06/24(土) 08:45:30 ID:???
85nobodyさん:2006/06/24(土) 09:38:44 ID:???
>>67
今、ざっと書いてみただけだから動くかどうか分からないけど
考え方としてはこんな感じ。

  $fp=fopen('hoge', 'r+);
  $tmp=tmpfile();
  flock($fp,LOCK_EX);
  stream_cccopy_to_stream($fp,$tmp);
  rewind($fp);
  rewind($tmp);
  fputs($fp,$data);
  stream_cccopy_to_stream($tmp,$fp);
  flock($fp,LOCK_UN);
  fclose($tmp);
  fclose($fp);

>>71
他に誰もそのサーバにアクセスしないんだったら別にいいんじゃない?
実用的とは言えなくなるだけ。
仕事でそんなの作ったらブン殴られるけどね
86nobodyさん:2006/06/24(土) 12:42:35 ID:???
if(!ereg("^[a-zA-Z0-9\[\]\-]+$",$keyword)){
$error_flag = "on";
}

これだと$keywordに[]が含まれている場合に許可してくれない(error_flagがonになってしまう)
んですが、どこが問題でしょうか?
87nobodyさん:2006/06/24(土) 12:51:27 ID:???
>>86
preg系関数使えよ。

$test = '[]';
preg_match('/^[a-zA-Z0-9\[\]\-]+$/', $test) && print 'Passed';

で通ったぞ。
88nobodyさん:2006/06/24(土) 13:02:43 ID:???
>>86
こうする
ereg("^[][a-zA-Z0-9-]+$",$keyword)
8986:2006/06/24(土) 13:05:45 ID:???
↑(A && B)って
A が真だったら B を実行という構文なんでしょうか?
初めて見ますた
あと 86 側でなぜ上手くいかないかわからないでしょうか?
90nobodyさん:2006/06/24(土) 13:07:34 ID:???
>>89
違う

&&は左辺が真なら右辺も評価するが左辺が偽なら右辺を評価しない。
だから左辺が真のときだけ実行する文を右辺に書くのは良くあること。


ereg関数はPerl互換正規表現じゃない。
9186:2006/06/24(土) 13:12:45 ID:???
なるほど、納得です、ありがとうございました
92nobodyさん:2006/06/24(土) 13:54:39 ID:WbsotHgV
ちょっと、教えて下さい。
PHP4.2.2がインストールされているLinuxに、MySQL4.0をインストール
しようとしています。普通は、MySQLをインストールした後にPHPをイン
ストールするのですが、私の場合既にLinuxにPHPがインストールして
あったので、PHPのインストールの後にMySQLをインストールするつもり
なのです。

このように、PHPのインストールの後にMySQLをインストールする場合、
php.iniを書き換えなければならないのでしょうか?php.iniで関係あり
そうなところは、[MySQL]の
mysql.allow_persistent mysql.max_persistent mysql.max_links
mysql.default_port mysql.default_socket mysql.default_host
mysql.default_user mysql.default_password
なのですが、これらの内、どれかを書き換えなければならないので
しょうか?PHPファイルの作成の時は、mysql_connectやmysql_select_db
で、必ず引数を指定するつもりなのですが、それでも、これらのどれか
を書き換えなければならないのでしょうか?教えて下さい。宜しく
お願い致します。
93nobodyさん:2006/06/24(土) 14:07:13 ID:???
MySQLをインストールした後にPHPをインストールするのが普通なのか?
俺はいつもPHP4アンインストール→PHP5インストール→MySQLインストールの順番だ。
あと、PHP4を使うなら特に設定は必要ないよ。
mysql_connectの時にソケットファイルを指定しないとならない場合もあるけど。

とりあえずまずは自分で試してみろよ
94nobodyさん:2006/06/24(土) 14:14:25 ID:WbsotHgV
>>93

>>92です。ありがとうございます!!
95nobodyさん:2006/06/24(土) 14:24:09 ID:???
テキストボックスに小文字の,があるときに大文字の、に自動的に書き直すには
正規表現を使えばいいのは考えられるのですが、どう書いたらよいでしょうか?
マニュアルとかいろいろ見てきましたが分かりませんでした。おしえてください
96nobodyさん:2006/06/24(土) 14:26:41 ID:???
PHP6っていつ出るんだ?
97nobodyさん:2006/06/24(土) 14:28:52 ID:???
>>95
strtoupper
98nobodyさん:2006/06/24(土) 14:29:32 ID:???
PHPが出来たら彼女も出来ますか?
99nobodyさん:2006/06/24(土) 14:33:43 ID:???
PHPで彼女を作りたいの?
それには流石にもっと高級な言語使った方がいいんじゃないかなあ。
100nobodyさん:2006/06/24(土) 14:39:31 ID:???
PHP + JavaScript で大規模なの作れ。
んで色んなバージョン作って LAMP+Ajax とかで構築して販売しる
101nobodyさん:2006/06/24(土) 14:43:08 ID:???
毎日毎日遅くまで仕事してさ・・・
家帰っても一人で換気扇の音だけ聞こえるの。消し忘れちゃってたのか・・・
彼女が「お帰りダーリン☆」とか言ってくれるのに憧れる。
今は双葉ちゃんの猫板でヌコ画像見ることのみが俺の癒しだぜ・・・
102nobodyさん:2006/06/24(土) 14:43:53 ID:???
まずは日本語を勉強するだぜ・・・
103nobodyさん:2006/06/24(土) 14:57:28 ID:???
>97
レスありがとうございます。
でもそれって全部大文字化されてしまいます。
じゃなく、「これは,テスト」って書かれた文の中に小文字のカンマがある時に
「これは、テスト」とするためにはどういう構文を書けばよいのかが分からないのです。
104nobodyさん:2006/06/24(土) 15:00:00 ID:???
>>103
>>97>>95に対する的確な解答。
>>103で書かれてる事は>>95と全然違うじゃねーか。
105nobodyさん:2006/06/24(土) 15:00:05 ID:???
>>100
大規模? 構築して販売?
「何」を??
106nobodyさん:2006/06/24(土) 15:00:51 ID:???
ごめん間違えた>>104は忘れて^^^^^^;;;;;;;;;;;;;;;;;;;


str_replaceが良いんじゃないかなと思う。
107103:2006/06/24(土) 15:03:40 ID:???
追記です。
「これは,テスト」の部分にはアルファベットが入る可能性もあります。
「abcd,1234,efgh」と書かれる場合に
カンマの部分は大文字でも構わないのですが
文章中のアルファベットの部分は書き込みをしてくれる人の文をそのまま見る人に伝えたいので
出来れば「abcd、1234、efgh」とだけしておきたいのです。

どうかお知恵を貸してください。よろしくお願いします。
108nobodyさん:2006/06/24(土) 15:04:37 ID:???
phpで文字をunicode表記(\uXXX)に変換したいのですが何か良い関数ありませんか?
109nobodyさん:2006/06/24(土) 15:07:52 ID:???
>>103
ttp://www.php.net/manual/ja/ にPHPのマニュアルがある。
「VI. 関数リファレンス」から始まる部分がこれからおまいさんがずっとお世話になる部分だ。

今したい事は文字列に対する操作なので、文字に関係しそうなものを探してみる。
「文字型 (ctype) 関数」ってのがあるので中を見てみると、どうやら今回の件にはつかえなさそうだ。
更に探していくと、「マルチバイト文字列関数(mbstring)」てのがある。
それぞれの関数の説明を見ていくと、使えそうなものもありそうだが、慌てずに残りも探してみよう。
そうすると「Strings(文字列関数)」ってのがある。
クリックしてどういう関数があるのかを見てみると、どうやら

(全てを読むにはワッフルワッフルと書き込んでください)
110103:2006/06/24(土) 15:10:00 ID:???
ワッフルワッフル
111nobodyさん:2006/06/24(土) 15:17:16 ID:???
>>101
function kanojo() {
if ($location['>>101'] == "home") {
echo "お帰りダーリン☆";
show("本日の特選ヌコ様");
} else {
stop("換気扇");
}
}

show()とstop()は自力でドゾー。
112nobodyさん:2006/06/24(土) 15:28:25 ID:???
113nobodyさん:2006/06/24(土) 15:43:39 ID:???
関数が大好きです。
114103:2006/06/24(土) 16:30:30 ID:???
>109
$str = ereg_replace (',', '、', $str);で出来ました。
ありがとうございました。
115nobodyさん:2006/06/24(土) 16:49:41 ID:???
>>114
そのように正規表現を使わない場合はstr_replace()の方がオススメ。
116103:2006/06/24(土) 17:10:51 ID:???
>115
str_replace()ではならなくて、調べていたら
ereg_replace()を発見して、やってみたらできました!

それと、csvファイルに書き込みしたいのですが
改行されたものを<br>にする為にはどうしたらいいのでしょうか?
といいますか、改行コードがどんな値として渡ってくるのかが分かりません。
それさえ分かれば自分でも何とかなると思うのですが。。。
117nobodyさん:2006/06/24(土) 17:19:18 ID:???
>>116
でばっがでひっかけてみたらよいよ
118103:2006/06/24(土) 17:38:50 ID:???
でばっがでひっかける???
それはどんな高尚なものなのでしょうか?
119nobodyさん:2006/06/24(土) 17:41:58 ID:???
>>118
改行文字ぐらい自分で調べられないんならプログラミングなんて止めれば?
120nobodyさん:2006/06/24(土) 17:42:11 ID:???
$query = explode('&', $_SERVER['QUERY_STRING']);

なあ、GETクエリの処理ってこの方法でやってる人いる?
どっかで↑を見たんだけど、上記方法で自前でやるのはメリットあったりしますかね?

parse_str() で第2引数なしだと、先に宣言されていた変数が上書きされるからとか?
121nobodyさん:2006/06/24(土) 18:14:59 ID:???
>>120
a=100&a=101
とかのクエリを処理できる
$_GETでとると、上書きされる
122nobodyさん:2006/06/24(土) 18:25:27 ID:???
あー、クエリ内でキーが重複してるとき値が上書きされないようにするためか!

んでも parse_str() で配列にしたほうが良くない?
a[]=100$a[]=101 にしないと駄目だろうけど
123nobodyさん:2006/06/24(土) 18:58:58 ID:???
118ではないが、デバッガなんて誰でも作るのか!?
そうなのか!??
124nobodyさん:2006/06/24(土) 19:09:07 ID:???
今したい事は文字に関する調査なので、文字に関係しそうなものを探してみる
(略)
bin2hex()で16進数に変換してみればいいべ
125nobodyさん:2006/06/24(土) 19:29:47 ID:to5dTZDp
ファイルのパスを生成する際、.....を./../..のように置き換えたいのですが、
どのようにすれば良いでしょうか。sprintfを使うのかな・・というのは
分かるのですが記述方法がいまいち分かりません。
126nobodyさん:2006/06/24(土) 19:35:58 ID:???
>>125
Path Traversalって知ってるか
127nobodyさん:2006/06/24(土) 19:45:22 ID:???
while(!feof($fp)){
}

これを使うときに
「あああああ
いいいいい
ううううう

となっていると、一番最後に空白が読み込まれるのですが
これをなくす方法はありませんか?
128nobodyさん:2006/06/24(土) 19:50:53 ID:???
ltrim
129nobodyさん:2006/06/24(土) 20:41:46 ID:???
ttp://putih.xrea.jp/

YBBだと見れないんだけどマジうんこ
130nobodyさん:2006/06/24(土) 20:52:05 ID:???
>>129
Sleipnirからだと見れない
131nobodyさん:2006/06/24(土) 21:11:55 ID:???
http://www.google.com/search?client=opera&rls=ja&q=site:putih.xrea.jp&sourceid=opera&num=75&ie=utf-8&oe=utf-8
HTMLだけ読めるということは、PHPで2chのバーボン規制みたいなことをやっているのか。

糞だな。
132nobodyさん:2006/06/24(土) 21:47:01 ID:???
要JS+Cookie

カスサイトだなw
133nobodyさん:2006/06/24(土) 22:10:45 ID:WbsotHgV
>>92です。

PHP4.2.2がインストールされているLinuxに、MySQL4.0.13をインストール
しました。rpmでインストールして、何も改変していないのですが、
コマンドラインからはテーブル等を作ることが出来、MySQL自体のインスト
ールは完了しました。

しかし、PHPからMySQLには接続できないのです。
Fatal error: Call to undefined function: mysql_connect() in /var/www/html/index.php on line 4
と出てしまい、mysql_connectが使えないのです。

「ソケットファイルを指定すれば良い」と>>93様に言われましたので、「mysql.default_socket =」を指定
しようとしているのですが、これには何を入れれば宜しいのでしょうか?どなたか教えて下さい。宜しく
お願い致します。
134nobodyさん:2006/06/24(土) 22:21:01 ID:???
もうこれからはJavaScriptがONになっているってのが前提でサイトが出来てくるだろうな。
ajaxの流行がきっかけになったかのかな
WinMEとかWin98SEも打ち切りでしょ?これでIEはVer6が前提になってしまったな
135nobodyさん:2006/06/24(土) 22:22:45 ID:???
>>133
ちょっとindex.phpの4行目前後を晒してみ
嫌ならパスワードとかは***とかでもおk

ちょっとsoketファイル指定したファイル探してくるわ
136133:2006/06/24(土) 22:23:25 ID:???
92です。自己解決しました。
137135:2006/06/24(土) 22:29:30 ID:???
どういう風に解決したのかフィードバックしてくれないか?
そうすればこれからお前と同じ部分で躓いた奴がお前のレスで助かるじゃないか
138nobodyさん:2006/06/24(土) 22:34:00 ID:WbsotHgV
>>136
>92です。自己解決しました。

>>92 >>133です。勝手に人になりすまさないで下さい!!
自己解決していませんよ!!それで、
/var/lib/mysql/mysql.sock
というファイルがあったのですが、0バイトでした。また、
PHPファイルは、
<?php


mysql_connect("127.0.0.1","root","******");
mysql_select_db("test1");
と書いたら、Call to undefined function: mysql_connect()
と出てしまったのです。まだ、解決していませんので、どな
たか教えて下さると嬉しいです。宜しくお願いします。
139nobodyさん:2006/06/24(土) 22:44:41 ID:???
>>138
「Call to undefined function mysql_connect」でぐぐる。
このスレの過去ログの何個か前から探しても数個(Winだったかな)見つかると思う。
貴方はLinuxなので原因は一緒だが、具体的な解決方法を調べたいなら
Googleで探す方が良いだろう。あとRPMパッケージで管理してるならそれも検索ワード追加。
140nobodyさん:2006/06/25(日) 00:00:12 ID:WbsotHgV
>>139
すみません。Googleや過去ログで検索した結果、

「mysql.default_socket=/var/lib/mysql/mysql.sock としたら良い」
という回答が殆どでした。それで、php.iniをこの通りにしてApacheを
再起動したのですが、やはりエラーメッセージは上記のままでした。
phpinfo();で調べてみると、Configure Commandに
--with-mysql=shared,/usr' 'という表記はありました。Environment
にPWD /var/lib/mysql という表記もあります。
環境はRHLinux9+PHP4.2.2+MySQL4.0.13 で、rpm -iv でMySQLをイン
ストールしただけです。どなたか、教えて下さると非常に助かります。
何卒、宜しくお願い申し上げます。
141nobodyさん:2006/06/25(日) 00:07:34 ID:???
俺の環境はMySQLが5でPHPも5なんだけど、ソケットファイルを指定しなかったら
Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
って言うエラーが出るから、それはもしかしたらソケットファイルのエラーではないかも知れんな。
ただ単にmysql_connect関数が呼べてないだけか?
142nobodyさん:2006/06/25(日) 00:10:24 ID:???
>>141
おいおい… 「undefined function」だっての。

Windows だったら .so (だっけか? 知らん)がない
Linux 系だったら -devel とかのパッケージをインストールしてない
自前で make したなら configure 時に指定してない
143nobodyさん:2006/06/25(日) 00:21:46 ID:???
>>138
なりすましは気にすることないが、教えてもらう人がそんな態度してちゃ〜なんか教えたくない。自分でしらべなよ。検索のやり方から勉強したほうがいいよ。
144nobodyさん:2006/06/25(日) 00:53:07 ID:???
>>116
nl2br()
145nobodyさん:2006/06/25(日) 01:27:28 ID:???
146nobodyさん:2006/06/25(日) 01:27:28 ID:???
アップして気づいたのですがレンタルサーバーのPHPのバージョンが4.4.2でした。
PHP5でしかない、array_combine()をかなりの頻度で使用しているうえに、
array_combineを使用することを前提にプログラムを書いてしまったので、修正に大変苦慮しています。

PHP4.4.2の場合は、array_combineと同じような動作をさせる場合にはどうすればいいのか、助言をよろしくお願いします。

array = array_combine($header,$list)
という箇所を出来るだけ簡単で、かつまったく同じ挙動をするようにしたいと考えています。
147nobodyさん:2006/06/25(日) 01:33:43 ID:???
>>146
関数化して挙動を同じにすればいい
148nobodyさん:2006/06/25(日) 01:40:16 ID:???
149nobodyさん:2006/06/25(日) 01:41:57 ID:???
function array_combine($arrayKey, $arrayValue)
 : $num = 0;
 : $returnArray = array();

 : if(($tmp = count($arrayKey)) || $tmp != count($arrayValue)) or
 :  : return false;

 : foreach($arrayKey as $key){
 : $returnArray[$key] = $arrayValue[$num];
 : $num++;
}

 : return $returnArray;
}
150nobodyさん:2006/06/25(日) 01:45:02 ID:???
>>148
なるほど。こうなっていたんですね。
ありがとうございます。さっそく試してみます。
151nobodyさん:2006/06/25(日) 03:09:42 ID:???
普通のHTMLに複数のFORMを置いてPHP にPOST送信した場合、
後に記述したFORMの内容しか反映されません。
1.
<form> A...</form>
<form> B...</form>
Bの内容だけ反映される。Aの内容は反応しない。
2.
<form> B...</form>
<form> A...</form>
AとBの位置を入れ替えると、Aの内容だけが反映される。

どうやらスペルミスなどではないようです。
これはHTMLとはこういう仕様なのでしょうか?
これを回避するテクニックなどがあれば教えてください。
152nobodyさん:2006/06/25(日) 03:11:11 ID:???
>>151
submitはどこに記述してる?
153nobodyさん:2006/06/25(日) 03:12:05 ID:???
>>149みたいなorの使い方はマニュアルのどのあたりを見ればいいでしょう?
154nobodyさん:2006/06/25(日) 03:16:32 ID:???
>>152
submitはそれぞれのフォームの間です。

<form>A... <submit></form>
<form>B... <submit></form>

こんな感じです。
155nobodyさん:2006/06/25(日) 04:01:45 ID:???
>>154
それでA側のsubmitを押してもA側の内容が反映しないってこと?
実は古い携帯端末で操作してるとかの落ちじゃないだろうな…。
スペルミスしてるとしか思えんが。
156nobodyさん:2006/06/25(日) 04:06:34 ID:???
半角スペース、タブ、ラインフィード、改行、ヌル文字、垂直タブが含まれていたら
_に変換したいのですが
if(ereg("/0\x20|0\x09|\x0A/|0\x0D|0\x00|0\x0B/",$name)){$name = preg_replace("/0\x20|0\x09|\x0A/|0\x0D|0\x00|0\x0B/", "_", $name);}
で、あってますか?
157nobodyさん:2006/06/25(日) 04:08:05 ID:???
>>156
なんでeregとpregを混ぜて使ってるんだ
158nobodyさん:2006/06/25(日) 04:18:01 ID:???
>>153
んー。Perlのマニュアル?w

こういうorやandの挙動って、Perlでは仕様で保障してた気がするけどPHPでも保障してるのかな。
実装依存でPHPのバージョンに依存する、とかいうオチはなし?
159nobodyさん:2006/06/25(日) 04:35:39 ID:???
すいません。pregでは無くeregを使ってました。
どうでしょうか?どう間違っているか教えて頂けませんでしょうか?
160nobodyさん:2006/06/25(日) 09:27:45 ID:???
>>159
if必要?
161nobodyさん:2006/06/25(日) 10:05:28 ID:???
>>153
>>149みたいなorの使い方”というのが理解できんが
ttp://www.php.net/manual/ja/language.operators.logical.php

論理演算の挙動を保障していないプログラミング言語なんてあるのか?
162nobodyさん:2006/06/25(日) 10:45:59 ID:???
>>161
型に厳密な言語なら怒られてもおかしくないべ。

or の場合、左右のオペランドが論理型であることが要求される。
returnはよく分からんがexitやdieは返り値がvoidなのでNULL扱いとなり、
暗黙の型変換によってfalse扱いとなる。で、PHPでもたまたま動く、と。
163nobodyさん:2006/06/25(日) 12:44:38 ID:???
>>161
つか>>149動かんだろう。

functionの行末に{付けてor消せば動くだろうが。
164nobodyさん:2006/06/25(日) 13:52:55 ID:???
: も消さないと駄目じゃないの?
165161:2006/06/25(日) 14:22:13 ID:???
>>153
ごめん、そういうことだったのね。>>163見てわかった。
失礼。
166nobodyさん:2006/06/25(日) 15:31:11 ID:???
CSVファイルを掲示板のデータ保管用にアップしたのですが、
外部からの直リンで見られてしまいます。
どうすれば見られないようになるのでしょうか?
167nobodyさん:2006/06/25(日) 15:33:35 ID:???
>>166
拡張子を.cgiに変えてパーミッションを変更
168nobodyさん:2006/06/25(日) 16:01:58 ID:???
>>166
public_html より上の階層に置く
169nobodyさん:2006/06/25(日) 16:02:16 ID:ZuxDqgv3
>>166
出来ればドキュメントルート外に置くのがベスト。
それが出来ないレン鯖なら、.htaccessで見れなくする。
それすら出来ないなら>166かな。あまりオススメできないけど
170nobodyさん:2006/06/25(日) 16:05:04 ID:9OF/oNeC
スクリプトを探しています。

phpで作られたwebブラウザはありませんか?

会社のFWがきびしく、資料となるページも見られない事が多々あり
それを回避する為に探しています。現在は

readfile($url);

というスクリプトを自宅に置いたサーバから見ていますが
これだと画像やフレームが使われているサイトが見られません。
よろしくお願いいたします。
171nobodyさん:2006/06/25(日) 16:07:07 ID:???
>>170
それってPHPで出来たブラウザを使うとかって問題か?
何にせよ仕事が出来ないほどならネットワーク管理者なりにちゃんと事情を説明して
普通に規制を緩くしてもらうほうが良い
172nobodyさん:2006/06/25(日) 16:09:47 ID:???
>>170
スクリプト探しはスレ違い。板違い。
// 自宅サーバにプロキシ立てればいいんじゃないの? 独り言だから、レスしても答えないぞ。
173前スレ597:2006/06/25(日) 16:16:18 ID:???
お礼が遅くなってしまい失礼致しました。
学校が忙しくて、phpに関われるようになったのが今日でした。
すみません。

結局、>>599さんの、sprintf() を使ってやりたいようにすることが出来ました。
>>598さんと>>610さんの方法も私は知らなかったので勉強になりました。
ご回答いただいてありがとうございました。
また、何かあったら宜しくお願い致します。
174nobodyさん:2006/06/25(日) 16:31:26 ID:???
>>171
レスありがとうございます。
その通り、phpでできたブラウザの事です。
私もまだ入社したばかりで発言力も弱く
規制を緩くするには、時間がかかってしまいますので
それまでの繋ぎとして現在探しています。

>>172
レスありがとうございます。
板違いなのですね。
phpdからwebprogだと思ってました。
教えてくれてありがとうございます。

というわけなので>>170の質問は閉めさせていただきます。
175nobodyさん:2006/06/25(日) 16:38:07 ID:???
閉めるとか閉めないとか やれやれだぜ
176nobodyさん:2006/06/25(日) 16:54:56 ID:???
うう締まる締まる
177nobodyさん:2006/06/25(日) 17:10:02 ID:???
さぁ、どんどん閉めちゃうからねぇ
      _((()_ 
     /∴ `ー'|                しまっちゃう!!!
     ゝ.∵ .ミ(゚)_∩∩__
    (∵  <__入 | |__)
    〉∴ ヽ――'  )ω゚)ノ|  | 
   (∵∴ く/⌒) / Д  |  | 
   //、__, /_ノ / ゝ |_| 
 ⊂ノ L| [ ̄ 
178nobodyさん:2006/06/25(日) 17:25:14 ID:???
僕の肛門も閉鎖しそうです><
179nobodyさん:2006/06/25(日) 18:15:32 ID:???
>>177
それどういうAA
180nobodyさん:2006/06/25(日) 18:41:09 ID:???
ここは2ちゃんだ。閉めるんだったらアノ掲示板に行けよ。
181nobodyさん:2006/06/25(日) 20:09:42 ID:???
裏2chのことは世間に公表されてないはずだが
182153:2006/06/25(日) 20:54:52 ID:???
>>158,161,162
ありがと
なんとなく分かったような気がする
183nobodyさん:2006/06/25(日) 21:02:29 ID:WzsSuz7K
http://pc8.2ch.net/test/read.cgi/php/1139746974/
ここの、>>67のスクリプトの20行目(全体の23行目)の

$answer = (int)$answer;

の (int) の意味がわからないのですが
phpでも型を明確に宣言することが出来るのですか?
184nobodyさん:2006/06/25(日) 21:04:02 ID:???
185183:2006/06/25(日) 21:18:59 ID:???
>>184
ありがとう。
こんなことするくらいなら、はじめから宣言したほうが楽な気がしてしまう
私は面倒くさがり屋

それよりも

<?php
$a = "abc"; // $a は文字列
$a{1} = "f"; // $a は"afc"
?>

これを知れたことが大きな収穫でした。
ありがとうございます。
186nobodyさん:2006/06/25(日) 21:44:32 ID:???
>>185
必要なときにどっちにでも使える、ってことでしょ。
型宣言ってより型変換と言った方が正しい。
187nobodyさん:2006/06/25(日) 21:51:31 ID:???
まぁ、除算(/)した時点で結果がfloatになっちゃうので、
(int)をつけないとおかしなことになっちゃうんだけどね。
188nobodyさん:2006/06/25(日) 22:28:26 ID:I0W6MOFz
Symfonyで HelloWorldから教えてくれ。
189nobodyさん:2006/06/26(月) 10:54:28 ID:eMFdAlON
fsockopenでssl通信を行いたいのですが、下記のようなスクリプトを組むとワーニングが発生して接続に失敗します

このページを参考にして、
http://php.s3.to/man/ref.openssl.html
php.iniの「extension=php_openssl.dll」をコメントアウトし、
php_openssl.dll、libeay32.dll、ssleay32.dllをPHPフォルダからをWINNT\SYSTEM32にコピーしましたが
うまくいきません

どなたかお詳しい方ご教授いただけないでしょうか

【環境】
Windows2000
PHP4.3.7
OpenSSL 0.9.7e
190189:2006/06/26(月) 10:55:17 ID:eMFdAlON
【ワーニングメッセージ】
Warning: fsockopen(): no SSL support in this build in c:\apache\htdocs\ssl.php on line 4
Warning: fsockopen(): unable to connect to localhost:443 in c:\apache\htdocs\ssl.php on line 4

【スクリプト】
$header = "GET / HTTP/1.0\r\n";
$header .= "Host: localhost\r\n\r\n";

$fp = fsockopen("ssl://localhost", 443, $errno, $errstr, 30); // ここでワーニング
if (!$fp) {
  echo "$errstr ($errno)<br/>\n";
  echo $fp;
} else {
  fputs($fp, $header);
  while (!feof($fp)) {
    echo fgets($fp, 1024);
  }
  fclose($fp);
}
191nobodyさん:2006/06/26(月) 11:18:27 ID:???
>>190
むしろApacheスレ向きの質問じゃないヵ?
192189:2006/06/26(月) 11:44:58 ID:???
うーん、クライアント側の話なのでこちらのスレでいいと思うんですが
193nobodyさん:2006/06/26(月) 11:49:39 ID:???
>no SSL support in this build
ってでているから、PHP が SSL 有効なオプションでビルドされていないんだろう
194189:2006/06/26(月) 11:56:30 ID:???
なるほど
dllロードすれば使えるもんだと思っていたんですが
自前コンパイルで作るしかないのか、、、Windowsでやるのは情報少なくて難しそうだな〜
195nobodyさん:2006/06/26(月) 12:08:13 ID:???
>>192
いやApacheもSSLにする必要があったと思うよ
196189:2006/06/26(月) 12:21:04 ID:???
あ、サーバー側はssl対応してます(ここでいうlocalhost)
197nobodyさん:2006/06/26(月) 13:29:16 ID:???
質問なんですけど。
皆さんがよく使う関数やプログラム文はどんなのがありますか?
198nobodyさん:2006/06/26(月) 13:34:46 ID:???
anal_sex();
199nobodyさん:2006/06/26(月) 13:34:52 ID:???
>>197
echo
200nobodyさん:2006/06/26(月) 13:59:39 ID:???
>>197
exit
201nobodyさん:2006/06/26(月) 14:03:51 ID:???
push
202nobodyさん:2006/06/26(月) 14:05:36 ID:???
require_once
203nobodyさん:2006/06/26(月) 14:19:34 ID:???
>>189
それでいける筈だけどな。
php_openssl.dllをsystem32にコピーしてるのは?だが
"コピー"だから影響ないしね。php.iniでロードしてる
他の拡張は上手くいってるんでしょ。
204nobodyさん:2006/06/26(月) 14:29:16 ID:???
>>189
あとSSLのDLLはPHPにバンドルの方を使ってるよね。
205189:2006/06/26(月) 14:43:34 ID:???
>>203
ご返信ありがとうございます
やり方としてはあながち間違いじゃないんですね、ちょっと希望が持てました

php_openssl.dllをコピーしたのはどっか別のサイトでそんなことが書かれていたからです、、、
他の拡張はうまくいってます(例えばOracleとの接続など

>あとSSLのDLLはPHPにバンドルの方を使ってるよね。
すいません、ちょっと意味がわからないのですが、ssleay32.dll、libeay32.dllはともに
C:\php\dllsからsystem32にコピーしています
206nobodyさん:2006/06/26(月) 14:46:01 ID:???
>>198
論外です

>>199
それはあたりまえのように使いますよね
printとechoはどちらのほうが良いのでしょうか

>>200
最近それを使うようになりました。
こんなに便利だとは思ってもいませんでした

>>201
はじめてみました
辞書にも載っていないのですが、どういった関数でしょうか?

>>202
まだ使ったここがありません
requireよりそちらのほうが使えるのでしょうか?

207nobodyさん:2006/06/26(月) 14:48:19 ID:???
      _,,...-───‐-:、._
     ト、____.ィ1        `ヽ、 ここはよく釣れる釣堀ですね
  ,:'´ l. ‐- -‐ ,j____,,.-‐;'フ、
  i'  〈`ニ''ニ'フ_ノ         ,r''´  'i
  |   ン--t"          〈    |
.  !、 `) ノ〉 _,,.ィ'''7  ,、 ヘ    y'
   ヽ、 ~'"く/\」 L/ \_〉,.ィ″
    ``''‐-:..,,_____,,::‐''"
208nobodyさん:2006/06/26(月) 14:52:17 ID:???
>>205
>php_openssl.dllをコピー
コピー先をextension_dirに指定してるなら、それでも構わない。

>C:\php\dllsからsystem32にコピーしています
PHPバンドルのものを使ってるようなのでOK。

上手くいかないようならPHPのバージョンを替えてみるのも手。
別にPHPのバージョンで違いがあるわけではないんだが、
公式で提供されてるWindows用バイナリーは、提供されてるものによって
ビルド毎の差異が結構あったりするので。
209189:2006/06/26(月) 14:57:27 ID:???
>>208
なるほど〜、そうですよね
PHP5ならsslもデフォルトで動くということがどっかに書いてありましたので、動くかどうか試してみます

どうもありがとうございました
210nobodyさん:2006/06/26(月) 16:05:39 ID:tUdeZDum
DBに接続し、テーブルを作成しようとして:

<?php
$mysql_server   = "mysql5.db.sakura.ne.jp";
$mysql_username = "example_user";
$mysql_passwd   = "example_user_password";

$link = mysql_connect($mysql_server, $mysql_username, $mysql_passwd);
if (!$link) {
   die(mysql_error());
}

$sql = mysql_query("CREATE DATABASE my_db");
if ($sql) {
   echo "テーブルを作成したお";
} else {
   die(mysql_error());
}

mysql_close($link);
?>

このようなスクリプトを作ってみたのですが
「Access denied for user: ?example_user@%? to database ?my_db?」というエラーが返ってきます。

コマンド・ライン端末から
     mysql> CREATE DATABASE my_db;
でも同じエラーが返ります。

何が原因なのでしょうか? DBは「さくらインターネット」のを借りています。
211nobodyさん:2006/06/26(月) 16:08:08 ID:???
>>210
example_userに使わせるDBなんて無ぇ!!

って言われております
212nobodyさん:2006/06/26(月) 16:17:56 ID:???
それと回答ってよりアドバイス的になるが、必要なテーブルは予め全て作成するべきかな
動的にテーブル作成するWEBアプリは設計的にどうかと。
ssh分からないからってならphpMyAdminだしな
213nobodyさん:2006/06/26(月) 16:20:51 ID:???
PHP関連の会社に就職したいのですが、
PHPを扱うにあたってどういうのを作成できれば良いのですか
214nobodyさん:2006/06/26(月) 16:22:03 ID:???
>>197
die(">>197");
215nobodyさん:2006/06/26(月) 16:24:48 ID:???
>>213
まだ若いのであれば、簡単な掲示板を作れる位でも大丈夫。これからの勉強次第だろう。
216nobodyさん:2006/06/26(月) 16:25:50 ID:???
>>210
"CREATE DATABASE"は日本語にすると、"テーブルを作成"なのか?
217210:2006/06/26(月) 16:25:59 ID:tUdeZDum
>>211
まあ普通に和訳すればそうんですが、こうなる理由がわかりません。
218nobodyさん:2006/06/26(月) 16:26:06 ID:???
>>197
htmlspecialchars
strlen
strpos
substr

なんかはよく使うな。
219nobodyさん:2006/06/26(月) 16:27:49 ID:???
>>215
来年専門学校卒業(20歳)で、現在はWebデザインの専門学校に通っています。
作品は、簡単な掲示板やチャットなどです。特に大きいものは作れませんけど・・・。
PHPはとても好きなので勉強をする気はあります!
220210:2006/06/26(月) 16:31:12 ID:tUdeZDum
>>216
./~ヽ  /~~ヽ
.| ‖_∧ゝノ "CREATE TABLE"か…
./ ノ´Д`)/
( ノ   ソ
.ヽ   ヽ
 \   \
  \   \
_ /  _ \_
(⌒Y  / \ \
 ̄\,_/   \,_ノ ̄
221nobodyさん:2006/06/26(月) 16:35:23 ID:???
>>219
デザインも出来るのであれば有望だな。
掲示板やチャットが普通に作れるのであれば大丈夫だろう。
222nobodyさん:2006/06/26(月) 16:37:02 ID:???
>>219
ただ、「PHP関連の会社」
といっても、PHPだけをやっていればいいって訳じゃないだろうから、
そこんとこだけは注意。
223nobodyさん:2006/06/26(月) 16:37:08 ID:???
>>221
デザインは特に自身はないですけどね^^;
就活って自分から行動しなきゃダメなのに、
どうしてもその一歩がなかなか踏み出せないのですよorz
224nobodyさん:2006/06/26(月) 16:38:05 ID:???
>>213
PHPはサーバー側の技術だからそれだけじゃあまり使えないでしょ。
CSS,JavaScript望ましくはsql辺りができれば
会社の方も放ってはおかんでしょ。
ついでに言えば、客先に出向いて要件定義が出来て、
デザインも出来れば、鬼に金棒かな。
225nobodyさん:2006/06/26(月) 16:40:27 ID:???
>>223
昔の漏れみたいだな。
漏れの頃はPerlを勉強して、一般的な掲示板を作れるようになって、
それでweb製作会社に入ったよ。
その後、PHP、VB、C++など覚えていった。

自作のスクリプトのURLを前もってメールで送るとか、がんばろう。
226nobodyさん:2006/06/26(月) 16:51:20 ID:???
>>224
PHPを使いこなす力があれば、CSS, JSやSQLなどすぐだろう。
プログラマはデザイン力に劣る傾向があるので、
デザイン力があれば強い。webプログラミングは、HTMLに表示させる部分とは切り離せないからだ。
客先との折衝もできれば、将来はかなり有望といえるだろうな。
227nobodyさん:2006/06/26(月) 16:53:01 ID:???
CSS、JS はブラウザ依存があるしメチャ面倒だけどな
228nobodyさん:2006/06/26(月) 16:56:36 ID:???
>>227
昔は、IE、NetScapeで確認してたけど、
今はIEでしかみてない(・ω・)
229nobodyさん:2006/06/26(月) 17:06:41 ID:???
>>210
たぶんさくらの共有はDBを使うぜって設定すると自分の「データベース」は出来ている。
それ以外で「データベース」を作成することは出来ないと思う。telnet使えるんだから権限を確認してみる。
マニュアル見てみれ。
http://support.sakura.ad.jp/support/manual/rs/install_2.shtml
230nobodyさん:2006/06/26(月) 19:14:16 ID:yNRsQBsS
PEARのAuthを使ってHTTP認証を行おうとしています。

ユーザが所属するグループのIDとユーザのパスワードで承認を
行おうとしているのですが、パスワードが1件目のユーザでNGと
なった時点で認証失敗で終了してしまいます。

Authを使用して同じIDの全パスワードをチェックする方法は
ありませんでしょうか。

#今考えている方法は、「自力でチェックしてAuth_Anonymousを
#使用する。」か「Auth::loginをオーバーライドしてチェック」
#なのですが、可能であればAuthで提供されている機能のみで
#解決したいです。。。
231nobodyさん:2006/06/26(月) 21:57:47 ID:???
>CSS、JS はブラウザ依存
面倒だよねー
phpは純粋に楽しみながらできる
232230:2006/06/26(月) 22:06:35 ID:???
>>230
自己レスです。
fetchDataをオーバーライドして解決しました。
233nobodyさん:2006/06/26(月) 22:41:50 ID:???
ショッピングカートを作るのにセッションは絶対に必須ですか?
PHPやっていてセッションを使ったことがなかったので・・・
234233:2006/06/26(月) 22:57:59 ID:???
自己レスです。
とりあえずセッションの勉強をしてみます。
そしてそれがショッピングカートに必要か検討してみます。
なんでもかんでも聞くのは失礼な質問して申し訳ありません。
235nobodyさん:2006/06/26(月) 23:07:14 ID:???
>>234
面白くないのでやめてください。
236233:2006/06/26(月) 23:09:32 ID:???
すいません、初歩的以前の質問でしたね。以後質問には気をつけてます…
237nobodyさん:2006/06/26(月) 23:51:53 ID:???
perlでのDprof, SmallProfみたいなプロファイラは、ありますか?

GoogleでPHP プロファイラで検索しても出てこないようです。
よろしくお願いします。
238nobodyさん:2006/06/26(月) 23:56:38 ID:???
知らないことに対して教わる敬意は表してください。質問者としてIDだすのは、回答者に対しての礼儀です。
239nobodyさん:2006/06/26(月) 23:58:26 ID:AIwNfLy+
age進行なんてめずらしいスレですね。
ID出してもう一度質問させていただきます。

perlでのDprof, SmallProfみたいなプロファイラは、ありますか?

GoogleでPHP プロファイラで検索しても出てこないようです。
よろしくお願いします。
240nobodyさん:2006/06/26(月) 23:59:55 ID:???
初心者系質問スレはどこの板でも大抵はage進行だよ。初心者呼ぶために。
それに対して、初心者に来て欲しくないスレをsage進行にする。
241nobodyさん:2006/06/27(火) 00:01:59 ID:???
>>240
さんくす。
何年も2chにいて知らなかった orz...
ageるとたたかれるものかと思っていた.
スパムなどの書き込みが多いからって聞いたけど、ウソだったのかー うわーん
242nobodyさん:2006/06/27(火) 00:16:45 ID:???
お前らこういう関数作ってくれ

引数として 「俺」
実行すると返り値として「彼女」

頼む!お前らなら出来るはずだ!!
243nobodyさん:2006/06/27(火) 00:22:30 ID:???
ほらよ
function Morocco($man)
244nobodyさん:2006/06/27(火) 00:24:57 ID:???
func_242("俺");

function func_242($man) {
return "彼女" or die("無理!");
}
245nobodyさん:2006/06/27(火) 01:13:35 ID:???
初めまして。少しわからないところがあるので質問してみます。
$_SESSION['name'] = "田中";

別ページに移動して、

echo $_SESSION['name'];

としても何も表示されません。
どうやって別のページにセッションデータを移すのでしょうか?
246nobodyさん:2006/06/27(火) 01:15:06 ID:???
俺がちょっと前に質問したのと同じだなw

別ページの方でもせっしょんすたーと

書かないとだめなんだってよ
247nobodyさん:2006/06/27(火) 01:18:50 ID:???
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by
248nobodyさん:2006/06/27(火) 01:20:22 ID:???
>>247
少しは自分で調べろ。それは FAQ だ。
249nobodyさん:2006/06/27(火) 01:22:12 ID:???
スペースかなー
250nobodyさん:2006/06/27(火) 01:23:31 ID:???
>>248
一番最初に書かないといけないのですね
解決しました。
251nobodyさん:2006/06/27(火) 09:44:49 ID:???
>>242

function GetRateStedy($man){
  if (rand(255) == 77){
    return '彼女';
  } else {
    return '一生童貞';
  }
}
252nobodyさん:2006/06/27(火) 10:01:45 ID:???
>>237
xdebug
ただ、Dprofみたいなプロファイラではないが
253nobodyさん:2006/06/27(火) 10:15:53 ID:???
>>242

function GetRateStedy($man){
  if ($man != ">>242"){
    return '彼女';
  } else {
    return '一生童貞';
  }
}
254nobodyさん:2006/06/27(火) 11:56:15 ID:???
PHPとMySQLで名簿を作っています。
フォームからあるメールアドレスと名前・住所などが送信されたときに、
そのメアド(主キーです)がDBに存在しなければINSERT、
既に存在しているならUPDATEというSQLを投げたいと思います。

これを実現するにはあらかじめフォームから来たメアドをWHERE句に入れてまずSELECTしてみて、
結果がエラーとなるかどうかを調べておき、
その結果をもとにINSERTにするかUPDATEにするかを条件分岐させる方法しかないでしょうか?
255nobodyさん:2006/06/27(火) 12:41:47 ID:???
>>254
ない

adodb なんかは、それを自動的にやってくれるメソッドを用意しているが
内部的には同じようなことをやっている
256nobodyさん:2006/06/27(火) 12:47:29 ID:???
>>254
REPLACE構文を調べてみれ。
http://dev.mysql.com/doc/refman/4.1/ja/replace.html
SELECTしてからINSERT OR UPDATEとは動きが違うので注意
257nobodyさん:2006/06/27(火) 13:12:43 ID:???
一回DELETEしてからINSERT
258nobodyさん:2006/06/27(火) 13:41:32 ID:KxN4Ul2M
SQLServer+ASPから、SQLServer+(ODBC)+PHPに移行してるんですが、
LONG BINARY(OLE Object)のデータの出力方法が分かりません。

ASPのGetChunkみたいなので、少しずつ取ってくるようなイメージはあるんですが、
SQLServer+PHPだと、どんなメソッドを使えばいいんでしょうか?
259nobodyさん:2006/06/27(火) 13:43:33 ID:???
>>257
トランスフォームを忘れずにな
260nobodyさん:2006/06/27(火) 14:29:36 ID:???
>>257

DROP TABLEを忘れずに
261nobodyさん:2006/06/27(火) 15:09:04 ID:???
それじゃ
DROP DATABASEも忘れずに
262nobodyさん:2006/06/27(火) 15:10:42 ID:???
だったら
MySQLのアンインストールも忘れずに。
263nobodyさん:2006/06/27(火) 15:19:44 ID:???
だったら、
OSのアンインストールも忘れずに
264nobodyさん:2006/06/27(火) 15:21:23 ID:???
ttp://php.s3.to/bbs/temp/ibbs.php
レッツPHPの掲示板のログを、flockの処理のあやまりを突いて壊してきましたよ
265nobodyさん:2006/06/27(火) 15:33:57 ID:7osXzbuk
264
266nobodyさん:2006/06/27(火) 16:45:39 ID:???
どうせ管理してないんでしょ
267nobodyさん:2006/06/27(火) 16:50:10 ID:???
さっそく、海外からのURLの書き込みで流れだしている模様です。
268nobodyさん:2006/06/27(火) 16:54:30 ID:EpsxO8/5
自作でBLOGのPING送信ツールを作成しております。
色々なBLOGの本を読みますと、XML-RPC関数を使えとありますが、私の使用しているサーバーでは
PEARを使えない為、fsockopen関数で作ってみました

例えばping.myblog.jpに送信する場合は、
$fp = @fsockopen("ping.myblog.jp",80, $errno, $errstr, 30);
fputs ($fp, "POST / HTTP/1.1\r\n");
fputs ($fp, "Host: 送信元サーバーのドメイン\r\n");
fputs ($fp, "User-Agent: PHP/".phpversion()."\r\n");
fputs ($fp, "Content-Length: PING用XMLの文字バイト数\r\n");
fputs ($fp, "Content-Type: text/xml\r\n");
fputs ($fp, "\r\n");
fputs ($fp, PING用XML本文);
fputs ($fp, "\r\n");

これで送信した結果、HTTP/1.1 200 OKが帰ってきまして、特にエラーメッセージは出ないのですが、
反映されません。
ヘッダー自体がおかしいのでしょうか?
何かご指摘ありましたら、ご教授頂けると幸いです。
269nobodyさん:2006/06/27(火) 17:06:12 ID:???
>>264
漏れがテスト投稿してみたらさらに変になってしまったぞ!
270nobodyさん:2006/06/27(火) 17:11:00 ID:???
>>268
で、そのレスポンスの本文はどんな内容になってる?
それを読んでみたまえ。
271nobodyさん:2006/06/27(火) 17:15:20 ID:EpsxO8/5
>270

反応有難うございます。

HTTP/1.1 200 OK Date: Tue, 27 Jun 2006 08:11:57 GMT Server: Apache Connection: close Content-Type: text/xml; charset=EUC-JP flerror 0 message Thanks for the ping.

こういったレスポンスが返って参りました。
しかし、何分経過しても更新記事リストに表示される気配はありませんでした。
272nobodyさん:2006/06/27(火) 17:21:24 ID:???
>>271
レスポンスヘッダーじゃなく、本文の方だよ。
273nobodyさん:2006/06/27(火) 17:23:13 ID:???
fputs ($fp, PING用XML本文);
fputs ($fp, "\r\n");
fputs ($fp, "\r\n");
じゃだめなのか?
274nobodyさん:2006/06/27(火) 17:46:40 ID:EpsxO8/5
>>271
すみません、勘違いしてしまいました。
<?xml version="1.0" encoding="UTF-8"?>

<methodCall>

<methodName>weblogUpdates.ping</methodName>

<params>

<param>

<value>ブログタイトル</value>

</param>

<param>

<value>ブログのURL</value>

</param>

</params>

</methodCall>
このような形になります。


>>273
有難うございます。
そちらも今、試してみましたが、やはり反映されませんでした。
275nobodyさん:2006/06/27(火) 17:59:55 ID:t5dObYiZ
error_log()関数で[REMOTE_ADDR]とかをファイルに記録すると便利ですが、
これはエラー時にしか使ってはならないものですか?

エラーではない通常処理にこれを使いたく思うのですが...

error_log()関数
http://php.s3.to/man/function.error-log.html
276nobodyさん:2006/06/27(火) 19:29:58 ID:???
>>275
別にいいんじゃね?
3で別ファイルに記録すればerror_logファイルもキレイだろ
277nobodyさん:2006/06/27(火) 19:39:35 ID:???
error_log って名前が嫌なので、
error_log をラッパする関数を用意して使ってるよ。

ttp://pear.php.net/package/Log
なんてのもあるし。
278nobodyさん:2006/06/27(火) 20:32:57 ID:???
Call to undefined function mysql_connect()

PHP5.0.14
MySQL5.0.22

http://allabout.co.jp/computer/database/closeup/CU20060414A/index.htm
上記のサイトを見て

$dbHandle = mysql_connect("localhost","root","root")
or die("can not connect db\n");

を実行したところ、タイトルのようなエラーが出ました。

php.iniでextension=php_mysql.dllも書かれていて、
php_mysql.dllもphp/extに入っています。

phpinfo()で見ると、MySQLらしき部分がありません。
どうすれば実行できるのでしょうか?
279nobodyさん:2006/06/27(火) 20:35:21 ID:???
>>268
PEARコマンド使えなくても、手動で設置すれば
PEARのライブラリは動作するぞ。

利用するライブラリがPECLに依存してたら難しいが。
280nobodyさん:2006/06/27(火) 20:38:02 ID:???
>>278
OSは?
281nobodyさん:2006/06/27(火) 20:53:17 ID:???
>>278
リンクを示すなら、こっちだろ
http://allabout.co.jp/internet/database/closeup/CU20050320A/index.htm

修正したphp.iniが本当にPHPの設定に反映されるものなのか確認
例えば手順にある「magic_quotes_gpc = Off」をOnにしてみて
phpinfoで変わっているか。あと手順「6. DLLのコピー」の抜けはない?
282nobodyさん:2006/06/27(火) 21:17:03 ID:???
>>280
WindowsXP Proです

>>281
magic_quotes_gpc = Offに変えて、ApacheをRestartしても変化なしです。
一度Stopさせたほうがよいのでしょうか
283nobodyさん:2006/06/27(火) 21:18:19 ID:???
>>281
Stop⇒Startしたは反映されましたが、
相変わらず動かないです。

DLLの
284nobodyさん:2006/06/27(火) 21:20:28 ID:???
>>281
手順6の作業が抜けていたので、system32にコピーして
Apacheを再起動させましたが、まったく変化がありません
285nobodyさん:2006/06/27(火) 21:23:05 ID:???
>>284
ExtensionDirはちゃんと設定したか?
286nobodyさん:2006/06/27(火) 21:25:41 ID:???
>>285
extension_dir = "php/ext" なので、大丈夫です。
287278:2006/06/27(火) 21:28:33 ID:???
とりあえずphp.iniをうpしました
http://www.uploda.org/uporg428225.txt
288nobodyさん:2006/06/27(火) 21:30:40 ID:???
>>286
それでちゃんと正しいところを指してるとは思うけど
(ロード出来なかったらエラー出てる筈だから)
念のためダブルクォートで括ったドライブ名から書いたフルパスにしてみ。
289278:2006/06/27(火) 21:33:33 ID:???
>>288
パスをC:/PHP/extとしたら実行できました。
ありがとうございました。
290278:2006/06/27(火) 21:38:48 ID:???
あと、しょうもない質問すみません^^;
作成したDBを直で見たいときは、どのソフトを使えばよいのでしょうか
MySQLはAccessでは無理なんでしたよね
291nobodyさん:2006/06/27(火) 21:45:37 ID:792aro1J
データベース(MySQL)にINSERTする文字列は、何かに変換する必要はありますか?
あるとすればそれはどんなことでしょうか。
292nobodyさん:2006/06/27(火) 21:47:50 ID:???
>>290
phpMyAdmin

>>291
addslashes
293nobodyさん:2006/06/27(火) 21:49:43 ID:792aro1J
>>292
ありがとんこつラーメン(・∀・)
294nobodyさん:2006/06/27(火) 21:49:57 ID:???
上記の理由から、当サイトにて公開していたphpMyAdmin日本語版は配付終了とさせて頂きます。


orz
295nobodyさん:2006/06/27(火) 21:51:33 ID:???
phpMyAdminは元から日本語対応だし
296nobodyさん:2006/06/27(火) 21:53:20 ID:???
どもありです。
これはシェアなのでしょうか。
297nobodyさん:2006/06/27(火) 21:57:44 ID:???
function make_girl_friend($man) { # >>242
 if (is_under12($man)) die('早すぎます><');
 if (has_wife($man)) die('離婚すればいいよ^^');
 if (has_H($man)) die('貴様は二次元で十分');
 if (is_impo($man)) die('人生\(^o^)/オワタ');
 return get_woman($man);
}
function get_woman($man) {
 $woman; $rnd = mt_rand(0, 10);
 switch ($rnd) {
  case 2 :
   $woman = "エルメスたん";
   break;
  case 3 :
   $woman = "細木数子";
   break;
  case 5 :
   $woman = "HG";
   break;
  case 6 :
   $woman = "インリン";
   break;
  case 8 :
   $woman = "泉ピン子";
   break;
  case 9 :
   trigger_error('彼氏のモトカノのモトカレ');
   break;
  default :
   $woman = null;
 }
}
298nobodyさん:2006/06/27(火) 22:07:53 ID:???
>>295
いや、昔は日本語対応なんてしてなかったよ。
294のは日本語対応されたので、私家版の配布を止めます宣言
つか古い話だよなw
299nobodyさん:2006/06/27(火) 22:09:33 ID:???
>>298
そうなのですか。
config.inc.phpが見つからないのは仕様でしょうか・・・
300nobodyさん:2006/06/27(火) 22:20:28 ID:???
>>299
俺に振るのかw

config.default.phpをベースに変更して、自分用のconfig.inc.phpを作る。
最近ので実験版とかじゃないやつは、installユーティリティが入ってて
それで自分用のconfig.inc.phpを作ることも出来る。
バージョンで差異があるので、自分の入手したもののドキュメントをあたれ。
301nobodyさん:2006/06/27(火) 23:09:21 ID:???
>>300
いえいえ、詳しそうなので^^;
使ってみたのですが、まったく使い方がわかりませんね(笑
とりあえず$cfg['DefaultLang'] = 'ja';にしたのですが、日本語にならないですしorz
302nobodyさん:2006/06/27(火) 23:09:50 ID:???
phpで別ドメインのセッションの共有ってどうやるのです?
サブドメインの場合はsession.cookie_domainでできるみたいですが、
example.jpとexample.comとexample.netとauau.infoで共有する方法を探しています。
宜しくお願い致します。
303nobodyさん:2006/06/27(火) 23:10:19 ID:8VAiAYdr
>>276
3で別ファイルに記録しています。

アクセスログを全部見るまではしませんが、
特定のアクション(ボタン押し下げ等)をした時のIPなどを
記録したいと思いまして。エラー処理ではないのですけど。
304nobodyさん:2006/06/28(水) 00:00:34 ID:5cOrr7Id
include の取消みたいなことはできますか?
もう少し正確に言うと、include したファイル内で定義された関数の取消というか。
同じファイルを複数回 include したいのですが、そのファイルの中で関数定義があるため、二度目の include でエラーになってしまいます。
さらに悪いことに、include されるファイルは数種類あり、それぞれのファイルの中で同名の関数が定義されていることもあります。

その include されるファイルというのは画面のテンプレートになっていて、メインのスクリプトでは決まった変数にパラメータをセットしておき、
画面テンプレートを include することにより、画面出力を行うという仕組みになっています。
画面出力と言っても、それは HTMLファイルに出力するようになっています。
メインのスクリプトは大量のHTMLファイルを作成するスクリプトで、数種類の画面テンプレートを何度も include して、その結果をファイルに落とし込む処理をしています。
で、画面テンプレート内に固有の関数定義をした場合に、include が失敗するという問題に突き当たってしまったというわけです。

今は実験的に、関数定義を if(function_exists(〜)) の trueパートに置くことにより二重定義を避けていますが、別ファイルに同じ関数名があるようなケースに問題があります。
全ファイルを通して関数名をユニークにするという案もあるかと思いますが、ひとまずそれ以外の方法があればそれを知りたいです。
305304:2006/06/28(水) 00:05:07 ID:???
× 関数定義を if(function_exists(〜)) の trueパートに置くことにより
○ 関数定義を if(!function_exists(〜)) の trueパートに置くことにより
306nobodyさん:2006/06/28(水) 00:13:30 ID:???
>>304

悩むべきポイントを大幅に間違ってるような気がする。
やろうとしてることはだいたいわかったが、説明するより直接手加えた方がはやそうなんで
実物の骨組みをここに貼り付けてくれ。或いはソースをまとめて、どっかにウプしてくれ。
307304:2006/06/28(水) 00:29:21 ID:???
イメージですが、

main.php

$resource=InitResource(); // 出力ファイル名、画面テンプレート名、パラメータなどを求めるための何らかのリソース
while(($params = GetParameters($resource)) !==false) {
 StdoutToFileStart($params['outfile']); // 標準出力をファイル化する処理開始(独自関数)
 include $params['template']; // $param内に設定された様々な値を利用するファイル
 StdoutToFileEnd(); // ファイル化終了
 unset($param);
}
308304:2006/06/28(水) 00:32:47 ID:???
テンプレート側
template1.php

<html>
<table border="1">
<tr><td>ID</td><td>名前</td></tr>
<? foreach($param['data'] as $rec) { ?>
<tr><td><?=$rec['id'];?></td><td><?=hoge($rec['name']);?></td></tr>
<? } ?>
</table>
</html>
<? // 固有関数定義
function hoge($str)
{
 // 固有処理
 return $result;
}
?>
309304:2006/06/28(水) 00:35:16 ID:???
main.php は、DBを引くなどしてパラメータ $params を作り、そのパラメータに基づいて画面テンプレートを include し、ファイル化していきます。
include される画面テンプレートは tenplate1.php のような感じで、ここでは固有関数 hoge を定義しています。
実際はもうちょっと複雑な処理で、しかも画面テンプレート毎に固有で、標準化しづらい内容のものになっています。
で、画面テンプレートはどんどん増えていきます。
どんどん増える都合、関数名をユニークにするなどの処置は管理上の問題が出てきまして、できれば避けたいのです。
310nobodyさん:2006/06/28(水) 00:44:16 ID:???
>>264
なにしたの?
自分のとこがきになる
311nobodyさん:2006/06/28(水) 00:57:54 ID:???
>>304
抽象クラス一個作って継承すれば?
インクルードの取り消しとかぜってーごちゃごちゃする気がするんだけど
ちなみに取り消しができるかどうかは俺は知らね
312304:2006/06/28(水) 01:02:15 ID:???
>>311
クラスにしても二重定義の問題は出るかと思いますが、そんなことないですか?
名前無しの即値クラスみたいなものが使えたりします?
313nobodyさん:2006/06/28(水) 01:08:49 ID:???
>>302
できない

>>303
関数名にとらわれ過ぎ
parse_ini_file()でもiniファイル以外を開いていいんだよ

>>304
できない
というか、プログラムの基本構造の組み立て方が間違ってる
1.機能が違うのに同名の関数がある→関数名の名付け方がおかしい
2.機能が同じで同名の関数がある→関数の割り振り方がおかしい

1なら素直にリネーム
2ならそういう関数を別ファイルにしてinclude

一番いいのはクラス化すること(PHP4以上)
314nobodyさん:2006/06/28(水) 01:10:39 ID:???
>>312
なんでクラス作って二重定義になるんだ
同じクラスを2個作る気か
315304:2006/06/28(水) 01:19:50 ID:???
>>314
同じファイルを二度 include することがあるからです。

>>313
最終的にはリネームすることになると思うのですが、まずは他の方法を模索したいところです。
名前ばダブらないように管理するということを、できればしたくないからです。
スコープがファイル内だけの関数定義ができるとか、Javaの無名クラスみたいのが作れるとかがあればいいんですけどね・・・
多少トリッキーでも、何かいい方法は無いものですかね。

ちなみに関数名って、MakeTree とか MakeTable みたいなありがちな名前で、でもその実装はテンプレートによって微妙に違うという、困った状況になってます。
316nobodyさん:2006/06/28(水) 01:20:51 ID:???
requierじゃだめなの?
317nobodyさん:2006/06/28(水) 01:47:02 ID:???
>>304
おまいさんはinclude_onceとかrequire_onceとか知らないの?
318nobodyさん:2006/06/28(水) 01:47:53 ID:???
言語仕様を無視して、うんこな設計を推し進めるなよ。
319311:2006/06/28(水) 01:49:58 ID:???
>>304
何で継承してんのに多重定義になるの?そこはクラス名変えろよ。
さっきも言ったけどトリッキーなのはやめといた方が無難な気がする。

>>317
別ファイルに同名関数があるんだってさ

ブラジル猛攻
320nobodyさん:2006/06/28(水) 01:57:02 ID:???
>>317
include_once は、二度目以降テンプレートの中身が出力されなくなるのでダメです。
・同じファイルを二度以上 include する必要があり、
・その中身は include されるたびに評価される必要がある
という条件になります。

>>319
同じファイルを二度 include する必要があるという点を考慮していただけないでしょうか。
異なるファイルを一度ずつ include するなら、ファイル間でクラス名を変えればいいというのは正解ですが。
321317:2006/06/28(水) 01:57:06 ID:???
なるほど・・・
基礎というか組み立て方が分かってないのね
把握した

>>304
ファイル毎に機能を振り分けて図に書いて整理してみるといいよ。
プログラムなんて積み木みたいなもんだから、ちゃんと組み立てればそれなりのものができるけど、
全体を把握せずにガンガン積み上げていったら一気に崩壊するよ。
322317:2006/06/28(水) 02:02:30 ID:???
なんか書込みが増えてた・・・

>>320
自分もinclude_once使ってるけど、
>二度目以降テンプレートの中身が出力されなくなるのでダメです。
こんなコトになったことはないよ。
include_onceでテンプレートファイルをそのまま出力してるクチかな?
323304:2006/06/28(水) 02:03:41 ID:???
>>320 の発言は自分の発言です。

>>321
関数ライブラリを作って include しようって話ではなく、画面テンプレートを include により出力しよう、というのが今回のテーマです。
画面テンプレートは、プラグインのようなイメージで勝手に追加できる、という感じにしたいのです。
そのため、テンプレートの作者間で意思疎通をしない限りは、関数名がダブるという事態が発生してしまうのです。
命名規則として、テンプレートファイル名に等しいプレフィックスを関数名につける、等のルールを設定することもできますが、
できれば余計なルールを設けないような選択肢があるのならそちらを採りたいと思った次第です。
324304:2006/06/28(水) 02:06:35 ID:???
>>322
あれ、>>308 のようなファイルを include_once したとき、二度目の include_once でこの HTML の内容って出ますか?
出ないと思ってたのですが、勘違いかも。
ちょっくら実験してきます。

ちなみに、include で標準出力に出力されるべき内容を、出力バッファハンドラを設定することによりファイルへ書き込む、という処理をやってます。
325304:2006/06/28(水) 02:10:18 ID:???
実験してみました。

test.inc というファイルに
TEST1

という内容を書込み、

<?
include_once 'test1.inc';
include_once 'test1.inc';
?>

とやっら、

TEST1

と一行だけ出力されました。
残念ながら、これじゃダメなんです。
326nobodyさん:2006/06/28(水) 02:19:47 ID:???
>>304
前後の話は読んでない。
そりゃinclude_onceなら一行(一回)しか実行されないよ。
両方実行したいなら普通のincludeでやってみれみれ
327nobodyさん:2006/06/28(水) 02:19:58 ID:???
>>324
>>322
> include_onceでテンプレートファイルをそのまま出力してるクチかな?
って書いてるじゃない。つまり、322は>>308みたいなHTMLは使ってない。
多分、関数か変数に代入したデータが書かれてて、それを実行してる。

includeする内容に直にHTMLが書かれてて何度も出力が必要な場合はonceは使わない。

>>315
> スコープがファイル内だけの関数定義ができるとか
こういうのはどう?
template1.php

<? // 固有関数定義
$funcparam = '$str';
$funcbody = '
 // 固有処理
 return $result;
';
$funcname = create_function($funcparam, $funcbody);
?>
<html>
<table border="1">
<tr><td>ID</td><td>名前</td></tr>
<? foreach($param['data'] as $rec) { ?>
<tr><td><?=$rec['id'];?></td><td><?=$funcname($rec['name']);?></td></tr>
<? } ?>
</table>
</html>
328nobodyさん:2006/06/28(水) 02:20:39 ID:???
>>304
設計思想がそもそもおかしいのをどうにかしたいと言われてもねぇ。
まぁ、「名前空間」で検索してみたら?
329nobodyさん:2006/06/28(水) 02:22:22 ID:???
これじゃダメなんです。

一体何様なんだ、こいつはww
330nobodyさん:2006/06/28(水) 02:25:39 ID:???
>>304

テンプレートファイルに名前ついてるだろ?それが固有の識別子になってるのに、
なんでclass化するなりして名前空間を指定しないでglobalに放り込んでるんだ????

template1.php → class template1 で全部解決するやん
331317:2006/06/28(水) 02:27:20 ID:???
>>327
フォローありがと

>>325
それ、テンプレートとPHPが1つのファイルに混ざって書いてあるのね。
>>308の方は見て無かったよ。ゴメン

HTML部分とPHPの関数部分を切り離して、HTMLはincludeで何度も出力、
PHP関数部分はsubroutine.phpとかにでも移してinclude_onceで読み込むのがいいと思うよ。
332nobodyさん:2006/06/28(水) 02:27:39 ID:???
requireだな
333nobodyさん:2006/06/28(水) 02:27:59 ID:???
>>304
よし、俺様がまともな解決法を教えてやるよ!
これでも使っとけ!
拡張組み込む必要はあるが、お前のやりたいことがそのまま叶うからな!
http://www.php.net/manual/ja/function.runkit-function-redefine.php

じゃ、もう二度と来るなよ!
334nobodyさん:2006/06/28(水) 02:30:33 ID:???
>>330
もうちょい言うなら、それに加えてテンプレートと中で使う固有処理はファイルを分けて、
template1.php
<?php
require_once("template1func.php");
?>
<html>

</html>

template1func.php
<?php
function template1() {
固有処理
}
?>
として、template1.phpはrequire()で読み込む、って感じで
require()とrequire_once()をちゃんと使い分けるべきなんだよね。
335nobodyさん:2006/06/28(水) 02:36:14 ID:???
なんか急に人増えたな
336nobodyさん:2006/06/28(水) 02:36:33 ID:???
全部同じ人だよ
337304:2006/06/28(水) 02:36:54 ID:???
>>327
create_functin なんてものがあるんですね!
長い関数になると少々厳しそうですが、名前のダブリを心配しなくていい方法として大変有力ですね!

でもこれ、同じ引数で複数回呼び出したときって、同じ内容の別名の関数がどんどんできていくのでしょうか?
リファレンスをちょっと見た範囲では、特に寿命について書いてあるわけでもなく、また関数を削除するアクションについても
書いてないので、スクリプトの実行が終了するまでメモリに留まるんでしょうね。
戻り値が「関数オブジェクト」みたいなものなら良かったんですけどね・・・

さらに >>333
runkit_function_redefine なんてのがあるのですか。
というか、runkit_function_remove なんてのがあるんですね!
これが正解な気がしますね!
ただ、runkit の使い方について不勉強なもので、ターゲットの環境で使えるかどうか不明なのがナニです。
とりあえず実験してみます。

なんにしても、新しい材料が手に入ったので、何かいい実装方法があるか検討してみます。
ありがとうございました。
338nobodyさん:2006/06/28(水) 02:37:58 ID:???
>>337
> これが正解な気がしますね!
だって。
はいはい、終了。
339nobodyさん:2006/06/28(水) 02:39:17 ID:???
>>これが正解

いや、いいけどね。
340nobodyさん:2006/06/28(水) 02:39:48 ID:???
ごめん、かぶった
341nobodyさん:2006/06/28(水) 02:43:09 ID:???
初級者が初心者を輪姦中と聞いてdで来ました!
342nobodyさん:2006/06/28(水) 02:44:09 ID:???
includeで自動出力させる理由がわからない・・・
template.phpをtemplate.class.phpに書き換えるスクリプト一つ用意すれば何もしなくても解決できる・・・
そもそもtemplateに関数定義とか入ってる時点でtemplateじゃないと思うし、分離すりゃいい・・・
標準出力使う理由も不明・・・

なんか、ものすごく間違った覚え方したまま成長しちゃって取り返しが付かなくなってる感じ。
手軽さとか利便性とか分かりやすさを重視するため!って思いこんでるだろうけど、
あんたの考え方さえ変わればすぐに手軽で分かりやすいシステムになるよ。
自分がその作業の一番のボトルネックだって認識するところからはじめるべき。
343304:2006/06/28(水) 02:44:19 ID:27YOZKQj
あー
関数名(あるいはクラス名)がユニークになるようなルールを定めて実践しろというのも正解だとは思いますが、
今回の意図としては、どちらかといえば関数名のダブリを避けるというよりは、関数のプライベート化という方が近いので、
関数エントリの削除という手段が正解だと判断したものです。
344nobodyさん:2006/06/28(水) 02:45:30 ID:???
>>343
じゃあ、ユーザが「include」って名前の関数を作りたいって言ったらどうするんだ?
345nobodyさん:2006/06/28(水) 02:45:41 ID:???
>関数のプライベート化という方が近いので、
クラスって聞いたことない?
>関数エントリの削除という手段が正解だと判断したものです。
みんなそれが間違ってるって指摘してんのに、一人固執してるから進まないんだよ
346nobodyさん:2006/06/28(水) 02:47:59 ID:???
>>337
> でもこれ、同じ引数で複数回呼び出したときって、同じ内容の別名の関数がどんどんできていくのでしょうか?
まぁ、そうだね。多重生成を防止する方法はいくらでもあると思うけど。
347nobodyさん:2006/06/28(水) 02:48:14 ID:???
とんだ頑固者だぜ!
348nobodyさん:2006/06/28(水) 02:48:50 ID:???
304の同僚?依頼主?が可哀想に思えてきた
349nobodyさん:2006/06/28(水) 02:51:51 ID:???
もう良いと思うよ。関数削除できるんならそれはそれで動きそうな気もしてきたし。
自分で一から作ったやつじゃなくて他人が作ったのが回ってきたんだろ。
で設計思想はそのまま引き継ぐ必要があるんだよきっと。
350nobodyさん:2006/06/28(水) 02:54:04 ID:???
いいじゃん、もう解決したらしいんだから。
好きなようにさせてやればいいんだよ。
正しい方法を自分で選べるやつは、あんな方法とらないし
聞く耳持たないバカには何言っても無駄。
351nobodyさん:2006/06/28(水) 02:54:36 ID:???
気に食わない同名の関数は俺がオーバーライド(正確には違うが)しちゃうぞ
ってことを奨励する混沌とした弱肉強食システム。
352nobodyさん:2006/06/28(水) 02:54:36 ID:???
system()でtemplate動かせばいいだけじゃ
353nobodyさん:2006/06/28(水) 02:55:45 ID:???
>>350

根拠もなくそのやり方は嫌だという人間に質問する権利はないとおもう
354304:2006/06/28(水) 03:01:06 ID:???
>>342
その意図は >>323 にあるとおりです。
データの表現方法を自在にしたいという目的があります。
標準出力を使う理由は、PHP は標準出力にモノを出力するのに都合がよいからです。
include するだけで画面に出ますから。

で、画面と関数定義を分けなさいという意見、至極もっともなわけですが、
関数内のほとんどがコードが HTML 出力をしている(というか、一時 PHPコードを解除して HTMLそのものが書かれている)ような場合、関数だからといってファイルを分けるという選択がしづらいこともあります。
たとえばテーブル中にテーブルを作っていく、なんてコードがありまして、ぱっと見HTMLなのですが、その部分は再帰的に呼び出される関数として構成されているわけです。
その関数を別ファイルにしてしまうと、テーブルの中身のHTMLコードまでそっちのファイルに行ってしまい、画面デザインの変更があると二つのファイルをいじるハメになってしまいます。

なので、最も欲しかった方法は、無名関数や無名クラス、あるいはファイル内にスコープが限定されるなプライベートな関数やクラスだったのです。

>>345
何度も言っていますが、クラスにしても、クラスの二重定義の問題は回避できないです。
関数とかクラスとかそういう問題じゃなくて、「何かの定義」の有効範囲の問題です。

>344、351
テンプレート作る人はPHPを知ってる人が対象なので、そういう無茶は無いという前提です。

>>352
それも考えたのですが、パラメータの引継ぎ方法に難がありました。
単なる文字列とか数値やそれらの配列程度ならなんとかなるのですが、何かのオブジェクトだったりしたときにダメでした。
355nobodyさん:2006/06/28(水) 03:03:01 ID:???
>>354
しつこいよ。
無茶な要求にみんなイライラしながらも、我慢して解決法や問題点の指摘をしてくれたんだ。
これ以上荒らさず、さっさと消えろ。
356nobodyさん:2006/06/28(水) 03:03:42 ID:???
>>354
だから「名前空間」言うとるじゃないか。
名前空間が使えない言語は、何かしらのルールで名前の衝突問題を乗り切る。
これ基本。
357nobodyさん:2006/06/28(水) 03:05:03 ID:???
>>304

救いようの無い馬鹿だな。テンプレートにファイル名はあるんだろ?
クラス名をテンプレートファイル名と同じルールでつければ終わるだろうに。
何?テンプレートにclass{}とか書きたくない?
じゃラッパー書けばいいじゃん。意味わかる?

”あれだとこれができない、あれじゃないとこれはできない”
人様に聞かないと、この程度も解決できないくせに、何考えてんだ。
358nobodyさん:2006/06/28(水) 03:09:27 ID:???
includeで出力しようとしているところが間違っていたと気づいてほしかったな。

>>357
たぶんね、そのクラスを定義したファイルを何回もインクルードしたいって事だと思うのよ。
最初まさかと思ってたけど、もうそうとしか思えん。
359nobodyさん:2006/06/28(水) 03:12:39 ID:???
>>358

includeで出力させるんじゃなくて、テンプレート出力を変数に格納し都度echoするようにすればそんなアホなことしなくて良いのに。
って、それすら理由もなく嫌だ嫌だ言うんだからどうしようもないな。

つーわけで304はプログラマ辞めた方がいいとおもう。周りも口にしないだけで大なり小なりそう思ってるとおもうよ。
360nobodyさん:2006/06/28(水) 03:15:15 ID:???
304は知識不足というより人格不足だな・・・・・
361nobodyさん:2006/06/28(水) 03:21:19 ID:???
こんなキチガイを誘い込んだ306が一番悪いとおもふ
362nobodyさん:2006/06/28(水) 03:25:55 ID:???
クラスにしろとかrequireにしろとか_onceにしろとか、もう見てらんない
>>307-309も理解できないウンコ共は、余計なこと言わないで黙って見てなさいってw
マジメな話、PHPで304の言うようなこと(関数のローカルスコープ化)はできないよ
自分でも言ってるけど、命名規則設けてコンフリクトを避けるのが一番スマートだと思われ
関数定義のオーバーライドとか消去とかやるにしても、結局テンプレートに手を入れなくちゃいけないんだろ?
363nobodyさん:2006/06/28(水) 03:31:30 ID:???
掲示板のスキンとかblogのテンプレートファイルとかの類かな。
似たような案件は見たことあるからまー気持ちは分からんでもないかも。

>>357
> クラス名をテンプレートファイル名と同じルールでつければ終わるだろうに。
その話はすでに>>323で終わってるけどね。
スキンの類だとファイル名からして同じだったり不定だったりして回避策にならんとは思う。
(使う環境に応じてディレクトリ+ファイル名に命名ルールを変更、とかの話が出てくる)
ファイル名変更に合わせてファイルの中身を置換するスクリプトが必要になるな。

まー、その仕組みでincludeで生のままファイルを扱おうって時点でかなりムリのある話だと思う。
364362:2006/06/28(水) 03:32:20 ID:???
あぁ おれもウンコだった…
関数名のコンフリクトは避けられても、二重インクルードがあるのか
それなら>>304の言うような if で function_exists 使う方法かな…
関数定義とテンプレートを分けたくないんでしょ?
365nobodyさん:2006/06/28(水) 03:33:57 ID:???
>>362
いや、皆いちいちコードの内容なんて見てないって。
質問内容と、そのやり取り(応答)の内容で「こりゃ駄目だ」って思ってるだけ。
require とかそういう話題は、そもそもそういう事で悩まなくていい実装方法を
例示してに過ぎないだけだと思うけど。
ちにかく、設計の仕方がまずい。これに尽きる。
366nobodyさん:2006/06/28(水) 03:36:49 ID:???
>>364
個人的にはcreate_functionが1番てっとり早いと思うけどね。
多重生成でのメモリの無駄を気にしてるみたいだけど、
同じファイルの多重includeって何回くらいまであるんだろう?
2〜3回くらいなら気にせず生成させちゃった方が話が早くね?
367nobodyさん:2006/06/28(水) 03:41:03 ID:???
どうしてもつっこみたいから一言だけ言わせて
その後はスルーするから

>>354
>たとえばテーブル中にテーブルを作っていく、なんてコードがありまして、ぱっと見HTMLなのですが、その部分は再帰的に呼び出される関数として構成されているわけです。
>その関数を別ファイルにしてしまうと、テーブルの中身のHTMLコードまでそっちのファイルに行ってしまい、画面デザインの変更があると二つのファイルをいじるハメになってしまいます。
それも構造次第
オレは似たようなことやってるけど、ちゃんと考えてるからテンプレートは弄っても関数が書かれてるファイルは弄らなくて済むように作ってる
ちゃんとMVCも考えて作んなきゃ糞

オマエのやろうとしてるのは他人が読めないコードを量産してるだけに過ぎない
※ココで言う「読めない」とは「読みにくい」「読む気が失せる」という意味
368362:2006/06/28(水) 03:45:24 ID:???
>>365
プラグ印やらスキンやらをお手軽にやろうと思ったとき、>>304のアプローチはそう悪くないと思うぞ?
PHPのテキスト中にコードを埋められるという利点をうまく生かしてると思うが
お前ならどんな設計するんだい?
応答内容の悪さは若干後付気味なくらいで、他に問題あるか?
おれも似たような案件でinclude使ったからよくわかるというか、まぁそんときは関数定義しないで回避できたけど

>>366
画面デザインとPHP(の関数)が溶け合ったコードみたいだから、create_function化するのは苦労しそうだ
ついでに、関数とHTMLが溶け合ってるコードも見たことあるけど、それはそれで読みやすいというか、むしろ分けないほうがいい感じ
HTMLのど真ん中に関数定義があって、関数が終わらないのに再びHTMLになってるようなコードなんだけど、すげー合理的だった
ちょうどそれも再帰処理で、入れ子構造の画面を展開するトコだったんだけどな
369304:2006/06/28(水) 04:03:35 ID:???
引っ込んでようと思ったのですが、アドバイスをいただけているようなのでお礼がてらに。
結論から言って、runkit 使うとかはやめようと思いました。
>>352 でローカルスコープ関数定義はできないこともわかりましたので、その方面でも踏ん切りがつきました。
create_function も、やはりHTMLが混じった長いの関数もあったため、あまり得策では無さそうです。
というわけで、命名規則の設定と function_exists でいってみようかと思います。

>>363 の言うような、ファイル中の関数を置換するというアプローチ、いい案ですね。
しかしテンプレートをパースするのに苦労しそうなので、今回はお手軽な方法に逃げてしまいます。

>>367
おっしゃること、よく理解できます。
ただその部分は、それはそれでうまい構造になってまして、HTMLの可読性もPHPの可読性もよく両立しているかに見えます。
混じりあったコードを分離して、なおかつお互いの可読性を高めるような構成はなかなか難しそうです。
そして、そういうコーディングスタイルを奪うことも、できればしたくないです。

あと、なんだかんだでダメな理由ばかりを返信することになってしまったこと、申し訳なく思っています。
でもたくさんの書込みを頂いて、みなさんには感謝してます。
ありがとう。
370nobodyさん:2006/06/28(水) 04:06:00 ID:???
eval
371304:2006/06/28(水) 04:06:20 ID:???
あちゃー
× >>352 でローカルスコープ関数定義はできないこともわかりましたので、
○ >>362 でローカルスコープ関数定義はできないこともわかりましたので、

スマソ
372362:2006/06/28(水) 04:27:32 ID:???
もう済んだみたいだけど、おれの質問
こんな再帰構造BBS展開のコードがあったとして、これを>>367だったらどう分ける?

<? hoge($thread); ?>
<? function hoge($data) { ?>
<TABLE BORDER=1>
<? foreach($data['thread'] as $a) { ?>
 <TR><TD>
 <?=Date('Y/m/d', $a['date'])?> 名前:<?=$a['name']?><BR>
 タイトル:<?=$a['title']?><BR>
 <?=$a['text'];?>
 <P>
<? if(!empty($a['subthread'])) hoge($a['subthread']); ?>
 </TD></TR>
<? } ?>
</TABLE>
<? } ?>

コードは簡単なので、説明省略
373nobodyさん:2006/06/28(水) 05:55:27 ID:???
>>365
include と require って、ファイルが見つからないときに warning になるか fatal error になるかの違い以外に差異ってあるの?
374nobodyさん:2006/06/28(水) 06:01:56 ID:???
>>373
無いよ。何の話??
375nobodyさん:2006/06/28(水) 06:05:55 ID:???
>>374
いや、include でだめって話をしてるのに require を使えって回答がみたいだから。
>>365 の言いぶりにしても、require なら悩まなくてもいいという意見にも見えるし。
376367:2006/06/28(水) 06:16:15 ID:???
>>372
Smartyを使う
377nobodyさん:2006/06/28(水) 07:01:27 ID:???
>>376
Smartyについてはよく知らんが、
うpされてるコード読んだけど、それなら >>372 の方がシンプルで読みやすいし修正も容易そうじゃないか?
subtable.template を関数定義ファイルとしないで main.php に関数を定義してそこから include してる意図は、関数定義とHTMLを完全分離したということなのかな?
だが画面のデザインを変えるときに main.php にまで影響が及ぶ可能性があるのが嫌な感じだな。
ファイルがやたら細分化されていきそうなのも気になる。
>テンプレートは弄っても関数が書かれてるファイルは弄らなくて済む
と言っても、テンプレートファイル自体が分散するようだと、複数のファイルを弄るハメになることに変わりは無くなっちまうわな。

>>372 を function_exists を使って解決するって、関数定義が

<? if( !file_exists( "hoge" ) ) { function hoge($data) { ?>

みたいになるのかな。
試してみたら、確かに二重定義は発生しないみたいだけど、これはこれで面倒だな。
おまじないだと思えなくもないけどな。
create_function の適用は、このケースでは論外かな?
つか、直で画面に出力する場合は二重定義の心配はしなくていいんだよな?

あと、>>376 がうpしたファイルの main.php の最初の行(ついでに subthread も)は
$tempData['thread'][] = array(
だよな。つまらんツッコミだけど。

あ、おまいさんのやり方を否定してるわけではないぞ。
おれは偉そうなこと言っておきながらうまい方法を提示できんし。
378nobodyさん:2006/06/28(水) 07:06:33 ID:???
>>375
そりゃ君に日本語読解力が無いだけでは…。>>365のどこ読んだらそう読めるんだ。
379nobodyさん:2006/06/28(水) 07:12:57 ID:???
>>378
ココ
>require とかそういう話題は、そもそもそういう事で悩まなくていい実装方法を
>例示してに過ぎないだけだと思うけど。

「そもそもそういう事で悩まなくてもいい」方法として例示されたのが「require」と捉えれば、
include での悩みは require には無い
ととれない?

いや俺的には include と require が一緒ということなら、もうどうでもいいんだけど。
380nobodyさん:2006/06/28(水) 07:23:55 ID:???
>>379
とれるとれる
オレもそう思って「?」ってなった
381nobodyさん:2006/06/28(水) 08:37:19 ID:???
くだ質らしい低レベルなレスが続いていて微笑ましいですね^^;;;;;;;;
382nobodyさん:2006/06/28(水) 09:17:01 ID:3gjeaESL
データを別ファイル(*.txt)などに記録していく時、通常

1回目の記録
2回目の記録
3回目の記録
.
.
.
n回目の記録

となりますが、これを「新しいものが上」として記録することはできませんか?

記録量が増えてきた時、新しいものが下だと、
最新の記録を見る時に、延々とスクロールしなければなりません。
383nobodyさん:2006/06/28(水) 09:40:43 ID:???
384nobodyさん:2006/06/28(水) 09:49:45 ID:???
>>383
それもいいが、
tmpファイルを作ってまずそれに新しい1レコードを書き、
その後もとのデータファイルから stream_cccopy_to_stream、
そして元のデータファイルをユニークな名前にrenameしたあと、
tmpファイルを元のファイルの名前にrename、
その後元のファイルは消す、または次回のtmpファイルとして使う、
のほうが stream_cccopy_to_stream を1回しか行わずにすむのでスマートかも
385nobodyさん:2006/06/28(水) 09:54:36 ID:???
日付の比較でstrtotime使ってUNIXタイムスタンプで
比較がよいというTipsサイトをよくみかけるのですが
strtotimeのマニュアル見ると上限は2038年とかって記載されてますよね。

UNIXタイムスタンプの関数使いつづけてて問題ないんですかねこれって…
386nobodyさん:2006/06/28(水) 09:57:51 ID:???
注意: タイムスタンプの有効な範囲は、通常、Fri, 13 Dec 1901 20:45:54 GMT から Tue, 19 Jan 2038 03:14:07 GMT までです (これらは、32 ビット符号付整数の最大及び最小に一致します)。
さらに全てのプラットフォームが負のタイムスタンプをサポートしている わけではありませんので、日付の範囲は Unix エポック以前にはならないかも知れません。
これは、例えば Windows やいくつかの Linux ディストリビューション、 いくつかの他のオペレーティングシステムでは 1970 年 1 月 1 日以前の日付では動作しない事を意味しています。
PHP 5.1.0 以降のバージョンでは、この制限はなくなっています。
387nobodyさん:2006/06/28(水) 10:00:31 ID:???
>>382
>最新の記録を見る時に、延々とスクロールしなければなりません。

まさか、これだけのために・・・?
388nobodyさん:2006/06/28(水) 10:03:39 ID:???
>>385
そのスクリプトが2038年以降の日付を扱うのなら、まずいだろう
389nobodyさん:2006/06/28(水) 10:13:37 ID:ZX4kCjMN
数分おきにphpが自発的にメールの確認を行うにはどのような方法がありますでしょうか?
390nobodyさん:2006/06/28(水) 10:18:38 ID:???
>>389
cron
391nobodyさん:2006/06/28(水) 12:44:40 ID:ZX0Dr8Cc
>>279
有難うございました。
使いたいPEARは単体でも設置できました。
しかし、やはりPING送信が反映されませんでした。
ttp://php.atseason.com/?eid=209199
こちらのサイトを参照に送信してみました。
392nobodyさん:2006/06/28(水) 14:23:29 ID:???
OracleとPHPの接続について質問をここでしてもいいでしょうか?
393nobodyさん:2006/06/28(水) 14:36:53 ID:???
>>382
新着記事だけのビューファイル作っておけば?
394nobodyさん:2006/06/28(水) 15:04:16 ID:???
>>392
構わないけど、最近たてつづけに数冊PHP+Oracleな本が出てるから、
そこに書かれてるような程度の話なら後々のことを考えて
早めに買って参考にするのがいいと思うよ。
395nobodyさん:2006/06/28(水) 15:14:42 ID:???
>>389
ブラウザでリフレッシュ
396nobodyさん:2006/06/28(水) 15:21:04 ID:???
有り難う御座います
お言葉に甘えて一応書かせていただきます

Linux RedHat ES3を使用して
WEBサーバとDBサーバでサーバーの構築をしています
□WEB
apache 2.0.55
php 4.4.2
□DB
oracle 10g

をインストールして
WEB側からtnsping,sqlplusでDBに接続することが可能なことを確認した後
<?
$iConn = ocilogon("test", "test", "db");
echo $iConn;
?>
を実行したところ 下記のエラーが出てしまいました

Warning: ocilogon(): _oci_open_server: Error while trying to retrieve text for error ORA-12154 in /var/www/test.php on line 2

この状態でWEB側の設定なのかDB側の設定なのかどちらの設定が悪いかわかりますでしょうか?
他にも何か必要な情報がありました 提出させていただきます
よろしくお願いいたします
397nobodyさん:2006/06/28(水) 15:23:59 ID:3gjeaESL
>>393
>>384
最新を上に出すのにも工夫が要るのですね。
その方法をどう考えるかが、面白いところかも。
398nobodyさん:2006/06/28(水) 15:27:03 ID:???
399nobodyさん:2006/06/28(水) 15:37:25 ID:???
>>382
file()で取得してarray_reverseは?
400nobodyさん:2006/06/28(水) 15:53:45 ID:???
質問です。
submitボタンを押して、見た目上ページを移動したところで、ファイルの書き込み、もしくは修正処理をしています。

しかし、何度か試したところブラウザの"更新ボタン"を押すと、再度書き込み処理を行ってしまいます。
現在は同じデータがすでにあった場合には〜、などと条件付けをして排除していますが、少しばかり不安な気がします。
ブラウザの"更新ボタン"などが押された時には処理を実行しない、もしくはsubmitボタンが押された一回のみは処理を行うなどの方法はないのでしょうか?
テクニックなどがあれば教えてください。よろしくお願いします。
401nobodyさん:2006/06/28(水) 15:58:05 ID:???
>>398
有り難う御座います
一読してみて 怪しいところをやってみたところ 問題が解決されました!
環境変数が足りていなく接続できていなかったようです
有り難うございました
402nobodyさん:2006/06/28(水) 16:32:21 ID:3gjeaESL
>>399

厳密には、1回の記録が複数行に渡ります。

-----

1回目の記録A
1回目の記録B
1回目の記録C

2回目の記録A
2回目の記録B
2回目の記録C

...

-----

なので、ABCの上下は入れ替えてはなりません。
403nobodyさん:2006/06/28(水) 17:31:22 ID:???
>>400
セッションを使うのがいいかも
404nobodyさん:2006/06/28(水) 17:35:27 ID:???
>>400
ヘッダでLocationを吐いてフォームデータを送信されたURLから
別のURLに飛ばしてしまうのがよろしいかと。
例えばこんな感じ。


入り口(書き込みフォーム)

↓フォームデータ

完了画面(HTTPヘッダにLocationで表示前に飛ばす)

↓自動的に移動

入り口

これならリロードされても入り口を再表示するだけになるはずです。
405nobodyさん:2006/06/28(水) 17:37:28 ID:???
携帯だったら、最新のログだけ別ファイルに保存しておいて、
リロードしたら前のデータと比べて同じなら何もしないというのも
406nobodyさん:2006/06/28(水) 18:04:53 ID:???
>> 403 404 405
まだ試したことがないので一抹の不安はありますが、管理用ページということもあり、セッションで制御するのを試してみたいと思います。
アドバイスありがとうございました。
407nobodyさん:2006/06/28(水) 18:36:08 ID:+uIloqdX
ドコモの端末のユーザーエージェントからUTNを切り出すにはどういうコード書けばいいんだ?
408???:2006/06/28(水) 18:43:08 ID:4DSWMgzu
最近自分の中傷が掲示板でひどいんです。
管理人じゃなくても個人の特定や削除ができますか?
409nobodyさん:2006/06/28(水) 18:45:46 ID:???
>>408
管理人に連絡、対処されないなら鯖管へ。
410???:2006/06/28(水) 18:50:20 ID:4DSWMgzu
パソコンを使い始めたばかりでよくわかりません…
どういうことですか?
411nobodyさん:2006/06/28(水) 18:53:22 ID:???
>>407
正規表現で(σ゚∀゚)σゲッツ!!
412nobodyさん:2006/06/28(水) 19:02:02 ID:???
>>410
世間一般での普通の対応を求めろっつうこと。
ネットだろうが、書き込みが電子データで物理的なものでなかろうが
やることの本質は同じ。しかるべき相手にしかるべき要求をする。
413nobodyさん:2006/06/28(水) 19:50:57 ID:???
>>410
とりあえず、どの掲示板かURLをお願いします。
私が対処しに行きますので。
414nobodyさん:2006/06/28(水) 20:20:56 ID:+uIloqdX
>>411
その正規表現をたのむ
415nobodyさん:2006/06/28(水) 20:50:35 ID:???
416nobodyさん:2006/06/28(水) 21:35:26 ID:???
>>414
つかちょっとくらいは自分で考えれ。それでもどうしても駄目だったら
自分で作ったの持ってきたらその問題点くらいは教えちゃるから。
417nobodyさん:2006/06/28(水) 22:01:50 ID:???
なんだよおしえてくれたっていーじゃん!
なめんじゃねーぞカス
418nobodyさん:2006/06/28(水) 22:19:31 ID:???
カスにカス呼ばわりされても痛くもねーよ
419nobodyさん:2006/06/28(水) 22:25:49 ID:???
>>402
だったらやっぱ>>85なり>>384辺りが妥当な方法だと思う。
つか、そういう大事なことは先に言わんと。
420nobodyさん:2006/06/28(水) 23:04:05 ID:???
なぁお前ら様方、ここはPHPスレだけどまぁ気にしないで聞いてくれ。
優れてるとか流行ってるじゃなくて、ただ個人的にお前らが一番好きな言語って何?
俺はやっぱりPHP!
421nobodyさん:2006/06/28(水) 23:27:21 ID:???
>>418
最近偽者も多いので馬鹿をみればスルーでよろ
422nobodyさん:2006/06/29(木) 00:16:28 ID:wsUQiNip
PC2M というPCサイトを携帯用に変換するスクリプトを利用しています。

_check.php でチェックすると画像変換スクリプトが200でなく、403エラーを返す
という注意をされます。
動作としては、pc2m.phpでGDでPC用の画像を変換して、出力するのですが、
画像はちゃんと変換されて表示されます。

表示はちゃんとされているが、403エラーを出す理由をどなたかヒントでもいいので
教えてもらえないですか?
423nobodyさん:2006/06/29(木) 00:28:28 ID:???
>>420
VZエディタのマクロ
424nobodyさん:2006/06/29(木) 00:35:38 ID:???
>>422
ソース嫁
425nobodyさん:2006/06/29(木) 00:38:10 ID:???
>>422
_check.phpがリファラーを返さない仕様で、
Apacheの設定で画像の直リンクを禁止するためにリファラーチェックしてるとか。

その質問は他のスレの方がいい気がするなぁ…
426nobodyさん:2006/06/29(木) 01:28:02 ID:N7wntj4v
計算結果を見やすくする為、カンマ表示や¥記号表示を出来ないでしょうか?

どなたかヨロシクお願い島津。
427nobodyさん:2006/06/29(木) 01:31:22 ID:???
>>426
カンマ表示はnumber_format()
¥表示はそのまま頭に¥つけて表示するだけじゃ?
428nobodyさん:2006/06/29(木) 01:31:32 ID:???
>>426
最近マニュアルの URL 示すばっかりだ。
http://jp.php.net/manual/ja/function.number-format.php
429せっ☆マ ◆wwwwWwWWWw :2006/06/29(木) 01:50:36 ID:???

ereg("[^\-]","-",$tekito);

がtrueになります

ereg("[\-]","-",$tekito);

もtrueになります

どうしてでしょうか…

バージョンは5.1.4です
430nobodyさん:2006/06/29(木) 01:58:22 ID:hhtHsz1A
array_searchで、数字だけの配列から文字列をサーチすると、
何故か0が返ってきます。
例)
array_search("hoge",array(0,1,2));

本来ならばfalseが返って来て欲しいのですが…
どうすれば正しい値が返ってきますか?
バージョンはPHP5.1.1です。
431nobodyさん:2006/06/29(木) 01:58:28 ID:N7wntj4v
初心者質問でスンマセンでした…(汗

でも、大変参考になりました。ありがとです。
432nobodyさん:2006/06/29(木) 02:02:36 ID:???
>>429
> ereg("[^\-]","-",$tekito);
> がtrueになります
再現しない。
<?php var_dump(ereg("[^\-]", "-", $tekito)); ?>
の結果は
bool(false)

確認方法が間違ってるだけじゃないの?
433nobodyさん:2006/06/29(木) 02:02:50 ID:???
>>429
正規表現にマッチしてるから
434nobodyさん:2006/06/29(木) 02:03:54 ID:???
>>430
array_search("hoge",array(0,1,2), TRUE);
435nobodyさん:2006/06/29(木) 02:06:37 ID:???
>>430
それ本当に0か?
falseじゃないのか?
falseは出力したら0と表示されるぞ
436nobodyさん:2006/06/29(木) 02:10:40 ID:???
>>435
お前も少しは実験してから物を言え
437nobodyさん:2006/06/29(木) 02:10:46 ID:???
>>434
確かにstrictにすると正しくなります。
strictにしなくてもfalseになるはずと思うのですが…。
原理が謎です。
>>435
var_dumpしているので確かです。
438nobodyさん:2006/06/29(木) 02:13:58 ID:???
>>437
ならんよ。
if("hoge" == 0) は真だもの。
if("hoge" === 0) ではじめて偽になるでしょ。
strictってのはそういうことだ。
439せっ☆マ ◆wwwwWwWWWw :2006/06/29(木) 02:16:15 ID:???
>>432
実際の正規表現はこれです
ereg("[^0-9a-zA-Z\.\-_@]",$mail,$tekito)
今一度確かめてみたところやっぱり動作が少しおかしいです…
ありがとうございます

>>430
文字と数字比べてるから変なんじゃね?

>>437
array_search("hoge",array("0","1","2"));
これはだめ?
012が変数ならstrval()で変換汁
440せっ☆マ ◆wwwwWwWWWw :2006/06/29(木) 02:17:57 ID:???
実際の正規表現はこれです

実際動作が変だった正規表現はこれです
441nobodyさん:2006/06/29(木) 02:22:31 ID:???
>>438-439
みたいだね
442nobodyさん:2006/06/29(木) 02:29:03 ID:???
>>439
問題をシンプルにするのは感心だが、ちゃんと再現するコードで質問しろよなー

ereg("[^\.\-_]",$mail,$tekito)
これって結局 [.-_] になって .〜_ の範囲でチェックされてるだけだと思う。
ereg("[^0-9a-zA-Z-._@]", $mail,$tekito) にしてみ。
443せっ☆マ ◆wwwwWwWWWw :2006/06/29(木) 02:34:00 ID:???
>>442
\でエスケープしててもメタ文字として認識されるのか?
444437:2006/06/29(木) 02:41:30 ID:hhtHsz1A
レスありがとうございました。

>>438
"hoge"==0は何故真になるのでしょうか?
""==0なら真になって当然だと思うのですが…。

>>439
問題は0だけのようですので、
0を探して"0"にしてからサーチすることにしました。
445nobodyさん:2006/06/29(木) 02:51:33 ID:???
>>442
違うよ。
"[\.\-_]" の正規表現は \ と . と \〜_ の範囲。
>>443
POSIX正規表現のマニュアル読めば分かるけど、[〜]の中にエスケープというのは存在しない。
Perl互換正規表現と混同しないように。
446nobodyさん:2006/06/29(木) 02:52:13 ID:???
何でereg使うのw
つーかメアドかどうか確かめる正規表現としてはいい加減すぎwww
447せっ☆マ ◆wwwwWwWWWw :2006/06/29(木) 02:58:19 ID:???
>>445
mjk!!!
目からウロコです
ありがとうございました

>>446
その後別のチェックも加えてるから大丈夫。
エラーメッセージを細かくするために分けた。
448nobodyさん:2006/06/29(木) 02:58:22 ID:???
>>444
数値と文字を比較するときは数値として評価して比較されるから。
"hoge"は数値変換すると数字解釈できないので0になる。
var_dump(intval("hoge"))はint(0)。
ttp://www.php.net/manual/ja/language.operators.comparison.php
> 整数値を文字列と比較する際、文字列が 数値に変換されます。
449nobodyさん:2006/06/29(木) 03:01:57 ID:???
>>444
> 問題は0だけのようですので、
array_search("2hoge",array(0,1,2));
はint(2)が返る。
450nobodyさん:2006/06/29(木) 03:05:39 ID:???
>>448
なるほど!ありがとうございました。

いろいろ試してみた結果、haystackもneedleもすべてstringにキャストした上で
strictにするしかないようでした。
451 ◆Needle/7vo :2006/06/29(木) 03:07:02 ID:???
僕はneedleちゃん!
452nobodyさん:2006/06/29(木) 11:11:02 ID:j7oCXco7
PHPでエラーがあるとその内容と行が表示されますが、
表示されないレンタルサーバーがあります。
453nobodyさん:2006/06/29(木) 11:12:24 ID:???
ニートル乙
454nobodyさん:2006/06/29(木) 11:16:44 ID:???
>>452
そうか。報告ご苦労様。知ってたけどね。
455nobodyさん:2006/06/29(木) 11:43:07 ID:???
>>452
どこでも設定で変更できるし
456軟式PHP:2006/06/29(木) 12:08:15 ID:???
>>452
まじで!?
457nobodyさん:2006/06/29(木) 12:39:39 ID:???
>>456
オイオイっ
458nobodyさん:2006/06/29(木) 14:47:43 ID:???
クリックしたら、ディレクトリを圧縮して
ブラウザからダウンロードできるようなスクリプトを作りたいのですが、
上手くいきません。

というのもディレクトリの容量がある程度あると
サーバー側のメモリを使用しきってサーバーダウンしてしまいます。

大容量ディレクトリのダウンロードでもメモリを占有しないような
上手い方法はないでしょうか?
459nobodyさん:2006/06/29(木) 15:13:10 ID:???
>>458
中のファイルを一戸ずつ落とす
460nobodyさん:2006/06/29(木) 15:22:10 ID:???
>>458
クリック→ftp://〜のリンクを表示→終了
461nobodyさん:2006/06/29(木) 16:00:58 ID:MDHzuRjB
>>279
有難うございます。
おかげさまでPEARが無事に入りました!
なんとか、1つのブログPINGポータルに反映させることができました。
しかし、大手のPINGポータル(MyBLOGやGOOなど)は未だに反映されません…
これはPHPの問題というより、ポータル側のスパム対策などでしょうか。
こちらのスレッドからずれてしまいそうですので、検証の後、別の所で質問させて頂くかもしれません。

皆様本当に有難うございました!
462nobodyさん:2006/06/29(木) 16:24:57 ID:???
>>458
shell_exec でtarか何かでアーカイブするシェルを動かす
終了後、できたファイルにへのリンクを生成して出力する
463軟式PHP:2006/06/29(木) 17:58:26 ID:???
>>457
お約束かとおもひて。

>>458
俺も>>462の方法をお勧めする。
464nobodyさん:2006/06/29(木) 18:23:57 ID:???
質問です。

会員制のシステムで一般的なユーザ認証の方法というのはどのような仕組みですか?

例えば、
・ログイン時にIDとPASSでDBを検索し、それ以降はセッションにログイン済みフラグ的なものを与える。
・ログイン後はIDとPASSを暗号化したもの+認証情報でないユーザ番号をセッションIDにしてアクセス毎にユーザ番号を基にDB内を再検索。
とか...

あと、MovableType、XOOPS、PLONEなどが使用する認証の仕組みもわかる方いましたら、是非教えてください。
宜しくおねがいします。
465nobodyさん:2006/06/29(木) 18:57:58 ID:???
>>464
XOOPSは
>・ログイン時にIDとPASSでDBを検索し、それ以降はセッションにログイン済みフラグ的なものを与える。
アクセス毎に認証チェックするというのは珍しいケースだと思うけど?
466nobodyさん:2006/06/29(木) 19:36:08 ID:???
毎回チェックするならBASICじゃだめなん?
467nobodyさん:2006/06/29(木) 20:21:44 ID:???
自分自身のURLを取得したいです。
ここだとhttp://pc8.2ch.net/test/read.cgi/php/1150995543/l100とかです
468nobodyさん:2006/06/29(木) 20:47:55 ID:???
>>464
> MovableType、XOOPS、PLONEなど

なんでソースを読もうとしない?
469379:2006/06/29(木) 21:49:46 ID:zAm3zlYq
共有メモリを使ってCとPHP間でデータの受け渡しをしたいのですが、
openのタイミングでエラーになります。
どなたか分かりましたら教えてください。お願いします。

OS:linux kernel 2.6
gcc
php4

これは成功します。
 PHPからshmop_open(keyid, "c", 0666, size); でopen。
 その後、Cアプリから shmget(keyid, size, IPC_CREAT|IPC_EXCL|0666); でopen。
逆の順で実行するとエラーになる。

uid, gid はともにあわせています。アパッチのuserはconfigでCアプリの
ユーザーに設定しています。
470469:2006/06/29(木) 21:52:16 ID:zAm3zlYq
名前379は、このスレの379さんとは関係ありません。残ってました。すみません。
471nobodyさん:2006/06/29(木) 22:16:27 ID:???
そんなことやったことないからオレは力になれないけど、
エラーが出てるならその内容を書いたほうがいいと思うのデス
472469:2006/06/29(木) 22:35:58 ID:???
471さん、ありがとうございます。
今確認できる場所にいないので後でもう一度見てみます。
あらかじめC側でメモリを割り当てておいてphpでopenしにいくと
エラーではねられるんですが、openモードは "c" "a" ともに一緒でした。
473nobodyさん:2006/06/29(木) 23:26:56 ID:???
>>425
> >>422
> _check.phpがリファラーを返さない仕様で、
> Apacheの設定で画像の直リンクを禁止するためにリファラーチェックしてるとか。

apacheではそういう設定をしていないんですけどねぇ…
ちゃんと動作しているようなのですが、どんな可能性があるのかと思いまして。

ただのバグですかね。
474nobodyさん:2006/06/29(木) 23:35:53 ID:???
>>473
> ただのバグですかね。
自分の思い通りに動かないのをすぐバグ扱いするのは良くない。
telnet なりで自分でリクエストを投げてみて自分の目で確認すべし。
475nobodyさん:2006/06/29(木) 23:53:12 ID:???
質問ですが、通常のHTLMとほんの1kbぐらいのファイルをincludeさせたPHP。
サーバにかかる負荷って実際どれぐらい違うんでしょうか?
2000ぐらいあるファイルのフッタ部分をいちいち書き換えてられないので
includeで表示させたいんですが…。
476nobodyさん:2006/06/29(木) 23:57:19 ID:???
>>475
サーバーのハードやHTMLの内容やPHPの設定にもよるんじゃないの?
重いのはHTMLを構文解析しなきゃいけなくなる部分なので
includeファイルのサイズは大して問題にならないと思うけど。
(元のHTML自体が巨大だとその分だけ重くなる)

でもせいぜい負荷2%が5%になったとかそんなもんだと思うけどねー
(既存の倍以上には重くなると思う)
477nobodyさん:2006/06/29(木) 23:59:21 ID:???
>>473
情報の痕跡も探さずに可能性だけ列挙して
その可能性が該当しない=バグだろう
ってのはあまりに短絡的な考え方だろう。
478nobodyさん:2006/06/30(金) 00:05:43 ID:???
>>473
474 の人ですが、自分も入れて試してみました。
ふつーに、200 になりましたが?
単に pc2m.php のパーミッションの問題のような気がしますが。
479nobodyさん:2006/06/30(金) 00:13:05 ID:???
>>478 の自己フォロー。パーミッション問題じゃなかった。ごめん。
やっぱり画像の URL だ。となると、やっぱり自分でリクエスト確認だ。
情報少なすぎなので、これ以上はなんとも。
480nobodyさん:2006/06/30(金) 00:14:58 ID:8PS/D42h
パーミッションについて簡単に教えてください。
どんなとき777で、705で、666なのか数字も一緒に教えて下さい。
481nobodyさん:2006/06/30(金) 00:28:45 ID:???
>>480
PHP関係ない
482nobodyさん:2006/06/30(金) 00:45:17 ID:???
教える方がミーハーなのは困る
483nobodyさん:2006/06/30(金) 01:03:54 ID:???
ミーハーって?
484nobodyさん:2006/06/30(金) 01:04:50 ID:???
ミーチャンハーチャン
親父用語だ
485nobodyさん:2006/06/30(金) 01:06:25 ID:???
>>482
どこらへんが?
486nobodyさん:2006/06/30(金) 01:14:24 ID:???
>>480
PHP関係ない
>>482
オマエが教えてやれ
>>483-485
イタイのには触るんじゃね
487nobodyさん:2006/06/30(金) 01:20:12 ID:???
>>458
容量があるならtarとか無圧縮格納可能な形式でoutputは出力したまま逐次ファイルを追加していくとか。

>>475
2kB+include1kBのPHPと3kBのhtmlをabで調べたら1.5倍程度だった。

>>476
PHPってHTMLをパースしてるの?
488nobodyさん:2006/06/30(金) 01:28:15 ID:???
>476
>487
検証までして頂いてありがとうございます。

2倍までとはいかずとも1.5倍ぐらいにはなってしまうんですね。
かといってJavaScriptで書き出してしまうとSEO的にどうしようもないですし…。
やはり少しでも負荷を減らすには静的ファイルにするしかないですね。。
楽はしたいけどサーバが重過ぎて。。。orz
489nobodyさん:2006/06/30(金) 01:41:37 ID:???
チャットで、よく現在の入室者というのがありますよね。
それはセッションを使っているのでしょうか?
どういう仕組みなのかわからないので、どなたか教えてください。
490nobodyさん:2006/06/30(金) 01:41:42 ID:???
>>488
htmlの転送ってのは本来屁みたいなもんなんだよ。
それすらきついということは他に改善の余地がありそう。
まあ楽をしたいだけならhtmlを自動で編集するスクリプト書くというのもあるけどPHPから離れてきたのでこのへんで。
491nobodyさん:2006/06/30(金) 02:11:15 ID:???
テスト
492nobodyさん:2006/06/30(金) 02:12:55 ID:???
>>475>>488
include方式にした上でそれはワークディレクトリ上に置いといて、
本来のDOCMENT_ROOTに吐き出すスクリプト作って一括更新すりゃいいだけでは。

foreach(file(WORKDIR . "*.html") as $file) {
ob_start();
include(WORKDIR . $file);
$html = ob_get_contents();
ob_end_clean();
$fp = fopen(SAVEDIR . $file, "w");
fwrite($fp, $html);
fclose($fp);
}
こんだけですみそーな。
493nobodyさん:2006/06/30(金) 02:14:32 ID:???
>>492
まちがい
> foreach(file(WORKDIR . "*.html") as $file) {

foreach(glob(WORKDIR . "*.html") as $file) {
494nobodyさん:2006/06/30(金) 02:29:37 ID:???
>493
おおお…ここまでしてくださるとは…。感謝…。
2000もファイルがあるとタイムアウトが怖いですがちょっと試してみたいと思います。
<(_ _)>どもどもです
495nobodyさん:2006/06/30(金) 02:54:47 ID:???
>>494
set_time_limit(0)した上でコマンドラインから動かせばいいじゃん
496nobodyさん:2006/06/30(金) 02:59:32 ID:???
>>462
>shell_exec でtarか何かでアーカイブするシェルを動かす
>終了後、できたファイルにへのリンクを生成して出力する

これをワンクリックで処理する方法ないでしょうか?
アーカイブにワンクリック、出てきたリンクにワンクリック、
なら簡単にできそうですが、
ワンクリックで、アーカイブ、ダウンロードまで
こなしたいと思います
497nobodyさん:2006/06/30(金) 03:03:31 ID:???
そこまでヒント出されてればあとはPHP関係ないよ。少しは自分で考えよう
498nobodyさん:2006/06/30(金) 03:27:50 ID:???
>>489
精度よくやるならセッション(もしくはそれに類するもの)を使うが、
別になくても出来ないこともない。

やり方はIPアドレス−誰−現在居る/居ないの関係を
どうやって結びつけるかを考えれ。
(IPアドレス−誰の関係はなくても出来る)
現在居る/居ないはHTTPの仕組み上「接続状態」は得られないので、
接続状態の場合に限ってJavascriptなどで周期的にアクセスを繰り返して
接続を通知する。最後の接続後一定時間は接続してると見なす。
などのやりかたをする。
499nobodyさん:2006/06/30(金) 08:48:06 ID:???
オブジェクト指向についての質問です。

自分一人で開発してることもあって、今までは「手続き型プログラミングで十分。
ベタ書き最高!」なんて思ってスパゲティ化もあまり気にせずにいたのですが、
最近ちょっと規模の大きいWebシステムを作っていて、スクリプト・ファイルが何十個にもなり、
また一つのスクリプトが1000行以上になってきたりしました。

そうすると、もはや自分で作ったプログラムなのに、どこでどう処理してるか収拾がつかなくなって
なんかすごく複雑&冗長で無駄な処理をやってる部分も多々あります。

まだオブジェクト指向で作ったことがないし知識もないので、
「一度システムが全部完成してからオブジェクト指向で書き直せばいいや」と思ってたんですが、
このままだとさらに混乱が悪化しそうなので、今すぐオブジェクト指向を勉強して、それで書き直したほうがいいでしょうか?
それともとりあえず完成までベタ書きで続けるべきでしょうか?
500nobodyさん:2006/06/30(金) 09:10:31 ID:Y/YT1xaC
switch ($XXX) {

case "aaa":
include = "aaa.php" ;
break;

case "bbb":
include = "bbb.php" ;
break;

}

のようにして読み込みファイルを変えているのですが、
これが100も200もとなってくると管理が大変ですし、
「〜の場合」というチェックを上から順番にしていくでしょうから、
それが上にあった時は良いですが、後の方に存在していたとすると、
それまでのマッチに負荷がかかるというか、
何か(精神的に)スッキリしません。
501nobodyさん:2006/06/30(金) 09:13:21 ID:???
>>499
設計からやり直せ
ちゃんとした設計であれば、オブジェクト指向でも手続き型でもどっちでも大差はない
オブジェクト指向を学ぶにしても、そんなスパゲティコードは捨てて、小さいシンプルな題目から始めた方がよい
502軟式PHP:2006/06/30(金) 09:14:02 ID:???
>>499
俺は可視性が高ければいい、必ずしもOOPをしなければならないとは思わないなぁ。
複雑・冗長で無駄な処理が多いということは、自分の中でルールをキチンと決めてプログラミングを
作ってないような気がする。
でも一度勉強してみたほうがいいかもね。あと、完成後にOOPに書き直すのは手間がかかりまくるのでやめたがいい。

>>500
ファイル名を配列化したら?
$fileList = array( "aaa" => "aaa.php",
"bbb" => "bbb.php");
if( isset( $fileList[$XXX] ) ){
include( $fileList[$XXX] );
}
503nobodyさん:2006/06/30(金) 09:14:17 ID:???
>>500
include("{$XXX}.php");
504nobodyさん:2006/06/30(金) 09:54:59 ID:???
>>500
おまいは何をやっとるんだ・・・
もっともプログラミングらしからぬ思考法だな・・・
505489:2006/06/30(金) 10:03:51 ID:???
>>498
ログファイルと、入室者ファイルを作ったほうが良いのでしょうか?
506nobodyさん:2006/06/30(金) 10:15:30 ID:???
>>505
REMOTE_ADDR,timestamp
のログファイルを作って、タイムスタンプが5分以内なら入室中、5分越えたらログから削除、
みたいにつくりたいところだな。
(5分は、10分でも15分でもお好みに)
同一IP者が複数人いても一人と扱われるが、そんなのは知らん。
507489:2006/06/30(金) 10:22:00 ID:???
>>506
入室者ファイルは別で作ったほうが処理がしやすいのですね。
有難うございます。
508nobodyさん:2006/06/30(金) 11:05:15 ID:???
$_SESSION['abc'] ←この中にはどれくらいのデータが入るのでしょうか?
509nobodyさん:2006/06/30(金) 11:33:58 ID:0OZ4Tvf7
関数で受け取った引数をそのまま連想配列の添字に使用して、
値を取得したいのですが良い方法はないでしょうか?

> class Config {
> private $conf;
> public function __construct() {
> $this->$conf = array();
> $this->conf['hoge'] = 'tarou';
> $this->conf['hoge1']['hoge1-1'] = 'hanako';
> $this->conf['hoge1']['hoge1-2'] = 'php';
> }
> public function get( ... ) { # 可変引数
> # 引数をそのまま添字に使用したいです。
> return $this->conf[ ... ];
> }
> }
>
> $cfg = new Config();
> # 'tarou'が表示されます。
> print $cfg->get( 'hoge' );
> # 'hanako'が表示されます。
> print $cfg->get( 'hoge1', 'hoge1-1' );
> # 'hanako'が表示されます。
> print $cfg->get( 'hoge1', 'hoge1-2' );
> exit();

配列で受け取ってループさせれば出来そうだと思ったのですが、
できればループは使用したくありません。。。
510nobodyさん:2006/06/30(金) 11:46:47 ID:???
getFromArray($key, $data)
{
511nobodyさん:2006/06/30(金) 12:00:31 ID:???
書きかけで送信しちまった
動かして確認してないけど、こんな感じで再帰使えばいい

class Config {
  var $conf = array();
  function get() {
    return get_array_value(func_get_args(), $this->conf);
  }
  function get_array_value($keys, $data) {
    $key = array_shift($keys);
    $value = $data;
    if ($key !== null)
      $value = is_array($data) ? get_array_value($keys, $data[$key]) : null;
    return $value;
  }
};
512nobodyさん:2006/06/30(金) 13:27:49 ID:???
セッションについて質問です。
セッションの中身を定期的に消さないと鯖に負担がかかると聞いたのですが、
自動的には消されないのでしょうか?
513509:2006/06/30(金) 13:28:14 ID:???
>>511
ありがとうございます。再帰で無事取得できました。
514nobodyさん:2006/06/30(金) 13:46:39 ID:???
>>512
自動的に消すような設定をしているディレクトリに
セッション情報を保存するなら勝手に消される。
(だから自分の予期せぬ結果にならんこともないのだが)

つかセッション機能には一応ガーベージコレクトもあるんだから
それで処理できる範囲ぐらいは自分で後始末ぐらい汁
515nobodyさん:2006/06/30(金) 15:09:11 ID:4l4GYYpW
FLASHのメールフォームにと探してて見つけたんですけど
answe.txt、flaファイル、phpファイル、サーバーにアップしても
エラーメッセージすらでません…。phpファイルに問題があるんでしょうか?
それともflaファイルのほう?

<?php

$content="
Hi $nameempf\n
the following site you have to visit: http://www.webdesign-ks.de \n
$name
";

mail($empfang, "recommendation from $name", $content, "From: $absender");

$filename = "answer.txt";
$fd = fopen( $filename, "r" );
$contents = fread( $fd, filesize( $filename ) );
fclose( $fd );
mail( "$absender", "Danke f Ihre Weiterempfehlung", "$contents\n\n", "From:[email protected]\n" );
$signal=1;
echo "signal=$signal";

?>
516nobodyさん:2006/06/30(金) 15:53:37 ID:Y/YT1xaC
>>502-503
>>504
>おまいは何をやっとるんだ・・・

HTMLしか知らなかった時はページの分だけ作らねばならず大変でしたが、
>>500でかなり楽になりました。
というのを、継続していた状態です。
今後、効率的な管理ができるようにしていきます。

存在しない「sss.php」が指定された時のことも考えます。
(switchの場合はdefaultで処理できたので)
517nobodyさん:2006/06/30(金) 16:13:57 ID:???
>>516
if (!eregi ('[0-9a-zA-Z]', $str)) or die ('不正な要求ですわ');
if (file_exists ('./' . $str . '.php') or die ('Not Found');

include ('./' . $str . '.php');
518nobodyさん:2006/06/30(金) 16:40:45 ID:???
PHPというかHTMLの質問です。

tableで、widthを指定しているのですが.(ドット)があると改行されません。
ドットがあっても改行させることってできないのでしょうか?

スレ違いなのは十分わかってますがなにとぞよろしくお願いします。
519nobodyさん:2006/06/30(金) 16:55:42 ID:???
できないっ!
520nobodyさん:2006/06/30(金) 16:57:13 ID:???
ドットどころか、半角英字をスペースを空けずに入力すると改行されずにテーブルの巾がどんどん延びる。

対策は、自分で改行されない文字列長を判別し、必要な長さで改行を挿入するとかだろうね。
521nobodyさん:2006/06/30(金) 17:04:42 ID:???
>>520
まあ改行されちゃうと、意味を変な解釈をされるからね。
例えばこのスレをWebブラウザ(IEなど)で閲覧すると:

http://wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww.example.com/

このリンク(正確にはアンカー)文字列がウィンドウ枠を越えてると横スクロールバーが出ると思う。
522nobodyさん:2006/06/30(金) 17:10:50 ID:???
先頭にドットが付いてるとスペース空けても改行されないんですよね
たとえばこんな感じだと.aaaは改行されずbbbは改行される
<table border=1><tr>
<td width="5">.aaa .aaa .aaa</td>
<td width="5">bbb bbb bbb</td>
</tr></table>
523nobodyさん:2006/06/30(金) 17:15:12 ID:???
widthなんか指定しなければいいじゃん。
524nobodyさん:2006/06/30(金) 17:16:26 ID:???
525nobodyさん:2006/06/30(金) 17:18:03 ID:???
526nobodyさん:2006/06/30(金) 17:18:05 ID:???
最近流れが早いね
527nobodyさん:2006/06/30(金) 17:28:13 ID:Y/YT1xaC
>>502-505
>>517

>>500です。

ご指導により、以下のようになりました。

気分的にはかなりスッキリしましたが、
実効果として>>500よりも処理は早くなるのでしょうか。

・$PAGE_IDと同名のファイルを作成しておき、読ませる。
・$PAGE_IDが空の時はtop.php(トップページ)を読ませる。
・$PAGE_IDに相当するファイルがない時はcaution.php(警告)を読ませる。
528nobodyさん:2006/06/30(金) 17:29:18 ID:Y/YT1xaC
(>>527の続き)

$file_name = "files/{$PAGE_ID}.php" ;

if(isset($PAGE_ID)){

if(file_exists($file_name)){
include($file_name) ;
}
else{
include "file/caution.php" ;
}
}

else{

include "files/top.php" ;

}

問題点:
・$PAGE_IDにより選択されるファイルは、全て1つのディレクトリ(files)に入れておくことになり、整理しにくい。
・目下、$PAGE_IDとファイル名が異なっている状態なので、上記導入の際はリネームする必要がある。
・ヘッダが共通ファイルであり、$PAGE_IDにより<TITLE></TITLE>等の内容が変わるので、
 結局>>500のようにswitch,caseを使わねばならない?
529nobodyさん:2006/06/30(金) 17:41:37 ID:???
>>528
>$PAGE_IDにより選択されるファイルは、全て1つのディレクトリ(files)に入れておくことになり、整理しにくい。
$PAGE_IDの文字列にスラッシュがあっちゃだめなん?


つーかこれは何がしたいんだ?
530nobodyさん:2006/06/30(金) 17:46:06 ID:???
>>528
なんか頭が固いね。固定観念?ディレクトリ一つにって決め付けちゃだめでしょ。
531nobodyさん:2006/06/30(金) 18:14:17 ID:Y/YT1xaC
>>529

http://www.test.com/$PAGE_ID.html
でアクセスするようにしているのです。
532nobodyさん:2006/06/30(金) 18:16:35 ID:???
>>527

<?php
if (isset ($_GET["id"])) {
        $file_name = rawurldecode ("./files" . $page_id . ".php");

        if (file_exists ($file_name)) {
                include ($file_name);
        } else {
                include ("./files/caution.php");
} else {
        include ("./files/top.php");
}
?>

1. $page_id = "hoge" → "files/hoge.php"
2. $page_id = "foo%2Fhoge" → "files/foo/hoge.php"
3. $page_id = "foo%2Fbar%2Fnull" → "files/foo/bar/null.php"

> ヘッダが共通ファイルであり、$PAGE_IDにより
> <TITLE></TITLE>等の内容が変わるので...

ヒント: ファイルをオープンし、正規表現で、

preg_match("/<title>.+<\/title>/i", $data, $matches);
       echo htmlspecialchars ($matches[0]);
533nobodyさん:2006/06/30(金) 18:27:51 ID:???
>>531
逆に面倒じゃないか?それ...
初心者がよく使いたがるんだけど。


「テクニックにおぼれない」
↑これ、次スレからテンプレに追加したいw
534nobodyさん:2006/06/30(金) 18:36:24 ID:Y/YT1xaC
>>532

"/"(Slash)も"%2F"でURLに含めることができるようですので、

>>531から、
files/foo/hoge.phpを読ませた時のURLは
http://www.test.com/index.html?$PAGE_ID=foo%2Fhoge
となるようですね。

しかし上記URLだと長いのでmod_rewriteを使って
http://www.test.com/foo%2Fhoge.html
とします。>>533

但し"%2F"を使うには、
rawurldecodeというのを使わないとならない?
http://php.s3.to/man/function.rawurldecode.html


>正規表現で
>>500のような状態からここまでとなると、
今は良く分かりませんので、少し勉強してみます。

>>528でもかなり楽になったと思います。
(まだswitch,caseからは逃れられませんが...)
535nobodyさん:2006/06/30(金) 18:48:34 ID:???
>>534
> test.php?$PAGE_ID=foo%2Fhoge
> しかし上記URLだと長いのでmod_rewriteを使って

こうする理由がわからねー

> 但し"%2F"を使うには、
> rawurldecodeというのを使わないとならない?

デコードしないとディレクトリを指定できないだろが。
「foo%2Fhoge.php」というファイル名になってもいいなら別だが。





つーかもっと基礎から勉強した方がいいんじゃないか?
536nobodyさん:2006/06/30(金) 18:56:46 ID:???
もう寝るか。
537nobodyさん:2006/06/30(金) 19:20:22 ID:???
<?
$tp = '
<p>$link - <a href=$link title=$link>$link</a></p>';

$ato = array(
"1.php",
"2.php",
"3.php",
"4.php",
"5.php"
);

foreach ($ato as $link) {
eval("echo \"$tp\";");
}
?>
538nobodyさん:2006/06/30(金) 19:21:44 ID:???
あらかじめ設定したフォーマットに従って出力しようと思い
>>537のようにしてみましたが、もっとスマートな方法があるような
気がするんですがどうでしょうか。
539nobodyさん:2006/06/30(金) 19:24:03 ID:???
おまいらMVCって知ってるか?
540nobodyさん:2006/06/30(金) 19:42:45 ID:???
>>538
ファイル名が、1〜5固定ならば、

for ($i = 1; $i <= 5
 echo "<p>$i.php - <a href=$.php title=$i.php>$i.php</a></p>";

でいいとおもうんだが
541nobodyさん:2006/06/30(金) 19:45:42 ID:???
>>538
今意味がわかった。
$tp = '<p>%LINK% - <a href=%LINK% title=%LINK%>%LINK%</a></p>';

echo str_replace('%LINK', $ato, $tp);

がよい。
そんなところで evalなんか使うな。
542nobodyさん:2006/06/30(金) 19:46:28 ID:???
echo str_replace('%LINK%', $ato, $tp);
543nobodyさん:2006/06/30(金) 19:48:31 ID:???
ミス。

foreach ($ato as $link) {
 echo str_replace('%LINK%', $link, $tp);
}

544nobodyさん:2006/06/30(金) 19:48:49 ID:???
>>539
カンマ区切りデータのことだろ
545nobodyさん:2006/06/30(金) 19:50:49 ID:???
>>544
バーカ 最優秀選手だよ
546nobodyさん:2006/06/30(金) 19:52:32 ID:???
>>540-542
なるほど勉強になります。

>そんなところで evalなんか使うな。
自分もそこが気になってました。
547nobodyさん:2006/06/30(金) 19:53:14 ID:???
>>545
アフォか 日本電気株式会社 に決まってるだろ
548nobodyさん:2006/06/30(金) 19:55:55 ID:???
549nobodyさん:2006/06/30(金) 20:26:05 ID:???
>537-538です

>>543
この方法だと変数が多い場合は全部置き換えるしかないですかね?
550nobodyさん:2006/06/30(金) 21:03:30 ID:+rz/Zfiq
unlinkやchmodが使えない場合、phpからファイルを削除する方法ってありますか
551nobodyさん:2006/06/30(金) 22:28:19 ID:???
だれか
>>467
の回答まだ?_
552nobodyさん:2006/06/30(金) 22:32:11 ID:???
553nobodyさん:2006/06/30(金) 23:32:51 ID:???
>>546
sprintfのフォーマットの方がいいと思う
$format = '<a href="%s">%s</a>';
printf($format, $url, $text);
554nobodyさん:2006/06/30(金) 23:59:47 ID:???
>>544
それはCSVじゃー!

>>545
そりゃMVPやんけー!

>>547
それNECやん!NECつったらPC-100やん?

>>554
マ板でやれ
555nobodyさん:2006/07/01(土) 00:10:38 ID:???
>>553
>537-538です。うまいことできました。
ありがとう。

<?
$tp = <<<__HTML
<p>%1\$s - <a href="%1\$s" title="%2\$s">%1\$s</a></p>
__HTML;

$ato = array (
"1.php" => "1.phpへ",
"2.php" => "2.phpへ",
"3.php" => "3.phpへ",
"4.php" => "4.phpへ",
"5.php" => "5.phpへ"
);
foreach ($ato as $link => $title) {
printf ($tp, $link, $title);
}
?>
556nobodyさん:2006/07/01(土) 01:07:56 ID:???
>>544
名機ではあるが京セラの血が濃いPC-100を挙げるのは...
557nobodyさん:2006/07/01(土) 01:59:51 ID:???
CentOS 4.3 に yum で PHP php-4.3.9-3.12 をインストールしています。
PHP Extension をインストールしたいのですが、php-config と mecab-config
がない状態です。phpize は php-devel のインストールでできました。

php-config と mecab-config はどうしたらできるのでしょうか。
よろしくお願いします。
558nobodyさん:2006/07/01(土) 03:10:55 ID:???
ソースから入れれば?
559nobodyさん:2006/07/01(土) 09:12:59 ID:???
フォームでPOSTしてきた人の$_SERVER['REMOTE_ADDR']を取得したところ、
毎回「192.168.1.xxx」が返ってきてしまいます。(全国のいろんな人がやっても同じ)
でもこれって自分(鯖)の側のネットワーク内部のIPアドレスですよね?

どうして$_SERVER['REMOTE_ADDR']でこんな戻り値になっちゃうのでしょう??
ちなみに鯖はXREAです。
560nobodyさん:2006/07/01(土) 09:14:31 ID:???
phpinfo
561nobodyさん:2006/07/01(土) 10:28:33 ID:???
>>560
ん?
562nobodyさん:2006/07/01(土) 10:56:26 ID:???
>>560
が?
563nobodyさん:2006/07/01(土) 10:57:09 ID:???
>>560
ぐ?
564nobodyさん:2006/07/01(土) 11:07:49 ID:???
>>560
ぐ?
565nobodyさん:2006/07/01(土) 13:15:22 ID:???
>>560
ぎ?
566nobodyさん:2006/07/01(土) 13:46:47 ID:???
>>559
サーバー(自分自信)のリモートアドレスを取得してきている。

$REMOTE_ADDR = getenv("REMOTE_ADDR");
567nobodyさん:2006/07/01(土) 15:34:43 ID:???
>>566
普通はクライアント側のIPアドレスを返す筈なのに、なんで?って話だと思うが。
まぁ、xreaはそういうものなのかも試練。
568nobodyさん:2006/07/01(土) 17:12:26 ID:???
>サーバー(自分自信)のリモートアドレスを取得してきている。
嘘こくな
569nobodyさん:2006/07/01(土) 18:15:10 ID:???
>>566は嘘つき!
570nobodyさん:2006/07/01(土) 18:20:26 ID:???
うそつき・・・(by 緒川たまき)
571nobodyさん:2006/07/01(土) 20:29:48 ID:???
PHP+JavaScriptはここで聞いても大丈夫なのでしょうか?
572571:2006/07/01(土) 20:33:45 ID:???
すみません、どなたかお答えいただければ嬉しいです。

チャットを作っているのですが、発言/リロードを押すと下のフレームもリロードさせたいのですが
どのようにすればうまく動作しますか?

上はtopFramem下はmainFrameです。

<script type="text/javascript">
<!--
function reload(){
parent.mainFrame.location.href='logpage.php';
}
-->
</script>

<input name="Submit" type="submit" id="Submit" value="発言/更新" onclick="reload()" />

PHPで、
if($_POST['Submit'] == "発言/更新"){
書き込み処理
}

このように記述しています。


テキスト欄に入力して発言をすると、ファイルにログが書き込まれフレームは更新されず、
空白の状態でボタンを押すと更新されます。
発言したうえで更新したいのですが、どのようにすれば良いのでしょうか?
573nobodyさん:2006/07/01(土) 20:42:48 ID:???
>>572
普通そういう場合はformタグのtaeget属性を下側フレームにして
書き込み処理とログ表示を一括して下側のフレームで行い、
送信押されたらフォームに入力されたテキストをJavaScriptで消すってもんじゃないの?

その書き方だと発言時は書き込み処理が終わる前にリロードしてしまう気がする。
574572:2006/07/01(土) 20:46:32 ID:???
>>573
上の書き込みしたデータを下のフレームに持ってくるのはできるのですか?
575nobodyさん:2006/07/01(土) 20:53:10 ID:???
>>574
スネーク、まずはどこでもいいからその辺のフレームチャットを見てくるんだ。
あんまり変な質問をしていたら回答者が呆れて晩御飯に出かけてしまうぞ。
576nobodyさん:2006/07/01(土) 21:05:39 ID:???
>>575
見たのですが、さっぱりなんですよ。
577nobodyさん:2006/07/01(土) 21:09:54 ID:???
>>576
スネーク、問題はPHP以前のところにあるようだ。このままでは板違いになってしまうぞ。
早急にHTMLをしっかり勉強し直してPHPに関する質問に切り替えるんだ。
578559:2006/07/01(土) 21:24:54 ID:???
>>567
誰かXREAでアカウント持ってる人、実験してみてもらえませんかね??
ちなみに他の鯖(XREA以外)で同じスクリプトを走らせたところ、
当然ながら問題なくリモートアドレスを取得できました。
579nobodyさん:2006/07/01(土) 21:39:45 ID:???
>>576
phpだけでやれば?
580nobodyさん:2006/07/01(土) 21:47:19 ID:???
>>578
ちったぁ検索したか?
餅は餅屋。XREA のことは XREA に聞け。
http://sb.xrea.com/showthread.php?threadid=6646

ちなみに、手元で phpinfo() を表示させてみたら REMOTE_ADDR は
グローバル IP アドレスが入ってたよ? http の場合ね。https は未確認。
581nobodyさん:2006/07/01(土) 21:49:59 ID:???
>>580 の追記。
https だったらプライベート IP アドレスでした。
これで納得かい?
582nobodyさん:2006/07/01(土) 22:05:11 ID:???
$_SERVER["REMOTE_HOST"]
は空みたい。
583nobodyさん:2006/07/01(土) 22:07:41 ID:???
gethostbyaddr($_SERVER['REMOTE_ADDR']は?
584nobodyさん:2006/07/01(土) 22:33:18 ID:???
$_SERVER["SERVER_ADDR"],
$_SERVER["REMOTE_ADDR"],
$_SERVER["REMOTE_HOST"],
getenv("REMOTE_ADDR"),
gethostbyaddr($_SERVER["REMOTE_ADDR"])

$_SERVER["REMOTE_HOST"]
以外は期待通りの動作

>>559か使ってるサーバ固有の問題
585nobodyさん:2006/07/01(土) 23:01:00 ID:???
>>584
> $_SERVER["REMOTE_HOST"]
> 以外は期待通りの動作
期待通りも何も、REMOTE_HOST は必ずしもセットされるとは限らないから
別に期待通りじゃない、とは思わない。
負荷軽減のために逆引きしてないサーバは腐るほどある。
REMOTE_HOST が未定義だったら REMOTE_ADDR を resolve するのは
ネットワークプログラミングでは基本ですが?
586nobodyさん:2006/07/01(土) 23:19:21 ID:???
なんで俺が揚げ足とられてんの??
587nobodyさん:2006/07/01(土) 23:19:58 ID:???
ループ処理で配列に要素を追加しているのですが、希望通りの動作をしません。

具体的には、array('key1' => 'value1', 'key2' => 'value2') という配列を作成したいのですが、
array(array('key1' => 'value1'), array('key2' => 'value2')) という配列になってしまいます。

追加処理はこんな感じです。
for ($i = 0;$i < $count;$i++) {
$add[] = array("key{$i}" => "value{$i}");
}

よろしくお願いします。
588nobodyさん:2006/07/01(土) 23:20:01 ID:???
http://example.com/
と書かれたときに、これにそのURLのリンクを貼りたいのですが、
どのようにすれば良いのでしょうか?
589nobodyさん:2006/07/01(土) 23:21:50 ID:???
>>589
通過処理どおりの動作をしているようにみえるが
590nobodyさん:2006/07/01(土) 23:23:05 ID:???
>>587
お前はわざとやってるのか?

add["key{$i}"] = "value{$i}";

だろうが。
591nobodyさん:2006/07/01(土) 23:24:14 ID:???
$add["key{$i}"] = "value{$i}";  な
592nobodyさん:2006/07/01(土) 23:25:11 ID:???
>>588
/(^|[^=;])(https?:\/\/[!#\$%&'()*+,\-.\/:;=\?@_~\w]+)/
593nobodyさん:2006/07/01(土) 23:26:16 ID:???
訂正
(https?:\/\/[!#\$%&'()*+,\-.\/:;=\?@_~\w]+)
594nobodyさん:2006/07/01(土) 23:30:40 ID:???
preg_replace("/(http\:\/\/[\w\.\~\-\/\?\&\=\;\#\:\%]+)/",
         "<a href=\"\\1\" target=\"_blank\">\\1</a>", $url)
595nobodyさん:2006/07/01(土) 23:34:57 ID:???
>>588

if ($url == "http://example.com/"){
  echo "<a href=\"http://example.com/\">http://example.com/</a>";
}
596nobodyさん:2006/07/01(土) 23:36:09 ID:???
>>590-591
紙紙紙紙!!!11

だいちゅき
597nobodyさん:2006/07/01(土) 23:38:03 ID:???
>>596
はぁ?これくらいはできて平民なんだよ。
598nobodyさん:2006/07/01(土) 23:40:12 ID:???
>>592-294

arigatougozaimasu
599nobodyさん:2006/07/01(土) 23:51:18 ID:???
>>598
こいつ、かわいいなぁ
600nobodyさん:2006/07/02(日) 00:41:34 ID:oZjla2sM
txtファイルの空行を探して削除したいのですが
どうすればいいのでしょうか
601nobodyさん:2006/07/02(日) 00:48:12 ID:???
ループとかでチェックしていくしかないんじゃ?
知らないけど。
602nobodyさん:2006/07/02(日) 00:53:26 ID:???
>>595

if ($url == "http://example.com/"){
  echo '<a href='.$url.'>'.$url.'</a>';
}
603nobodyさん:2006/07/02(日) 00:56:33 ID:???
>>600
正規表現で改行が2個以上連続してるのを見つけ出してジェノサイド。
604nobodyさん:2006/07/02(日) 01:02:19 ID:???
文字列から@〜@でくくられている部分を探して、@〜@の「〜」の部分.gifに置き換えたいのですが
どのようにすれば良いのでしょうか?

@a@⇒<img src=a.gif>
@phpkamo@⇒<img src=phpkamo.gif>
605nobodyさん:2006/07/02(日) 01:09:46 ID:???
preg_replace('/\@([a-zA-Z0-9\-_~]*)?\@/', '<img src="$1.gif">', $str);
606nobodyさん:2006/07/02(日) 01:18:43 ID:oZjla2sM
>>603

正規表現で改行2個は

ereg("^$", $var)

でよいでしょうか。
607nobodyさん:2006/07/02(日) 01:22:56 ID:W09rfuPj
$_FILESでファイルのアップロード処理をしているのですが、ファイルタイプを調べてセキュリティ上危険だと
考えられるファイル(例えばCGI)の拡張子を「txt」にしたいと思います。

アップロードするファイルの種類を調べるにはどうしたら良いでしょうか?
ユーザが偽装できてしまうようではセキュリティ的にマズいですし・・・

やはりアップロードファイルの拡張子を調べるのが一番なのでしょうか?


それから、圧縮ファイルを展開する関数ってあります?
608nobodyさん:2006/07/02(日) 01:27:10 ID:???
>>607
ファイルタイプ
http://jp.php.net/manual/ja/features.file-upload.php

圧縮ファイル
http://jp.php.net/manual/ja/funcref.php
の一覧からお好きなものをチョイス
609nobodyさん:2006/07/02(日) 01:41:16 ID:W09rfuPj
>>608
>ファイルの MIME 型。ただし、ブラウザがこの情報を提供する場合。 例えば、"image/gif" のようになります。
>この MIME 型は PHP 側ではチェックされません。
>そのため、 この値は信用できません。

これでも大丈夫かな?
610nobodyさん:2006/07/02(日) 01:41:40 ID:???
>>606
$nl = "\r\n";
ereg_replace("$nl($nl)+", $nl, $text);
preg_replace("/^$nl/m", "", $text);

^$はマッチ幅ナシね。
611nobodyさん:2006/07/02(日) 01:53:12 ID:???
>>609
大丈夫なのか否かってのは何を作りたいかによるから何とも言えない。
確かに、hidden パラメータとかと同じで、改竄はありうる。
しかし、そのファイルが例えば JPEG か否かをちゃんと判断するには
プログラマがそのファイルの内容・構造をチェックして判断しなければならない。
その為には、そのファイルのフォーマットの仕様・特徴(SOI APP …など)
を知っていないと判断のプログラムが書けませんが
それが出来るなら、自分でチェックすれば良い話です。
簡易に済ませたかったら system で file を呼ぶとかも考えられますけど…
612nobodyさん:2006/07/02(日) 01:58:42 ID:oZjla2sM
>>610
ありがとうございます

$text = 'log.txt';
$nl = "\r\n";
for($i = 0; $i < count($line); $i++){
if( ereg_replace("$nl($nl)+", $nl, $text) ){
preg_replace("/^$nl/m", "", $text);
break;
}
}

こう作ってみたんですけど、改行抜けません
おかしい所教えてもらえませんでしょうか

613あああ ◆rHbUqJDbds :2006/07/02(日) 02:09:51 ID:???
614nobodyさん:2006/07/02(日) 02:14:51 ID:???
サンプル■1234
サンプル■1234■5678

の場合、最初の■以降の文字を消したいのですが、
preg_replace('/■?', '', $str);

こうしたのですがうまくいきません。
どこが間違っているのでしょうか
615nobodyさん:2006/07/02(日) 02:17:45 ID:???
>>612

preg_replace("/^$nl/m", "", $text);

$text = preg_replace("/^$nl/m", "", $text);

つーか、せっかくpreg使ってるのに何でeregもつ買ってるの?
pregだけでいいんでない?


$text = file_get_contents("test.txt");
$nl = "\r\n";
$text = preg_replace("/^$nl/m", "", $text);

print($text); //確認

616614:2006/07/02(日) 02:19:55 ID:J/w8BCAt
すみません、追記です。
方向が変わってしまって^^;

サンプル■1234■5678

これを、最初の■で区切ることはできますか?

サンプル
■1234■5678

こうわけたいのですが
617nobodyさん:2006/07/02(日) 02:30:21 ID:???
>>616
俺初心者だからかなり馬鹿っぽいやり方かもしれないけど

$sample = "サンプル■1234■5678";
$line = explode("■", $sample);

foreach($line as $key => $value)
if ($key == 0) $hoge = ($value."\n");
else $hoge .= ("■".$value);

print($hoge);

こんなんはどうかな。
618nobodyさん:2006/07/02(日) 02:30:46 ID:???
>>612
もし配列で持ってるなら "" な項を捨てりゃいいだけだよ

>>616
都合のいい方使って好きなように。

$text = "サンプル■1234■5678";
list($mae, $usiro) = explode("■",$text,2);
$usiro = "■".$usiro;
echo "explode: $mae, $usiro\n";

preg_match("/^(.*?)(■.*)$/", $text, $capture);
echo "preg_match: $capture[1], $capture[2]\n";
619617:2006/07/02(日) 02:34:46 ID:???
うおやっぱ馬鹿丸出しやん・・・

>>618
参考になります!
620nobodyさん:2006/07/02(日) 04:04:38 ID:???
<frameset rows="100,*" cols="*" framespacing="1" frameborder="yes" border="1">
<frame src="top.php?id=<? echo $_GET['id'];?>" name="topFrame" scrolling="Yes" id="topFrame" title="topFrame" />
<frame src="logpage.php?id=<? echo $_GET['id'];?>" name="mainFrame" id="mainFrame" title="mainFrame" />
</frameset>

この場合で各フレームのURLを見たところ、?id=がなかったのですが
これでは無理なのでしょうか?
621620:2006/07/02(日) 04:05:08 ID:???
ちなみに、index.php?id=1でためした場合です
622nobodyさん:2006/07/02(日) 04:11:06 ID:???
PHPでの数値をJavaSfcriptで出力ってできませんか?

$abs = 30;

setTimeout("location.href='abc.php'",1000*<? echo $abc;?>);
623nobodyさん:2006/07/02(日) 04:28:26 ID:???
>>620
それでできるよ。
他に問題があるんでしょ。
624nobodyさん:2006/07/02(日) 04:32:06 ID:???
>>622
PHP は HTML を出力するに過ぎない。
その出力する HTML に変数の値が埋め込まれた JavaScript が書かれれば良いだけ。
言っている意味分かる?
625nobodyさん:2006/07/02(日) 06:15:41 ID:???
>>622
$abs != $abc
626622:2006/07/02(日) 09:39:02 ID:???
>>624
つまり、一気にJavaScriptを書き出せば良いのでしょうか?

>>625
すみません、両方$abcでお願いします
627622:2006/07/02(日) 09:44:38 ID:???
とりあえず

<?
echo "<SCRIPT LANGUAGE=\"JavaScript\">";
echo "<!--";
echo "setTimeout(\"location.href=logpage.php?id".$id."\",1000*10)";
echo "parent.topFrame.document.form.com.value=\'\'";
echo "-->";
echo "</SCRIPT>";
?>

としてみたところ、結果は同じでした・・・
どうすれば良いのでしょうか
628622:2006/07/02(日) 09:57:28 ID:???
すみません、解決しました。
629nobodyさん:2006/07/02(日) 09:57:31 ID:???
>>627
そもそも「何と同じ」で、期待していたそれと異なる結果とは何?
630nobodyさん:2006/07/02(日) 09:58:14 ID:???
出力されたJavaScriptをよく見ろ
631nobodyさん:2006/07/02(日) 10:24:55 ID:???
632nobodyさん:2006/07/02(日) 12:02:59 ID:???
サイテー
633nobodyさん:2006/07/02(日) 12:12:43 ID:???
$_SESSION['var'] = "aaa";
echo $_SESSION['var'];

これって携帯でも表示される?
634nobodyさん:2006/07/02(日) 13:17:57 ID:???
cookieダメならSID足したら?
635nobodyさん:2006/07/02(日) 13:44:17 ID:???
$str='サーバサイド技術';
print(mb_convert_kana($str,'KV'));
↑の結果が「サーバサイド技術」のままで、全角に変換されないのですが
PHPはFC5のVersion 5.1.4です。
636nobodyさん:2006/07/02(日) 14:00:21 ID:???
またお前か。
637nobodyさん:2006/07/02(日) 14:03:50 ID:???
>>635
文字コードを指定してやって。
print(mb_convert_kana($str,'KV','euc-jp'));
みたいに。
638nobodyさん:2006/07/02(日) 14:28:22 ID:???
>637
ありがとうございます。うまくいきました。

>636
そんなこと言わずにおつきあい下さいな
639nobodyさん:2006/07/02(日) 14:34:36 ID:???
636は俺と付き合ってるからダメだ
640nobodyさん:2006/07/02(日) 14:42:29 ID:???
おかしいな。俺と付き合ってるはずなんだが・・・?
641nobodyさん:2006/07/02(日) 14:44:45 ID:???
まてまて、俺だ
642nobodyさん:2006/07/02(日) 15:11:01 ID:???
Macのsafariで \と_が文字化けするために
自作PHPがsafariの場合上手く動作しないのですが、
よい回避策ないでしょうか?

ttp://www.sodan.ecc.u-tokyo.ac.jp/2004/FAQ/faq52-20040330.shtml
643636:2006/07/02(日) 15:19:45 ID:???
あらら、3つ又がばれちゃったみたいね。
644nobodyさん:2006/07/02(日) 15:27:39 ID:???
>>642
そのサイトにUTF-8なら問題ないと書かれているのに何故そうしない?
645nobodyさん:2006/07/02(日) 15:36:09 ID:???
下手にUTF使ったら別の状況で問題が発生するだけ
646nobodyさん:2006/07/02(日) 17:31:55 ID:YHlCRRoc
掲示板などのデータを楽をしてシリアライズ保存しまう人って多いいのでしょうか?
シリアライズは便利で高速そうですが一度に全ての変数をメモリに乗せてしまう事になるなど
多少のデメリットもあるようですが、みなさんはどう考えられてますか?
647nobodyさん:2006/07/02(日) 17:51:29 ID:???
>>646
多いかどうかはわからないけどシリアライズはかなり便利。
俺もよく使ってる。
掲示板のログ全部とかはさすがに入れないけども
要は工夫次第。
648nobodyさん:2006/07/02(日) 17:55:10 ID:???
テキストファイルから任意の行だけ読み込む事はできますか?
ファイルポインタとかをどのように指定して良いのか分かりません。
649nobodyさん:2006/07/02(日) 18:53:00 ID:???
何行目でやれば?
650nobodyさん:2006/07/02(日) 18:54:27 ID:???
file関数で配列にぶち込んで行指定
651nobodyさん:2006/07/02(日) 19:11:02 ID:???
レスありがとうございます。

>>649
すいません。よく分かりません。orz

>>650
負荷が気になるのですが、そうするのが一般的なのでしょうか。
652nobodyさん:2006/07/02(日) 19:39:02 ID:???
データ量にもよるし。
任意ってのが例えばランダムで選択されるのか
ある文字列がある場合なのか
どのような条件かにもよると思う。
653nobodyさん:2006/07/02(日) 19:39:49 ID:???
>>651
ていうか
具体的に何をやりたいのか
いっちゃいなよYOU!
654nobodyさん:2006/07/02(日) 19:58:32 ID:???
具体的に、特定行を読みたいんだろうよ。
655nobodyさん:2006/07/02(日) 20:01:04 ID:???
一般的かどうかは分からんが、
fopenして、任意の行までスキップすればいいんじゃない?
てか、データの検索でシコシコやりたいならDB使うのが定石だとおもうよ。
656nobodyさん:2006/07/02(日) 20:48:11 ID:YHlCRRoc
多次元配列の次元数?を調べる方法はありますでしょうか?
$a[1][2] ← これなら2個とかです
657nobodyさん:2006/07/02(日) 20:50:42 ID:???
count($a[1])
658nobodyさん:2006/07/02(日) 20:54:30 ID:???
もしかしたら、$a[1][2][3]なら3とか深度の事?だったらない。自分で関数作るしか。
659nobodyさん:2006/07/02(日) 20:56:44 ID:???
多分ないな。再帰とかで調べるしか無いと思う。そもそも
array(1, 2, array(3, array(4, 5)), array(6), 7)
は3次元配列とは呼べないと思うし
660nobodyさん:2006/07/02(日) 21:00:08 ID:???
>>658
深度というのですね。ありがとうございます。
再帰的関数?を狙ってこんな事な感じで試してみるのですが深度を上手く拾う事が出来ません。
$dに深度を入れようとしているのですが合わないのです。

function box($ary,$d = 0){
foreach(array_keys($ary) as $t){
  if (is_array($ary[$t])) box($ary[$t],++$d);
}
}
661nobodyさん:2006/07/02(日) 21:24:02 ID:???
660です
$dに加算する場所が悪かった事がわかりました(−−;
662nobodyさん:2006/07/02(日) 21:34:12 ID:???
そうですか(−−;
663nobodyさん:2006/07/02(日) 22:03:18 ID:???
ローカルサーバーでは正常に動いたのですが、
サーバーに上げると変数に入れた文字が文字化けしてしまいます。
ちなみにland.toなんですが。。。
これはサーバーの方で設定しなければ直らないのでしょうか?
664nobodyさん:2006/07/02(日) 22:27:30 ID:???
EUC
665nobodyさん:2006/07/02(日) 22:32:04 ID:???
「あああ」⇒「、「、「、「」
666nobodyさん:2006/07/02(日) 23:07:01 ID:???
>>663
land.toのサポートの過去ログを探してみな。
667nobodyさん:2006/07/03(月) 10:58:30 ID:TaHjD2Gv
PHPからHTMLに出力する際に全ての改行を除いてしまう
(つまり、出力後のページのソースを見ると改行がない)ようにするには、
どうすればよろしいですか。
668nobodyさん:2006/07/03(月) 11:01:03 ID:???
>>667
\r\nを削除したら良いよ
669nobodyさん:2006/07/03(月) 11:14:25 ID:???
たまには改行コードがCR+LFじゃない環境のことも思い出してあげてください
670nobodyさん:2006/07/03(月) 11:17:36 ID:???
>>667
trim ($str, "\r\n")
671nobodyさん:2006/07/03(月) 11:18:29 ID:???
あぁ、\rと\nを削除したら良いよ
そういうつもりで書いたのですが言葉足りなかったですね
672nobodyさん:2006/07/03(月) 11:46:47 ID:???
str_replaceで、
\r\n
\r
\n
の順に ""に置き換えればいいとおもうよ。
673nobodyさん:2006/07/03(月) 11:56:16 ID:???
>>672
改行コードを<br>に置き換えるんじゃなくて削除するだけなら\rと\nの二回で済むと思われる。
674nobodyさん:2006/07/03(月) 11:57:59 ID:???
>>673
なるほど。お前は天才だな
675nobodyさん:2006/07/03(月) 12:02:58 ID:???
preg_replace("/\r\n|\n|\r/", "", $text);
676nobodyさん:2006/07/03(月) 13:06:15 ID:TaHjD2Gv
改行削除は秀丸の置換でもできるので、
PHPでもそんな感じで何とかなるとは思うのですが、
問題はHTMLを含めて改行を削除するということなのです。

現状は、よくある「HTMLの中にPHPを書いている」という状況なのですが、
この場合のHTMLの内容さえも、改行を除いて出す必要があります。

通常の出力内容を$html_beforeとし、
$html_after = 改行処理($html_before)でとして
$html_afterを出力すれば良いのですが、
そう簡単にもいかないような。

要は、出力内容を$html_beforeに格納する方法ですね。
677nobodyさん:2006/07/03(月) 13:16:31 ID:???
>>676
?(・∀・) 独り言ですか
678nobodyさん:2006/07/03(月) 13:27:57 ID:???
679nobodyさん:2006/07/03(月) 13:31:03 ID:???
設定にもよるけど output_buffering 使えば良いかと
680nobodyさん:2006/07/03(月) 13:45:12 ID:TaHjD2Gv
>>678

$textに格納できないかと...
681nobodyさん:2006/07/03(月) 13:48:13 ID:???
小数点を含むの数値を比較するときはどうするのがスマートなんでしょう?
例)
<?php
$a = 1.8;
$b = 0.15 * 12.0;
echo ($a == $b ? "equivalence" : "not equivalence");
?>

桁数合わせて(キャストして)文字列として比較する?
有効桁以下を切り落とし、整数化して比較する?
682nobodyさん:2006/07/03(月) 14:21:47 ID:???
>>676
ob_start
683nobodyさん:2006/07/03(月) 15:18:32 ID:???
684nobodyさん:2006/07/03(月) 15:48:51 ID:???
誰が浮動少数点のまま比較すると言ったよ池沼が。
685nobodyさん:2006/07/03(月) 15:56:24 ID:???
誰が浮動少数点のままでは比較しないと言ったよ池沼が。
686nobodyさん:2006/07/03(月) 16:01:58 ID:???
池沼 ←これなんて読むんだよ知障が。
687nobodyさん:2006/07/03(月) 16:11:55 ID:???
>>686
スレ違いだけど一応質問には答えとこう
「ちしょう」だよ
688nobodyさん:2006/07/03(月) 16:14:44 ID:???
>>686
分からないで書いていたのかw

ほんとレベル下がったなこのスレ
689nobodyさん:2006/07/03(月) 16:14:55 ID:33zQh45+
有効桁って書いただろうよ。
罵倒するだけなら失せろ。
お前には聞いてねーよ。絡んでくるな。
690nobodyさん:2006/07/03(月) 16:15:44 ID:???
ネタだろwww
691nobodyさん:2006/07/03(月) 16:41:04 ID:???
まあ「これなんて読むんだよ知障が」って言ってるし、ネタなんだろうな。
692nobodyさん:2006/07/03(月) 16:47:58 ID:???
>>681
質問の意図がわからないから答えようがない
そしてオレは浮動小数点数を比較したことがない

有効桁以下を切り落として整数化したら両方1になって誤差がありすぎると思うんだけど、それはそれで問題ない処理なわけ?
693nobodyさん:2006/07/03(月) 16:48:01 ID:???
自己フォロー乙
694nobodyさん:2006/07/03(月) 16:51:56 ID:???
こんにちは。
PHPで、方程式を提示すればそれをグラフにしてくれるようなモ・・なんとかってありますか?
たとえば、 y = 2x + 1 とか、 y = 2(x+3)^2 - 5 とかいう方程式のグラフを書いてくれる感じのやつです。
695nobodyさん:2006/07/03(月) 18:14:24 ID:???
>>694
こんにちは
696nobodyさん:2006/07/03(月) 18:47:19 ID:???
>>692
キミはアホですか。
有効桁を切り落として整数化=有効桁の分だけ100なり1000なりを掛け算して整数化って意味でしょ。
その程度の意図も読めないなら回答なんてしようと思うなよ〜

で、大小の判定まではともかく、有効桁内での等しいかどうかの比較は整数化が必須じゃないかな。
文字列にしちゃうと12.1と110.1みたいのがまともに比較できなくなるから基本は整数化じゃない?
697nobodyさん:2006/07/03(月) 19:22:43 ID:???
$file=fopen('guest.dat','a');
このように書いても、サーバーにguest.datが作成されません。
find / -name "guest.dat" しても引っかかりませんでした。(sudoしています)
そこで
$file=fopen('/guest.dat','a');
としたところ、/にguest.datが作成されました。
一番上のようにディレクトリを指定しない場合はファイルは作成されないのでしょうか?
698697:2006/07/03(月) 19:23:16 ID:???
サーバはFedoraCore5 PHP5.1.4です。
699nobodyさん:2006/07/03(月) 19:25:53 ID:???
>>697
ディレクトリのパーミッション
700nobodyさん:2006/07/03(月) 19:30:58 ID:???
701nobodyさん:2006/07/03(月) 19:33:02 ID:???
ログファイルの区切り文字って何がいいかな?
「,」はエンドユーザが入力したらマズいし、「<>」はだとちょっと面倒?


おまいらはどーしてるん?
702nobodyさん:2006/07/03(月) 19:34:18 ID:???
<>
703nobodyさん:2006/07/03(月) 19:36:23 ID:???
>>701
「<>」をエンドユーザが入力したらどうするんだよ?
それは置換するから大丈夫って言うなら「,」だって同じことなんじゃないかと。
704nobodyさん:2006/07/03(月) 19:38:34 ID:???
>>703
<> は <> にすればいいし、 , は ? だっけ?忘れた。
個人的な好みじゃないか?
705nobodyさん:2006/07/03(月) 19:39:54 ID:???
<> は &lt;&gt; にすればいいし、 , は &#44; だっけ?忘れた。
個人的な好みじゃないか?
706nobodyさん:2006/07/03(月) 19:41:41 ID:???
>>704
テキストをデリミタにすると、結局はエンドユーザが入力し得るものなんだから
どうでも好きにすればいいんじゃないってこと。
自分なら \t かバイナリにするけどね。\t でも入力し得るから注意ね。
707nobodyさん:2006/07/03(月) 19:46:01 ID:???
>699
ディレクトリのパーミッションを777にしたらできました!!
ありがとうございます!

>700
実行時のパスが分かるんですね。これも丁度知りたかった事です。
ありがとうございます!
708nobodyさん:2006/07/03(月) 19:48:22 ID:???
>>707
えぇ!?
/ にファイルを作成出来ていることから、パーミッションの問題じゃないと思っていたんだが…
709nobodyさん:2006/07/03(月) 20:01:57 ID:???
>>701
DB使えば?
ファイルにこだわるならTABとか改ページとかのコントロールコード系とか。
710nobodyさん:2006/07/03(月) 20:04:20 ID:???
>>705
メールデータとかのログも&lt;なんて変換かけてんの?
あ、掲示板くらいしか作ったことないしょぼプログラマでしたか、失礼。
711nobodyさん:2006/07/03(月) 20:07:49 ID:???
くだらない煽りなんてしてないで、好きな文字に変えればいいじゃないか。
712nobodyさん:2006/07/03(月) 20:08:30 ID:???
>>710
なんでそんな攻撃的な物言いするの?
PHP+PostgreSQLのシステムを官公庁に納めたことあるよ。
713nobodyさん:2006/07/03(月) 20:09:00 ID:???
>>709
じゃあ区切り文字は「\t」にして、ユーザが入力する TAB は、

trim($str, "\t")

で桶かな。
714nobodyさん:2006/07/03(月) 20:10:01 ID:???
あ、>>713>>701です。
715nobodyさん:2006/07/03(月) 20:11:27 ID:???
$moji = "abc";
という変数の「後ろ」に文字列を追加するには「.=」だから簡単です。
$moji .= "def"; //この時点で$mojiには「abcdef」が入っている)

でも、変数の「先頭」に文字列を追加するのに簡単な方法ってありますでしょうか?
つまり$mojiに「defabc」と入ってる状態にしたいのですが・・・。
今はわざわざ、
$moji2 = "def";
$moji = $moji2.$moji;
などと連結しています。
716nobodyさん:2006/07/03(月) 20:13:04 ID:???
>>712
2ちゃんでキモヲタの捨てゼリフにいちいちマジレスカコワルイ。
キモヲタは放っておけ。
717nobodyさん:2006/07/03(月) 21:17:36 ID:???
>>715
$moji = "def" . $moji;
じゃあかんの?
718nobodyさん:2006/07/03(月) 21:20:22 ID:???
>708
phpファイルの置いているフォルダのパーミッションを775から
777にしたらファイルが作成できました。
/のパーミッションも調べてみようとしましたがどうやって見るのか
分からないので、つっ込んだことはわからないままですが・・・
ともあれ疑問は解決できました。
これからもちょくちょく質問すると思うのでそのときはお手ほどき
ください。
719nobodyさん:2006/07/03(月) 22:11:39 ID:???
>>696
遅くなったけどありがとう。
有効桁がそれ程大きくないので整数化がよさそうですね。

>>692
例が適切ではなかったも。スマソ
720nobodyさん:2006/07/03(月) 23:33:57 ID:???
>>681=>>684=>>689=>>719
質問者ならageろカス、誰が誰だか分からんだろうが。

正確な実数値の比較がしたけりゃ、これ使え
http://jp.php.net/manual/ja/function.bccomp.php

>>683にも書いたがマニュアルに浮動小数点数の扱いの注意については書いてある。
http://jp2.php.net/manual/ja/language.types.float.php

>> よって、小数の最後の桁を信用してはいけませんし、 小数が等しいという比較を行ってはいけません。
                                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> より高い精度が必要な場合には、 任意精度数学関数(bcmath)または gmp 関数を代わりに使用してください。
                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

要するに、マニュアル嫁ボケナスってことだ
721nobodyさん:2006/07/04(火) 00:19:41 ID:???
>>717
お前頭悪いだろ。
722nobodyさん:2006/07/04(火) 00:27:21 ID:???
俺も>>717以外の方法が思いつかんのだが・・・
723nobodyさん:2006/07/04(火) 00:37:21 ID:???
724nobodyさん:2006/07/04(火) 00:54:12 ID:???
>>722
お前頭悪いだろ。
725nobodyさん:2006/07/04(火) 01:14:14 ID:???
$moji .= "def";
って
$moji = $moji . "def";
じゃないの?
726nobodyさん:2006/07/04(火) 01:33:19 ID:???
php初めて一年目くらい。ひとまず、自分で考えられる程度のものは一通り作れるようになった(動いてるというだけですが)くらいのレベルです。
一般的な話を聞きたいのですが

html部分はごっそりヒアドキュメントにして、それより前に分岐処理とか自作関数で生成した変数を
<input type='text' name='hoge' value='{$hoge}'>
ってな感じで埋め込んでる感じなんですが


ヒアドキュメントにしないで、
<input type='text' name='hoge' value='<?php echo $hoge; ?>'>

って書き方とどっちが正しいのでしょうか?
後者のほうの書き方は流れは分かりやすいけど、なんだかごちゃごちゃしてどうも好きになれないんですが。
727nobodyさん:2006/07/04(火) 01:35:21 ID:???
<?=$hoge?>
728nobodyさん:2006/07/04(火) 01:36:02 ID:???
>>725
そうだよ。だから?
729nobodyさん:2006/07/04(火) 01:42:19 ID:???
>>726
両方試して処理時間や負荷の差を教えてくれたらとってもうれしい。
730726:2006/07/04(火) 02:00:44 ID:???
>>727
あ、省略形の書き方ですね。
>>729
1000くらいとかループさせてみたんですが、少なくともブラウザのレンダリングされるという体感的な時間は変わらないみたいです。
前者の方が見やすいのは間違いないとは思うんだけど。
731nobodyさん:2006/07/04(火) 02:02:25 ID:???
俺は外部に書き出してincludeしてるよ
そっちのほうが見やすい
732nobodyさん:2006/07/04(火) 02:03:46 ID:???
チャットで退室するんじゃなくって、ブラウザを閉じるとサーバーに変数が送られるようにするにはどうすればいいですか?
733nobodyさん:2006/07/04(火) 02:05:58 ID:???
JSでも使っとけ
734nobodyさん:2006/07/04(火) 02:39:57 ID:???
<?php echo $hoge; ?>
<? echo $hoge; ?>
<?=$hoge?>

これの差を教えてください。
735nobodyさん:2006/07/04(火) 02:48:58 ID:???
お前の心に聞いてみろ!
736nobodyさん:2006/07/04(火) 03:10:27 ID:???
返事がありませんでした。教えてください。
困ってるんです!!(><)
737nobodyさん:2006/07/04(火) 03:25:46 ID:???
"あいうえお" から "あ" があるとTRUE

これを、"あいうえお" から "あ"または"う" があるとTRUE

という風にはできませんか?
738nobodyさん:2006/07/04(火) 03:28:01 ID:???
>>736
どの質問だよ?
739nobodyさん:2006/07/04(火) 03:28:39 ID:???
>>737
> "あいうえお" から "あ" があるとTRUE
まずこれをどういう風に書いてるのか示せ。話はそれからだ。
740nobodyさん:2006/07/04(火) 03:32:07 ID:???
>>739
$str = "あいうえお";
if(strstr($str,"あ")){
  echo "TRUE";
}
741nobodyさん:2006/07/04(火) 03:45:09 ID:???
$str = "あいうえお";
if(strstr($str,"あ")||strstr($str,"う")){
  echo "TRUE";
}
742nobodyさん:2006/07/04(火) 03:56:47 ID:???
>>741
arrayを使った感じでできないのでしょうか
743nobodyさん:2006/07/04(火) 04:13:20 ID:???
まず条件を全て提示しやがれですわ
744nobodyさん:2006/07/04(火) 04:15:20 ID:???
発言文字から、
array(バカアホ死ねだの悪口)

の文字が入っている場合にTRUEを返したい
745nobodyさん:2006/07/04(火) 04:56:16 ID:???
>>734
下2つは設定によっては使えない

・・・だけだな。動作は同じだが
746nobodyさん:2006/07/04(火) 05:21:47 ID:???
>>744
あぼーんされてて見えないからレスアンカーしてみる
あまり変な事書くなよ

これで単なる煽りとかだったら凹むぜ
747nobodyさん:2006/07/04(火) 05:21:52 ID:???
>>720
質問者はそんなこと承知の上で聞いていると思うが?
わざわざ蒸し返すな。
お前のレスはなんの解決にも結びつかないんだから。
748746:2006/07/04(火) 05:22:30 ID:???
('A`)アサッパラカラコレカヨ
749nobodyさん:2006/07/04(火) 05:34:06 ID:???
まだぜんぜん夜中じゃんw海外在住ですか?(笑)
750nobodyさん:2006/07/04(火) 05:45:32 ID:???
>>745

        ∧_∧
        ( ><) < ありがとう
 ‐=≡t─‐/ヽ、_つ) __s)
‐=≡(ニニ(  ) /\\-.\
 ‐=≡( (ニ:( /悲| (O)T
 ‐=≡ヽ、__,ノ ̄  ヽ、_,ノ


ちなみにマニュアルで言うとどのへんでしょうか?
751nobodyさん:2006/07/04(火) 05:46:34 ID:???
>>742
配列ならforeachでいいじゃbn
752nobodyさん:2006/07/04(火) 05:55:40 ID:???
753nobodyさん:2006/07/04(火) 05:57:55 ID:???
>>742
$needle = array("あ", "う");
foreach($needle as $nd) {
if(strpos($str, $nd) !== FALSE) {
echo "TRUE";
}
}
ってことかいな?
754nobodyさん:2006/07/04(火) 06:31:57 ID:???
>>752

 またちょっとだけ賢くなりました。
   , - ,----、
  (U(    ) 
  | |∨T∨
  (__)_)
755nobodyさん:2006/07/04(火) 08:40:59 ID:???
756nobodyさん:2006/07/04(火) 08:45:47 ID:C7rNd6pP
フォームのアクションをgetにすると
$_GET変数に値が入りますが
$_GETの値をURLに戻す関数ってありますか?
757nobodyさん:2006/07/04(火) 08:53:11 ID:???
>>756
v5以降でならある。あとはマニュアル嫁
758nobodyさん:2006/07/04(火) 09:16:10 ID:???
>>756
つ http_build_query

>>757
関数くらい示してあげようよ。
759nobodyさん:2006/07/04(火) 09:49:36 ID:???
760nobodyさん:2006/07/04(火) 10:33:15 ID:???
foreachって使い方や使う場面がよく分からないので、
今まで一度も使ったこと無い・・・・orz

使わなくても困ったことないし・・・
でももしかしたら知らないうちに無駄な苦労してるのかも。。。
761nobodyさん:2006/07/04(火) 10:46:32 ID:???
漏れは逆に何でもforeachで回しちゃうな
使用頻度で言えば、foreach>while>for
762nobodyさん:2006/07/04(火) 10:58:47 ID:???
Perlの時は foreach を愛用してたけど、
PHPでは for もそこそこ使ってるな。

たとえば Perlでは、

foreach (0..5){
echo $_;
}
という感じのパターンは便利だった。
763nobodyさん:2006/07/04(火) 11:06:09 ID:???
使い方覚えるとforeachは凄い便利。
多次元配列なんかの場合だとかなりスッキリするし。
俺はループ処理はforeachかwhile。
forは殆ど使わなくなった。
764nobodyさん:2006/07/04(火) 11:17:50 ID:???
>>763
同じく。

配列の初期化とかもarray_pad使うようになってforを使うことは
めったに無くなった。
765nobodyさん:2006/07/04(火) 11:23:16 ID:???
PHP4の場合、配列を中身を書き換えるようなことをしようとすると
foreach だとめんどうなので for を使うね
766nobodyさん:2006/07/04(火) 11:37:05 ID:???
>>765
ん?久しくPHP4使ってないし環境無いんで試せないけど

foreach ($hoge as $key => $vl) {
  $hoge[$key] = $vl * 100;
}

見たいな書き方できないんだっけ?
767nobodyさん:2006/07/04(火) 11:37:32 ID:???
事前にとっておいた別の配列とあわせてごにょごにょするときは$iが必要になるけどforeachの中でforを使ってやると、入れ子のsqlをたったの2回で実現出来る。
最近のお気に入りの技
768nobodyさん:2006/07/04(火) 11:42:49 ID:???
>>766
その書き方で問題ない

foreach ($hoge as $vl) {
$vl = $vl * 100;
}
これは無理だけど
769nobodyさん:2006/07/04(火) 11:47:22 ID:???
ところで、藻前ら、webアプリ作る時特に指定がない場合はフロントコントローラー型で作りますか?ばらばらで作りますか?
770nobodyさん:2006/07/04(火) 11:48:14 ID:???
>>768
うーん個人的には後々混乱しそうだから、そんな書き方できなくてもいいやw
771nobodyさん:2006/07/04(火) 11:52:04 ID:???
for ($i = 1; $i < 50; $i++){
  $list[$i] = $int * $i + 3;
}
みたいなときは for がいいと思うよ。
772nobodyさん:2006/07/04(火) 11:59:59 ID:???
>>769
今採用しているフレームワークはフロントコントローラ型ですな。
773nobodyさん:2006/07/04(火) 12:12:16 ID:???
foreachは全く使わない、
whileも限られた場面だけ、
95%以上をforで処理してる俺って、いったい・・・・

だってforeach、使い方が理解できないんだもん。。。
774nobodyさん:2006/07/04(火) 12:25:58 ID:???
>>773
PHPではforeachが非常に高機能だから使い分けが出来ると強い。
775nobodyさん:2006/07/04(火) 12:36:49 ID:???
>>774
$hoge as $key =>
↑もうこの時点で意味が分からないorz

これをどのように、どんな場面で便利に使えるのか、サッパリ分からない・・・
俺ってアホだ。。。
776nobodyさん:2006/07/04(火) 12:38:26 ID:???
foreach(配列 as 値の一時変数)
foreach(配列 as 添え字の一時変数 => 値の一時変数)
777nobodyさん:2006/07/04(火) 12:38:31 ID:???
日付のデータを整形しようとしてこうしたんだが、Use of undefined constant mday - assumed
のエラーがどしても消えん、変数の取り扱い方が悪い?

$today = getdate();
$str_mon = strlen("$today[mon]");
$str_day = strlen("$today[mday]");
if($str_mon == 1) { $today[mon] = "0"."$today[mon]";};
if($str_day == 1) { $today[mday] = "0"."$today[mday]";};
778nobodyさん:2006/07/04(火) 12:39:45 ID:???
>>777
$today[mon] → $today['mon']
779nobodyさん:2006/07/04(火) 12:40:22 ID:???
>>777
連想配列の添え字はクォートで括れ
780nobodyさん:2006/07/04(火) 12:42:37 ID:???
>>778 >>779
ありがとう!
781nobodyさん:2006/07/04(火) 12:43:43 ID:???
つか、変数だけなのにダブルクォートで括るなよ。気持ち悪いし無駄。
782nobodyさん:2006/07/04(火) 12:44:55 ID:???
>>775
そういう時はマニュアルに載ってる例題を見るのがいいよ。

ttp://jp2.php.net/manual/ja/control-structures.foreach.php
783nobodyさん:2006/07/04(火) 12:48:09 ID:???
>>781 THX 涼しくなしました!

$today = getdate();
$str_mon = strlen($today['mon']);
$str_day = strlen($today['mday']);
if($str_mon == 1) { $today['mon'] = "0".$today['mon'];};
if($str_day == 1) { $today['mday'] = "0".$today['mday'];};
784nobodyさん:2006/07/04(火) 12:50:41 ID:???
>>783
sprintf使うとスッキリしますよ
785nobodyさん:2006/07/04(火) 12:58:00 ID:???
>>784
str_padという専用関数があったり
786nobodyさん:2006/07/04(火) 13:04:53 ID:???
>>785
へぇ、こんな関数あったんだ
私はSQL渡しする時にsprintfばかり使ってたから気づかなかった-;
787nobodyさん:2006/07/04(火) 13:05:27 ID:???
どういうシチュエーションで利用するのかわからんが、単に月とか日付が
欲しいだけならdateでいいような・・・
788nobodyさん:2006/07/04(火) 13:10:03 ID:???
>>784 PHPらしくなってまいりました。サンクス!
$today['mon'] = sprintf("0", $today['mon']);
>>785 ハァハァ...!
$today['mon'] = str_pad($today['mon'], 2, 0, STR_PAD_LEFT);
>>786 日付の表示を "20060704" とかにして既にファイル内にある日付と比較したいんす
789nobodyさん:2006/07/04(火) 13:12:18 ID:???
現在の時刻を?だったら、

$date = date("Ymd");

でおk。
790nobodyさん:2006/07/04(火) 13:13:46 ID:???
substr("00."$todat['mon"], -1, 2);
というのがすきだった。

でも str_pad はまさにそのための関数だからそれがあるならそれがいいね。
791nobodyさん:2006/07/04(火) 13:14:12 ID:???
まじですか!
でも勉強になったので皆さん ありがとうでした!
792nobodyさん:2006/07/04(火) 13:14:42 ID:???
>>789
たしかに。
m :月。数字。先頭にゼロをつける。
793nobodyさん:2006/07/04(火) 13:21:34 ID:???
>>788
つ date("Ymd")
794nobodyさん:2006/07/04(火) 13:22:45 ID:???
うはリロード忘れた・・
795nobodyさん:2006/07/04(火) 13:24:40 ID:???
>>794
あるあるwwwwww
796nobodyさん:2006/07/04(火) 15:01:12 ID:BWAomZFI
掲示板を作ったのですが、英語の荒らしが頻繁に来て困ります。
(自動で書き込んでいるのでしょうが)

そこで、よくあるような、画像中の文字を正しく入力しないと投稿できなくしたいのですが、
それに関し、役に立ちそうなサイトはございませんか。

検索で調べようにも、どのようなキーワードで調べればよいか...
797nobodyさん:2006/07/04(火) 15:07:42 ID:???
つGD

俺はユーザの手間増やすのは抵抗あるから、海外からのスパムは
もっと別の方法取ってるよ。

あと偶然かもしれないが、俺の知り合いがブログで「〜を作る」とか
宣言した後、それに関連する質問がこのスレに投げかけられるんだよなぁ。
798nobodyさん:2006/07/04(火) 15:07:44 ID:???
英語だけなら[\x80-\xff]があるかどうかで撲滅できね?
799nobodyさん:2006/07/04(火) 15:11:05 ID:???
>>796
つ PHP-usersに入会

最近そんな話題が出てた。
800nobodyさん:2006/07/04(火) 15:13:11 ID:???
使うのに手間が増えるので掲示板にそういう認証を用いるのはどうかと思うけどね
やはり入力文字で弾くのが良いかも
801nobodyさん:2006/07/04(火) 15:17:00 ID:???
>>796
名前タイトルメッセージで、
mb_strlen == strlen
なら投稿をはじく
802nobodyさん:2006/07/04(火) 15:43:54 ID:???
>>796
リファラをチェックして本来の投稿フォームからでなければ弾く。
803796:2006/07/04(火) 15:58:59 ID:BWAomZFI
>>797 >>800
認証のようなことは、確かにしたくはありません。

もちろん、今まで何も手を打たなかったわけではなく、
NGワード(COOLとかNICEとか)を設定して、それがあればerror()で止めていたのですが、
このところ毎日20件以上も来るようになり、毎回投稿内容が異なるので、NGワードも無力化してしまいました。

>>802
IPは当然その度に異なるので弾けませんし、リファラも世紀のものを引き下げてくることが大半です。
804nobodyさん:2006/07/04(火) 16:00:43 ID:???
>>803
例えば、JavaScriptでフォームの一部を出力するようにすれば大分はじけると思うけど?
画像認証はダルイからほんとおすすめできない。
805801:2006/07/04(火) 16:52:19 ID:???
ちなみに漏れのサイトは、この方法で英語のURL書きまくった書き込みはピタリとなくなった。
韓国系?や、日本語入ったのはだめだけどな。
806nobodyさん:2006/07/04(火) 17:06:03 ID:???
なるほど。
ctype_alnumでやってたけど,そっちの方が簡単っぽいな。
807nobodyさん:2006/07/04(火) 17:42:10 ID:pNwfONld
php初心者なんですけど、くだらねぇ質問ですが、
phpはhtmlベースにかいて、<?php ?>で囲みまくるのか、
<?php ?>の中でechoとかprint使いまくって、html出力するのか
どっちが書きやすいですか?
808nobodyさん:2006/07/04(火) 17:45:22 ID:???
>>807
すきにしろ
809nobodyさん:2006/07/04(火) 17:48:13 ID:???
じゃーどっちが見やすいですか?
810nobodyさん:2006/07/04(火) 17:54:43 ID:???
>>809
周りの人間10人にアンケートを取ったところ奇麗に5:5となりますた。

とでも答えれば満足?

どういう書き方が良いかなんて書き手の趣味にもスクリプトの内容にもよるんだから、
自分の主観で見やすいと思った書き方で好きに書けばいいじゃん。
811nobodyさん:2006/07/04(火) 17:57:18 ID:???
ってか、テンプレートエンジン使え
812nobodyさん:2006/07/04(火) 17:59:57 ID:???
>>811
テンプレートエンジンですか。調べてみます。
ありがとうございます。
813nobodyさん:2006/07/04(火) 18:01:21 ID:???
>>812
フレームワーク使え。
814nobodyさん:2006/07/04(火) 18:34:24 ID:???
PHPとCronでMySQLのデータベースのバックアップを丸ごとやりたいんですが
バックアップの部分をどうやって書いたらいいかわかりません
お願いします
815nobodyさん:2006/07/04(火) 18:44:27 ID:???
>>814
シェルで一発でしょ
そして、スレ違い
816nobodyさん:2006/07/04(火) 18:56:38 ID:???
>>814
MySQL Administratorでも使っとけ
817nobodyさん:2006/07/04(火) 18:57:08 ID:???
>>815
phpでは無理なんですかね?
そして、どのスレならOKなんですか?
818814=817:2006/07/04(火) 18:57:57 ID:???
名前忘れてました
お世話になります
819nobodyさん:2006/07/04(火) 18:59:44 ID:???
>>817
Cronって言ってる時点で犬とかでしょ
PHPでも無理ではないが結局はシェル投げた方が早い
820nobodyさん:2006/07/04(火) 19:19:15 ID:???
>>817
*で全部拾ってフィールド名とテーブル定義拾って
INSERT文にするなりすればいいのよ。
とりあえずmysqlの標準関数全部見たよね???
821nobodyさん:2006/07/04(火) 19:25:17 ID:???
>>817
MySQLスレ。

MySQLから提供されてるツールを利用するのを、俺も薦める。
MyISAMだけならデータベース"ファイル"をそのまま
コピーしておくだけというのも結構良いぞ。
822nobodyさん:2006/07/04(火) 21:14:44 ID:n70oEdEe
form actionで、phpのfunctionを指定することはできますか?
823nobodyさん:2006/07/04(火) 21:16:42 ID:???
意味がわからん
824nobodyさん:2006/07/04(火) 21:17:59 ID:???
>>822
変数渡してPHP側で振るよろし
825nobodyさん:2006/07/04(火) 21:21:00 ID:n70oEdEe
form action="hoge.php"
はできます。
hoge.php内のfunction varがあるとして
form action="hoge.php var()"みたいにできないかなと思いまして。

826nobodyさん:2006/07/04(火) 21:30:44 ID:???
$str = preg_replace("/(<(\w+)[^>]*>)([^<]*)/","\\1\\3</\\2>",$str);
タグの閉じ忘れをやろうとしているのですが
これ以外にスマートな方法はありますでしょうか?
また、<!--の閉じ忘れはどうすればよいでしょうか?
827nobodyさん:2006/07/04(火) 21:44:48 ID:???
>>825
PHPでやりなよ。
828nobodyさん:2006/07/04(火) 23:33:25 ID:???
>>825
hiddenなりでパラメータ渡して、hoge.phpの中でif文使って該当の関数を呼び出す。
829nobodyさん:2006/07/04(火) 23:40:50 ID:9/r1waWb
ブラウザで、
ボタン1を押したら aaaa.txt
ボタン2を押したら bbbb.bmp
ボタン3を押したら aaaa.pdf
を印刷するような事をしたいんですが、どうするのが妥当でしょうか。

HTMLだけじゃ無理ですよね?PHPでこーいうのできますか?
830nobodyさん:2006/07/04(火) 23:44:53 ID:???
YYYY/MM/DDの形式で入力された日付が現在と比べて、
現在か過去か未来かを判定するにはどうしたらいいのでしょうか。

831nobodyさん:2006/07/04(火) 23:51:54 ID:???
>>829
サーバー、プリンタが手元にあるイントラネットなら印刷用のtmpファイルを作って、
system("lpr tmpファイル");等として、バッチ的に出すのが手かと。
832nobodyさん:2006/07/04(火) 23:52:04 ID:???
>>830
if(date("Y/m/d") > 'YYYY/MM/DD'){
過去
833nobodyさん:2006/07/05(水) 00:24:16 ID:???
>>830
strtotime関数
834nobodyさん:2006/07/05(水) 00:27:07 ID:???
「\t\t\t\thogehoge\t\t\thogehoge\t\t\t」 となっているテキストの重複タブ部分をひとつの_に置換したいのですが、
$hoge = $ereg_replace("\t","_",$hoge) だと、「___hogehoge__hogehoge___」となってしまいます。
「_hogehoge_hogehoge_」にするにはどうすればいいのでしょうか?
835nobodyさん:2006/07/05(水) 00:28:30 ID:???
当たり前のことを書いていました……。
$hoge = $ereg_replace("\t+","_",$hoge) でもだめです。
836nobodyさん:2006/07/05(水) 00:28:59 ID:???
>>834
$hoge = preg_replace('/\t+/', '_', $hoge);

因みにスレ違いな。次からは正規表現スレで。
837826:2006/07/05(水) 00:39:11 ID:???
>>836

>>826もそうでしょうか?
838nobodyさん:2006/07/05(水) 00:43:49 ID:???
>>837
それ以前の問題で、その方法は全くお勧めできない。

HTMLタグを許可するなら予めhtmlspecialcharsをかけてから許可するタグ・属性だけを元に戻すのが最善。
管理者専用であってもCSRFの可能性があるから全タグの無条件許可は止めとけ。
839834:2006/07/05(水) 00:45:51 ID:???
>>836
ありがとうございます。実際には \t が 10-20 個ほどついているテキストだったのですが、
数は減ったもののすべて置換はできませんでした。正規表現板に行ってきます。
840nobodyさん:2006/07/05(水) 00:52:12 ID:???
$hoge = implode('\t', explode('\t', $hoge))

という手法はどうだろう。
841830:2006/07/05(水) 00:56:17 ID:???
>>832 >>833

最初YYYY/MM/DDの/を除いた後に比較しようと思ったのですが、
どうも煩雑になってしまったのでして。


ありがとうございます。
842nobodyさん:2006/07/05(水) 00:58:28 ID:???
pregで\t+はどうよ?
843nobodyさん:2006/07/05(水) 00:59:11 ID:???
844nobodyさん:2006/07/05(水) 01:13:02 ID:???
PHP4.4.2で

$contents = file_get_contents("http://www.yahoo.co.jp/");
print $contents;

てやると強制終了しちゃうんですが、なんか設定がおかしいんでしょうか?
4.3.9だと問題ないのに…
845nobodyさん:2006/07/05(水) 01:20:37 ID:???
散々既出
846844:2006/07/05(水) 01:42:02 ID:???
そうでしたか…
一年ぶりにphpさわったんで全然事情を知りませんでした。
どうも失礼しました。
847nobodyさん:2006/07/05(水) 02:50:45 ID:???
USE hoge;

-- --------------------------------------------------------

--
-- テーブルの構造 `hoge_hoge`
--

という内容をsql.txt に書き込んで、
$sql = file_get_contents("sql.txt");
mysql_query($sql, $conn);
すると以下のエラーが出ます、
phpmyadminなんかでこのsql文打っても問題ないのに
何が原因でしょうか? mysql_escape_string($sql)とか色々やってみたけど
だめぽです。
数時間苦しんでます。へるぷみー



You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ';



-- -----------------------------------------------------
848nobodyさん:2006/07/05(水) 02:58:37 ID:???
>>847
SQL文の末尾に余計な空白か改行が入ってるんじゃないかな。
MySQLの古いバージョンだとエラーになるんだよね、それ。
849nobodyさん:2006/07/05(水) 03:01:54 ID:???
>>847
MySQL 使いではないけど一般的な切り分け方

1. $sql の内容が本当に sql.txt になっているか表示させてみる
 ※sql.txt を読むディレクトリが意図通りになっているか
2. $sql に sql.txt と同じものを代入して query 発行してみる
 ※そもそも mysql_query が phpmyadmin と同じ SQL 文を受け付けるのか?
  http://jp.php.net/manual/ja/function.mysql-query.php
  を見るとセミコロンを含んじゃ駄目だってあるし、複数行も良いのか分からん
850nobodyさん:2006/07/05(水) 03:03:31 ID:???
>>849 の自己フォロー
エラーメッセージに sql.txt の最初の数行が表示されてましたね。
じゃあ、2 だね。
851nobodyさん:2006/07/05(水) 03:46:59 ID:pohb5aTE
質問させて下さい。
PHP5.1.4
WindowsXPsp2
apache2.2

と言う構成で運用しています。

PHPの構文についての質問なのですが、
大ループのような言う構文はあるのでしょうか。

Perlでは下記の構文です。
ROOP: {


}

私は「大ループ」と記憶しているのですが正式な名前が分からず
PHPマニュアルからもgoogleからも見つけることが出来ませんでした。

お力添えして頂けませんでしょうか。
852nobodyさん:2006/07/05(水) 03:48:14 ID:???
>>847
PHPから実行するときはuse hogeの部分は事前にmysql_select_db("hoge")じゃないの?
そんなんmysql_queryで発行できないんじゃないか?
853nobodyさん:2006/07/05(水) 03:52:04 ID:???
>>851
制御構造での「ラベル」かな。PHP ではないと思うけど
ネスとしたループ構造を抜けるためとかに使いたいなら
break に引数を付ければ実現できますよ。
ちなみに、ループは LOOP ね。
854nobodyさん:2006/07/05(水) 04:04:18 ID:???
>>851
Perlはとりあえず置いといて、それがどういう動きをする構文なのか示した方がいいよ。
ちなみにPerlのそれは構文じゃなくて、ラベル+ブロックの組み合わせだと思う。
多重のループブロックの1番上に戻ったり抜けたりしたい場合、PHPではbreak 3;みたいに
ネスト数を指定したbreakやcontinueを使うようになってる。
855851:2006/07/05(水) 04:49:55 ID:???
レス有り難う御座います。
>>853
ラベルと言うんですね、初めて知りました。LOOPのご指摘有り難うございます。
恥ずかシィ。

>>854
目的は2通りありまして、どちらも通常のループ制御用途ではないのです。
1:見易くする為(セパレータやインデックス的用途)
メールフォームの入力データ妥当性チェックを例にしますと、
ルーチン:送信者名妥当性チェック
ルーチン:メールアドレス妥当性チェック
ルーチン:本文妥当性チェック
etc
と書きます。
ここで幾らサブファンクションに細かくわけても、ものによっては
if else 等の構文が複数入って大きなルーチンになるとゴチャゴチャします。
このような場合に、ラベルを使って、ココからココまでは、何のブロックか
と言うことを明示的に解りやすく書きたいのです。
コメント文は各構文の補足説明として使いたいと思っています。
856851:2006/07/05(水) 04:50:30 ID:???
連書き失礼します。

2:指定箇所まで処理を飛ばす。
if 〜
if 〜
if 〜

ルーチンA

1番目のifで真なら2番目以降は飛ばして
ルーチンAの行以降を読み込む。

if () {
if () {
if () {

}
}
}

このようにしても実現できますが可読性を
損ねてしまいますのでラベルを使えば解決できると考えました。
857nobodyさん:2006/07/05(水) 07:27:56 ID:???
>>856
こんな風に書けば多少は見やすくなるかな?

try
{
  // 送信者名妥当性チェック
  if ($you == $hage) {
    throw new exception ($hage);
  }
  // メールアドレス妥当性チェック
  if ($omae == $hage) {
    throw new exception ($hage);
  }
  // 本文妥当性チェック
  if ($anata == $hage) {
    throw new exception ($hage);
  }

  /* ルーチンA */
}
catch
{
/* エラー時の処理 */
}
858nobodyさん:2006/07/05(水) 10:07:15 ID:???
>>856
elseif
859nobodyさん:2006/07/05(水) 10:43:15 ID:???
phpmyadminでローマ数字(T・U)などを含む値をインポートすると
?に文字化けしてしまうのですが、どうすれば回避できますか?
dumpファイルやmysql、phpmyadminの文字コードは全てUTF-8に統一しているのですが。
860847:2006/07/05(水) 10:58:49 ID:???
>>849
おっしゃるとおりっぽいですね。
となると解決策は、mysql_queryを行数文発行する、などが
あると思いますが、さすがにこれは厳しいです
phpからある程度のsqlを実行させる場合によい方法はないでしょうか?
861nobodyさん:2006/07/05(水) 11:01:25 ID:???
>>860
> となると解決策は、mysql_queryを行数文発行する、などが
> あると思いますが、さすがにこれは厳しいです
なんで?

> phpからある程度のsqlを実行させる場合によい方法はないでしょうか?
system
862nobodyさん:2006/07/05(水) 11:56:24 ID:???
PHPのCGIとPHPのApacheモジュールの違いって何ですか?
863nobodyさん:2006/07/05(水) 11:57:51 ID:???
>>862
ネットスケープナビゲーターとインタネットエクスプローラーの違い
864nobodyさん:2006/07/05(水) 12:34:57 ID:???
>>860
ループで回せばいいだけだろ
while($sql=fgets($fp)
{
mysql_query($sql, $conn);
}
865nobodyさん:2006/07/05(水) 12:39:54 ID:???
>>862
CGIとして動くか、Apacheの拡張スクリプトとして動くかの違い
CGIが何かわからないなら

■参考

通信用語の基礎知識より"CGI" http://www.wdic.org/?word=CGI+%3AWDIC

・WWWで, WWWブラウザからの要求に対してサーバが別のプログラムを起動実行し, 結果をWWWブラウザに返す処理を行なうためのインターフェイス.
・イメージマップ, アクセスカウンタ, 訪問者登録, 掲示板(BBS)などを実現する際に利用されている.
・UNIXのshやその互換シェル, またはPerl, C, C++などが利用される.

■参考リンク
http://e-words.jp/w/CGI.html
http://www.tohoho-web.com/wwwcgi1.htm
http://www.tryhp.net/first.htm
http://www.web-terakoya.net/basic/a_1.html
http://homepage2.nifty.com/yoshi-m/makehp/cgi/lesson/cgi/1.htm
866nobodyさん:2006/07/05(水) 12:42:39 ID:???
>>862
ApacheがPHPのスクリプトを実行するプロセスを起動して、その結果を受けって
処理する、というのと
Apache自身がPHPのスクリプトを読み込んで実行するという違い
867nobodyさん:2006/07/05(水) 13:04:54 ID:???
用済みのセッションについて教えてください。

session_start();
$name = $_SESSION['name']; // ここで用済み

if (isset($_COOKIE[session_name()])) { // マニュアルから拝借
setcookie(session_name(), '', time()-86400, '/');
}
session_unset();
session_destroy();
session_write_close(); // この後もいろいろ続くので

こんな感じでさっぱりできますでしょうか
868nobodyさん:2006/07/05(水) 13:16:43 ID:???
デストローイだとゴミが残るんだよね
869860:2006/07/05(水) 14:02:44 ID:???
>>864
その場合、改行を意識的に指定したSQL文でないと厳しくないですか?
(1行毎に内容が完結するSQL文を準備しなければならない)

system関数以外でよい方法はないでしょうか?
870nobodyさん:2006/07/05(水) 14:05:12 ID:???
869は釣りだと思うんですが・・・w
871867:2006/07/05(水) 14:29:29 ID:???
>>868
あとはこの辺参考にすればすっきりでしょうか?
ttp://www.asahi-net.or.jp/~wv7y-kmr/memo/php_security.html#PHP_Session_end
872nobodyさん:2006/07/05(水) 16:58:27 ID:???
2ch系掲示板サイトを運営してるんですが、
各板の上位5件のスレッドのリンクを生成、出力
というPHPを作りたいんですが、どうすれば良いでしょうか?

PHP ファイル 取得 リンク生成 等思いつく範囲の単語を入れてグーグルで調べてみましたが
答えは見つかりません
873867:2006/07/05(水) 17:13:30 ID:???
>872
2chでいうsubbback.htmlから5行読んだら?
874nobodyさん:2006/07/05(水) 17:14:51 ID:???
>>872マルチ乙
875nobodyさん:2006/07/05(水) 17:17:50 ID:???
>>869
mysql_queryは1行しか実行できない。

http://jp.php.net/manual/ja/function.mysql-query.php
ここのUser Contributed Notes
Predrag Supurovic
01-Dec-2003 09:52 と
samm at os2 dot ru
19-May-2004 06:15
参照
876nobodyさん:2006/07/05(水) 17:33:28 ID:???
PHPとApacheを一通りインストールして

#!D:\php\php.exe
<?php
echo("test");
?>

が成功して、そのあとファイルを書き換えたら
急に動かずダウンロードをするようになった。
仕方ないからもう一度↑の内容に戻したら以下ずっと
実行せずにDLをするようになった。
どうやったら実行するようになりますか?
877nobodyさん:2006/07/05(水) 17:43:30 ID:???
エスパーさん。お呼びですよ。
878nobodyさん:2006/07/05(水) 18:12:06 ID:???
>>867
無駄な行が多いな。以下で十分だぞ。
ちなみに>>868の情報はウソ。もしゴミが残るというなら、具体的に実例を見せてみろ。

session_start();
$_SESSION = array();
session_unset();
if (isset($_COOKIE[session_name()])) {
setcookie(session_name(), '', time()-42000, '/');
}
session_destroy();
879nobodyさん:2006/07/05(水) 18:59:07 ID:???
SW板から誘導されました

subject.txt → 特定スレの抽出 → datを数時間おきに取得

というような2ちゃんのdatを自動的に取得してくれる
過去ログ倉庫をブラウザではなくWeb上でやりたいんですが
スクリプトはありますでしょうか?もしくはヒントを下さい

特定スレの抽出は以下のようなスクリプトで出来ました
datを数時間おきに取得という部分で悩んでおります

<?
$fp=@fopen("http://鯖/板/subject.txt","r") or die("error");
$lines = file("http://鯖/板/subject.txt");
for ($i=0; $i<count($lines); $i++) {
if(stristr($lines[$i],"特定スレのスレタイ")){
list ($dat, $subject) = explode (".dat<>", $lines[$i]);
print "<a href=\"http://鯖/test/read.cgi/板/$dat/l50\" target=\"_blank\">$subject</a><br>";
}}
fclose($fp);
?>
880nobodyさん:2006/07/05(水) 19:18:32 ID:???
>>879
ヒント 数時間に一度だけ回るアクセスカウンター
881nobodyさん:2006/07/05(水) 19:31:17 ID:???
>>876
ダウンロードになるのはMIMEタイプが間違ってる可能性が高い。
php.iniの設定や置き場所は大丈夫?

ちゃんとしててそうなるなら
header('Content-Type: text/html; charset=Shift_JIS');
とか実行してみるとか
882nobodyさん:2006/07/05(水) 20:15:05 ID:???
>>859について誰か教えてください
883nobodyさん:2006/07/05(水) 20:16:28 ID:???
>>880
dat取得のヒントも頂けないでしょうか
884867:2006/07/05(水) 20:19:29 ID:???
>>878
ファイルが残るって意味だと思う。
>871参照

ところで
$_SESSION = array();
session_unset();
これは等価じゃないんですか?
885nobodyさん:2006/07/05(水) 20:41:22 ID:???
>>884
空のファイルが残るくらいなら、別に問題は何もないよね。
886nobodyさん:2006/07/05(水) 20:48:12 ID:???
PHPって何ですか?教えてください!
887nobodyさん:2006/07/05(水) 20:48:55 ID:???
>>883
http://鯖/板/dat/番号.dat

あとはfsockopenでHTTP通信して差分取得できればベスト
888nobodyさん:2006/07/05(水) 20:53:03 ID:???
以下のような感じで$this->aに値を追加したいのですが、参照は出来ても書き込む事が
できません。どうしたら良いのでしょうか?。

class abc{
var $a;
function abc(){
$p =& $this->a;
return $p;
}

function main(){
$p = $this->abc();
$p[] = 1;         ← こんな感じで$this->aに値を追加したい
}
}
889nobodyさん:2006/07/05(水) 21:11:48 ID:???
$p[] = 1;
というのが非常に意味不明。

$p がクラス abc であるならば、
$p->a = 1;
みたいな形になるのでは?
890nobodyさん:2006/07/05(水) 21:13:19 ID:???
しかも、
function main()に、
$thisがあるのも意味不明だ
891nobodyさん:2006/07/05(水) 21:14:45 ID:???
892nobodyさん:2006/07/05(水) 21:15:11 ID:???
>>888
つ http://jp.php.net/manual/ja/language.oop5.php#op5.intro

これを見て勉強しろ。

class User {
var $test;
var $test2;
}

$user1 = new User();
$user2 = new User();
$user1->test = "user1's test";
$user1->test2 = "user1's test2";
$user2->test = "user2's test";
$user2->test2 = "user2's test2";
893nobodyさん:2006/07/05(水) 21:16:21 ID:???
>>890
function main() はメンバ関数
894nobodyさん:2006/07/05(水) 21:18:00 ID:???
>>888
メンバ変数に直接値を代入するのはあまりオススメしない
895869:2006/07/05(水) 21:30:03 ID:???
>>875
サンクス、それ使って実際のsql.txtの半分くらいは実行できました。
しかし、「{」が含まれる行でエラーが発生しました。
エスケープしてもエラーは変わらず、です。
あと一歩、どうかお助けを
896888:2006/07/05(水) 21:31:04 ID:???
マニュアルにある「$bar = &test(); // 無効。」という事で納得しました。

$a =& $b;
$a[] = 'a';
print_r($b);
というのをfunctionから返ってきたもので参照?したかったのですが無理なのですね

しかも、main()ってあったんですね・・・
http://php.s3.to/man/function.main.html
897nobodyさん:2006/07/05(水) 21:35:02 ID:???
・・・・・・・・・・まあいいや('A`)
898nobodyさん:2006/07/05(水) 21:55:37 ID:???
>>895
エラーになる SQL 文と、エラーの内容は?
899nobodyさん:2006/07/05(水) 22:11:44 ID:???
参照について質問なのですが、PHP4や5で違いってあるでしょうか?
なんだかPHP4だと参照が崩れて、5だとうまくいくような・・・
※長くてすみません。
class E {
var $keyName;
var $value = "";
function E( $keyName ) {
$this->keyName = $keyName;
} }// ↑要素のクラス
class C {
var $array;
function C(){ $this->array = array(); }
function getE( $code ) {
return $this->array["$code"];
}
function setE( $e ) {
$this->array[$e->keyName] = $e;
} }// ↑要素を集めるクラス

$e = new E( "test" );
$c = new C();
$c->setE( $e ); // 要素を収集する
$e->value = "hello"; // オリジナル要素の値変更
$test = $c->getE( "test" );
if( $test->value == "hello" ) // 参照先の値を確認
// ここで参照しない場合がありました。
// 設定や何か環境でしょうか。アドバイスなどありましたら、お願いします。
900nobodyさん:2006/07/05(水) 22:38:30 ID:???
>>899
むしろ、PHP4で動いたことがあったことが不思議だ
901nobodyさん:2006/07/05(水) 22:43:22 ID:???
>>899
PHP4の詳しい実装はおいておくとして
PHP4では基本的に、引数はすべて値渡しだよ

だから、
function setE( $e ) {
 $this->array[$e->keyName] = $e;
}
で、セットされたものと $e は違う内容になると考えて問題ない
なので、いくら
$e->value = "hello";
ってやっても、C のメンバ変数の中身は変化しない
902nobodyさん:2006/07/05(水) 22:47:19 ID:Am3fYGCA
PHP4で動かそうと思ったら、こうだろうな
class C {
 var $array;
 function C() {
   $this->array = array();
 }
 function &getE( $code ) {
   return $this->array["$code"];
 }
 function setE( &$e ) {
   $this->array[$e->keyName] =& $e;
 }
}// ↑要素を集めるクラス
903nobodyさん:2006/07/05(水) 22:50:49 ID:???
>>901
違う内容ではなく、違う実体だな
904nobodyさん:2006/07/05(水) 22:55:25 ID:???
>>900-903
ありがとうございます。PHP5からはじめまして
PHP5からオブジェクト指向的な改定が入ったのは知っていたのですが、
PHP4でもクラスなどが存在していた為、当然参照だろうと考えており、
環境か何かが原因なのかな、コードミスかなといろいろ悩んでしまいました。
本当に助かりました。ありがとう。

ちょっと怖いので値渡し前提でやっていこうと思います。
905nobodyさん:2006/07/06(木) 00:35:23 ID:???
リンク遷移ではセッションの値を渡すことは出来ないのでしょうか?

リンクだとどうしても上手くいかないので無理やりクエリに値を付けているのですが、
もっとうまいやり方がないものかと思いまして。
906nobodyさん:2006/07/06(木) 00:47:53 ID:???
いや、まったく問題ないはずだ
907nobodyさん:2006/07/06(木) 00:58:05 ID:???
初歩的な質問すみません。
function()を使うのには何か設定が必要なのでしょうか?

Warning: array_reverse() [function.array-reverse]: The argument should be an array in E:\Web\Chat2\chat\function.php on line 12
Warning: array_reverse() [function.array-reverse]: The argument should be an array in E:\Web\Chat2\chat\function.php on line 13
Warning: array_reverse() [function.array-reverse]: The argument should be an array in E:\Web\Chat2\chat\function.php on line 43
Warning: flock() expects parameter 1 to be resource, boolean given in E:\Web\Chat2\chat\function.php on line 46
Warning: fputs(): supplied argument is not a valid stream resource in E:\Web\Chat2\chat\function.php on line 53
Warning: flock() expects parameter 1 to be resource, boolean given in E:\Web\Chat2\chat\function.php on line 54
Warning: fclose(): supplied argument is not a valid stream resource in E:\Web\Chat2\chat\function.php on line 55

など、エラーが出すぎて困っています。
908nobodyさん:2006/07/06(木) 01:03:40 ID:???
>>907
まずは警告メッセージを読め
909nobodyさん:2006/07/06(木) 01:03:49 ID:???
910907:2006/07/06(木) 01:28:56 ID:???
すみません、マジで分かりません・・・
911nobodyさん:2006/07/06(木) 01:46:49 ID:???
>>910
Hello worldからやり直せ
912nobodyさん:2006/07/06(木) 02:05:56 ID:???
>>910
ちゃんと答えは>>907に書いてある。
たしかに英語だが、それは>>909で解決できるはずだ。
その上で何が分からないのかを説明してくれ。
913nobodyさん:2006/07/06(木) 02:11:32 ID:???
>>909
大丈夫。お前は多分テンパッてるだけだ。
おちちつついて改めて見てみろ。きっと大丈夫
914nobodyさん:2006/07/06(木) 02:24:32 ID:???
>>910
警告文ぐらい読めないなら中学校の英語からやり直したほうがいい

読む気が無いならプログラミングなんて今すぐ止めたまえ
915907:2006/07/06(木) 03:51:57 ID:???
最初のは、array_reverseする変数に何も格納されていない
下のは、さっぱりです・・・
というか、普通に実行できたのにfunctionにもってきたらエラーとかorz
916907:2006/07/06(木) 05:14:35 ID:???
ああ、もしかしてfunctionではarrayやファイル系関数は使えないのですか?
917nobodyさん:2006/07/06(木) 05:21:37 ID:???
>>915
ヒント:変数のスコープ

・・・って言っても喪前さんのレベルだと多分分からないだろうから('A`)
とりあえず、警告が出ているarray_reverse()の()内の変数を、その前の行でglobal宣言をする
ex. array_reverse($foo)の行で警告が出たなら
global $foo; // 追加
$bar=array_reverse($foo);

:続く
上3つはこれで無理矢理解決できると思うが、
下4つは警告の出た行のもっと前に要因があるので
これ以上はわかんね。つか元に戻した方が多分早い
918nobodyさん:2006/07/06(木) 05:25:54 ID:???
>>915
動かんでもしらんが、最強コマンド
error_reporting(0);
919907:2006/07/06(木) 05:35:19 ID:04g4jMNg
function reload(){
$imput_member = implode(",",array($_SESSION['name'][$_GET['id']],$_SESSION['name_color'][$_GET['id']],time(),$host));
$member_file = array_reverse(file($member_data));

$fp = fopen($member_data,"w");
flock($fp,LOCK_EX);
for($i=0;$i<count($member_file);$i++){
list($get_name,$get_color,$get_time,$get_host) = split(",",$member_file[$i]);
if(((time()-$get_time)<=300)&&(trim($host) != trim($get_host))){
fputs($fp,$member_file[$i]);
}
}
fputs($fp,$imput_member."\n");
flock($fp,LOCK_UN);
fclose($fp);
}

まんまコピーして、function.phpで保存
require()でfunction.phpで読み込んで、上の文があった場所へreload();

エラー・・・
920nobodyさん:2006/07/06(木) 05:39:27 ID:???
917でせっかく教えてもらってるのに
921nobodyさん:2006/07/06(木) 05:43:11 ID:???
function reload($member_data){
にして呼び出し側で
reload($hoge);
か 917のいうとおり
function reload(){
 global $member_data;
922nobodyさん:2006/07/06(木) 07:13:28 ID:???
警告:array_reverseに与えられる引数は配列であるべき(12行目)
警告:array_reverseに与えられる引数は配列であるべき(13行目)
警告:array_reverseに与えられる引数は配列であるべき(43行目)
警告:flock関数は第一引数がresource型であることを期待しているが、boolean型が渡されている(46行目)
警告:fputs関数に渡された引数は有効なリソースではない(53行目)
警告:flock関数は第一引数がresource型であることを期待しているが、boolean型が渡されている(54行目)
警告:fputs関数に渡された引数は有効なリソースではない(55行目)

ファイルオープンに失敗してるとかそんなんじゃねーの?
923nobodyさん:2006/07/06(木) 07:54:56 ID:???
>>882
みんなからスルーされてるので答えよう。そもそもローマ数字って機種依存文字でしょ?携帯の絵文字とかと一緒。
924nobodyさん:2006/07/06(木) 07:55:04 ID:???
単純に $member_data が無いだけだろう
解決方法は>>921
925nobodyさん:2006/07/06(木) 09:04:08 ID:???
926876:2006/07/06(木) 11:13:07 ID:???
>>881
>php.iniの設定や置き場所は大丈夫?
PHP5.1.4 + Apache2.2.x を使ってまして、
php.ini は php.ini-recommanded をリネームしただけです。
Apache の設定で PHPIntDir を指定しているので
php5ts.dll も移動していません。
Apache2.2.x系に対応するために php5ts.dll も更新して
その他の設定も済ませています。

>header('Content-Type: text/html; charset=Shift_JIS');
もDLが始まってしまいます。

むぅ〜。。。
927876=926:2006/07/06(木) 11:15:01 ID:???
>Apache2.2.x系に対応するために php5ts.dll も更新して
>その他の設定も済ませています。
php5ts.dll じゃなくて php5apache2.dll でした。
928nobodyさん:2006/07/06(木) 11:17:11 ID:???
そもそもダウンロードになるのはPHP側の問題ではないと思われ
929nobodyさん:2006/07/06(木) 11:38:14 ID:zFo6kcDc
bbsみたいのを作っていて、書き込まれた内容を表示するときにhtmlspecialcharsをかけているのですが、<img src="">だけ有効にしたいです。
ちなみにMTのように、画像をアップロードすると、urlが表示されて、任意の場所にペーストして投稿みたいな設計です。
よろしくおねがいします。
930nobodyさん:2006/07/06(木) 11:42:52 ID:???
個別に対応したいのならpreg_replace使えばいいんじゃないかな
931nobodyさん:2006/07/06(木) 11:45:03 ID:???
>>929
imgだけ文章中で使いたいなら、オリジナルタグを使用するのもいいと思うよ。

<#IMG>http://www.yahoo.co.jp/</#IMG>

見たいな感じで入力するよう説明書きを入れる。
932nobodyさん:2006/07/06(木) 12:22:56 ID:zFo6kcDc
>930,931
レスありがとうございます。
検討した結果、931さんの方法でやることにしました。
htmlspecialcharsをかけた後に[img][/img]みたいな独自タグを
str_repraceで置き換えたら、<img>タグだけが有効になりました。
ありがとうございました。
933nobodyさん:2006/07/06(木) 12:45:14 ID:H7bF4zaH
スクリプトの<?phpと?>を省略することは出来ないでしょうか。

通常、HTML中にphpを埋め込むなんてやらない(Smartyを使用)ので、
できたら省略したいのですが。
#逆に<?php ?>の外に無駄な改行とかを間違えていれてしまい
#エラーの原因にしかなっていません。。
934nobodyさん:2006/07/06(木) 13:21:20 ID:???
>>933
<? ?>
<?= ?>
v゚\゚v
935nobodyさん:2006/07/06(木) 13:25:45 ID:???
(V)o\o(V)
936nobodyさん:2006/07/06(木) 13:37:02 ID:???
PHPってHTMLに埋め込む言語なんだけど。
PHPで何も出力しないなら最初にincludeでもすれば?
937nobodyさん:2006/07/06(木) 13:43:40 ID:MTxFU3hJ
printする時に"を'に変えないとなりませんが、それは何故でしょうか。

HTMLでは「WIDTH="500" HEIGHT="600"」としているので、いちいち変えるのは面倒です。
938nobodyさん:2006/07/06(木) 13:47:20 ID:???
>>937
print "あ"いう"えお";
さてprintの中の人はどこまでを出力すればいいでしょうか?

print "あ\"いう\"えお";
939nobodyさん:2006/07/06(木) 14:11:17 ID:???
>>938
出力「あ"いう"えお」

何か、クイズ形式で作ってほしいよな
940nobodyさん:2006/07/06(木) 14:55:34 ID:EMi/9a6Q
>>937

echo '「WIDTH="500" HEIGHT="600"」';

でいけると思われマす
941nobodyさん:2006/07/06(木) 15:35:00 ID:???
>>940
>>937はそれが分かった上で言ってるんじゃないのか
942nobodyさん:2006/07/06(木) 15:41:05 ID:???
?>WIDTH="500" HEIGHT="600"<?
print <<<__BAKA__
WIDTH="500" HEIGHT="600"
__BAKA__;
943nobodyさん:2006/07/06(木) 15:49:06 ID:???
すいません、

#abc:a#
これを
abc/a.gif
に置き換えたいのですが、どうすれば良いのでしょうか
944nobodyさん:2006/07/06(木) 15:54:28 ID:???
>>943
やりたいことを言葉で考えてみたら?

0. 「#abc:a#」
1. 「#」を除去→「abc:a」
2. 「:」を「/」に置換→「abc/a」
3. 末尾に「.gif」を付与→「abc/a.gif」

文字列操作は
http://jp.php.net/manual/ja/ref.strings.php
945nobodyさん:2006/07/06(木) 16:07:58 ID:???
>>943
str_replace("c","","cbakca");
946nobodyさん:2006/07/06(木) 16:09:24 ID:???
>>944
文の途中にある「#abc:a#」 を変換させたいのですよ

あいうえお#abc:a#aiueo#ymc:e#えええ

あいうえお<img src="abc/a.gif">aiueo<img src="ymc/e.gif">えええ
947nobodyさん:2006/07/06(木) 16:12:59 ID:???
>>946
条件を後出しするな。正規表現を自分で考えろ。
948nobodyさん:2006/07/06(木) 16:14:31 ID:???
>>946
>>944に加えて
-1. 「#○×#」という部分があったら

あとはもう少し自分で考えよう。

つか、正規表現で置換すれば一発だけどな。
949nobodyさん:2006/07/06(木) 16:18:42 ID:???
>>943
そもそも正規表現はスレ違い

まぁこの程度の正規表現なんぞ相手にしてもらえんがな
950946:2006/07/06(木) 16:20:20 ID:???
$str = preg_replace('/\@([a-zA-Z0-9\-_~]*)?\@/','$1',$str);
$str = preg_replace('/:/','/',$str);
951946:2006/07/06(木) 16:24:43 ID:???
if(preg_replace('/\@([a-zA-Z0-9\-_~:]*)?\@/','$1',$str)){
$str = preg_replace('/\@([a-zA-Z0-9\-_~:]*)?\@/','$1',$str);
$str = preg_replace('/:/','/',$str);
}

ここまでできたのですが、肝心な<IMG src=""> にする方法がわかりません
952nobodyさん:2006/07/06(木) 16:28:16 ID:???
>>951
まぬある嫁
953nobodyさん:2006/07/06(木) 16:35:27 ID:???
>>951
なんだこの奇怪な正規表現。
したいことを素直に書けば preg_replace 一回で IMG の件も併せて解決ですが。
954nobodyさん:2006/07/06(木) 16:53:31 ID:???
$str = preg_replace('/#(\w+):(\w+)#/', '<img src="$1/$2.gif">', $str);

もう二度と来るなよ
955nobodyさん:2006/07/06(木) 17:39:43 ID:???
まぁ、落ち着けよ。「下らねぇ」ことこそが、このスレの魅力じゃないか。
「下らねぇ」というフレーズがあってこそ気軽に質問ができる。
956nobodyさん:2006/07/06(木) 17:44:07 ID:???
>>955
内容が下らないのはいいが条件後出しは許せん。
気軽にって言っても質問の手抜きは許されない。
957nobodyさん:2006/07/06(木) 18:44:23 ID:???
下らねぇ質問はいいが、同じ質問は過去ログ嫁
条件の後出しは同じ質問が来るのと同義だ
958nobodyさん:2006/07/06(木) 18:51:32 ID:???
過去ログ嫁なんて言ってたら殆どの質問がそれで終わってしまうんだが。
959nobodyさん:2006/07/06(木) 19:05:28 ID:???
前スレ前々スレとまでは言わずとも、
せめて同じスレの中くらいは検索してはくれまいかとは思わないでもない。
960nobodyさん:2006/07/06(木) 19:09:47 ID:???
昨日お世話になりました>>899です。不便でやっぱりオブジェクトの参照が必須です。
検索をかけて調べてみたのですが、ちょっと心細いので確認などさせてください。

(1) 参照代入は、 $a =& $b;
 (2) 引数の参照渡しは、
function Set( & $obujet ) {
$this->object =& $object; }
 (3) 参照返しは、
function & Get() {
return $this->object;  }
 (2) へ代入する際は、
$instance->Set( & $sample );// 引数に & つけなくてもいけました。
// 今後廃止予定だそうで、付けない方がいいのかな
 (3)を受け取る際は、
$sample =& $instance->Get();

注意点として、オブジェクトを参照した場合
class A { var $value; }
$a = new A();
$b =& $a;  $b = null;// ここで $a にも NULL が入る。
// & は参照アドレス値を示すのかな?と思って、
$a =& new A();// 上記処理は別として新規に。
$b =& $a;  $b = null;// してみましたが、$a も一緒に死にました。
関係を断ち切るさいには、unset() を使用する。

それと foreach で列挙したオブジェクトも当然別物で、
foreach( $objArray as $obj )
 $obj->setNewValue("newValue");  //列挙もとの $objArray は変化なし。

厚かましいとは思うのですが、ちょっと心細いのでアドバイスや
誘導などありましたらお願いしたします。 長文でごめんなさい。
961nobodyさん:2006/07/06(木) 19:40:40 ID:???
PHPでウェイトってかけれますか?
962nobodyさん:2006/07/06(木) 19:49:24 ID:???
藻前ら、自身のファイル名を取得するときは何をつかってますか?
$_SERVER['PHP_SELF']とかいろいろあるけど
漏れは、
basename($_SERVER['SCRIPT_FILENAME']);
ってやってるけど。
963nobodyさん:2006/07/06(木) 19:50:54 ID:???
>>960
> (2) へ代入する際は、
>$instance->Set( & $sample );// 引数に & つけなくてもいけました。
>// 今後廃止予定だそうで、付けない方がいいのかな
渡す側で参照渡しするとPHP5だと怒られなかったっけか。
964nobodyさん:2006/07/06(木) 20:00:24 ID:???
>>962
basename(__FILE__);
965nobodyさん:2006/07/06(木) 20:07:03 ID:???
自身のファイル名自体あんまり使わないからな・・・・・・

カレントの絶対パスとかは使いたいと思うことが良くあるが。
966nobodyさん:2006/07/06(木) 20:08:28 ID:???
>>963
ご指摘ありがとうございます。
多分5だと警告が出ると記述されていたと思います。
4ではつけてもつけなくてもいけるようなのですが、
付ける利点が余りないと思いますので、常にはずしておきたいと思います。
967nobodyさん:2006/07/06(木) 20:55:03 ID:???
条件後出し厨は氏ね。
968nobodyさん:2006/07/06(木) 21:10:15 ID:???
質問です。

<form id="form1" name="form1" method="post" action="top.php">
<label>
<input name="min" type="text" id="min" size="10" />番〜<input name="max" type="text" id="max" size="10" />
番までを<input name="sleep" type="text" id="sleep" size="10" />秒ごとに
<input type="submit" name="Submit" value="送信" /><input type="hidden" name="action" value="a" />
</label>
</form>
<?
if($_POST['action'] == "a"){
$max= $_POST['min'];
$min= $_POST['max'];
$sleep= $_POST['sleep'];

for($i=$min;$i<=$max;$i++){
?>
<SCRIPT LANGUAGE="JavaScript">
<!--
mainFrame.location.href='http://<? echo $i; ?>/';
-->
</SCRIPT>
<?
echo "http://mixi.jp/show_friend.pl?id=$i を表示<BR>";
sleep($sleep);
}
}
?>

として、下のフレームに1秒ごとにページを切り替えさせようと思ったのですがうまくいきません。
どの辺りを修正したほうが良いか教えていただけませんか?
969nobodyさん:2006/07/06(木) 21:15:29 ID:???
>>967
すみませんでした。厳密に言えばPHP4の参照についてです。
5ではもともとオブジェクトの代入は参照渡しが前提である為、
それを前提で進めてしまいました。
でも>>963さんのような4と5の相違点のご指摘も非常にありがたいです。
混乱させてしまい申し訳ありません。以後気をつけたいと思います。
970nobodyさん:2006/07/06(木) 21:37:40 ID:???
>>961
sleepでOK?
971nobodyさん:2006/07/06(木) 22:22:53 ID:???
>>965
カレントの絶対パスって、スクリプトから取得できるの!?
972nobodyさん:2006/07/06(木) 22:44:28 ID:???
define("DBNAME", "postgres"); //pontaサーバー
define("USER", "php");
define("DBPASSWORD", "hoge");
define("DBHOST", "localhost");
define("DBPORT", "5432");

$dbHandle = pg_connect("host=DBHOST port=DBPORT dbname=DBNAME user=DBUSER password=DBPASSWORD");

としたのですが、Unable to connect to PostgreSQL server: could not translate host name "DBHOST" to address: Unknown hostとでます。
なぜでしょうか。
973nobodyさん:2006/07/06(木) 22:47:55 ID:???
ヒント:
print("host=DBHOST port=DBPORT dbname=DBNAME user=DBUSER password=DBPASSWORD");
974nobodyさん:2006/07/06(木) 22:52:15 ID:???
ヒント2:
PostgreSQLサーバに接続できません: ホスト名 "DBHOST"はアドレスに変換できませんでした。: 知らんホスト
975nobodyさん:2006/07/06(木) 22:54:56 ID:???
ああ、解決しました。
ほんとくだらなくてすみません。すべて文字列として見られていては、
置き換えなんてしないですよね、すみません。ありがとうございます。
976nobodyさん
>>971
え?意味わかんない。煽り?