トップページ⇒php
1001コメント287KB

【PHP】下らねぇ質問はここに書き込みやがれ 64

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2008/02/09(土) 14:51:11ID:???
まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り

◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 61
http://pc11.2ch.net/test/read.cgi/php/1201425479/

◆質問する時の注意
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を必ず明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。

◆質問後の注意
・偽者防止に必ずIDを表示(メール欄に何も記述しない)、若しくはトリップをつける事。
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0458nobodyさん2008/02/17(日) 23:19:42ID:???
暗号化通信ってSSLのことを言ってる?
04594532008/02/17(日) 23:23:00ID:bioqKdBh
はい。
0460nobodyさん2008/02/18(月) 01:18:02ID:???
SSHか何かでやればいいだろ。。
Webサービスの1ユーザーのパスワード変更と、サーバのパスワード変更じゃ
危険性の度合いが桁違いってことは分かるだろ?
0461nobodyさん2008/02/18(月) 01:28:14ID:???
>>460
SSHでやれば安全で、httpdでやれば危険っていうのは安易すぎるだろ?
セキュリティーとプロトコルの問題を混同しないように。
0462nobodyさん2008/02/18(月) 01:35:41ID:???
SSHでやれば安全とは言わないが、http(s)でやるよかより安全かつ
確実にサーバの遠隔操作が可能だと思うんだが。
既存の確立した技術を使わずに、敢えてhttp(s)を選ぶならそれなりの
理由が必要だが、その理由は今のところ提示されていない。
だからSSHを勧めたわけでプロトコルに論点を移した覚えはないんだが、
君はhttp(s)でやったほうがいいと思うのかい?
0463nobodyさん2008/02/18(月) 01:38:12ID:???
461はphpでssh使ってやると思ってるんじゃないの?

0464nobodyさん2008/02/18(月) 01:52:41ID:???
SSHとhttpsによる安全性の差はともかく、そもそも質問者が言うパスワードがはアプリレベルのものか
OSレベルの物かワカラン。
0465nobodyさん2008/02/18(月) 02:13:24ID:???
>>462
俺がhttpsでやった方がいいと思うかじゃなくて、
元の質問者がweb上で何とかしてやりたいと言っているときに、
SSHでやればいいって全然答えになっていないだろ。
それでやれればそんな質問はしないわけだろうし。

俺もその手の仕様は客から言われたことがあるが、
客にSSH使ってやってくれとはいえないから、
"仕方なく"web上で簡単にユーザーの管理ができるようにしてやった。
web上でも安全に実装する方法はいくらでもある。
0466nobodyさん2008/02/18(月) 02:26:34ID:???
>>465
単に知らずに言ってるだけかもしれないから、客からの依頼だろうと
SSHをまず勧めるけどね。それでどうしてもWebでってのなら、君と
同じく「仕方なく」そういう機能作るだろうけど。

SSHのように仕組みが出来上がってるものと同程度のセキュリティを
Webサービスで実現するには時間やコストがかかるし、単に技量の
違いかもしれないけど、「web上でも安全に実装する方法はいくらでもある」
なんてことは言えないもんでね。
04674532008/02/18(月) 02:33:20ID:otM/IOKB
曖昧な質問をしてしまい、申し訳ないです。
Webからlinuxユーザをサーバに追加したいのですが、その過程でのユーザのパスワードを設定について質問したのです。
今のところPHPでSSHを使うとなると右のような関数を想定しています。ttp://jp.php.net/manual/ja/ref.ssh2.php

ただ、これとは別の問題になるのですが、例えばssh2_execのような関数を使ってpasswdコマンドを打つと、対話形式の入力になるのでうまくいかないという問題もあります。
0468nobodyさん2008/02/18(月) 02:34:09ID:???
では、仕方なくそういう機能を作るという前提で
話を進めましょうか?
04694532008/02/18(月) 02:39:06ID:otM/IOKB
お願いします。m( )m
0470nobodyさん2008/02/18(月) 02:50:25ID:???
ここに似たような話題があるぞ。
http://www.nabble.com/-PHP-users-32869--CentOS%2BPHP-%E3%81%A7%E3%81%AE%E3%80%81%E3%83%A6%E3%83%BC%E3%82%B6%E7%99%BB%E9%8C%B2(%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E5%AE%9F%E8%A1%8C%E3%81%AE%E5%8F%AF%E5%90%A6)-td13744873.html
04714532008/02/18(月) 02:59:50ID:otM/IOKB
>>470 ありがとうございます。これで対話形式の問題が解決できそうです。
0472nobodyさん2008/02/18(月) 05:22:19ID:bug4h3no
$kekka = isset($var);
if(!$kekka){$mes = 'error';}
は
isset($var) or $mes = 'error';
って書けるのに

$kekka = isset($var);
if(!$kekka){return false;}
は
isset($var) or return false;
だと
Parse error: syntax error, unexpected T_RETURN
ってなるのはなぜですか?

ちなみに
isset($var) or (return false);
isset($var) or return(false);
でもダメでした
0473nobodyさん2008/02/18(月) 05:27:44ID:???
return isset($var)でおk
04744722008/02/18(月) 05:34:37ID:bug4h3no
isset($var)===trueならその後も処理が続くのでそこでreturnしちゃダメなのです
0475nobodyさん2008/02/18(月) 05:43:36ID:???
じゃ無理です
0476nobodyさん2008/02/18(月) 07:11:58ID:???
PHP5で対象URLのファイルの存在の有無を調べる際にfile_existsを使いたいのですが
調べると0が返ってきます。

fopenを使用すると大丈夫でした。
何か設定が必要なのでしょうか。
0477nobodyさん2008/02/18(月) 07:52:11ID:???
>>472
returnをorのすぐ後ろに書いたコード見たことなんだけど
0478nobodyさん2008/02/18(月) 07:53:32ID:???
bool値が帰ってくるはず
0479nobodyさん2008/02/18(月) 07:57:45ID:???
>>472
returnはそもそも関数などから抜けされるものなのに
returnを何かと比較しようとして扱うのが間違いなんじゃない?
0480nobodyさん2008/02/18(月) 08:10:22ID:???
return isset($var) or false;
でいいじゃん
0481nobodyさん2008/02/18(月) 09:48:38ID:???
>>476
>>1
0482nobodyさん2008/02/18(月) 10:54:23ID:???
mailコマンドで、OSをFedora7からubuntuに変えたら、ヘッダが分割されて、ヘッダの一部が本文に入るようになってしまいました。
いろいろ原因を探ったところ、ヘッダー内の各ヘッダを区切る\r\nという改行を\nにすればよいようなのですが、
これはどこの設定に起因するものなのでしょうか?
phpの設定が以前と何か違うからなのでしょうか?それともpostfix側の設定の問題なのでしょうか?
あるいはOSの設定に変化があったからなのでしょうか?
0483nobodyさん2008/02/18(月) 10:56:44ID:???
きちっと書けば済む問題だろーに

if (isset($var) == false) {
  return false;
}
$kekka = $val;
0484nobodyさん2008/02/18(月) 11:01:53ID:???
>>482
>>1
0485nobodyさん2008/02/18(月) 11:02:04ID:???
>>482
>>8
0486nobodyさん2008/02/18(月) 11:35:53ID:???
>>487
>>486
0487nobodyさん2008/02/18(月) 11:36:15ID:???
>>1000
>>1
0488nobodyさん2008/02/18(月) 11:37:04ID:???
箱を開ける・・・>>485
箱を開けない・・・>>484
0489nobodyさん2008/02/18(月) 12:33:45ID:Ja8roiz2
PHPの開発環境としてeclipseを導入したいと思っています。
all-in-oneのものをインストールして、それに日本語化パッチを当ててみたのですが、
対応していないらしく、2割くらいしか日本語化されませんでした。
どなたか、all-in-oneで日本語化にも対応しているものが落ちているurlを教えて頂けないでしょうか・・・
04904762008/02/18(月) 12:38:55ID:dc24Ag74
>>481

>>476
サーバーOS:Linux
PHP:5
test.php

<?
if(file_exists("http://yahoo.co.jp/index.html")) print "OK";
?>

エラーメッセージ:無し

0491nobodyさん2008/02/18(月) 12:39:57ID:???
>>490
file_existsはパス指定するもんだ
それとローカル内のみだったはず
0492nobodyさん2008/02/18(月) 12:46:17ID:???
>>491 俺は url wrapper で指定したら、php が単に head リクエストしてくれると思ったが…
http://jp.php.net/manual/ja/function.file-exists.php
0493nobodyさん2008/02/18(月) 12:51:06ID:???
>>491
FTPもできるっぽい。
http://jp2.php.net/manual/ja/wrappers.ftp.php

ファイル名が使えるところにURLが使えるんじゃないかって自然に発想できる人が
ある意味うらやましい。fopenで httpとか書かれてると、本能的に身構えてしまう。

>>492
httpラッパは statファミリをサポートしていない。
0494nobodyさん2008/02/18(月) 13:24:52ID:???
>>489
http://mergedoc.sourceforge.jp/
0495nobodyさん2008/02/18(月) 13:28:59ID:???
発想というか仕様だしな
0496nobodyさん2008/02/18(月) 13:34:08ID:???
>>493
> ファイル名が使えるところにURLが使えるんじゃないかって自然に発想できる人が
> ある意味うらやましい。fopenで httpとか書かれてると、本能的に身構えてしまう。

知ってるか? メモ帳だってファイル名にURL使えるんだぜ。
EXCELもな。
0497nobodyさん2008/02/18(月) 13:42:59ID:???
>>496
すげー Σ(゚Д゚) 考えた事も無かった。
役に立つかはともかく、教えてくれてありがと。
0498nobodyさん2008/02/18(月) 13:54:54ID:???
俺様にPHPを教えろ
0499nobodyさん2008/02/18(月) 14:03:01ID:???
御意
0500nobodyさん2008/02/18(月) 15:09:19ID:???
忍びねぇな
0501nobodyさん2008/02/18(月) 16:11:34ID:???
強制有給で暇だ!誰かまともな質問しろ!
0502nobodyさん2008/02/18(月) 16:30:39ID:???
まともってどんなんだよ

Zend Frameworkで苦しんでるが社用物だからコード晒せないしなあ
問題切り分け中だが、切り分け終わったら自分で対応するしなw
お暇ならなんかエスパーしてくれ 「この辺が落とし穴だze」とか
0503nobodyさん2008/02/18(月) 16:34:55ID:???
ごめん、内容を書いてる間に試してたら解決できた
メール送信とDBインサート周りでコケてたのだが、
無駄なクオートがあったのでzend_validationに書き換えたらいけた
スレ汚しすまそ
0504nobodyさん2008/02/18(月) 16:43:35ID:???
>>501
ここまでのログあさって答えてないのを答えてやったらどうだい?
0505nobodyさん2008/02/18(月) 16:44:22ID:F3LP+Vno
>>501
2chのbbsmenu.htmlからカテゴリと板名を分けて抽出したいんだが、
うまい方法が思い付かん。

カテゴリリスト→板名リストと遷移するのが前提。
0506nobodyさん2008/02/18(月) 16:52:58ID:???
REP2とか読んでみるとか。あとCGIだけどiMona
0507nobodyさん2008/02/18(月) 17:09:54ID:???
>>501
俺様にPHPを教えて下さいませ。ご主人様。
0508nobodyさん2008/02/18(月) 17:48:16ID:???
>>507
つhttp://www.php.co.jp/
0509nobodyさん2008/02/18(月) 19:05:43ID:???
すいません
$aaa{0}
ってどういう意味ですか??
$aaa[0]ならわかるのですが。
perlならハッシュのことだというのは分かるのですがPHPでもそうなんでしょうか?
0510nobodyさん2008/02/18(月) 19:06:46ID:LoQffYNU
ふと思ったんですが、PHPのループでsleepを使い掲示板に10秒間隔で1分間に6回書き込むプログラムを作ったんですけど
自分のPCの画面では一分間何も表示されなくて、その後、6回書き込まれた掲示板が表示されます。
別に自分の画面は表示されなくていいんですが、
他の人のPCでこの1分間の間に掲示板にアクセスした場合、表示されるんでしょうか?
あとこの1分間の間に閲覧者が書き込みを行うこともできますか?
その時の書き込みの順番は、自分が6回書き込んだ後に閲覧者の書き込みになるのではなく
ちゃんと割り込んで書き込みできますか?

多分大丈夫だとは思うんですけど心配になったので一応聞いてみました。
0511nobodyさん2008/02/18(月) 19:14:41ID:O2zzThQY
Smartyに関する質問なんですが、
カスタム関数のdefaultを空白('')にして、かつ、もし値があればstring_format(%0.1fなど)して表示するにはどうすればいいですか?(できればif文を使わずに)
現状では、値が無い場合に0.0という表示が必ず出てしまいます。
defaultを先にしても後にしても同様です。
どなたかお願いします。
0512nobodyさん2008/02/18(月) 19:22:26ID:???
>>509
>$aaa{0}
>ってどういう意味ですか??
>$aaa[0]ならわかるのですが。

デバッグしてみればわかるでしょうに。
一緒。
05135092008/02/18(月) 19:33:04ID:???
なんか微妙な違いがあるのかなと思ったのです。
ありがとうございましたm(_ _)m
0514nobodyさん2008/02/18(月) 19:59:27ID:???
プログラム組んだ事無い人がPHPをするのはまずいですか?
まず何からしたら良いのか徹底的に指導願いします
0515nobodyさん2008/02/18(月) 20:00:09ID:???
もちろん Apache PHPはインストール済みです。
0516nobodyさん2008/02/18(月) 20:00:25ID:???
>>8
0517nobodyさん2008/02/18(月) 20:16:36ID:???
>>514
何から、ねえ。
別に公開しなけりゃ好き勝手に遊べばいいんじゃねーの。
てことでローカルホストでwebサーバ走らせる勉強から。レンタルサーバで馬鹿やると恥ずかしいだろうからね

公開サービスを目指すなら、危険性のある事をある程度は把握しといた方がいいな
ttp://www.atmarkit.co.jp/fsecurity/index/index_hoshino.html
なんかがまとまってて判りやすい方かな。
0518nobodyさん2008/02/18(月) 20:21:20ID:???
まずはこのスレのテンプレを見ることだな
0519nobodyさん2008/02/18(月) 20:22:46ID:???
見るんじゃなくて、*読んで* *理解する* 事だね。
0520nobodyさん2008/02/18(月) 20:22:55ID:???
>>514
まずプログラム基礎を理解するために、
ブラウザ以外の特別な環境が必要ないJavaScriptでちょっとしたもの書きながら勉強するのがお勧め。
JavaScriptがある程度理解できれば、その他の言語もある程度わかるはず。
とくに目標がないなら、PHPからはじめることはないからね。
0521nobodyさん2008/02/18(月) 20:32:05ID:???
>>514
このテキストのこの単語がわからないとか、この機能がわからないってのなら説明できる。
でも全部教えては無理よ。とりあえず>>1-8のテンプレ読んで、
あとは「PHP 初心者」あたりでぐぐって出たサイト一通り見てはどうだろ。
05225142008/02/18(月) 20:34:12ID:???
皆さんありがとうございます。
テンプレをじっくり読んできます。
05235142008/02/18(月) 20:38:02ID:YSts7gLU
ID表示しないといけないんですね。
失礼しました。
0524nobodyさん2008/02/18(月) 21:56:26ID:???
>>523
そのまま使うのではなく、自分で考える事が重要だ。
考えずに使ってたらおにいたんがハッキングしちゃうからな。
0525nobodyさん2008/02/18(月) 21:58:41ID:???
>>513
一緒じゃねーぞ
波括弧は文字列のオフセット指定
0526nobodyさん2008/02/18(月) 22:00:21ID:???
ハッキングwww
0527nobodyさん2008/02/18(月) 22:08:27ID:???
すみませんPOSTで送られてきたデータを変数に取り込むために

$HENSU[$a] = "".$_POST["$HENSU[$a]"]."";

↑の様に記述したのですが取り込むことが出来ません
具体的にどのようにすれば解決できるのかご教授お願いいたします
(※$aは1〜30まであります)



0528nobodyさん2008/02/18(月) 22:10:05ID:???
すみません変数の部分を書き換えるときに癖で$をつけてしまいました

正しくは

$HENSU[$a] = "".$_POST["HENSU[$a]"]."";
↑で取り込めません
0529nobodyさん2008/02/18(月) 22:10:32ID:Cm9tgJOR
上げ忘れ
0530nobodyさん2008/02/18(月) 22:14:01ID:???
>>527
extract($_POST);
var_dump($HENSU);
0531nobodyさん2008/02/18(月) 22:21:55ID:xGg4BipF
マルチバイト文字列のバイト数を求めるにはどうしたら良いのでしようか?
確実にstrlenがコールできるなら良いのですが
strlenはmb_strlenに置換されてたりする場合があるかと思うので、
とても不安です。
0532nobodyさん2008/02/18(月) 22:22:14ID:???
>>530
ありがとうございます
それを元に頑張ってみます
0533nobodyさん2008/02/18(月) 22:29:16ID:YSts7gLU
>>524
マニュアルをコピペしてそれを使うなという事でしょうか?
0534nobodyさん2008/02/18(月) 22:37:00ID:???
意味を理解した上でなら構わないよ
0535nobodyさん2008/02/18(月) 22:56:36ID:???
>>520
JavaScriptとPHPどっちが難しいと言われればJSのが難しかったなw
あれ色んな記述ができすぎるからプログラム初心者には向かないんじゃね?
0536nobodyさん2008/02/18(月) 23:02:24ID:???
PHPはオブジェクト指向が加わると難しくなる
言語の難易度はポインタとオブジェクト指向で決まる
0537nobodyさん2008/02/18(月) 23:05:36ID:???
>>535
JavaScriptはクラスが入ると混乱してくるよね。
0538nobodyさん2008/02/18(月) 23:07:59ID:???
JavaScriptでクラス?
ActionScriptじゃないのかそれ
0539nobodyさん2008/02/18(月) 23:13:39ID:???
>>538
JavaScriptに new というキーワードがあるの
しってるよね?
0540nobodyさん2008/02/18(月) 23:19:00ID:Ez7ZH7Qx
JavaScriptはクラスベースじゃない。
newがあるとか関係無いから。
0541nobodyさん2008/02/18(月) 23:23:05ID:???
>>539
所謂現状のJavaScriptはプロトタイプベース言語であってクラスベースじゃねーよ

もちろん仕様三版にもクラスって言葉は出て来るけどクラスベースな言語で言う「クラス」としてじゃない。
classって言葉自体は単なるFuture Reserved。

2.0仕様がクラスベース言語として生まれ変わるバージョン。
タマリンや、ある意味での先行実装であるActionScriptが参考になる
0542nobodyさん2008/02/18(月) 23:24:55ID:???
本気でいってるの?
JavaScriptはオブジェクト指向言語なんだけど。
0543nobodyさん2008/02/18(月) 23:26:53ID:???
だからオブジェクト指向言語=クラスベース言語じゃねえ!w
0544nobodyさん2008/02/18(月) 23:30:47ID:???
基本的なこと学ぶだけならなんだっていいんじゃね?
ブラウザによっては動かなかったとしても、おおまかなことが学べればいいんだし。
変数の使い方、関数やオブジェクトの使い方、条件処理、ループ処理なんかの基礎的なことができれば。
0545nobodyさん2008/02/18(月) 23:35:35ID:xGg4BipF
いや、だからそんな自転車小屋の議論は良いから
strlenを確実に呼び出すにはどうしたらいいの?
っていうか

$foo="まこ"
$cnt=0;
while($foo as $dummy) { $cnt++;
0546nobodyさん2008/02/18(月) 23:38:51ID:???
ちょ、新言語作るなw
0547nobodyさん2008/02/18(月) 23:40:29ID:???
JS使いにはすごい引っかかる話題だけど、スレ違いなのよね
0548nobodyさん2008/02/18(月) 23:41:49ID:???
>>545
>>1
0549nobodyさん2008/02/18(月) 23:46:03ID:???
雑談は雑談スレ池。
0550nobodyさん2008/02/18(月) 23:48:14ID:???
>>549
>>1
05515312008/02/18(月) 23:50:28ID:???
取りあえずこれで解決することにしました
お邪魔したし真下

<?php
function strbyte($str) { $cnt=0; while($str[$cnt]) {$cnt++;} return $cnt; }
$foo="マ○コabdアの川流れ"; $encs = array('sjis-win', 'eucjp-win', 'utf-8');
foreach ($encs as $enc) { var_dump(strbyte(mb_convert_encoding($foo, $enc, 'sjis-win'))); }
05525142008/02/19(火) 00:05:59ID:OsGt77+r
関連サイト全部見てきました。
次から次へと新しい事を発見してキリがないなっ!と思いました。

某所でアップロードプログラムはセキュリティに気をつけてくださいってのがいまいち理解できなかったです。
今日は寝ます。ありがとうでした。
でわ
0553nobodyさん2008/02/19(火) 00:17:27ID:???
>>531
>strlenはmb_strlenに置換されてたりする場合があるかと思うので、
これホント?
0554nobodyさん2008/02/19(火) 00:25:27ID:???
>>553
>>531 じゃないけど、そうらしい。
http://jp2.php.net/manual/ja/ref.mbstring.php#mbstring.overload
0555nobodyさん2008/02/19(火) 00:26:17ID:???
>>553
http://jp2.php.net/manual/ja/ref.mbstring.php#mbstring.overload
05565312008/02/19(火) 00:31:38ID:???
>>551ではうまく行かなかったです
これでいいっぽいです
失礼しました
http://jp2.php.net/manual/ja/ref.mbstring.php#55832
function str_sizeof($string) {
return count(preg_split("`.`", $string)) - 1 ;
}
05575532008/02/19(火) 01:15:18ID:???
へえぇぇ
知らなかった。ありがとう。
0558nobodyさん2008/02/19(火) 01:28:40ID:???
>>556

return count(preg_split("`.`", $string)) - 1 ;

rerurnの後のいろいろ処理を付け加えるのは美しくない!
見にくい!

count関数の中に関数いれるのは
処理が重くなる、美しくない

何でもかんでも1行プログラミングにするな!

コーディングで考える優先順位

1.負荷
2.見やすさ

俺ならこう書く

$string = preg_split("`.`", $string);
$string_count = count($string)-1;
return $string_count;
■ このスレッドは過去ログ倉庫に格納されています