【PHP】下らねぇ質問はID出して書き込みやがれ 84
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001nobodyさん
2009/04/27(月) 21:39:11ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 83
http://pc11.2ch.net/test/read.cgi/php/1238958898/
◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0881nobodyさん
2009/06/08(月) 12:22:26ID:SxkJ/CwYhoge-hoge.com<info@example.com>
エラーの内容は、この文字列のバリデーションに失敗、というものです。
サーバーがSMTP認証を行うようになったのに合わせて、
mb_send_mailからPEAR::Mailに変えたところ、このエラーが出るようになりました。
hoge-hoge=>ドットを含まない英字や、ドットを含むがMIMEエンコードした日本語=>ほげ-ほげ.コムでは大丈夫なので
ドットに対して何らかのエスケープをすればよいと思うのですがわかりません。
mb_send_mailが中で対処してくれていたのか・・・
処理方法があればおしえてください。
0882nobodyさん
2009/06/08(月) 16:46:37ID:???file関数でエラー検出するとき、よくあるのは
@file("http://hoge.com") or die("Error!");
というように、or dieがありがちだと思うんですけど、
orのあとって、return falseとかできないんですかね?
どうもエラー出るみたいなんですけど。
関数内でエラー検出し、エラーならfalseを返すというようにするには、そうすればよいでしょうか?
0883nobodyさん
2009/06/08(月) 16:52:54ID:???こんな感じでいけました。
function get2ch()
{
$err = 0;
$lines = @file("htp://2ch.net") or $err = 1;
if ( $err ) { return false; }
return true;
}
でもreturn使えないのはめんどいですね。
0884868
2009/06/08(月) 16:53:33ID:5Fnyhx60どうもありがとうございました
思ったんですが、確認ページから登録ページへの値の渡し方って
$_SESSION['postAry'] = $_POST; ってやって、
登録ページでは
INSERT INTO $table (`var`) VALUE($_SESSION['postAry']['var']);
とかした方がいいんでしょうか?
みんなこんな感じでやってるんですか?
0885nobodyさん
2009/06/08(月) 17:05:27ID:???fileやfopenは失敗するとFALSEを返すから
$lines = @file(filename);
if (!$lines) return FALSE;//失敗すると$lines===FALSEとなる
見たいな感じでも大丈夫だよ
0886nobodyさん
2009/06/08(月) 18:19:14ID:???0887nobodyさん
2009/06/08(月) 18:24:57ID:???真偽を返すもの以外を使うなら普通にif文でいいわな。
0888nobodyさん
2009/06/08(月) 18:33:42ID:9VTPEhgM0889nobodyさん
2009/06/08(月) 19:09:05ID:???通常の動きはAのページで
フォームに入力したデータをPOST送信⇒Bのページへジャンプ
BのページでPOSTされてきたデータをsessionに保存⇒Cのページへリダイレクト
Cのページでsessionに保存されたデータを元にページを表示
この動きをフォームを使わずにCのページを期待通りのページで取得したいんですが
まず、fsockopenでBのページへ直接、POSTデータをfputsして
file_get_contentsとかfileとかreadfileでCのページを読みに行くと
sessionが違くなってしまうためか期待通りのページが取得できないんです
file_get_contentsとかでsessionを引き継いだままページを取得する方法ってありますか?
教えてください偉い人
0890nobodyさん
2009/06/08(月) 19:40:52ID:???0891889
2009/06/08(月) 20:06:04ID:RF6d0qBMvar_dump(apache_request_headers());
コレと
<?php
// ストリームを作成します
$opts = array(
'http'=>array(
'method'=>"GET",
'header'=>"Accept-language: en\r\n" .
"Cookie: foo=bar\r\n"
)
);
$context = stream_context_create($opts);
// 上で設定した HTTP ヘッダを使用してファイルをオープンします
$file = file_get_contents('http://www.example.com/', false, $context);
?>
コレですか?
0892nobodyさん
2009/06/08(月) 20:16:41ID:???0893nobodyさん
2009/06/08(月) 20:20:25ID:???0894889
2009/06/08(月) 20:27:36ID:RF6d0qBMちげーよウェェエン
0896889
2009/06/08(月) 20:38:58ID:RF6d0qBM沢山あるから一括してやりたいんですよ
すぱむじゃねーよ
0897nobodyさん
2009/06/08(月) 21:26:32ID:???0898nobodyさん
2009/06/08(月) 21:59:17ID:???0899889
2009/06/08(月) 22:43:46ID:RF6d0qBM$context_options = array (
'http' => array (
'method' => 'POST',
'header'=> "Content-type: application/x-www-form-urlencoded\r\n"
. "Content-Length: " . strlen($data) . "\r\n",
'content' => $data
)
);
$context = stream_context_create($context_options);
file_get_contents("http://example.com/",false,$context);
var_dump($http_response_header);
$opts = array(
'http'=>array(
'method'=>"GET",
'header'=>"Cookie: foo=var\r\n"
)
);
$context2 = stream_context_create($opts);
$file = file_get_contents("http://example.com/owner.php?mode=update",false,$context2);
var_dump($file);
0900nobodyさん
2009/06/09(火) 00:19:48ID:???GDの処理速度自体は当然変わらない。
PHPスクリプトが動き始めるまでの時間は普通どおり短くなる。どの程度速くなるかは検索でもしてみれ。
ざっと考えたけど、リクエスト数が大きめならスループットは改善すると思う。
リクエストが多いわけじゃないなら、それほど高速化は期待できない。
0901nobodyさん
2009/06/09(火) 04:19:06ID:k9to3OUtリトライがうまく行きません。
-t 1000 と -w 300 を書いたのですが、一度実行されて
終了してしまいます。
wget --save-headers --timeout=600 -t 1000 -w 300 -O $loginhtml --no-cache --no-check-certificate http://localhost/hogehoge/hoge.php?hoge=hoge 2>&1
というような感じで、一回だけなのですが
http://localhost/hogehoge/hoge.php?hoge=hoge
のプログラムはちゃんと実行されていました。
(http://localhost/hogehoge/hoge.php?hoge=hogeが一回終了するまでは60秒かかります。)
スレ違いぽいですが何かアドバイスよろしくおねがいします
0902nobodyさん
2009/06/09(火) 04:29:07ID:7d8qt2bF692 :名前は開発中のものです。:2009/06/09(火) 00:57:34 ID:2fI/sHFo
何言ってんだ。プログラマにまともな精神持った奴がいた試しなんてねえよ。
第一プログラマと精神科なんてほとんどセットなのに今更それを語るとか情弱以下だろ。
0903nobodyさん
2009/06/09(火) 04:44:10ID:???wgetのことは全然詳しく無いので月並みに言えば
オプション減らしたり普通のWebページが取れるか試してみたりして原因の切り分けしてみては?
0904nobodyさん
2009/06/09(火) 06:18:41ID:k9to3OUt書くのを忘れていましたがosはwindowsでしたすいません。
そして、あれからいろいろと試していると
どうやらwindowsだとwgetだけでは無理みたいでして、
タスクスケジューラーを使うとうまくいきました。
ありがとうございました!
0905nobodyさん
2009/06/09(火) 11:27:56ID:???PHP内部エラーではなく、自分で指定した条件
(例えば、DBから取得したデータにバリデートをかけたらfalseだった、とか)
に応じてログファイルに時間やエラー内容等を記録し、
最後にメールに通知してくれるようなのを探しています。
自分で作れないこともないとは思いますが、多くの人に利用されていて、
実用に耐えているものであれば、そちらを使ってみたいと思っています。
0906nobodyさん
2009/06/09(火) 11:53:30ID:???メール送信くらいは既存ライブラリ使ってもいいけど
0907nobodyさん
2009/06/09(火) 12:03:59ID:???PHPでエラーが起きたときにメールでアラートをあげるって事だよね?
PHPでログ出力するんだから同時にメールも送れれば良いと考えるのはわかる。
でもそういう時に俺なら、ログ監視(というかサーバ監視)する別アプリをたてるけどな。
商用ならJP1とかopenviewとか千手とか、フリーならzabbixとか。
0908nobodyさん
2009/06/09(火) 12:28:17ID:???その処理に一回数分かかるとして、処理するのもphpだけだとすると
その処理中にブラウザ閉じられても処理は最後までやってくれるのかお
echoとかはなしとして
0909nobodyさん
2009/06/09(火) 12:42:17ID:1S65lMji開いてリクエスト全部送信したら処理始める
だったような気がする
閉じても処理は続く
0910nobodyさん
2009/06/09(火) 13:30:37ID:OwEGJi1tカスタマイズする必要性が出てきたのですが、
自分は今UTF-8で作ってて、ライブラリもすべてUTF-8です。
そこで質問ですが、古いプログラムに手を加える時
文字コードはどうした方が良いですか?新しくするべきですか?
それともそのままの文字コードで作っていった方が良いですか?
0911nobodyさん
2009/06/09(火) 13:33:06ID:1S65lMji新しくってUTF-8がECU-JPより新しいという概念で文字コード決めてるのか?
0912nobodyさん
2009/06/09(火) 13:42:24ID:OwEGJi1tいえ。フリーライブラリなど、UTF-8の文字コードが多いので
それらを使う時使い勝手が良いと思ったからです。
しかし、手間がかかるし、通常はどうするべきなのか悩んでいます。
0913nobodyさん
2009/06/09(火) 13:45:31ID:???今後会社としてUTF-8で統一するから、カスタイマイズついでにUTF-8にしておこうというのも有りだとは思うけどね。
0914nobodyさん
2009/06/09(火) 14:08:30ID:OwEGJi1tバグやエラーの原因になりますよね。
今のまま拡張していきます。アドバイスありがとうございました。
0915nobodyさん
2009/06/09(火) 14:51:07ID:???毎日1時にcronでプログラムを実行すればいいらしいまでは分かったのですが・・・
下記サイトと同じようなものを作りたいのです。
さくらのレン鯖プレミアム契約してます
ttp://booksales.seesaa.net/
0916nobodyさん
2009/06/09(火) 15:06:37ID:???どういう方法で新刊情報が入手可能かしらないけど、
・アマゾンがRSSを提供してたら簡単。「php rss」とかで検索
・アマゾンAPIを使用するとちょい厄介。「php amazon web service」等で検索
・アマゾンサイトのHTMLから抽出だと知識によっては困難。これは正規表現の知識が必要。
3番目以外は検索すればサンプルが結構出てくる。
0917nobodyさん
2009/06/09(火) 15:26:09ID:???RSS配信されてました
Parser.phpとRSS.phpとかいうスクリプトがあるのでそれ使ってやってみます
ありでした
0918908
2009/06/11(木) 09:56:02ID:KxCPVwHi$id = 1;
if($id === 1)
{
echo "成功";
//ここに数分かかる処理 ・・[1]
}else{
echo "失敗";
//ここに数秒で終わる処理・・[2]
}
?>
というものがあって、今は[1]の処理が終わるまで、
ブラウザにはechoした結果が表示されないと思うのですが、
何よりも先にとまでは行かなくとも、
長い[1]の処理が始まる前に、ブラウザの読み込みの間を無視して
成功の文字を表示させることはできますでしょうか?
考えたのが、コマンドを使って[1]の処理を別に実行させて、
成功の文字を表示させて、というものなんですが、
もっとお手軽な方法があれば教えてください。
>>909さんの言われる通り、ある程度ブラウザを開いてから
読み込み中であっても途中で閉じても、実行されていました。
ここまで処理ができたら、ここから下はこちらでやっておくのでブラウザ閉じようが何しようがおk
みたいな処理ができれば、と
php 5.2.6ですよろしくお願いします。
0919nobodyさん
2009/06/11(木) 10:44:21ID:uw+H+MOKという複雑な計算を行いたいのですが、
^(20*12)の部分で数字が膨れ上がりすぎてINFという文字を返してきてしまいます。
どういう記述を行えば計算することが可能でしょうか。
ご存じのかたいらっしゃいましたらご教授いただけると幸いです。
0920nobodyさん
2009/06/11(木) 10:47:00ID:???0921nobodyさん
2009/06/11(木) 11:48:34ID:JdN0MC7Yセッション(クッキー)、クエリなどありますよね。
セッションはなんか不安定そうで避けてるんですが。
0922nobodyさん
2009/06/11(木) 12:01:57ID:???flush()で文字だけ先に表示させることは可能だけど、ブラウザは閉じたら処理もとまるから、コマンド投げる方法しかないと思うよ。
0923nobodyさん
2009/06/11(木) 12:07:09ID:???渡すデータが4,5個くらいまでだったらGETクエリで良いと思うよ
あと合計件数はそのページをブックマークされると困るし変動する可能性もあるから、
一般的にはリクエスト時に毎回DBとかから合計件数を取得してから必要なデータを抜き出す。
0924nobodyさん
2009/06/11(木) 12:15:06ID:JdN0MC7Y毎回カウントするのが普通なのでしょうか?
あまりGETクエリで渡してるサイト見かけないのでセッションが多いのかと思ったんで...
0925nobodyさん
2009/06/11(木) 12:27:21ID:???別セッションから書換えられるようなモノなら毎回取得しないとまずいんじゃないの?
その「総数」をDBから取得する処理は、速度が気になる位、重い処理なの?
0926nobodyさん
2009/06/11(木) 12:51:22ID:JdN0MC7Yたしかに掲示板とかは書き換わる可能性があるので毎回取得したほうがいいですね。
件数はせいぜい数千件までぐらいです。
問題はトラフィックが非常に多いサイトもあるので少しでもサーバーの負担を減らしたいなと思っての処理です。
0927nobodyさん
2009/06/11(木) 13:24:42ID:???phpファイルをcgiみたいに扱って
コマンドラインでバックグラウンド実行させればいい。
実行したいPHPが、test.phpなら本体のphpから
exec('php test.php &');
みたいにすると、test.phpがバックグラウンドで動く。
0928nobodyさん
2009/06/11(木) 13:28:00ID:???負担が気になるならDBのキャッシュを有効にしたりとかしてもいいし。
ネックにならないような箇所をクオリティを下げてまで最適化するのは推薦はしない。
総件数をどうしてもセッションで保持するならついでにページもセッションの方がいいかもね。
0929nobodyさん
2009/06/11(木) 13:37:12ID:JdN0MC7Yありがとう、参考にさせてもらいます。
みんなそんなには件数もちまわしてないってことですね。
0930nobodyさん
2009/06/11(木) 14:47:08ID:N6MijVRo0931nobodyさん
2009/06/11(木) 14:56:32ID:???0932nobodyさん
2009/06/11(木) 21:29:54ID:M7ie+miUどのようにしたらいいですか?
0から起動するプログラムしか扱ったことがありません。
0933nobodyさん
2009/06/11(木) 21:32:25ID:???0934nobodyさん
2009/06/11(木) 21:33:48ID:M7ie+miU0935nobodyさん
2009/06/11(木) 21:36:37ID:???0936nobodyさん
2009/06/11(木) 21:38:08ID:M7ie+miU0937nobodyさん
2009/06/11(木) 21:42:27ID:M7ie+miUアクセスが同時にきたらメモリは別に生成されるんですか?
共有できるメモリもありますか。 共有できるメモリを初期化せず使い続けることは出来ますか。
0938nobodyさん
2009/06/11(木) 21:44:54ID:???0940nobodyさん
2009/06/11(木) 21:53:04ID:M7ie+miU0941nobodyさん
2009/06/11(木) 21:57:42ID:M7ie+miU無料か追加インストール出来ないサーバーで可能な方法はないですか?
namazuは無料サーバーにも対応していますが、毎回データをロードしてるんですか。
0942nobodyさん
2009/06/11(木) 22:17:27ID:???namazuはインデックスをファイルキャッシュしてるだけ。
0943nobodyさん
2009/06/11(木) 22:24:27ID:???0944nobodyさん
2009/06/11(木) 22:31:53ID:M7ie+miU5MのデータのPHPでロードする時間が0.3秒でした。
小細工なしで直にディスクアクセスしようと思います。
ありがとうございます。
0945nobodyさん
2009/06/12(金) 07:30:39ID:???0946nobodyさん
2009/06/12(金) 10:49:59ID:???0947nobodyさん
2009/06/12(金) 10:58:32ID:???0948nobodyさん
2009/06/13(土) 01:24:21ID:???(是非知ってもらいたい有意義な情報を共有する目的です)
$url="書き込みたい掲示板のフォームのあるページ";
$txt=file_get_contents($url);
そこから先が分かりません。
想像ですが
echo $txt.<script>
var form=document.formname.texterea.value;
form="書き込みたい内容";
form.onsubmit();
</script>
みたいなのでいいんでしょうか?
0949nobodyさん
2009/06/13(土) 01:31:48ID:???0950nobodyさん
2009/06/13(土) 01:32:37ID:???0951nobodyさん
2009/06/13(土) 01:50:22ID:???がある
0952nobodyさん
2009/06/13(土) 03:43:41ID:???つうかスレタイくらい読めよウンコ
0954nobodyさん
2009/06/13(土) 09:06:29ID:nmHEpXwFサイトの上部にランキングへのリンクを貼っているのですが
http://www.rank.co.jp/ (http://maysite.com/?from=jpでランク登録)
http://www.rank.com/ (http://maysite.com/?from=comでランク登録)
http://www.rank.net/ (http://maysite.com/?from=netでランク登録)
http://www.rank.org/ (http://maysite.com/?from=orgでランク登録)
もしランキングからhttp://maysite.com/?from=netでアクセスしてきた場合
http://www.rank.co.jp/
http://www.rank.com/
http://www.rank.org/
http://www.rank.net/
と一番下に自動で置き換わるにはどう書いたら良いでしょうか?
できたらコピペで使えるような答えがほしいです・・
宜しくお願いします。
0955nobodyさん
2009/06/13(土) 09:29:18ID:???0956nobodyさん
2009/06/13(土) 10:56:16ID:???ピューーーーン
あれ?。
0957nobodyさん
2009/06/13(土) 11:22:33ID:???$patterns = array( '/pattarn1/' , '/pattarn2/' );
$replace = array( 'replace1' , 'replace2' );
echo preg_replace( $patterns , $replace , $str );
で、arrayの中のシングルクオーテーションを""にしたら
文字化けして表示されたんだが、これは普通?というか
バグでもなんでもなくて ' じゃないとダメな決まり?
だとしたらどうしてなんだろうか。php5とfirefoxで表示させてみました。
0958nobodyさん
2009/06/13(土) 11:46:07ID:???実際のものが書かれていないとにんともかんとも
0959nobodyさん
2009/06/13(土) 13:56:00ID:???id。スレタイ。
replaceとpatternの詳細。
0960nobodyさん
2009/06/14(日) 00:01:40ID:RcvJrKuJすまそ
マニュアルに書いてあったやつっす
マニュアルのシングルクオーテーションをダブルクオーテーションにしたやつ
↓
<?php
$patterns = array ("/(19|20)(\d{2})-(\d{1,2})-(\d{1,2})/",
"/^\s*{(\w+)}\s*=/");
$replace = array ("\3/\4/\1\2", "$\1 =");
echo preg_replace($patterns, $replace, "{startDate} = 1999-5-27");
?>
イメージ的にはこんな感じで表示される
↓
[::]/[::]/[:][:]
0961nobodyさん
2009/06/14(日) 01:14:32ID:???str_replace(array_keys($hash), array_values($hash), $source)
をやりたいんだが
0962961
2009/06/14(日) 01:19:52ID:OOFPIqTL0963nobodyさん
2009/06/14(日) 01:52:06ID:???0964nobodyさん
2009/06/14(日) 02:28:57ID:???ダブルクォートではエスケープシーケンスと変数が解釈されるゆえ、
\1〜\4がエスケープシーケンスとして解釈されてしまっている。
後方参照では\の代わりに$が推奨されている。
>>961
元の配列と同じ。要素ごとに再走査しなくていいのならstrtr($source,$hash)でいい。
0966nobodyさん
2009/06/14(日) 08:55:12ID:???違いで調べてみたら、"は特殊文字も解析される
みたいなことが描いてあった・・
なんか前に見た内容だったけど完全にわすれてた、
'と"は大体同じみたいな印象だけが先走ってしまった情けない・・
0967961
2009/06/14(日) 10:45:59ID:OOFPIqTLおおおまさにそれだ
ありがとう!!
0968nobodyさん
2009/06/15(月) 03:03:27ID:3Vzgmpynimagecreatefromstring関数で壊れたファイルを開いてしまうとプログラムが途中で終了してしまうようなのですが、
何か対策することはできませんでしょうか?
0969nobodyさん
2009/06/15(月) 09:08:11ID:???0971nobodyさん
2009/06/15(月) 10:29:06ID:???0973nobodyさん
2009/06/15(月) 13:52:21ID:???0974nobodyさん
2009/06/15(月) 14:05:02ID:???0975nobodyさん
2009/06/15(月) 14:41:08ID:yF6IPEz8HTMLのフォームに記入させて送信ボタンを押したらメーラが開いて
bodyの中にその内容が入っているという状態にしたいのですが、
auのケータイだとURLが正しくありません、docomoだと無効なデータを受信しました(302)と表示されます。
formのactionに下のようなphpファイルを指定して、POSTデータを受けて順番を組み立てて、headerでメーラを開こうと思っています。
各変数
header("Location:mailto:" . $mailaddress . "?subject=" . $subject . "&body=" . base64_encode($body));
exit;
PC(メーラはbecky)では問題ないようです。
ケータイではlocationでmailtoは使えないんでしょうか、それとも使えるけど使い方が違うんでしょうか。
フォームだけでデータを送る方法ではなく、メーラに入力済みにしておく方法で他に実現することができるのであれば教えてください。
ちなみにフォームのあるページもphpファイルもShiftJISで作っています。
0976nobodyさん
2009/06/15(月) 14:43:47ID:???ってか、今のブラウザってこれで動くんだなすげぇ・・・
mailtoは普通リンクじゃね?
<a href="mailto:アドレス?パラメータ">ここをクリック!</a>
のように使うもんでしょ
0977975
2009/06/15(月) 15:02:36ID:???他のまともな方法で同様のことが実現できれば一番いいんですが思いつきません。
最悪、actionの飛び先で<a href="mailto:***@***.com">メール</a>するぐらいしか。
0978nobodyさん
2009/06/15(月) 15:09:13ID:???何がしたいの?
何でheaderでmailtoが使いたいわけ?
0979975
2009/06/15(月) 16:16:28ID:???976さんの最初の2行を読む限りこの方法は普通ではないとのことでしたので。
>何でheaderでmailtoが使いたいわけ?
使いたいわけではありません、この方法でできないので他の方法はないのでしょうか?ということです
submit等のボタンを押したらメーラが開いてフォーム内の内容が本文の中に入ればそれでいいんです
phpを使う理由はbase64でエンコードしたいからです、ケータイ相手なのでJavascriptは使えません。
0980nobodyさん
2009/06/15(月) 16:17:50ID:???<a href="mailto:***@***.com">メール</a>
の使い方が普通なんだって言ってるの
レス数が950を超えています。1000を超えると書き込みができなくなります。