【PHP】下らねぇ質問はここに書き込みやがれ 68
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001nobodyさん
2008/05/03(土) 22:52:16ID:???PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは970が立ててください立たなかった場合は980よろ
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 67
http://pc11.2ch.net/test/read.cgi/php/1207863515/
◆質問する時の注意
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を必ず明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
・偽者防止に必ずIDを表示(メール欄に何も記述しない)、若しくはトリップをつける事。
◆質問後の注意
・偽者防止に必ずIDを表示(メール欄に何も記述しない)、若しくは質問時のトリップをつける事。
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0838nobodyさん
2008/05/22(木) 14:51:56ID:???「-0」と返ってくる。
0の時はマイナスが要らないのだけど、どうすりゃいいの?
正規表現で-0だったらreplaceで0にするとかやるの?
どうカクのよ
0841nobodyさん
2008/05/22(木) 20:30:37ID:pnGKUbbW半角スペースでsplitかexplodeしろって話かな…
0846nobodyさん
2008/05/22(木) 23:24:56ID:???そのまま返すのと、&を付けて参照で返すのと、違いってありますか?
例えば、以下の2つの関数で戻り値に何か違いはあるでしょうか?
function &bar1(){
$obj = new Foo();
return $obj;
}
function bar2(){
$obj = new Foo();
return $obj;
}
0848nobodyさん
2008/05/23(金) 00:12:31ID:???0849nobodyさん
2008/05/23(金) 00:20:03ID:???-0.8 が -0 になるって時点で、小数部の桁数は0 なのは自明じゃないかって思ってたんだけど、
そういう理解でいいのかな。
どうもありがとう。
0850nobodyさん
2008/05/23(金) 00:56:38ID:AusPFJ9q$res = mysql_query$sql,($conn);
if(mysql_num_rows($res)==1){
echo "そのURLは登録できません";
}
と言うように、MySQLで禁止URLリストの中を検索して
URLが一致すればエラーメッセージを出したいです。
ただ、URLの書式が「http://hogehoge.com」「http://hogehoge.com/」
と、/を付けるか否かだけでも違うURLと見なされてしまいます。
どのようにしてURLチェックをすればよろしいのでしょうか?
0851nobodyさん
2008/05/23(金) 01:00:17ID:???0852nobodyさん
2008/05/23(金) 01:01:00ID:???0853nobodyさん
2008/05/23(金) 01:11:26ID:???>>849がおそらく想定しているであろう仕様の範囲内だったら、>>839でも問題ないです。
ただ、「-0だったら0にする」という目的に対しての>>839は、
後々いろんな副作用に悩まされるかもね。と言いたかったわけです。
0854nobodyさん
2008/05/23(金) 01:20:04ID:h/rWmUOtどうしたらよいんでしょうか? 他には大文字記号が文字化けする。
エンコードはSJIS→SJIS
0855nobodyさん
2008/05/23(金) 01:38:00ID:???どうもありがと。
良く見たら質問がおかしいな。 -0.8 だったら -1になるし。-0.08の間違いかね。
>>854
何がどう渡らないのか、サンプルコード載せたら?
0856nobodyさん
2008/05/23(金) 01:47:42ID:kzFC2aJn$strPsList = passthru('/bin/ps ax');
?>
linuxのpsコマンドの結果を変数に代入する処理です。
変数へきちんと結果が格納されるのですが、
コマンドラインで上記のファイルを実行すると
ターミナル上にもpsコマンドの結果が表示されて困ってます。。
どうすれば解決するでしょう??
0857nobodyさん
2008/05/23(金) 01:47:51ID:1yGfTtCFって何のエラーを言っているんですか?
0858nobodyさん
2008/05/23(金) 01:55:41ID:nxQoYtgSecho "<input type=\"hidden\" value=\"htmlspecialchars($_POST['var'])\" />";
っていう表現、できないんでしょうか?
0861nobodyさん
2008/05/23(金) 02:54:11ID:h/rWmUOtコンパイルファイルが見つからない。
つまり構文エラー
0862nobodyさん
2008/05/23(金) 02:57:03ID:h/rWmUOtコンパイルされてない
0863nobodyさん
2008/05/23(金) 03:06:14ID:???0865nobodyさん
2008/05/23(金) 08:43:10ID:???echo "<input type=\"hidden\" value=\"".htmlspecialchars($_POST['var'])."\" />";
0866nobodyさん
2008/05/23(金) 13:40:51ID:z2YBLdy6Googleの検索結果のようにxx件中 yy-zz件表示というのをやりたいのですが、
xx件中はPager::numItems()で解決したのですが、現在の表示位置(yy-zz)を返してくれる関数がありませんでした。
何かうまい具合に解決する方法を教えて下さい。
0867nobodyさん
2008/05/23(金) 14:14:41ID:Yvld99GN0868nobodyさん
2008/05/23(金) 14:20:25ID:???0869nobodyさん
2008/05/23(金) 14:21:08ID:???0870nobodyさん
2008/05/23(金) 15:36:18ID:zGb3lfL6web経由でfaxを送信したいのですが、
どのようにすればいいですか?
fax機とwebサーバー機は接続されています。
webサーバー機から通常のfax印刷で送信することは可能です。
大変申し訳ないのですが、急いでいますので詳しく教えて下さい。
0871nobodyさん
2008/05/23(金) 15:44:57ID:???急いでるんだ、早く答えろ。
0872nobodyさん
2008/05/23(金) 15:45:05ID:???0873nobodyさん
2008/05/23(金) 16:13:21ID:zGb3lfL6faxとサーバーはLANで接続されていて、
例えばサーバーから印刷する際に、プリンターをfax機(複合機)を選べば、
電話番号の画面が出て、入力するとfaxが普通に送れます。
それを、このwebサーバーにつながっているブラウザクラインとから、
ボタンを押すと、特定のデータをfaxとして送信できる、とまぁこういう訳です。
宣しくお願いします。結構急いでいます。
0874nobodyさん
2008/05/23(金) 16:19:57ID:???教えてもらえばいいと思うんですよね。
0875nobodyさん
2008/05/23(金) 16:21:52ID:zGb3lfL60876nobodyさん
2008/05/23(金) 16:23:55ID:???時間は金で買うもんだよ、坊や
0877874
2008/05/23(金) 16:31:42ID:???とにかく急いでるんですが困っています。急ぎですので早急に回答お願いします」
という質問だけのスレなら、確かに存在意義を全否定したことになるんでしょうけど。
0879nobodyさん
2008/05/23(金) 16:49:54ID:???>870がどう考えてるか知らんが、結構大変
>872が正解だよ
0880nobodyさん
2008/05/23(金) 17:01:25ID:zGb3lfL6ただやりたいことは、
サーバー側でブラウザからのリクエストデータに特定のキー(fax送信要求コマンド)と値(fax番号)が入っていたら、
サーバーに繋がっているネットワーク対応のfax複合機にfaxをしろと
命令をphpからだす方法が分かればいいだけですので、なんとかなりませんでしょうか?
0881nobodyさん
2008/05/23(金) 17:12:19ID:zGb3lfL6本日行われたクライアントの本社の沢村という店舗運営統括部長が、
どうせなら本社のパソコンからボタン一発で各店舗にfaxを流せないか、
という一声でこうなりました。
「全部、電線で繋がっているんだから、後は電気信号をうまく出せばいいだけの問題だろ?」と言われて、
「確かにそうですね。来週のリリースに乗っけておきます」と返事をしてしまったのですが、
帰ってやり方がわからず困っています。
0882nobodyさん
2008/05/23(金) 17:18:51ID:???0883nobodyさん
2008/05/23(金) 17:26:10ID:???ちなみにできないと思っても最初の返答は一緒だが
0884nobodyさん
2008/05/23(金) 17:44:42ID:???必死なのは伝わるけど名前出してリアルを再現しても答えてもらえるというわけじゃないよ。
>webサーバー機から通常のfax印刷で送信することは可能です。
これがカギでしょ。どういうコマンドを裏で叩いてるかわからないことにはどうしようもない。
>>883
持ち帰りは情報流出になりかねないからどんな些細なことでも禁止されてるんじゃない?
0885nobodyさん
2008/05/23(金) 17:53:47ID:???あ、クライアント常駐の派遣やSESだとそうだね
その場合は単純に検討してみますでいいんだけど
帰ってやり方が云々って書いてあるから、社外打ち合わせの場の話かと思って
0886nobodyさん
2008/05/23(金) 17:54:01ID:???0887nobodyさん
2008/05/23(金) 17:59:06ID:???まぁ、上司にでも話して、無かったことにしてもらうのが一番だと思うけど。
0888nobodyさん
2008/05/23(金) 18:08:31ID:???Windowsサーバ使ってCOM経由でPHPから通常印刷やFAX送信したことはある。
土日にちょちょいと組めばいいと思うよ。
WebサーバがWin以外だと
>webサーバー機から通常のfax印刷で送信することは可能です。
ここをどうやってるのかによるね。
あとfax機がメール受信をFAX受信としたり、FAX送信のゲートウェイ機能
を持つものもあるから、場合のよっては利用できるかも。
0889nobodyさん
2008/05/23(金) 18:12:57ID:pC5B1H2j負荷軽減のために、元画像が更新されていなければブラウザにキャッシュさせたいと思ってます。
で画像の更新日時を取得して、日付フォーマットを整形した後
header('Last-Modified: '.$this->_origin_date, true);
header('Content-type: image/jpeg');
header('Content-Disposition: inline; filename="'.$this->_origin_name.'"');
で画像を出力しています。
リクエストヘッダーには
If-Modified-Since: Mon, 21 Apr 2008 14:47:20 GMT
レスポンスヘッダーには
Last-Modified: Mon, 21 Apr 2008 14:47:20 GMT
となっていて、IEのキャッシュを見てもちゃんとファイルがあって
最終更新日は送った日になっています。
でも、二度目のリクエストでレスポンスコードが304ではなく200になっています。
ということはキャッシュを読まずに、サーバーから読んでるってことですよね?
画像のURLが
thumb.php?path=/path/to/origin/image.jpg&w=105
と動的というか、?でクエリーが付いてるからでしょいうか?
また、なんか他にヘッダーが必要いなのでしょうか?
キャッシュする方法があったら教えてください。
お願いします。
0890nobodyさん
2008/05/23(金) 18:25:47ID:???.NET最高だぜ。
0891nobodyさん
2008/05/23(金) 18:33:20ID:???Cache-Control に no-cache とか入ってんじゃない。PHPだとデフォルトで付くっぽいし。
ブラウザ側でヘッダ確認したら。
0892889
2008/05/23(金) 19:29:11ID:pC5B1H2jありがとうございます
header("Pragma: public");
header("Cache-Control: public, max-age=604800");
こんなヘッダーを送ってみたり
いろいろ試してみましたが200のままです。
ヘッダーはこんな感じです
HTTP/1.1 200 OK
Date: Fri, 23 May 2008 10:20:35 GMT
Server: Apache
X-Powered-By: PHP/5.1.6
Pragma: public
Cache-Control: public, max-age=604800
Last-Modified: Thu, 03 Apr 2008 14:08:35 GMT
Content-Length: 2829
Content-Type: image/jpeg
レスポンスコード304がキャッシュから読んでて、200だとキャッシュから読んでないって認識はあってますよね?
0894nobodyさん
2008/05/23(金) 21:13:10ID:7Wk9ZZ+bちなみにそこに直接飛ぼうとした場合
http://www.example.com/hoge も http://www.example.com/hoge/ もどちらも403
0895nobodyさん
2008/05/23(金) 21:14:36ID:???0896nobodyさん
2008/05/23(金) 22:53:10ID:nxQoYtgS確認画面でhtmlspecialchars()や、登録画面でaddslashes()をかけたりしますか?
しょうもない質問ですみません、ちょっとアンケートというか、教えてください
0897nobodyさん
2008/05/23(金) 22:58:38ID:???バリデーションをやって数値である事を確認する
その後はエスケープはしないな
0898896
2008/05/23(金) 23:17:18ID:nxQoYtgS(こんな言葉も知らないですみません、一応調べたんですが。。)
確認画面で数値(期待した型)でなかったら登録させない処理と考えてOKですか?
0899nobodyさん
2008/05/23(金) 23:37:24ID:???もしそれらが同じ名前のセッション変数を使っていたら、
他のアプリからもその変数が見えてしまうのでしょうか?
0902nobodyさん
2008/05/24(土) 00:07:18ID:???設定にもよるけど、デフォルトだと見えたと思う。
セキュリティ上の問題じゃなくて、混在しなければ良いだけなら、
http://www.php.net/manual/ja/function.session-set-cookie-params.php
で使用するCookieにパスを指定する。
0903nobodyさん
2008/05/24(土) 09:43:14ID:???どっちのほうが使い勝手いいかな?
0904nobodyさん
2008/05/24(土) 09:58:51ID:???0905nobodyさん
2008/05/24(土) 13:10:26ID:???$test = array( new Human, new Human);
ちゃんと動いたんだがこの方法であっている?
もっと適切な方法があったりする?
0906nobodyさん
2008/05/24(土) 13:36:08ID:???0907nobodyさん
2008/05/24(土) 13:58:51ID:???0908nobodyさん
2008/05/24(土) 14:08:17ID:???0909mx
2008/05/24(土) 18:06:52ID:???すべての串に共通してあらわれる関数はありますか?
あれば教えてください。
アクセスを拒否したいです。
0910nobodyさん
2008/05/24(土) 18:09:45ID:???0911nobodyさん
2008/05/24(土) 19:01:13ID:???串制限やアクセスコントロールは PHP 側でせずに、
可能でしたら Apache, .httaccess 側でまとめて面倒見た方がよいと思います
0913nobodyさん
2008/05/24(土) 19:30:52ID:???例えば、携帯電話からのアクセスを PHP で振り分ける、
といった情報が検索するとすぐに見つかると思いますが、
PHP でなく .htaccess (Apache) を使っても同じ振り分けが出来ます
1. PHP で振り分ける方法
2. .htaccess で振り分ける方法
アクセス禁止を例えに、かなりおおざっぱに説明してみますと、
1. の場合は、Apache で HTTP Request を PHP (アプリケーション層)に渡し、
手渡された PHP 側で処理して返すというフローになります
2. ですと、HTTP Request は PHP に渡さず Apache で処理してしまって
返すフローになるため、1. に比べて PHP 処理分だけ処理が軽く済むわけです
「.htaccess」 「プロキシ」 「アクセス制限」 といったキーワードで検索すれば
該当する情報が見つかると思いますので参考までっにっに
0914913
2008/05/24(土) 19:36:18ID:???.htaccess を使ったアクセスコントロールの使用ですが、
PHP を置こうとしている場所によっては使えないかもしれません
契約しているレンタルサーバ、ISP のウェブサイトスペース、
ウェブサイトスペースのレンタル等、サービスの提供形態や内容で、
--------------------
A. PHP を置くサーバが Apache を使っていること
B. .htaccess の使用が許可されていること
--------------------
最低でも上記 2点はクリアしている必要があると思います
0915nobodyさん
2008/05/24(土) 19:48:05ID:???感謝します。
0916nobodyさん
2008/05/24(土) 22:52:29ID:???<input type="text" name="title">
<input type="text" name="toukousya">
<input type="text" name="comment">
・
・
・
以下いろいろ。
と言うフォームがあります。
これをphp側で受け取って、「画像ファイルでなければSJISにエンコードする」などの処理をする場合はどうしたら良いのでしょうか。
元々は
&ReadParse;
while (($key,$val) = each %in) {
if ($key ne "gazou") {&jcode'convert(*val, "sjis", "", "z");}
と言うCGIでした
&ReadParseと言うものを使った時点で、inの中に
gazou => 画像ファイル名 title=>タイトル名 …などが入っていて、それを$keyと$valに割り当てて処理していると言う事は判ったのですが。
extract($_POST)のように取得してしまうと、いきなり$gazou=画像ファイル名、$title=タイトル名、となってしまい、「この場合がこうだったら」と言うような処理ができない上に、どのタイミングでエンコードしたら良いのかがわかりません;
mb_convert_encoding(extract($_POST,EXTR_SKIP),"SJIS");
だと何かおかしいですし。&ReadParseだとGETとPOSTの両方のデータが入っているとの事ですが、extractだとどちらかしか(?)取得できないようなので。
わかりづらい説明ですみませんが、ご教授いただけると助かります。
0917nobodyさん
2008/05/24(土) 23:04:53ID:???$_POST["title"]
$_POST["toukousya"]
と個別に取得すればよかろう
というか、それってファイル名だけ貰えばいいのか?
あと>>1な
0918nobodyさん
2008/05/24(土) 23:28:15ID:muO/VwYBphpのマニュアルも見てみたのですが、perlとどう比べて良いかが判らなかったもので…。
エンコードも一つずつやらなきゃ駄目って事になるのでしょうか。
gazouならこういう処理
titleならこういう処理…と分けたかったのです。
phpのバージョンは5です。OSはWindowsです。
0919nobodyさん
2008/05/24(土) 23:47:14ID:???0920nobodyさん
2008/05/25(日) 00:02:04ID:???はい?PHPでも
while (($key,$val) = each %in) {
すればいいんじゃないの?
何が問題なのかよく分からん。
0921nobodyさん
2008/05/25(日) 00:20:02ID:???foreach( $_POST as $key => $val )で取れるが
> gazouならこういう処理
> titleならこういう処理…と分けたかったのです。
関数に処理を書いて、1つずつ取って渡すほうがいいんじゃねえの?
まあこんなのは書き方がいくらでもあるんで
0922nobodyさん
2008/05/25(日) 00:43:48ID:bR/AjWRwcheckboxを受けとる場合に name="foo[]" とHTMLに記述し
$foo = $_POST["foo"] で配列を取得できますが、チェックが一切されていない状態では
isset( $foo ) がtrueとなります
$_POSTにfooが入っていないので当然なのですが、$_POSTにfooをnullで入れてくれるような
設定やオプションはあるのでしょうか?
0923nobodyさん
2008/05/25(日) 00:53:48ID:???とかじゃいかんの?
いくらでも方法あると思うけど。
0924nobodyさん
2008/05/25(日) 00:57:39ID:rVIlw47Xですね、もうちょっと理解してから質問するようにします。
>>920
phpで、どうやったらinに全部入るかわからなかったもので・・・
>>921
ありがとうございます。それでやってみます。
答えて下さった方、ありがとうございました。
0925nobodyさん
2008/05/25(日) 01:25:55ID:gx/qo6M9array_search(に限らないかもしれないけど)で、配列の一番目にヒットした場合に返される「0」がNULLと同じ扱いになるので実質機能しないんですが。
0926nobodyさん
2008/05/25(日) 01:29:23ID:???0928nobodyさん
2008/05/25(日) 01:35:54ID:???0929nobodyさん
2008/05/25(日) 02:31:58ID:fA12GUeBWindows上ではNet_DNSは利用できないのでしょうか?
情報がないため困っています。
// testing Net_dns
<?php
require_once('Net/DNS.php');
$resolver = new Net_DNS_Resolver();
$resolver->debug = TRUE;
$response = $resolver->query('example.com');
print_r($response);
if ($response) {
foreach ($response->answer as $rr) {
$rr->display();
}
}
?>
出力されたメッセージ
;; query(example.com, A, IN) ;; using extended PHP sockets
PEAR :: Package :: Net_DNS
http://pear.php.net/package/Net_DNS
環境:Windows XP SP2
XAMPP 1.6.6a
PHP 5.2.5 (cli) (built: Nov 8 2007 23:18:51)
Zend Engine v2.2.0
Apache/2.2.8
0930929
2008/05/25(日) 02:39:03ID:fA12GUeB$resolver->nameservers[0] = '192.168.11.1';
しかし、これは明らかな環境依存です。
一般的な書き方をするにはどうしたらよいものでしょうか?
自分のマシンのDNS設定を取得できたらよいのですが・・・
0931929
2008/05/25(日) 03:34:39ID:fA12GUeBもっとスマートな方法があればなあ・・・
function die_message($s)
{
print "$s\n";
exit;
}
define('IS_WINDOWS', (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN'));
function getDNSServer()
{
@exec('ipconfig /all', $ipconfig);
print_a($ipconfig, 'label:nameserver');
foreach ($ipconfig as $line) {
if (preg_match('/\s*DNS Servers.+:\s+([\d\.]+)$/', $line, $nameservers)) {
$nameserver = $nameservers[1];
}
}
if (empty($nameserver)) {
die_message('Can not lookup your DNS server');
}
print_a($nameserver, 'label:nameserver');
return $nameserver;
}
0932929
2008/05/25(日) 03:35:00ID:fA12GUeB// testing Net_dns
require_once('Net/DNS.php');
$resolver = new Net_DNS_Resolver();
$resolver->debug = TRUE;
if (IS_WINDOWS) $resolver->nameservers[0] = getDNSServer();
$response = $resolver->query('example.com');
print_a($response, 'label:DNS response');
if ($response) {
foreach ($response->answer as $rr) {
$rr->display();
}
}
0933nobodyさん
2008/05/25(日) 03:36:18ID:???0934929
2008/05/25(日) 03:37:13ID:fA12GUeBprint_aはこちらのサイトで紹介されてるものです。
print_rに置き換えて読んでください
print_rをより分かりやすくするprint_a:phpspot開発日誌
http://phpspot.org/blog/archives/2006/04/print_rprint_a.html
0935929
2008/05/25(日) 03:37:57ID:fA12GUeBすいません。
どうしてもわからず質問してしまいました。
おさわがせしました。
夜分遅くご協力いただきありがとうございました。
レス数が900を超えています。1000を超えると表示できなくなるよ。