【PHP】下らねぇ質問はここに書き込みやがれ 34
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/12/08(金) 04:22:54ID:???まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 33
http://pc8.2ch.net/test/read.cgi/php/1164209222/
◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ http://pc8.2ch.net/php/subback.html
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで http://pc8.2ch.net/db/subback.html
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
しかし初心者が目的も定めずに速度を気にしたところでほとんど意味は無いぞ
0430nobodyさん
2006/12/12(火) 16:49:59ID:???パターン1
execute.phpからAへ飛ばす
処理が終わったら行の終わりにBへ飛ばす記述
処理が終わったら行の終わりにCへ飛ばす記述
ぱたーん2
execute.phpというファイルに
<?php
require('A.php'); Aの行の終わりに「Aの処理が終了した」変数Aをセット
require('B.php'); 変数AがTRUEならBを処理→変数Bをセット
require('C.php'); 変数CがTRUEならB
0432nobodyさん
2006/12/12(火) 16:58:42ID:???0434nobodyさん
2006/12/12(火) 17:02:14ID:???0435PHP出版
2006/12/12(火) 17:02:35ID:???eval("include('B.php')");
0436nobodyさん
2006/12/12(火) 17:05:14ID:???誰が言ってるんだよ。お前が>>420ならちゃんと名前欄に入れろよ。
そもそも>>420がきちんとレスアンカーをつけないから混乱が起き
てるんだろうが。>>420が>>419にケチつけてるのか、>>413にケチ
つけてるのかわかんねぇよ。
0437nobodyさん
2006/12/12(火) 17:05:27ID:apzoBj1lファイルを作成するプログラムを作っているのですが、
$a = $_POST['a'];
$b = $_POST['b'];
$c = $_POST['c'];
みたいなかんじで変数でごちゃごちゃになっています。
もうちょっと綺麗な書き方あったらぜひ教えてください。
0440nobodyさん
2006/12/12(火) 17:12:58ID:???そうか?オレは>>419に対してだと思っていたが。
まぁ、とにかくレスアンカー必須のほうが誤解もなく安全だろ。ということでみなさ
ん、マナーとしてレスアンカーはきちんとつけようね。
0442nobodyさん
2006/12/12(火) 17:17:15ID:???配列とか。
なんかプログラマって、いちゃもんつける人多いよね。
理系だから、完全な解を求めたがるような印象…
0443nobodyさん
2006/12/12(火) 17:18:56ID:???$key = array($_POST['a']=>'a',$_POST['b']=>'b',$_POST['c']=>'c');
echo $key['a'];
0444nobodyさん
2006/12/12(火) 17:20:08ID:apzoBj1lさっそく教えていただいた配列でやってみたいと思います。
extractもマニュアルでひいてきます。
0446nobodyさん
2006/12/12(火) 17:23:16ID:8yL3wR52$file = file("aaa.txt");
ファイルが開けない原因を考えているのですがわかりません。
どなたかアドバイスお願いいたします。
0447nobodyさん
2006/12/12(火) 17:24:24ID:???0449nobodyさん
2006/12/12(火) 17:41:25ID:8yL3wR52やはりパーミッションですよね。
windowsでテストしているのですが、この環境でlinuxと同じように
パーミッションをいじくる方法ってありませんか?
0450nobodyさん
2006/12/12(火) 17:47:39ID:???マニュアルだとnullや0はFalseを返すと書いてあるのになぜでしょうか?
0453nobodyさん
2006/12/12(火) 18:07:44ID:???クエリーから送った0だと空扱いにならないんですがなぜでしょうか?
この記述はAが出力されますが、クエリ文字を$aにおくるとBになるんです。
$a = 0;
if (empty($a)){
echo "A";
}else{
echo "B";
}
0454nobodyさん
2006/12/12(火) 18:40:22ID:???0458453
2006/12/12(火) 19:08:03ID:???なるわけないですね。
0460nobodyさん
2006/12/12(火) 19:14:43ID:???0461411
2006/12/12(火) 19:26:37ID:j1klqrWEというエラーが出ていて、php.iniを修正したら解決しました。
お答えくださった方々、ありがとうございました。
0464nobodyさん
2006/12/12(火) 22:23:01ID:aSyT8QN3http://pc8.2ch.net/test/read.cgi/php/1164209222/888
888さんの言うとおりだとすれば、
今現在ブラウザから第三者がUPした任意のファイルをダウンロードできるサービスをやってるところは
全てブラウザによっては脆弱性をはらんでいる、
ということでしょうか?
さすがに大手ではそれはないような気がしますが、
何か回避策ってありますか?
個人的に思いついたのは、強制的に圧縮処理してからダウンロードさせる、
という方法ですが、これ以外に方法はあるでしょうか?
0465nobodyさん
2006/12/12(火) 22:34:08ID:???0468nobodyさん
2006/12/12(火) 22:54:08ID:???全てはダウンロードする側の自己責任。
0470nobodyさん
2006/12/12(火) 23:02:59ID:???あながち完全にスレ違いってわけでもない
0471nobodyさん
2006/12/12(火) 23:16:22ID:???を尋ねてくる輩まで全部世話しないといけなくなるぞ。
>>464の質問にはPHPに絡むと思われる記述はどこにもないじゃん。
0472nobodyさん
2006/12/12(火) 23:42:04ID:Fq05kJcv自分でファイルに書き出して、セッション管理する方が
サーバーの設定に惑わされることもなくていいように感じるけど。
0473nobodyさん
2006/12/13(水) 00:01:48ID:???0474ID出し忘れてました
2006/12/13(水) 02:35:11ID:e6aGkkm7アクセスしてきた人に対して一時的に「メンテナンス中」と表示するには
どうしたらいいんでしょうか? よく大手サイトなどでメンテナンスのときになってるようにしたいです。
イメージとしては、管理者(自分)だけはいつも通りサイトにアクセスできるけど、
一般の訪問者はどのページにアクセスしようとも、
mod_rewriteか何かで、メンテを知らせるページに強制ジャンプさせる…みたいな感じです。
0475nobodyさん
2006/12/13(水) 03:04:57ID:???header('Location: メンテナンス中のページ');
die();
}
0476nobodyさん
2006/12/13(水) 04:28:27ID:e6aGkkm7なるほど、その手がありましたか!! 意外と盲点だった・・・。
大規模サイトもそんなシンプルな手法なのでしょうか?
0477nobodyさん
2006/12/13(水) 04:37:43ID:???0478nobodyさん
2006/12/13(水) 04:41:01ID:???yahoo並、とかいうあいまいな基準を出されても分からないから数値でよろ。
0480nobodyさん
2006/12/13(水) 06:02:04ID:???少なくとも、1サイトで「ロードバランサ+Webサーバ2台+DBサーバ1台」
という構成が、大規模サイトの最低基準だと仮定すると??
0482nobodyさん
2006/12/13(水) 07:18:26ID:???問題点
1.耐障害性の欠如
分散先のサーバの障害検知は原則として不可能である。
そのため、分散先のサーバのうちの1つだけがサービス不能な場合等に復旧が遅れがちである。
2.分散先サーバの通信継続性
接続ごとに接続先が違うと、接続の継続性が求められる
サーバの場合に問題が起きる可能性がある(暗号化通信など)。
3.分散先サーバの同期
分散サーバのコンテンツの内容が同一でないと、
接続に問題が起きる可能性がある(Webサーバでのリンクなど)。
4.DNSキャッシングの情報更新の際に生じる時差
5.トラフィック負荷を分散する際の予期せぬ偏り
1〜5の問題があるからロードバランサーなんだろうw
0483nobodyさん
2006/12/13(水) 07:30:45ID:???見栄を張りたいのはわかるが、「DNSラウンドロビンの意味を調べに行ったら
偶然カコイイ説明を見つけたよ!みんな聞いてよ!」という文とともに引用であ
ることくらいは書こうね^^
http://ja.wikipedia.org/wiki/DNS%E3%83%A9%E3%82%A6%E3%83%B3%E3%83%89%E3%83%AD%E3%83%93%E3%83%B3
0484nobodyさん
2006/12/13(水) 07:40:39ID:???今まで関わったWeb系で一番規模が大きいのは、
Webサーバー6台、DBサーバー2台、メールサーバー1台、SSL処理サーバー1台、ロードバランサー1台だった。
(大規模サイトかわからんがな。ちなみに携帯メインサイト PCサイトもあるけどあくまでも携帯中心だった)
PHPが使われてたのはPCサイトだけだったけど・・・
Perl60% Java30% PHP10%なサイトだった。最初はJavaだけだったはずが、PerlとPHPもやることに/ ,' 3 `ヽーっ
0485nobodyさん
2006/12/13(水) 07:42:41ID:???>1〜5の問題があるからロードバランサーなんだろうw
他人の文章を丸パクリしたくせに生意気なこと言える立場かよw
0487nobodyさん
2006/12/13(水) 07:59:40ID:???うわぁw こいつ完全に開き直ってますwww
>わざわざ検索されたんですねw
>乙ですw
余裕あるように見せても、お前、実際かなり恥ずかしいぞwwwww
0491nobodyさん
2006/12/13(水) 09:59:21ID:???0492nobodyさん
2006/12/13(水) 10:10:40ID:???煽りにいちいち反応するなよ。餓鬼じゃあるまいし。
0493nobodyさん
2006/12/13(水) 11:33:34ID:teIa09dB$a = array("あ",0,"い","う","え","お");
$b = array("か",7,"き","く","け","こ");
$c = array("さ",9,"し","す","せ","そ");
$d = array("た",1,"ち","つ","て","と");
$e = array("な",5,"に","ぬ","ね","の");
$f = array("は",6,"ひ","ふ","へ","ほ");
という$a〜$fの配列を、数字順に$a,$d,$e,$f,$b,$cという風に
並び替えたいのですが、スマートに書けません。
どんな書き方が負荷のかからないスマートな書き方なんでしょうか?
0494493
2006/12/13(水) 11:35:08ID:teIa09dB$New_list = array();
$n = 0;
while(count($list) > $n){
if($n){
$f = 1;
$m = 0;
while($f){
$x = $list[$n][1];
$y = $New_list[$n - $m - 1][1];
if($x < $y){
$New_list[$n - $m] = $New_list[$n - $m -1];
$New_list[$n - $m - 1] = $list[$n];
if($n == $m){ $f = 0; }
}else{
$f = 0;
$New_list[$n - $m] = $list[$n];
}
$m++;
}
}else{
$New_list[$n] = $list[$n];
}
$n++;
}
0495nobodyさん
2006/12/13(水) 11:44:20ID:???sortすればいいだけでは?
0496nobodyさん
2006/12/13(水) 11:53:06ID:???使い古された論法だが、おまいもいちいち反応してるやんけ。
>>493
usort($list, cmp_arr);
function cmp_arr($a, $b) {
return $a[1] < $b[1] ? -1 : $a[1] > $b[1];
}
0498nobodyさん
2006/12/13(水) 12:06:53ID:BBaxillB英数字の文字列を取り出したいのですが、うまくいきません。(処理されない)
$file_array=file("$filename.txt");
for($i=0; $i < 10; $i++)
{
$str = mb_ereg("[a-zA-Z][a-zA-Z0-9]*",$file_array[$i]);
if($str)
{
$gakuseki = $str;
echo "$gakuseki"<br>\n;
}
//その他の項目
}
このような感じで、Eから始まる文字列を抜き出す処理を加えると、
何も処理されなくなってしまいまして。。。
よろしければ、お教え願いたく。
0499nobodyさん
2006/12/13(水) 12:19:07ID:bSWpJk+Qプロットに適当な文字列を表示することってできるんでしょうか?
プロットの値を表示することしかできないんでしょうか?
返答、お願いします。
0500nobodyさん
2006/12/13(水) 12:30:37ID:???$lines = new ArrayIterator(file('file.txt'));
for ($lines->rewind(); $lines->valid(); $lines->next()) {
mb_ereg("[a-zA-Z][a-zA-Z0-9]*", $lines->current(), $matches);
list($str) = $matches;
echo ($str ? $str."<br />\n" : '');
}
0501493
2006/12/13(水) 12:38:04ID:teIa09dB$x = 1;
usort($list, cmp_arr);
function cmp_arr($a, $b) {
return $a[$x] < $b[$x] ? -1 : $a[$x] > $b[$x];
}
と書き換えましたが正しく動作しませんでした。
return $a[1] < $b[1] ? -1 : $a[1] > $b[1]; の数字部分は変数ではなく
数字を入れないとダメなんでしょうか?
0502nobodyさん
2006/12/13(水) 12:42:54ID:???0503493
2006/12/13(水) 12:43:48ID:teIa09dB$x = 1 を書く位置が悪いんですね・・・ すみません
0504nobodyさん
2006/12/13(水) 12:52:18ID:???0505nobodyさん
2006/12/13(水) 12:53:37ID:???Iterator使うならforeachしようよ。そしてforeach使うなら、最初からただのarrayでおk。
0506nobodyさん
2006/12/13(水) 14:09:34ID:???で、構成は分かったけど、それでユーザー数とかPVとかはどれくらい?
あと1日のトラフィック量とか、そういうのが分からないと
サイトの規模が分からないでしょう。
0507nobodyさん
2006/12/13(水) 14:11:45ID:???使いたい人は使えばいい。
0508nobodyさん
2006/12/13(水) 14:16:06ID:???0509nobodyさん
2006/12/13(水) 14:44:06ID:???0510nobodyさん
2006/12/13(水) 14:46:56ID:???0511nobodyさん
2006/12/13(水) 14:55:56ID:???なにこいつら?たかが三項演算子くらい使いたいところで使えばいいじゃん。
三項演算子くらいで文句言うのはキモイ。
>>505
まぁ確かにOOPも理解できないお前にはIteratorは一生無縁だろうな。
0512nobodyさん
2006/12/13(水) 15:04:53ID:???php 5.1
mysql 5.0
apache 2.0
zend framework 2.0
AJAX系の非同期通信で、エラーが出たときに、画面を遷移させたいのです。
ただリクエストの戻り値の行き先を<div>タグ内にしていて、
実行すると、エラー画面が、その<div>に全部入ってしまいます
現状、 header("Location: error/index"); みたいなことしています
(zend controller無しだと、headers already sent みたいなエラーで怒られますが…)
PHP内で完結して、画面を遷移or移動させる方法って、他にありませんでしたっけ?
(JavaScript込みなら方法はあるのですが、安全性を求められている所なので使えません…)
0513nobodyさん
2006/12/13(水) 15:05:26ID:???PHPは言語自体がOOP向きじゃないから>>505みたいなカスが出てきても仕方ないと思うが。
自分が使えないからって
>ただのarrayでおk
とか言いだすのはひどすぎるけどな。
0514nobodyさん
2006/12/13(水) 15:10:53ID:???もうちょっと冷静にいこうよ。
0515nobodyさん
2006/12/13(水) 15:12:01ID:???>・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ http://pc8.2ch.net/php/subback.html
オレはsymfony派だからZFは使ったことないが
http://framework.zend.com/manual/ja/zend.controller.rewriterouter.html
が参考になるんじゃないの?
0516515
2006/12/13(水) 15:18:54ID:???http://framework.zend.com/apidoc/core/Zend_Controller/Zend_Controller_Action.html#_forward
0517nobodyさん
2006/12/13(水) 15:30:00ID:???のですが。(文字列を取り出した段階では文字化けしていません)
$get_id = substr($array_id,0,16); ・・・・ex A0103360
$convert_id = mb_convert_kana($get_id,"a");
このようにして取り出した全角英数字の文字列を半角に変換したいのですが
文字化けしてしまいまして。どうすれば正常に変換されるでしょうか?
0519nobodyさん
2006/12/13(水) 15:35:05ID:???ありがとう〜〜〜 516のメソッドのページは見たことありませんでした〜〜 熟読してみます〜〜
……………やっぱPHPで、ページ遷移させる方法ってのありませんでしたっけ?
0520517
2006/12/13(水) 15:40:10ID:???回答どうもです。
mb_substr()にしてみましたが、文字化けがなおりませんでした。
ほかに手はないものでしょうか?
0521nobodyさん
2006/12/13(水) 15:41:12ID:???エラーが発生したときにエラー処理用のActionに処理を移せば
いいかと。
class IndexController extends Zend_Controller_Action
{
public function indexAction()
{
//エラーがあったら他のActionに処理を移す
if ($error) $this->_forward('IndexController', 'errorAction');
}
public function errorAction()
{
//エラー処理
}
}
0522517
2006/12/13(水) 15:47:48ID:???0524nobodyさん
2006/12/13(水) 15:59:17ID:???らこれで変換してから書き込んでください。
<?php
$string = <<<END
//code
END;
$string = preg_replace('{ }', ' ', $string);
$string = preg_replace('{\t}', ' ', $string);
echo $string;
できれば誰かJavaScript版を作ってくれると使いやすくていいと
思うんだけど。
0526nobodyさん
2006/12/13(水) 16:31:47ID:???preg_replace("/pattern/", "replacement", "strings");
0527nobodyさん
2006/12/13(水) 16:32:05ID:???BCC送信のように、複数宛先を一括送信する場合は、配列にメールアドレス
を入れて、mail関数の処理をforで回すという考えでいいでしょうか?
また、特別なソフトを使わない場合、PHPでメール送信するには
mail関数やsendmailを使う以外無いのでしょうか?処理速度が心配です。
0528nobodyさん
2006/12/13(水) 16:34:25ID:???0529nobodyさん
2006/12/13(水) 16:36:04ID:???返信ありがとうございます〜 勉強させて頂きました感謝です。
結論から言うと、
$this->_forward('IndexController', 'errorAction');
で、確かにページは出ました。 「<div>タグ」の中に;;
クライアント XMLHttpRequestを送信
↓
鯖 forwardで違うアクションのページを出力
↓
クライアント あ、戻り値?何? XMLHttpRequestでしょ? タグの中にinnerHTMLねw
戻り値が何であろうと、根こそぎjs上で指定された場所っぽいです
アクションは、途中で変わったので、正規アクションが動く前に処理できる所まで着ました。
もう少しの所まで来た気がします。
■ このスレッドは過去ログ倉庫に格納されています