【PHP】くだらねぇ質問はここに書き込みやがれpart4
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
05/03/13 16:08:32ID:???ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
次スレは>>970あたりが建てて下さい
・過去スレ
【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/
0154153
2005/03/21(月) 04:13:25ID:MBpHY0ekWebProg板は不慣れなのでお手柔らかにお願い申し上げます。
PHPとHTML混在の為、文字コードをEUCにして
すべてのページを作成していますが、
内部ページとボタンのポップアップメニューが
文字化けがでたりでなかったり、ひどいです。
DreamWeaverテンプレートをEUCで作成して、
そこから全ページEUC(.htmlのページも.phpのページも)
で読み出して作成しています。これが文字化けの原因なのでしょうか。
それともPHP自体テンプレートから引き出して作らず個別で製作したほうが良いのでしょうか?
もちろんPHPが画面上にPrintする部分は編集可能領域にしてあります。
それとも、ふと思ったのですが、
テンプレートもそこから新規作成するページもShift-JISで作成し、
挿入>PHP>PHPインクルード+PHPページエンコーディングで
<?php include(mb_http_input("EUC-JP"); mb_http_output("EUC-JP");); ?>
といれればそれで良いのでしょうか。
DWの機能も内容にはいっていて
板違いは承知ですが、質問させてもらいました。
これだからデザは、、などといわれるのは覚悟の上ですが、
知識ございますかた、ご教授ください。宜しくお願い申し上げます。
0155nobodyさん
2005/03/21(月) 04:26:03ID:???それでオイラはどっちのスレで答えればいいのかね ゚・(ノД`)・゚・
ttp://pc5.2ch.net/test/read.cgi/hp/1106804437/713
DWのEUC対応が不完全なせいじゃないかなぁ。
バージョン上がる度にEUCの問題を起こしてる気が。
HTTP入出力をEUC、スクリプトをSJIS(HTMLに埋め込みっぽいから)にすると
トラブルの原因にもなるので、EUCに統一した方がよいかと。
で、DWでSJISで作って 出来上がったファイル(s)をなんらかのツールで
EUCに変換するのが楽じゃないかなぁ。
0157154
2005/03/21(月) 05:25:47ID:???おっしゃる通りです。
マルチです。申し訳ありません。どちらに書いたらいいのか判断がつかなかったので
ご容赦ください。
(1)同一サイト内で文字コードを変える(.htmlはShift-Jis、.phpはEUC)ということは
ブラウザに迷わせてしまうので避けるべきですよね?
(2)それと.phpのページに対してDWのテンプレート機能は使用しても問題ないのでしょうか
とりあえずご教示いただいた通り、S-JISにて作成して、秀かMiにて、
文字コード変換を手動ですることにします。
>>153
ゴメソ
0158nobodyさん
2005/03/21(月) 05:47:40ID:???マルチはやめろ。
判断つかないならサイコロでも何でもいいから1つに決めて質問しろ。
不適切ならきっと誘導してくれる。
0159154
2005/03/21(月) 06:28:46ID:???http://pc5.2ch.net/test/read.cgi/hp/1106804437/715
みなさんレスいただきましてありがとうございます。
おそらく期末前で徹夜で仕事しながら私の質問をみていただいている方も
大勢いらっしゃるはず。反省しております。
再度整理して質問させてください。
(1)同一サイト内でページごとに文字コードを変える(.htmlはShift-Jis、.phpはEUC)ということは
ブラウザに迷わせてしまうので絶対避けるべきでしょうか?
(2).php等のサーバーサイドの動的コンテンツに対してDWのHTMLテンプレート機能は使用しても問題ないのでしょうか
以上です。宜しくお願い致します。
0160nobodyさん
2005/03/21(月) 06:40:40ID:???1しかわからんけど。
ちゃんと文字コードを指定してたら問題ないんじゃないか?
フレームとかincludeさせちゃうとダメだろうけど。
0161nobodyさん
2005/03/21(月) 11:31:46ID:Xj0YOktX拡張子を.phpにしてアップさせなければいいのではというの以外に、
.htaccessなんかで設定できるディレクティブはありませんか?
0164161
2005/03/21(月) 12:55:21ID:???ありがとう。
.htaccessに
AddType text/html .php
だけ書き込んだら、できたよ。
最初、internal server errorが出たんで、???って思ったけど、htttpd.confで
AllowOverride Fileinfo
を付け加えたよ。
ちなみに、php addtypeでググったら
ttp://nanakorobiyaoki.at.infoseek.co.jp/etc/phpdeny.html
が出て来た。検索しづらいなーって思って↑を作ってくれたみたいだけど、
162に教わった後だからあんまり意味なかった。
0165nobodyさん
2005/03/21(月) 13:04:31ID:???さんくす。参考になりました。
リンクをクリックしたかどうかを判別する何かいい方法はありませんか?
携帯向けだからリファラでは判別できないし
やはりユニークIDを付けてリンク先に飛ばす前にファイルに書き込むしかないでしょうか?
0166166
2005/03/21(月) 13:08:34ID:???Options -ExecCGI
AddType text/plain .php .html .cgi .css
IEだと意味無い部分もあるけど自分はIE使ってないので変なブラクラ踏まされることも無い
0167nobodyさん
2005/03/21(月) 14:14:44ID:???(1) ちゃんとhttpdの設定でHTTPヘッダに適正な文字コードの出力がなされ、
かつHTMLドキュメントのMETAの方でも適正な文字コードが指定されてれば
まず問題はないので絶対とは思わない。しかしブラウザによってはPOSTする
文字コードが混乱して変なことになったことがあるので、
余り混在させるべきではないと経験的に考える。
(2) DWを知らんので回答できず
0169nobodyさん
2005/03/21(月) 18:49:50ID:???echo ltrim('web_content/text','web_cont');
上と下では結果が結構違うんだけども・・
何故に?
あ、やりたいことは親ディレクトリ名を切り取りたいだけです。。orz
0170nobodyさん
2005/03/21(月) 19:05:27ID:???どうおかしいと感じたのか書いてないので想像するしかないですが、
ltrimの2つ目のパラメータの意味を勘違いしているものと思われます。
ltrimの2つ目のパラメータは「削除したい全ての文字をリスト」したものです。(not 文字列)
1つ目のltrimは、8文字目のtでパラメータに無い文字を発見するので、それ以降の文字が返されます。
2つ目のltrimは、12文字目の/でパラメータに無い文字を発見するので、それ以降の文字が返されます。
目的にそぐわない関数だと思われます。
0172nobodyさん
2005/03/21(月) 19:35:59ID:???0173nobodyさん
2005/03/21(月) 20:59:31ID:???ltrim($xxx, "-");
って載ってるから同じような物かなーと思ったけど、
第2パラメータの文字列が配列として1文字ずつ比較(?)されてたから、
第1パラメータのみに存在する文字が出た時にそこから後ろが抽出された訳・・かな?
>>170 (なんかカコイイ。。Thanks!)
>>171
>>172
ありがとうございました。
と、言うわけで質問します。
カレントディレクトリ名を取得する関数などはあるのでしょうか?
フルパスではなくて、ディレクトリ名です。
www.xxx/php/index.htm の場合、 php とディレクトリ名を取得したい。
0174nobodyさん
2005/03/21(月) 21:04:01ID:???これってPHP4のスクリプトは書き換えないと使えないの?
0175nobodyさん
2005/03/21(月) 21:39:18ID:???$path = "www.xxx/php/index.htm";
echo basename(dirname($path));
0176131
2005/03/21(月) 23:25:37ID:???亀レスですが、ご丁寧にありがとう。
まだPHPを触り始めて1週間とかなので、
非常に参考になります!
0177nobodyさん
2005/03/22(火) 18:29:04ID:LgrnIX4+ログファイルに<!--- --->で囲まれた部分を複数出力する方法を
お尋ねしたところ
$reg = "/<!--- (.+?) --->(.+?)<!--- \/\\1 --->/";
preg_match_all($reg, $RetrieveFile, $DataPrint);
と御教授いただいたのですがechoの書き方がわからず参ってます。
echo $DataPrintと書いてもecho $DataPrint[0とか1とか2とか]書いても
全てArrayになるのですが、$regの2番目の(.+?)に該当する部分を
出力するにはどうしたらいいのでしょうか?
0178軟式PHP
2005/03/22(火) 18:53:07ID:???0180nobodyさん
2005/03/22(火) 23:19:38ID:???0181nobodyさん
2005/03/22(火) 23:23:26ID:???0182nobodyさん
2005/03/23(水) 21:06:12ID:???0183nobodyさん
2005/03/24(木) 12:27:03ID:uQ7Kwr2a0184nobodyさん
2005/03/24(木) 12:50:25ID:???0185nobodyさん
2005/03/24(木) 16:11:55ID:cbGEPWrcといったように複数の条件を指定して、その値に従ってページを遷移するPHPスクリプトはご存じでしょうか?
探したのですが、レッツPHPのダウンロードカウンタは1つの条件しか持てないようなので・・
http://php.s3.to/data/#dl
0188nobodyさん
2005/03/24(木) 19:58:00ID:???ページを遷移する、という意味が分からないんだが…
こんなのが欲しいんか?
<?php
$foo = ceil($_GET['foo']);
$bar = ceil($_GET['bar']);
$null = ceil($_GET['null']);
//リダイレクトするURL
$urls[0][0][0] = 'http://www.google.co.jp/';
$urls[0][0][1] = 'http://www.yahoo.co.jp/';
$urls[1][1][0] = 'http://www.goo.ne.jp/';
・
・
header('Location: '.$urls[$foo][$bar][$null]);
?>
0189185
2005/03/24(木) 20:42:36ID:???そういう感じです。
何処を見ていいかわからなかったもので検索後もいろいろ試してみたんですが・・
やってみます、ありがとうございました。
0190185
2005/03/24(木) 20:50:30ID:???http://hoge.com/?product=foo&version=1.2&os=mac
0191nobodyさん
2005/03/24(木) 21:36:58ID:???それリダイレクトなんかじゃなく
ちゃんとデータベース作ってやった方がいいですよ
0193nobodyさん
2005/03/25(金) 03:25:56ID:EQZt/eu0以下のようなスクリプトをシェル上で実行すると ghijk がちゃんと
出力されるのですがweb経由でスクリプトにアクセスすると何も表示されません。
どうすればwebでも読めるようになりますか?
<?php
$data = "abcdef\nghijk\nlmnopqr";
$fp = popen("/usr/bin/grep 'i'", "w");
fputs($fp, $data);
pclose($fp);
?>
0196nobodyさん
2005/03/25(金) 14:33:31ID:???それをifに渡してやることって可能ですか?
以下のようなイメージです。
$f = 'is_string($str) && strlen($str) > 0';
if($f){
// 文字列
}else{
// それ以外
}
0199nobodyさん
2005/03/25(金) 15:30:26ID:???0200nobodyさん
2005/03/25(金) 15:42:25ID:???そういう意味じゃなくて、194はコンソールアクセス(成功した方)と
同等の環境(権限とかパスとか)をWebアクセスにも与えろってことだと思うよ。
0201nobodyさん
2005/03/25(金) 15:55:13ID:???入力されたものをevalするのはやめろ
readfile(\"/etc/passwd\");
とか入力されるぞ
0204193
2005/03/25(金) 19:31:21ID:???えっと、grepのパスも/usr/bin/grepとフルパスで指定しているし
grepのパーミッションも-r-xr-xr-xの状態ですけど、これ以外にも
環境を合わせないといけないところがあるということでしょうか?
0206193
2005/03/25(金) 20:22:33ID:???とりあえずerror_logには何も残ってません。
ブラウザー上にはエラーさえも出ません。
念のためtelnetでwebサーバーにつなげてみましたが以下の通り
ヘッダ以下には何も書いてありませんでした。
$ telnet www 80
Trying xxx.xxx.xxx.xxx...
Connected to www.
Escape character is '^]'.
GET /~myuser/test.php HTTP/1.0
HTTP/1.1 200 OK
Date: Fri, 25 Mar 2005 11:16:58 GMT
Server: Apache
X-Powered-By: PHP/4.3.10
Content-Length: 0
Connection: close
Content-Type: text/html
Connection closed by foreign host.
$
0208193
2005/03/25(金) 21:11:43ID:???なるほど。そういうものだったんですか。
サーバー管理者ではないのでphp.iniとかの書き換えはできませんが
error_reporting(E_ALL);
を付け加えてやってみました。error_reporting関数を使っても
エラーは何も出てこないですねー…
0209nobodyさん
2005/03/25(金) 21:36:57ID:???display_errorsやほかその他エラー関連の設定は?
エラー関連の設定はほぼ全部ini_setで変更できる
0210nobodyさん
2005/03/25(金) 23:41:48ID:???0211nobodyさん
2005/03/26(土) 02:13:41ID:???popenで開いて、開いたプロセスに$dataを入力として渡してるが、
プロセスからの出力は、拾ってないぞ?
popenは一方向のパイプしか扱えないから、
proc_openをつかえ。
んで、fputsで$data渡した後、fgetsなりなんなりして結果を取得してくれ。
proc_openの使い方はpopenとは異なるからマニュアル嫁よ。
0212193
2005/03/26(土) 06:11:40ID:???ini_setで変更できるの初めて知りました。
とりあえず以下を追加しましたがやはり何もエラーは残りませんでした。
ini_set("display_errors", "on");
ini_set("log_errors", "on");
ini_set("error_log", "log.txt");
0213193
2005/03/26(土) 06:12:06ID:???proc_openのマニュアルttp://php.s3.to/man/function.proc-open.html
を読みました。よくは理解できなかったのでサンプルを参考に作ってみました。
やはりシェル上では動きますがweb上では何も表示されませんでした。
<?php
$data = "abcdef\nghijk\nlmnopqr";
$descriptorspec = array(
0 => array("pipe", "r"), // stdin is a pipe that the child will read from
1 => array("pipe", "w"), // stdout is a pipe that the child will write to
2 => array("file", "/tmp/error-output.txt", "a") // stderr is a file to write to
);
$process = proc_open("/usr/bin/grep 'i'", $descriptorspec, $pipes);
if (is_resource($process)) {
fputs($pipes[0], $data);
fclose($pipes[0]);
while(!feof($pipes[1])) {
echo fgets($pipes[1], 1024);
}
fclose($pipes[1]);
proc_close($process);
}
?>
0214nobodyさん
2005/03/27(日) 12:04:17ID:VfQV7VpEphpを使えるように設定しているのですが、どうも期待通りに動いてくれません。
/home/*(username)/public_html/php以下でのみphpを動かしたい
open_basedir = php
user_dir = public_html
とやってみたのですがダメでした。
どの辺の設定をいじればいいのでしょうか?
0216nobodyさん
2005/03/27(日) 17:08:31ID:???それはPHPじゃなくてhttpサーバの仕事だよ
Apacheなら.htaccessで設定できるから該当のスレにどうぞ
0217nobodyさん
2005/03/27(日) 18:30:34ID:o5yBDsfR$a = new TestClass();
$b = &$a;
$aと$bが同じものかどうか(内容が同じというわけではなく、
指し示すメモリの場所が同じ)を検知したいのですが、
なにか良い方法はあるのでしょうか?
どうかご教示下さい。お願いします。
0219nobodyさん
2005/03/27(日) 18:51:03ID:???メモリのマッピングをになっているリファレステーブルで
同じ値が割り当てられていることをもって、指し示す
メモリの場所が同じと見なすしかないと思う。
それとも「同じ値が割り当てられている」ことを調べたいのかな?
0220nobodyさん
2005/03/27(日) 19:16:43ID:o5yBDsfRやはり無理っぽいですね・・
どうもありがとうございます。
0222nobodyさん
2005/03/27(日) 22:49:37ID:???可能だとしたらどうやったらいいのかまったくわかりません。
どなたかご教授よろしくお願いします。
0224nobodyさん
2005/03/28(月) 00:50:15ID:???サーチかなんかのランキング上げたいんジャマイカ?
0226nobodyさん
2005/03/28(月) 07:35:35ID:???そうです。でも田代砲まで強力じゃなくて。
10分間に1アクセスくらいでいいです。
PHPじゃなくてJavaScriptで作れるんですか?
PHPで簡単に作れないでしょうか?
作り方のヒントだけでも教えてください。お願いします。
0227nobodyさん
2005/03/28(月) 12:02:19ID:???1
2
3
4
";
$dat = preg_replace("/1(.*)4/","",$dat);
結果が以下のようになりそうでならないのですがどうしてでしょうか?
1
4
0229nobodyさん
2005/03/28(月) 12:47:19ID:???preg_replace("/1(.*)4/m","",$dat,'m')でもダメでした^^;
洗濯物を干しながら考えてみます
0232227
2005/03/28(月) 13:26:01ID:???$dat = preg_replace("/1(.*)4/m","\\1",$dat);
とすれば結果が23となるので改行が問題なのはわかるのですが/mをつけても
複数行にはマッチしないようです。複数行の解釈を間違えているのでしょうか?。
0233nobodyさん
2005/03/28(月) 13:30:50ID:???.(ドット)を改行にマッチさせるのはsです
$dat = preg_replace("/1(.*)4/s","\n",$dat);
0234232
2005/03/28(月) 13:37:54ID:???$dat = preg_replace("/1(.*)4/s","$1",$dat);
0236nobodyさん
2005/03/28(月) 16:29:39ID:AxvngZW7今まではクラス化されてないPHPコードべた書きのファイルを作り、
グローバル変数として使うというやり方をしていました。
しかしより洗練されたやり方をと思い、設定ファイル自体を
クラス化し、ゲッター(セッターは必要ないですよね)で値を取得
というやり方を考えました。
前者が駄目なやり方とは思いませんが、後者のやり方は一般的な
オブジェクト指向プログラミングにおいて正しいやり方でしょうか?
オブジェクト指向プログラミングにまだ慣れていないので変な質問かも
しれませんが指揮者のご意見をお聞かせいただければと思います。
0237236
2005/03/28(月) 16:35:37ID:???class Config {
var hoge;
var fuga;
// コンストラクタ
// ここで値をセットするのでセッターはいらない?
function Config() {
hoge = "hoge";
fuga = "fuga";
}
// ゲッター
function getHoge() {
return $this->hoge;
}
function getFuga() {
return $this->fuga;
}
}
0238236
2005/03/28(月) 16:45:56ID:???失礼しました。
ちなみに今回お聞きしたいのはどちらかというと小規模な開発
というよりも中規模・大規模開発を視野に入れた保守性重視の
オブジェクト指向ガチガチの開発の場合を想定しています。
0239nobodyさん
2005/03/28(月) 17:24:23ID:???別に決まりは無いので好きなように作ればいいと思いますよ。
自分の場合は値の変わらない設定値は定数にしてます。
0241nobodyさん
2005/03/28(月) 19:44:33ID:???どのようなやり方になるのでしょうか?配列に慣れていないので
よくわからないのです。ご指導宜しくお願いします。
0242nobodyさん
2005/03/28(月) 19:51:02ID:???配列に慣れてないのは構わないんだが、
それ以前に自分の伝えたいことを書き表すのに慣れてないような気が。
そこで指し示す"テーブル"とは具体的に何?
0244nobodyさん
2005/03/28(月) 20:26:42ID:???htmlのテーブルを使って素直に書くと、
<table>
<tr><td><?php echo $array_data[0][0]; ?></td><td><?php echo $array_data[0][1]; ?></td>〜</tr>
<tr> 〜</tr>
〜
</table>
つー風にも書けるけど、それさえも分からんってことじゃないでしょ?
何に困ってるのかよく分わかんないよ。
0245226
2005/03/28(月) 23:06:17ID:???探したけど見つかりませんでした。
0246nobodyさん
2005/03/28(月) 23:11:38ID:VOOnUpPoindexファイルがindex.htmlじゃないとダメで、
テンプレ部分とかいちいち書き直すの面倒なんです
0248nobodyさん
2005/03/29(火) 10:39:10ID:???0251nobodyさん
2005/03/29(火) 13:10:08ID:???>244とヘッダーにおっすおらエクセルよろしくな!って書けば終わりじゃね?
それ以外だとエクセル調べるしかないのでスレ違いだと思われ
0253nobodyさん
2005/03/29(火) 14:02:19ID:fSc5qMirすべて取り除きたいのですが、下のようにしても取れてないようです。
どこが間違えてるんでしょうか?
$hoo=$_POST['hoge'];
$hoo=str_replace(" ","",$hoo);
0254nobodyさん
2005/03/29(火) 14:56:39ID:???■ このスレッドは過去ログ倉庫に格納されています