【PHP】下らねぇ質問はここに書き込みやがれpart14
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2005/12/18(日) 10:10:12ID:???ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
次スレは>>970あたりが建てて下さい
過去スレは>>2
0010nobodyさん
2005/12/18(日) 11:55:34ID:???訳すとこんな感じか。つーかなんで俺が訳さにゃならんのだっ!ビタン(AA略
警告 : foreachに渡された引数が正しくない 132行目
致命的エラー : 定義されていないmb_convert_encoding()という関数が呼び出されている
上は、foreachに渡した引数がおかしいと言われているので、その引数を確認してみればよい。
下は、mb_*系の関数は拡張モジュール(標準ではない)なので、
その鯖の管理者さんが不要だと思った場合はインストールされない。
mb_*の一部の関数は、jcode.phpというphpのみで書かれたライブラリを
配布してくれている人がいるのでそれを使うのも一つの手かと。
0011nobodyさん
2005/12/18(日) 12:01:11ID:???0013nobodyさん
2005/12/18(日) 12:33:03ID:???※サーバで利用可能なモジュール及び関数リストの取得方法
<?php
foreach (get_loaded_extensions() as $module)
{
echo "<b>[". $module ."]</b><br>";
foreach (get_extension_funcs($module) as $func)
{
echo $func ."<br>";
}
}
?>
[standard]以下はPHPの標準関数。それ以外はオプションな。
このリストに欲しい関数がない場合はサーバ管理者にいってオプションを
組み込んでもらわないといけない訳。分かった?>>9
0015nobodyさん
2005/12/18(日) 12:58:07ID:???0016nobodyさん
2005/12/18(日) 12:58:43ID:???sendmail.phpの132行目にあるforeachの変数が配列じゃないらしい。
プログラムの設定か何かをミスってる可能性あり。
あと、使ってるサーバーではmb_convert_encoding()がインストールされてないので
管理者に頼んで入れてもらわない限り動作しない。
0018nobodyさん
2005/12/18(日) 13:05:28ID:???こいつ自身が最大のバグだな
0020nobodyさん
2005/12/18(日) 13:12:38ID:???有料ばっかりで・・・
0021nobodyさん
2005/12/18(日) 13:19:07ID:???0022nobodyさん
2005/12/18(日) 13:19:24ID:lBRzm0WN有料なのを教えて
0023nobodyさん
2005/12/18(日) 13:21:26ID:???配布ソースのコード隠蔽じゃないの?
他にPHPコンパイラやPerlコンパイラの用途って無いと俺は思ってたけど。
0024nobodyさん
2005/12/18(日) 13:32:29ID:???20じゃないけど俺が知ってるのはこの辺。
ttp://www.zend.com/store/products/zend-encoder.php
0025nobodyさん
2005/12/18(日) 13:35:28ID:???つかフリーソフトでコード隠蔽する必然性がないんだからさあ
クローズドで儲けたい人はそういう人同士だけでやればいいじゃん
0026nobodyさん
2005/12/18(日) 13:56:54ID:???0027nobodyさん
2005/12/18(日) 14:01:37ID:???速くするためならオプティマイザかコードキャッシュでしょう。
0028nobodyさん
2005/12/18(日) 14:01:55ID:???class内でも使えるようにするにはどうしたら良いのでしょうか?。
$this使えというのは無しでお願いします(^^;。
function inst($n){
static $inst;
if (!isset($inst[$n])) $inst[$n] =& new $n;
return $inst[$n];
}
inst('A');
inst('A'); // 既にインスタンスがあるのでA::A()は実行されない
class A{
function A(){
inst('A'); // ← A::A()を実行してループに入ってる??
echo 1;
}
}
0029nobodyさん
2005/12/18(日) 14:08:04ID:???0030nobodyさん
2005/12/18(日) 14:12:12ID:???0031nobodyさん
2005/12/18(日) 14:27:00ID:???そもそも意図が分からない。
なんでクラスAの中でさらにクラスAを生成する必要があんの?これ。
ループというのは正確じゃなく、クラスAの中で生成するクラスAがさらにクラスAを必要とするから
無限に子供のクラスAを作り続けようとする感じだろ。
(同じトコの実行を繰り返すわけじゃないからループとはちょっと違う)
とりあえずすぐ思いつくのはこんなとこ。
function inst($n){
static $inst;
if (!isset($inst[$n])) { $inst[$n] = 1; $inst[$n] =& new $n; }
return $inst[$n];
}
003331
2005/12/18(日) 14:31:21ID:???というか、全てのクラスAが子供のクラスAを必要とするんだから、
原理的にこれは無限実行にならなきゃいけない設計なんだな。
この階層構造を見直さない限り、ロジックを見直そうと思っても無駄だわ。
0034nobodyさん
2005/12/18(日) 14:41:52ID:jwrRezTgのような「/」を使用した変数を受け取るにはどうしたらいいのでしょうか?
0035nobodyさん
2005/12/18(日) 14:47:26ID:???0036nobodyさん
2005/12/18(日) 14:48:17ID:???最初は1つのclass内で全てを作っていたのですが、だんだん大きくなって来たので
分割しようと考えた次第です。その際にスマートに書き直したかったのであれこれと
変更を加えていたら嵌ってしまいました(^^;。
階層構造を見直さないとだめですよね。お騒がせしました。
>>30
同じ人です(^^;。
>>31
私も試してみましたがclassAの中では空になりますね。
>>34
ttp://***/example.php/1/?a=1 って事かな?
それかRewriteEngineを調べると良いかも
0037nobodyさん
2005/12/18(日) 14:56:49ID:???0039nobodyさん
2005/12/18(日) 15:16:34ID:???みなさんは$GLOBALSを使って書いてるのですか?
0040nobodyさん
2005/12/18(日) 15:21:14ID:???稀にglobal宣言も使うけど、極めて例外的。
0041nobodyさん
2005/12/18(日) 17:28:30ID:???$file = preg_replace ('<!--([^-]*)-->(.*?)<!--([^-]*)-->', '', $file);
print \1;
とすると
Unexpected character in input: '\' (ASCII=92) state=1
とでちゃうのですが、Perlの
print $1;
のようにマッチした文字を取り出すにはどうすればいいのでしょうか?
0042nobodyさん
2005/12/18(日) 17:32:06ID:???0043nobodyさん
2005/12/18(日) 18:01:43ID:???間違いない
0045nobodyさん
2005/12/18(日) 18:22:28ID:???0047nobodyさん
2005/12/18(日) 20:42:40ID:???あまりスマートではないな
004941
2005/12/18(日) 21:07:18ID:???PerlではできるけどPHPではできないってことにしておきます。
0051nobodyさん
2005/12/18(日) 21:16:46ID:???というエラーが出て回避する方法がわからないのですが何方かご存知ありませんか?。
vlogiew()をlogprint()としてもダメでした。
0054nobodyさん
2005/12/18(日) 22:33:08ID:???仕組み
1.IEのエンジンを使ってブラウザの表示を画像に落とすツールをWindowsアプリで作ります
2.それをWeb上のPHPから呼び出します
3.完了
0056nobodyさん
2005/12/19(月) 00:11:51ID:???Javaの製品もある。
でもまあ世の中にはWindowsのIEでしか
レイアウトが再現できないサイトも沢山あるからねぇ。
005756
2005/12/19(月) 00:17:06ID:???昔はデモで指定したサイトのサムネール生成が出来て、
それをゴニョゴニョして利用出来たんだけど…
0058nobodyさん
2005/12/19(月) 00:21:27ID:???0059nobodyさん
2005/12/19(月) 00:42:52ID:???ASPで提供してるのはフロントエンドの部分だけじゃないの?
結局、中身はWinIEかJavaか〜って感じかとオモウが
0060nobodyさん
2005/12/19(月) 00:48:48ID:???emailとパスワードを入力させて、送信するとユーザにメールが送られて、URLを
クリックするとユーザ登録されるというよくあるものを作りたいのですが、よくあるコード
だと思います。
そういうコードどこかにありませんか?
PEARとZendで探しましたが、見つかりませんでした。
XOOPSのは、再利用しづらいです。
探し方だけでもよいので、よろしくお願いします。
0061nobodyさん
2005/12/19(月) 00:57:44ID:???その辺は好みかな。
元C言語プログラマとしてはsscanfの挙動は信用したくない…。
(入力内容がイレギュラーだった場合に変な挙動をすることがあるので)
速度を優先するならsubstrを、同時にフォーマットチェックも兼ねるなら
preg_replaceを、俺なら選択するな。
0064nobodyさん
2005/12/19(月) 01:20:56ID:???0065nobodyさん
2005/12/19(月) 01:40:35ID:???0067nobodyさん
2005/12/19(月) 09:16:57ID:???0068nobodyさん
2005/12/19(月) 09:19:37ID:???0069nobodyさん
2005/12/19(月) 10:26:05ID:???0070nobodyさん
2005/12/19(月) 10:28:52ID:???最強のPHPエディタはなに?@WebProg
http://pc8.2ch.net/test/read.cgi/php/1133785416/l50
PHPエディタって、どうよ?@WebProg
http://pc8.2ch.net/test/read.cgi/php/1079460638/l50
PHP統合開発環境スレ@WebProg
http://pc8.2ch.net/test/read.cgi/php/1123912762/l50
0071nobodyさん
2005/12/19(月) 12:39:54ID:l+7IklxT/usr/local/lib/php/XML以下にそれらが入っている事も確認しましたが
Warning: main(XML/Parser.php): failed to open stream: No such file or directory in /usr/local/lib/php/XML/RSS.php on line 23
Fatal error: main(): Failed opening required 'XML/Parser.php' (include_path='.:/usr/local/lib/php') in /usr/local/lib/php/XML/RSS.php on line 23
の様なエラーが発生してスクリプトが動きません。
原因分かる方居ますか?
0072nobodyさん
2005/12/19(月) 12:43:39ID:???なんか変に曲解しなければならん状況なの?
0075nobodyさん
2005/12/19(月) 13:24:38ID:pcyIPGNx$header = "Content-Type: text/plain; charset=iso-2022-jp\nFrom:送信者\<info@hogehoge.com\>";
mb_language("Japanese");
if(mb_send_mail($mail,$subject,$message,$header)){
var_dump($header);
}
でのvar_dumpの結果で、Content-Type: text/plain; charset=iso-2022-jp From:送信者\
というふうに、<info@hogehoge.com\>の部分が消えてしまい正しく送信されません。
どこを修正すればよいのでしょうか。
0076nobodyさん
2005/12/19(月) 13:40:36ID:???ブラウザで「<〜>」がタグとして解釈されて表示上消えているだけ
という単純な問題である悪寒
0077nobodyさん
2005/12/19(月) 13:44:14ID:iBVZGmYthoge.comにあるDB接続用のfunctionで
hoge.com内にあるDBにアクセスし
結果だけをreturnでlocalhostに返したかったので
hoge.comのfunctionをlocalhostのPHPでinclude_onceしました
その後でDB接続用のfunctionを実行したところ
Call to undefined functionといわれてしまいました
(DB接続用のfunctionには問題はありませんでした)
以上のことからfunctionはlocal内に無いと動かないという事でしょうか?
もしくはPHPiniなどに設定が必要なのでしょうか??
0078nobodyさん
2005/12/19(月) 13:46:22ID:iBVZGmYt誤 hoge.comのfunctionをlocalhostのPHPでinclude_onceしました
正 hoge.comのfunctionが書かれたPHPファイルをlocalhostのPHPでinclude_onceしました
0079nobodyさん
2005/12/19(月) 13:48:05ID:???localのどこにあるファイルをincludeしようとしてるんだ?
それ次第だろ。ちゃんと、エラー表示するようにしてみたら?
0080nobodyさん
2005/12/19(月) 13:58:24ID:???>>77
hoge.comがphpをパースしていたら、渡されるのは当然実行結果だけなので
hoge.comにある関数は実行できません。
たとえphpをパースしなくても(スクリプトそのままを渡してくるなら)
localhost内で実行されるので意に沿う結果にはならないと思われ。
どっちにしてもhoge.com内のスクリプトにある関数をlocalhostで実行するのは
無理があると思うけど。
0081nobodyさん
2005/12/19(月) 14:09:55ID:???1. include_onceで外部URLのファイルを取得しにいく (URL fopen wrapper)
2. hoge.comのweb鯖が処理をする。
拡張子phpならhoge.comのPHPが処理して、実行後の結果(出力)をテキストとして返す。
実行結果をファイルにして、それをlocalhostでincludeした時と同じ様に考えるとよい。
・phpファイルの内容がfunctionだったら関数定義だけなので、何も返さない。
・実行の結果が<?php 〜 ?> ってな内容(文字列)だったら、
そのような内容のファイルをlocalhostでncludeした事と同じになる。(localhostのPHPが処理する)
3. 残りの処理を続行。
008275
2005/12/19(月) 14:28:53ID:pcyIPGNxその通りでした・・・。ありがとうございます。
なんとか送信まではできたのですが文字化けしてしまいます。
mb_language()
mb_send_mail($mail,$subject,$message,$header)
mb_language()
mb_send_mail($mail,mb_encode_mimeheader($subject,"ISO-2022-JP"),mb_encode_mimeheader($message,"ISO-2022-JP"),$header)
mb_language()
mb_send_mail($mail,mb_convert_encoding($subject,"SJIS"),mb_convert_encoding($message,"SJIS"),$header)
どれも文字化けしてしまいました。
マニュアル見ると1番最初のでいいような気がするのですが、よくわかりません。
どこが問題なのでしょうか。
0083nobodyさん
2005/12/19(月) 14:35:30ID:???PHPのバージョンによって、mb_send_mail周りにバグがあります。
http://ns1.php.gr.jp/pipermail/php-users/2005-November/028156.html
このスレッドあたりを参考に。
つーか、質問するときはバージョン書きましょう。
0084nobodyさん
2005/12/19(月) 14:39:46ID:iBVZGmYthoge.comにあるファイルをincludeしました
>>80-81
やはり無理があるようですね…
別の方法を模索したいと思います
ありがとうございました
0085nobodyさん
2005/12/19(月) 14:42:44ID:???よくわからんが、そのlocalじゃないほう(hoge.comは存在するので)にある、
関数とかのファイルってローカルにもってこれないのか?
0086nobodyさん
2005/12/19(月) 14:46:21ID:vPAKLJvF$site='http://yahoo.co.jp/';
?>
<form method="post" name="test" action="<? echo $_SERVER[PHP_SELF]; ?>" >
<textarea name="text" cols=20 rows=20>
<?php
$page = file($site);
if($page=="") die("Connection Failed");
while (list($num, $line) = each($page)){
$line=htmlspecialchars($line);
echo "$line";
}
?>
</textarea>
この状態でテキストエリアにヤフーのソースが入力されるのですが
実際に表示したいサイトが私のIPからしか接続出来ない状態です。
※PHPをUPしているサーバは別なところにあります。
ですので$siteに本来接続したいURLを入れても弾かれてしまいます。
javascriptなども覗いてみたのですが解決策が見当たりません。
PHPでなんとかなりませんでしょうか?
0088nobodyさん
2005/12/19(月) 14:54:16ID:???理由があってIPアドレス制限をしてるのだから、それを回避できるようなものじゃまずいかと。
まぁそれは置いておいて、自宅鯖を建てるくらしか手は無いんじゃないかねぇ。
0092nobodyさん
2005/12/19(月) 15:09:07ID:???localhostからの接続しか許可していないDBを他のサーバから使いたいのかもね。
DBと同じサーバのphpをincludeしたら使えるかもしれないと思ったんじゃないの
そんなことが出来たらセキュリティもクソもあったもんじゃないが。
0094nobodyさん
2005/12/19(月) 15:37:17ID:iBVZGmYtご心配をお掛けしましたができるようになりました
ありがとうございます
結果としてincludeした時点でlocalファイルとして扱われており
動かなかったようです
なので、hoge.comにGETで渡して結果をechoで吐き出させ
それをfileでarrayにして満足な答えを得ることが出来ました
どうもお騒がせしました
0095nobodyさん
2005/12/19(月) 15:43:28ID:???別に心配なんざしちゃいないが、
もっと日本語も勉強した方がいいぞ。
で、あんたはhoge.comの持ち主なの?
0096nobodyさん
2005/12/19(月) 15:50:16ID:???hoge.com(仮名)のサーバーは持ち主です
(hoge.comのドメイン名は仮名なので持ち主ではありません)
0097nobodyさん
2005/12/19(月) 15:51:29ID:???だから、hoge.comは実在するドメインだから、使うなっていってんだよ。
example.comってのを使うの、そういうときは。
009982
2005/12/19(月) 15:57:35ID:pcyIPGNx大変参考になりました。
なんとか文字化けせずに送信する事ができました。
>質問するときはバージョン書きましょう。
以後気を付けます。
ありがとうございました。
0100nobodyさん
2005/12/19(月) 16:21:49ID:???example.comも実在するドメインなわけだが・・・
fooとかhogeっていえばそれが例えだっていうのは
ほとんど誰もがわかると思うが?
0101nobodyさん
2005/12/19(月) 16:26:01ID:???実在しないわけではないな、確かに。
例えとして使う場合には、example.comやexapm;e.netを使いましょうと
規定されているといえばいいのかな。
0102nobodyさん
2005/12/19(月) 16:27:14ID:???http://suika.fam.cx/~wakaba/documents/rfc-ja/rfc2606-ja.html
0103nobodyさん
2005/12/19(月) 16:42:24ID:???ちゃんと読めよ
http://example.com/
0104nobodyさん
2005/12/19(月) 17:46:34ID:???SQL文の中で演算させることは可能でしょうか?
たとえば、こんな感じで
”UPDATE table_name SET hoge= +1 WHERE id=100;”
hogeを+1ずつさせていきたいと思ってます。
宜しくお願いします。
0105nobodyさん
2005/12/19(月) 17:48:28ID:???0108nobodyさん
2005/12/19(月) 18:33:07ID:???以下でやると両方でTRUEになってしまいます。
何がいけないのでしょうか?
$str_1 = "abc";
$str_2 = "def";
if(strpos("$str_1",a) == 0){
print "TRUE";
}
if(strpos("$str_2",a) == 0){
print "TRUE";
}
0109nobodyさん
2005/12/19(月) 18:46:31ID:???多分、==を===にするとうまくいく。
あと文字列なんだから'a'と書こうよ
■ このスレッドは過去ログ倉庫に格納されています