【PHP】下らねぇ質問はここに書き込みやがれ 51
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2007/07/27(金) 16:32:46ID:???PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 50
http://pc11.2ch.net/test/read.cgi/php/1184143801/
◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0666nobodyさん
2007/08/08(水) 04:16:21ID:9os+tc0Tありがとうございます
具体的にはどういうことでしょうか?
henkou.php?dbhost=www.aaa.co.jp&dbUser=uName&dbUser=dbPass
みたいな感じですか? (僕の誤解でしょうか)
失礼ですが、もしこういう意味なら、逆に危なくないですか?
(セッションに保存した方がよさそうな…)
それともそんなに気にかける必要ないといういみでしょうか?
こんな時間に済みませんが、また気が向いたら教えてください
他の方もよろしくお願いします
0667nobodyさん
2007/08/08(水) 04:44:39ID:???別にやらないよりはやったほうがいいんじゃない
大事なのはどの手法にどんな利点と欠点があるかを正しく把握することかと
0668nobodyさん
2007/08/08(水) 04:57:16ID:???おいおい、そうじゃないよw
GETパラメータを内部ターンで回せばって言っている。
.htaccess使っているなら、rewriteを使ってGETパラメータ渡しすれば、
管理も楽でセキュリティーもかなり強固になる。
0669nobodyさん
2007/08/08(水) 05:20:50ID:???ですね〜 知識不足なんで色々調べてみます
ありがとうごさいました
>>668
htaccessをつかうんですか。知りませんでした、まるきり勘違いですみません…
調べて試したいと思います
ありがとうごさいました!
他にも気が向いた方がいたら、ご意見よろしくお願いします
0670nobodyさん
2007/08/08(水) 07:31:07ID:???これはあんぜんなの?
0671nobodyさん
2007/08/08(水) 07:58:39ID:???でなんか処理なんかしないよ。REQUEST_URIとかPATH_INFOのパスコンポーネント系で処理する。
0673660
2007/08/08(水) 09:02:10ID:CLPnux1Mどうもありがとうございます。
しかしfile_get_contentsでは作成されませんでした。(書き方が悪いのかもしれませんが・・・)
a.php
$filename = realpath('./') . '/test.txt';
if (!file_exists($filename)) {
file_get_contents('a.cgi');
}
?>
a.cgi
#!/usr/bin/php
<?php
include_once('a.php');
$handle = fopen($filename, 'x+');
fclose($handle);
?>
a.cgiに単独でアクセスするとちゃんと作られるのですが、
a.phpにアクセスしてもtest.txtが生成されません。(もちろんサーバ側にtest.txtはない状態です)
それとfile_get_contentsの本来の使い方とはだいぶ外れてるようですが、気にしないでいいですか?
もっと的確な関数や方法があれば是非アドバイスお願いします。
0674nobodyさん
2007/08/08(水) 09:48:51ID:???0675nobodyさん
2007/08/08(水) 10:00:15ID:???file_get_contentsはファイルのテキスト全文読み込み
includeはファイル読み込み
a.cgiをバックグラウンドで実行したいみたいだから
execかsystemじゃないのか??
0676nobodyさん
2007/08/08(水) 10:22:42ID:KXoVBglR0677nobodyさん
2007/08/08(水) 10:44:50ID:???たぶん正規表現の文字列のクオートをダブルクォートにする必要があるのと、
PHPのunpack()の返り値は文字列じゃなかったはず。
0678660
2007/08/08(水) 10:53:10ID:CLPnux1M>>674
こちらも書き方が悪いかもしれませんが無理でした。
>>675
>execかsystemじゃないのか??
こちらの関数もセーフモードじゃ制限があるのでcgiでないと・・・orz
こちらでやるならcgiよりシェルスクリプトでも作ったほうがよさそうですね。
とりあえず別の方法を思いついたのでそちらを試して見ます。
(ファイルがなかったら全工程を記述したcgiにheader関数で飛ばすという荒業・・・)
0679nobodyさん
2007/08/08(水) 11:02:21ID:???>PATH_INFOのパスコンポーネント系で処理する
というのは、shusei.php?namae=yamada という表記を /shusei/yamada とする処理のことですか?
この処理の意味は「ファイル名をディレクトリのように見せる」ということだと思うんですが、
その効果としては.phpを直接ダウンロードさせないことがメインなんでしょうか?
0681nobodyさん
2007/08/08(水) 13:01:37ID:b5KxDrLFが発生したプロセスには死んでほしいのですが
なぜか固まって生き残ってしまいます。
この人たちに自殺させる方法を教えてください。
0682nobodyさん
2007/08/08(水) 13:06:16ID:???0683nobodyさん
2007/08/08(水) 13:09:54ID:???まずエラーメッセージはググレ
http://www.google.co.jp/search?q=Maximum+execution+time+of+30+seconds+exceeded&lr=lang_ja&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&client=firefox
0685nobodyさん
2007/08/08(水) 13:46:27ID:???$var=計算式
return $var;
}
$a=hoge();
こうすれば$aに$varが入るのは分かるんですが、2個以上の返り血をもらいたいときはどう書けば良いんでしょうか
function hoge(){
$var1=計算式
$var2=$aを使って計算
return ????
}
$va1や$var2を計算する文を毎度書いているのでなんとかしたいです
0687nobodyさん
2007/08/08(水) 13:58:55ID:???0688nobodyさん
2007/08/08(水) 14:00:12ID:???0689nobodyさん
2007/08/08(水) 14:01:10ID:???0690nobodyさん
2007/08/08(水) 14:05:15ID:j6ELTh/zini_set('session.use_only_cookies', 0);
ini_set('session.use_cookies' , 0);
ini_set('session.use_trans_sid' , 1);
で、セッションにクッキーを使わず、自動的にURLにセッションIDを付加させたいのですが、
リンク先に飛んでもIDを付加してくれません。
ほかになにか設定を変更する場所があるのでしょうか?
(リンク先にも同じ設定をしています。)
0692nobodyさん
2007/08/08(水) 14:23:53ID:j6ELTh/zローカルのリンク先ではなくサーバーのリンク先になっていましたorz
0693nobodyさん
2007/08/08(水) 14:53:34ID:???0694nobodyさん
2007/08/08(水) 15:00:00ID:2+jr8RRcもしかしてxml関係の関数で簡単にできちゃったりする?
0695nobodyさん
2007/08/08(水) 15:07:43ID:???0696nobodyさん
2007/08/08(水) 15:28:29ID:2+jr8RRcどうもありがとうございます。
ですよね。でも構造が似てるので、できちゃったりするのかな、と思いました。
それでいろいろ調べてみた結果、tidy関数というものがありました。
そこで、もう1つ質問で、
PEARって、インストールしていないPHP上でも動くようにできないんですかね?
例えば、tidyのライブラリ?を作ったものの同じフォルダに入れて、zipしたり。。。
つまり、なるべくどこでも動くようにしたいのです。
0697nobodyさん
2007/08/08(水) 15:38:15ID:???0699nobodyさん
2007/08/08(水) 15:42:43ID:???PECLのインストールは管理者じゃないと無理
0701nobodyさん
2007/08/08(水) 16:22:03ID:9os+tc0T$documentroot = dirname(__FILE__)."/";
require_once $documentroot.'../php_libs/config/config.inc.php';
上記のようなソースが今使っている本に書いてありました。
1行目は現ファイルの絶対パスに末尾に/を付けて変数に入れてるわけですが、
2行目は何をやっている処理なんでしょう?
require_onceが対象ファイルを読み込む関数ということはわかるんですが…
ファイル構造は
/htdocs/index.html(このファイル)
/php_libs/config/config.inc.php
という形になっています
0703nobodyさん
2007/08/08(水) 16:29:29ID:???そこまで考えれたんならもうちょっとだろ
・require_onceが対象ファイルを読み込む関数
・$documentroot.'../php_libs/config/config.inc.php';
・$documentrootの中身
0704nobodyさん
2007/08/08(水) 16:54:42ID:9os+tc0Tありがとうございます しかしわからないです
「.」 連結演算子?の理解不足なんですかね〜
現在の階層に相対パス(ファイル)をくっつけてる??? わけないか、、
本の文脈的には「config.inc.php」の中身を読みに行く処理だと思うんだけど…
見たことない書式なので…
0705nobodyさん
2007/08/08(水) 16:56:38ID:???echo $documentroot.'../php_libs/config/config.inc.php';
してみればいいんじゃない?
0706nobodyさん
2007/08/08(水) 17:02:55ID:j6ELTh/zmixiにログインして、自分のページの名前などを引っ張ってきたいのですが何か良い方法はないでしょうか
0707nobodyさん
2007/08/08(水) 17:04:55ID:???ためしてみてできなかったら質問してください。
0708nobodyさん
2007/08/08(水) 17:06:22ID:j6ELTh/zログインを試しました
すると、ダミーページ?みたいなのがあって、そこでhome.plにジャンプする仕様でした
セッション維持できれば次にhome.plに飛ばすこともできるんですが、
どのようにすればセッションを扱えるのかなと
0709nobodyさん
2007/08/08(水) 17:07:18ID:OHuigtha0710671
2007/08/08(水) 17:09:54ID:CQkJQVbI>shusei.php?namae=yamada という表記を /shusei/yamada とする処理のことですか?
違う。それを一番シンプルなかたちでrewriteで書くなら
shusei/(..*)$ suisei.php?namae=$1
shuseiも隠したいなら(単なるyamada) ^(..*)$ suisei.php?namae=$1
この場合「GET」 OR QUERY_STRINGS値として取得される。
PATH_INFO,REQUEST_URI系と言ってるのは、
rewrite無しでも
shusei.php/yamada(あるいは直下のパスに意味を持たせたいならshusei.php/namae/yamadaとか)
yamada以下の部分はPATH_INFO、REQUEST_URIでなにもせずに処理可能
rewrite有りならさらにshusei.phpを全部隠しながら単なるyamadaでいい。
^(.*)$ shusei.php ←REQUEST_URI
^(.*)$ shusei.php/$1 ←PATH_INFO系
つまりはGET云々なんか無視してやればいいということ。
一番スマートなのは、apacheを使ってるならばREQUEST_URI系。
0712nobodyさん
2007/08/08(水) 17:28:31ID:2+jr8RRc<h1>test</h1>
にヒットするのはわかるのですが、
<.*?>こうすると、
<h1>だけになる理由がわかりません。
?の意味は、0個、または1個のパターンというのはわかったのですが、
*か、>どちらにかかっているのでしょうか・・・?
0713nobodyさん
2007/08/08(水) 17:33:46ID:???違うだろ。直前のものがあってもなくてもいいってこと。
0714nobodyさん
2007/08/08(水) 17:34:45ID:2+jr8RRc<.*?>でいうと、
.*(何でも文字列)があって、>が後ろにあるので、>までは許すよ〜って感じですかね??
0715nobodyさん
2007/08/08(水) 17:36:35ID:2+jr8RRcその解釈だと、
なくても、の場合
<>になるし×
あっても、の場合なら、
<h1>test</h1>
もOKってことになりません?
0717nobodyさん
2007/08/08(水) 17:42:05ID:???0718nobodyさん
2007/08/08(水) 17:43:51ID:???いきなり正規表現の話出されても意味わからんで。
0719nobodyさん
2007/08/08(水) 17:47:30ID:2+jr8RRc今、'/<(.+)[^>]*>(.+)(<\/\\1>)/si' こういう正規表現をつくりました。で、
例えば、
<p>test</p>
<p>test2</p>
この例だと、
<p>test</p>&<p>test2</p>として認識させたいのですが、
最初の<p>から、2行目の</p>まで全部認識してしまいます。
「<*>から、一番近い</*>まで」というのが目的です。
0720nobodyさん
2007/08/08(水) 17:48:20ID:j6ELTh/zcURLとは何でしょうか
検索してみたのですがCurlしかHitしません・・・。
mixiに対してどのようにCookieを生成すれば良いのでしょうか。
0721nobodyさん
2007/08/08(水) 17:54:13ID:???以下の正規表現を試してごらん。わかると思うよ。
<...*?>←.が3つ。この数までは<h1>マッチ
<....*?>←.が4つ以上。<h1>test</h1>にマッチ
>>720
別にCurlでもCURLでもいいよ。PHPのcurl関数マニュアル読んで下さい。使い方が書いてある。
0722nobodyさん
2007/08/08(水) 18:01:23ID:2+jr8RRcできたーうれしいー
>>721
え?なんで・・・?理解不能
0723nobodyさん
2007/08/08(水) 18:03:34ID:???0724nobodyさん
2007/08/08(水) 18:09:01ID:???0725nobodyさん
2007/08/08(水) 18:11:05ID:???ID:2+jr8RRcに対してだ。もう来るなよ。
0727nobodyさん
2007/08/08(水) 18:15:03ID:2+jr8RRc理由をかいてね
0728nobodyさん
2007/08/08(水) 19:04:56ID:???0729nobodyさん
2007/08/08(水) 20:54:22ID:???0730nobodyさん
2007/08/08(水) 20:54:48ID:???自動ログイン系を実装するなら実装する前に現状を把握するツールを使いこなせるようになることだ。
そこから話しを始めないと全く通じない。
IENaviTr ieHTTPHeaders
とか使ってブラウザのやりとりを可視化してみ。
0731nobodyさん
2007/08/08(水) 21:04:02ID:???timeoutしてしまうんですが、
何か解決する方法はありませんか?
0733nobodyさん
2007/08/08(水) 21:34:19ID:OHuigtha0734nobodyさん
2007/08/08(水) 21:39:33ID:???0736704
2007/08/08(水) 23:14:23ID:9os+tc0T$documentroot = dirname(__FILE__)."/";
require_once $documentroot.'../dbsettei/settei.php';
の意味がわからないということで、アドバイスに従い
echo $documentroot.'../dbsettei/settei.php';
をやってみたんですが
C:\Program Files\Apache Group\Apache2\htdocs\samples\dbtest/../dbsettei/settei.php
と表示されただけでした
当たり前といえば当たり前なんですけど、これでいいのか?? って気分です
どうなってるんだろう…
0737nobodyさん
2007/08/08(水) 23:30:32ID:???そのファイルを移動させてもそのファイルがあるディレクトリからの
相対階層にあるファイルを読み込めるようにするため
dirname(__FILE__)の結果はそのファイルがある階層によって変わるから
OK?
0738704
2007/08/08(水) 23:55:10ID:???ありがとうございます
require_once $documentroot.'../dbsettei/settei.php';
echo $sample;
//settei.phpに$sample = "hahaha";としてある
を実行したところ、 hahaha と表記されました
しかし、ディレクトリを一階層落としてそのまま実行したら(/a/index.html)I
表記されなくなりました
これはこれでしょうがないんですよね…?
そうなら、require_once "../dbsettei/settei.php"; として適宜「../」部分を編集するのと
同じでは、、と思うのですが。。
僕の手際が悪いんでしょうか?
0739nobodyさん
2007/08/09(木) 01:13:31ID:???あ、>>704の現在の階層に相対パスをくっつけているというのはそれで合っている
/a/b/c/../hoge.php というのは /a/b/hoge.php と同じファイルパス
この相対パスの説明をしたらよかったのかな
0740nobodyさん
2007/08/09(木) 01:14:12ID:???0741nobodyさん
2007/08/09(木) 01:27:45ID:???別にこれが正解ってのはないよ
その本がその部分の前後でなにをやっていたのかしらないけど
絶対パスや相対パスについて説明している部分だったら
自分で悩んで理解しろことなのかもしれんし
0742nobodyさん
2007/08/09(木) 01:32:53ID:???いちいち適宜編集するのが面倒だからメインのファイルから
dirname(__FILE__)で相対位置として指定してるんだろうが
少しは考えろよ
0743nobodyさん
2007/08/09(木) 01:44:09ID:???>>740
http://2chart.fc2web.com/2chart/pic/naniwo.jpg
0749nobodyさん
2007/08/09(木) 03:14:50ID:???PHPunitぐらいしかない?
PHPunitの他に、
「他にもこういうのがあるよ」ってのある?
無料、有料問わず。
0750nobodyさん
2007/08/09(木) 03:17:53ID:???0751nobodyさん
2007/08/09(木) 03:27:08ID:???まいったなぁ。一応スレ検索してみたんだけどな。
それらしきスレは見当たらなかった・・・
0752nobodyさん
2007/08/09(木) 03:55:49ID:???つ 英字
0753nobodyさん
2007/08/09(木) 06:47:04ID:???英字ってか最近のスレってのがヒントになったぜ!
0754nobodyさん
2007/08/09(木) 06:49:03ID:???0755nobodyさん
2007/08/09(木) 06:49:45ID:eIvRPvRy10日前から今日の日付を
20070730
20070731
20070801
....
20070809
といった感じに出したいのですが、
計算式を使って(int)date("Ymd") - 10では、当然20070799となってしまいます。
どのようにしたら思い通りになってくれるのでしょうか?
<?php
$d = (int)date("Ymd"); //20070809
for ($i = $d - 10; $i < $d; $i++) {
echo $i."\n";
}
?>
0758nobodyさん
2007/08/09(木) 07:15:22ID:???一対一対応での誘導より、他のケースでも適用できる一般論(検索文字列の柔軟化)を
示してあげてるんだから優しいと言えるよ。
ご当人のリテラシーは>>753見る限り向上していないみたいだけどな。
0759755
2007/08/09(木) 07:18:17ID:eIvRPvRyどうもありがとうございます。
for文じゃ少し難しそうですが10個なので1つずつ書きたいと思います。
どうもありがとうございました。
0760755
2007/08/09(木) 07:23:00ID:???$d = mktime(0, 0, 0, date("m"), date("d"), date("Y"));
for ($i = 0; $i < 10; $i++) {
echo date("Ymd", $d - 86400 * $i)."\n";
}
どうもありがとうございました。
0762nobodyさん
2007/08/09(木) 07:31:17ID:???テスト=試験
って発想できないDQNだでね。
758に感謝。
0763nobodyさん
2007/08/09(木) 09:47:03ID:???mb関数をインストールする方法を教えてケロリ〜ン☆
0764nobodyさん
2007/08/09(木) 09:52:42ID:???■ このスレッドは過去ログ倉庫に格納されています