【PHP】下らねぇ質問はここに書き込みやがれpart14
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2005/12/18(日) 10:10:12ID:???ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
次スレは>>970あたりが建てて下さい
過去スレは>>2
0650nobodyさん
2006/01/05(木) 18:49:49ID:???これに何を与えると2ちゃんと同じトリップになりますか?
0651nobodyさん
2006/01/05(木) 19:21:46ID:???0652nobodyさん
2006/01/05(木) 19:58:29ID:???0653nobodyさん
2006/01/05(木) 20:16:34ID:???if(strpos($name,"#")){
$names = explode("#", $name);
$name = $names[0];
$passwd = $names[1];
$salt = substr($passwd."H.", 1, 2);
$salt = ereg_replace("[^\.-z]", "\.", $salt);
$salt = ereg_replace(":;<=>?@[\\]^_`", "ABCDEFGabcdefg", $salt);
$trip = substr(crypt($passwd, $salt),-10);
$name = "$name</b> ◆$trip <b>";
}
return $name;
}
Trip関数。
0655nobodyさん
2006/01/06(金) 02:27:52ID:???見難い。
function Trip($name = '名無しさん'){
list($name, $passwd) = explode('#', $name, 2);
if($passwd) {
$salt = substr($passwd."H.", 1, 2);
$salt = ereg_replace("[^\.-z]", "\.", $salt);
$salt = ereg_replace(":;<=>?@[\\]^_`", "ABCDEFGabcdefg", $salt);
$trip = substr(crypt($passwd, $salt),-10);
$name = $name.'</b> ◆'.$trip.' <b>';
}
return $name;
}
0656nobodyさん
2006/01/06(金) 03:22:58ID:???この中の$thisってどういうこと?
function accept(&$renderer)
{
$renderer->startForm($this);
foreach (array_keys($this->_elements) as $key) {
$element =& $this->_elements[$key];
$elementName = $element->getName();
$required = ($this->isElementRequired($elementName) && !$element->isFrozen());
$error = $this->getElementError($elementName);
$element->accept($renderer, $required, $error);
}
$renderer->finishForm($this);
} // end func accept
0658nobodyさん
2006/01/06(金) 09:24:43ID:???pear install Services_Trackback
とかしてもDLできないんだけどなんで?
というかlist-allしてもサービス関連のやつ出てこないし。
自動で探してきてくれるもんじゃなかったんだっけ。
0659nobodyさん
2006/01/06(金) 09:41:07ID:???α版だからじゃないか?
pear install Services_Trackback-alpha
としてみたらどうなる?
0660nobodyさん
2006/01/06(金) 13:58:57ID:???$a=$_POST['a'];$b=$_POST['b'];...
掲示板のスクリプトを見ると、このような書き方はしていないようです。
しかしどのように書いたらいいかわからないんですけど、
スマートに書く方法ありませんでしょうか?
0661nobodyさん
2006/01/06(金) 13:59:14ID:???0662nobodyさん
2006/01/06(金) 14:22:02ID:???という形式を
Y-m-d H:i:s
という形式に変換するにはどうすればいいでしょうか…?
0663nobodyさん
2006/01/06(金) 14:25:54ID:???register_globals = on というオチか?
>>661
return $test; // $test:Array
0666nobodyさん
2006/01/06(金) 15:40:43ID:???function a() {
return array("color"=>$color,"size"=>$size,"depth"=>$depth);
}
$test = a();
0667nobodyさん
2006/01/06(金) 15:43:02ID:???0670nobodyさん
2006/01/06(金) 16:20:20ID:???0672nobodyさん
2006/01/06(金) 16:30:20ID:???$name = "aaa bbb";
$_SESSION['name'] = $name;
$name = $_SESSION['name'];
こんな感じで登録してから中身を取り出すと$nameがaaaになってしまいます。
これはスペース切られてるとおもうんですが、スペースごと登録する方法を教えてください
0674nobodyさん
2006/01/06(金) 16:45:45ID:???ちなみに、色々HPをみていると
$_SESSION['name'] = $name;
↑みたいにシングルクォーテーションを使ってたり
$_SESSION["name"] = $name;
ダブルクォーテーションを使ってたりするのですが
これの違いってなんでしょうか?
0675nobodyさん
2006/01/06(金) 16:49:04ID:???プログラムをテストしたりしているのですが、
(初心者的に)理解できない振る舞いがあったので
誰か教えていただけないかと…
サーバ:ロリポップのレンタルサーバ
PHPのバージョン:4.3.11
スクリプトのエンコーディング:SJIS
という環境なんですが、
var $str1 = "テスト";
$str2 はフォームからテストと入力すると
ereg($str1, $str2) ⇒ 偽
になるので、はまっていました。
色々ためしたら、下の2つの書き方では真になるのが
判明したのですが、その理由がよくわかりません。
mb_ereg($str1, $str2) ⇒ 真
ereg($this->str1, $str2) ⇒ 真
mb_eregで正しく動くようになったのは
日本語の処理絡みなんだと思うのですが、
$this->str1にしたら、eregのままでも
だいじょうぶになったのは、なぜなんでしょうか…。
0677nobodyさん
2006/01/06(金) 16:53:00ID:???受信したメールのFrom:部分のソース貼ってみれば?
これだけの情報じゃ、原因が特定できない。
他で起こらないからMail.appのせいっぽいけど。
0680nobodyさん
2006/01/06(金) 17:18:44ID:???0681nobodyさん
2006/01/06(金) 17:41:04ID:???<a href="http://〜/">って形に絶対なっている(ダブルクォートされている)なら、
$array = explode("\"", $query);
$result = $array[1];
みたいな感じでいいかなぁ。
#変数名は適当、$queryは<a href="http://〜/">が入ってるもの。
0683681
2006/01/06(金) 17:48:18ID:???この場合、explodeは使えないですね。
正規表現がいいとはおもいますが、そのURLによってはアンカータグの書式が違うので、
結構難しいかもです。
<a href="URL">TEXT</a>
<a href=URL>TEXT</a>
<a href="URL" MOREATTR="MOREVALUE">TEXT</a>
などなど。
0685nobodyさん
2006/01/06(金) 18:07:00ID:???>URLをフォームに入力してfopenなどで開いてfgetsなどで配列に一行ずつ格納した場合
の流れの繋がりが端折り過ぎで良く判らんが。
><a href="http://〜/">のhttp://〜/を変数に格納するには
正規表現関数を使うのが一般的だと思う。
preg_match('/<a href="([^"]*)/i',$line,$ary); var_dump($ary);
とかでどう?
>>683
><a href=URL>TEXT</a>
これって、ありなの?
0686nobodyさん
2006/01/06(金) 18:24:52ID:???683じゃないけれど、"を省略して書いている記述はママある。
もちろんHTML的には正しくないけど、
たいていのブラウザはちゃんと認識する。
0687軟式PHP
2006/01/06(金) 18:30:24ID:???0688nobodyさん
2006/01/06(金) 18:32:50ID:???HTML4(てかSGMLかな)の仕様では、特定の文字のみで構成される場合は省略可能な場合もある。
URLに使える文字より範囲が狭いので、" か ' を付けておく方が無難。
0689nobodyさん
2006/01/06(金) 18:54:36ID:Zg0ssy+R$b = array(0=>0, 1=>1, 2=>2);
$aと$bを見分ける方法はありますか?
0691nobodyさん
2006/01/06(金) 19:02:27ID:???0693nobodyさん
2006/01/06(金) 19:13:06ID:???0694nobodyさん
2006/01/06(金) 19:42:04ID:???0695nobodyさん
2006/01/06(金) 19:45:13ID:???まーがんばれ
どこかが間違っている
0697nobodyさん
2006/01/06(金) 19:50:57ID:???0698nobodyさん
2006/01/06(金) 19:51:56ID:???0699nobodyさん
2006/01/06(金) 20:01:58ID:???PHPの構文を理解するエディタ(PHP用のエディタ・開発環境スレもあった希ガス)を使うと、
パースエラーはほとんど防げるかと。
そういうものを利用できない場合は、
・じっくりソースを見る
・show_source()等を使って色がおかしい所を探す。
・エラーが出るあたりを適当に削除しながら、エラーになる/ならないポイントを探す。
0700nobodyさん
2006/01/06(金) 20:38:37ID:???0701nobodyさん
2006/01/06(金) 20:59:16ID:???配列を一行一行読み込んで↓
if(preg_match('/<a href="([^"]*)/i',$line[1],$link))
やってるんですが参照した$line[1]に$linkを挿入して表示したいのですがどうしてもArrayになってしまいます。
0702nobodyさん
2006/01/06(金) 23:15:36ID:oWzCmWic$listr=file("./sdat.log");
foreach($listr as $listrs){
list($s0,$s1,$s2,$s3,$s4)=explode("<>",$listrs);
foreach($list as $lines){
list($p0,$p1,$p2,$p3,$p4,$p5,$p6,$p7)=explode("<>",$lines);
if($s0==$p0){処理が入ります}
}
}
のような2つのファイルのp0とs0が同じ値の場合のみ処理を実行するようにしたいのですが
このままだと何も表示されないです。解決の手段をどなた様かお願い致します。
0704nobodyさん
2006/01/06(金) 23:42:04ID:wWI7IcSM0706nobodyさん
2006/01/07(土) 00:52:14ID:???PHPファイルに外部のPHPファイルを読み込ませて実行させることはできる。
HTMLファイルに外部のPHPファイルを読み込ませても、(通常は)サーバ側で処理してくれないので実行させることはできない。
やりたいことは当然前者だと思うので、詳しくはマニュアルでincludeなりrequireなりを調べるがよろし。
0707nobodyさん
2006/01/07(土) 00:55:47ID:???$listrの行の数だけ$listの行を毎回explodeし直しとは糞重そうな書き方だな。
まー、それと動かないのは全然別問題だからいいけどさ。
ifの直前で$s0と$p0をvar_dumpでもしてみりゃ原因は分かるでしょ。
0708nobodyさん
2006/01/07(土) 02:08:32ID:???MySQLのデータの中身もUTF8にするべきと思うのですが、ブラウザから来るデータは
全てUTF8に一回変換してからデータベースに入れなくてはいけない
という認識であっていますでしょうか?
MySQLは、4.0系です。
0709nobodyさん
2006/01/07(土) 02:18:37ID:???ちなみに表示されるHTMLもUTF-8なの?だったら変換は無くてもいいんじゃない?
たまに変なブラウザもあるから変換した方がいいけど。
0710nobodyさん
2006/01/07(土) 02:24:03ID:???>ブラウザから来るデータは全てUTF8に一回変換してから
>データベースに入れなくてはいけない
いや、別に飛んできたままでも良いよ。
それがMySQLでサポートされてるエンコードならば。
仮にサポートされてなくてもbinaryとして扱っても良い
"文字"として扱えないデメリットがあるけど。
でも、現状でもスクリプトの中で扱いやすいように
ブラウザから来るデータをUTF-8に手動なり自動で
変換してるんじゃないの?ならばそのままUTF-8で
データべースに突っ込んだ方が良いよね。
0711nobodyさん
2006/01/07(土) 02:27:01ID:???そうですね。
変換しなくて良さそうなのでUTF8がいいのかなという位に考えてました。
> ちなみに表示されるHTMLもUTF-8なの?だったら変換は無くてもいいんじゃない?
> たまに変なブラウザもあるから変換した方がいいけど。
これは出力という意味でしょうか?出力は、UTF8と携帯用にSJISを想定しています。
入力は、色んな文字コードで送ってくると思われるので、どちらにしても統一の
文字コードに変換する必要があるような気がするのですが、自信がありません。
perlの掲示板ではそんな作業をしたと思いますが、
PHP+MySQLではどうかが良くわからないのです…
0712nobodyさん
2006/01/07(土) 10:58:29ID:???どういう風にデータをいじるのか分からないからなんとも言えないけど、
統一しておいた方が何かと楽でしょ。いちいち変換するオーバーヘッドが
惜しいってほどパフォーマンス要求がシビアなら別だけど。
0714nobodyさん
2006/01/07(土) 11:10:19ID:???685 じゃないが、意味がわかんね
$link にマッチ結果が配列で入るのが当然であって、
$line[1] になんか何も代入されないだろ?
0715nobodyさん
2006/01/07(土) 11:29:22ID:???当方今までずっと
サーバサイドでEmacs直接編集→Apacheの公開用ディレクトリにコピー→直接WEBから参照
でやってたんですが、
さすがになにかしらマトモなデバッガや開発環境使った方がいいかなと思い始めまして…
Eclipse+dbg辺りかなぁと思っているのですが使用されてる方のコメント等聞けたらな、と
0718nobodyさん
2006/01/07(土) 11:42:13ID:???0719nobodyさん
2006/01/07(土) 12:21:51ID:jsajv2SXテスト環境ではうまく動いたのに本番環境では動きませんでした。
[テスト環境]
Fedora Core 3
Apache 1.3.33
PHP 4.3.11/Apacheモジュールとして組込
[本番環境]
Redhat Enterprise Linux 3
Apache 2.0.46
PHP 4.3.2/Apache2Filterとして組込
レスポンスヘッダを見てみると、なぜか本番環境ではConnectionヘッダが常にcloseだったので、
これが原因かと思ってhttpd.confでKeepAliveディレクティブをOnにしました。
それでもConnection: closeになってしまうので、
PHP側でheader("Connection: Keep-Alive/r/n");と書いたんですが、
それでも後からcloseが追加されてConnection: Keep-Alive, closeみたいになってしまいます。
他のhtmlやcssファイルなどの静的コンテンツも常にConnection: closeで返ってきます。
httpd.confのHeaderディレクティブで書き換えても同様なので、
何かが後から強制的に書き換えているように思えます。
何か対応策をご存知の方、ご教示頂ければと思います。
0720nobodyさん
2006/01/07(土) 13:49:10ID:???ブラウザ側で Persistent Connection が無効になっていると
当然 Apache は Keep-Alive をしようとしない。
ブラウザ側の設定はどうなってるのか確かめた?
0721nobodyさん
2006/01/07(土) 14:03:57ID:TbKqhVyiというデータを入れたい場合どうしたらよいのでしょうか?
array_pushだと値だけなら格納できますがキーまで入れることできないみたいなので・・。
0722nobodyさん
2006/01/07(土) 14:22:54ID:???0723nobodyさん
2006/01/07(土) 14:35:18ID:TbKqhVyi配列の認識自体間違っていたら教えてください。
例えば上の値を最初に入れたら
配列の中は 0 => hello,hoge=>hello でこれはあくまで1つの箱に入っているんですよね?
0724nobodyさん
2006/01/07(土) 14:42:21ID:???0 => helloなんてどっからでてきたんだ。
つーかふつうに$array["hoge"] = "hello"ってやれば「最後」に入るし。
0725nobodyさん
2006/01/07(土) 14:46:45ID:???意味なので、「上の値を最初に入れる」という段階でおかしい。
あと >>724 の言う「最後」は PHP 独自のことなので気をつけておくこと。
他の言語では、ハッシュ(連想配列)に順番なんてものはない。
0726nobodyさん
2006/01/07(土) 16:31:59ID:???filemtime()で取得出来るのは、自分のサーバーにある物だけらしいし・・・
教えて下さい。
0727nobodyさん
2006/01/07(土) 16:41:36ID:???実際に箱を開けて見なきゃ猫が生きているかどうか分からないわけで。。
簡易チェックであれば、HTTPヘッダを調べればよいかと。
0728nobodyさん
2006/01/07(土) 16:56:59ID:???返事トンクス
そのHTTPヘッダを調べる簡易チェックでも更新日とか分かりますか?
また、どのようにすればいいのでしょうか?
ググってるのですが、なかなかページが見つからなくて・・・
0729nobodyさん
2006/01/07(土) 16:59:32ID:???$req .= "Host: ".$host."\r\n";
$fp = @fsockopen($host, "80", $errno, $errstr, "30");
if(!$fp) {
$res .= "Error: ".$errstr." (".$errno.")";
} else {
fputs($fp, $req);
while (!feof($fp)) {
$res .= fgets($fp, 164000);
}
fclose($fp);
}
ヒントみたいなもの。
0730nobodyさん
2006/01/07(土) 17:00:54ID:???(CGI/PHPの類は無理です、と。)
0731nobodyさん
2006/01/07(土) 17:01:47ID:???参考にして頑張ってみます!
0732nobodyさん
2006/01/07(土) 18:03:24ID:???2つのサーバーでセッションの共有がしたいのですが
何かいい方法ありませんでしょうか?
0734719
2006/01/07(土) 18:41:48ID:jsajv2SX有効になっているので、サーバ側に問題があるんじゃないかと考えています。
テストサーバでは問題なくKeep-Aliveを返すので、
PHPがhandler型じゃなくてfilter型なのも一因となっている可能性ってあるんでしょうか?
0735nobodyさん
2006/01/07(土) 18:44:13ID:???0736719
2006/01/07(土) 19:02:51ID:jsajv2SX確かにそうすれば良かったんですが、
工数が少なかったため既存のテスト環境を利用しました。
本番と同一環境であれば今更困ることはなかったと承知しています。
0737nobodyさん
2006/01/07(土) 19:39:47ID:???関係ないと思うけど。
0738nobodyさん
2006/01/07(土) 19:46:33ID:???ブラウザを通すことなく、
Windows用のプログラムを作ったりすることは可能なのでしょうか?
0741nobodyさん
2006/01/07(土) 19:57:49ID:???curlとか使って通信するのも便利
0743nobodyさん
2006/01/07(土) 20:32:34ID:???php-gtkとかWinBinderとかがあるよ。
>>742
外部鯖とセッション共有って、、、なんて恐ろしい子!
0747nobodyさん
2006/01/07(土) 23:01:43ID:???0748nobodyさん
2006/01/07(土) 23:29:15ID:???0749nobodyさん
2006/01/08(日) 00:52:50ID:Gpu+sfrFPHPでメールフォームを作成予定です。
mb_send_mailなどで以前メールフォームを作成した経験があります。
ただ今回作成予定のレンタルサーバのサポートに下記のような記述がありました。
>PHPはCGIモードでインストールされている為、モジュール特化の機能は利用出来ません。
これってどのような意味なのでしょうか?
以前作成したレンタルサーバでは拡張子は.phpで実行できました。
>CGIモード
とは拡張子を.cgiで実行する場合のことなのでしょうか?
また「モジュール特化の機能」とはどのような機能なのでしょうか?
0750nobodyさん
2006/01/08(日) 01:08:45ID:???>>PHPはCGIモードでインストールされている為、モジュール特化の機能は利用出来ません。
>これってどのような意味なのでしょうか?
主にこんな機能
http://www.php.net/manual/ja/ref.apache.php
あとCGI版にsuEXECなんかを組み合わせてると
また別に違いが出てくるけど、それは機能の違いというより機構による差異。
>CGIモード
とは拡張子を.cgiで実行する場合のことなのでしょうか?
これは関係ない。拡張子による動作の割り当てはWebサーバの設定の話であって
PHPがApacheモジュールか、CGI版かには関わらない。
■ このスレッドは過去ログ倉庫に格納されています