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

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

レス数が900を超えています。1000を超えると表示できなくなるよ。
0001nobodyさん2006/07/07(金) 14:54:53ID:KnVubDvE
PHPに関するくだらねぇ質問用スレです。
ここならお前の下らない質問に回答があるかも知れません。

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

過去スレは>>2
0804nobodyさん2006/07/20(木) 14:06:48ID:zh5fHket
質問です。

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

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

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

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

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

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

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

訳あってあいてのftpのパスワードを知る訳にいかない。
こっちのソースは相手にみえてもよい。
という場合に、手元で相手の鯖のプログラムをいじれるというメリットはある。
0824nobodyさん2006/07/20(木) 17:03:43ID:???
質問です。
ページを更新するたびに、
file()でデータを配列に格納させて
foreach(as)で処理をしているのですが、
file()では何行くらいまでのファイルにすれば良さそうですか?
やはり、1000も2000もあると、重すぎますよね。
また、読み込むファイルを2回に分けた場合、
負担があまりかからないのでしょうか?

例えば
$file = file("test1.dat"); <=500行
foreach ($file as $value){
処理
}
$file = file("test2.dat"); <=500行
foreach ($file as $value){
処理
}
この処理と

$file = file("test.dat"); <=1000行
foreach ($file as $value){
処理
}

この処理

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

$a = "\2,000";
//$a = mb_ereg_replace("\","¥", $a); //エラー
//$a = mb_ereg_replace('\',"¥", $a); //エラー
//$a = mb_ereg_replace("\\","¥", $a); // ワーニング変換できず
//$a = mb_ereg_replace('\\',"¥", $a); // ワーニング変換できず

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

From 【test@example.com (test@example.com)】

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

たとえば
From 【EXAMPLEからメールです。 (test@example.com)】

このような感じでしたいのですが、どうすれば良いのでしょう。
どなたか教えていただけませんか?
0902nobodyさん2006/07/21(金) 18:42:33ID:???
>>901
additional_headers に所望の From ヘッダを挿入
http://jp.php.net/manual/ja/function.mb-send-mail.php
mime_encode とか忘れずに。アドレスを囲むのは <> で。
0903nobodyさん2006/07/21(金) 18:46:14ID:???
>>902
有難う御座います。
タイトル(?)の部分が文字化けしてしまったのですが、
mime_encodeというのは何でしょうか?
ググってみたのですが、それらしいサイトが見当たらなくて
レス数が900を超えています。1000を超えると表示できなくなるよ。