【PHP】下らねぇ質問はここに書き込みやがれ 28
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/09/03(日) 21:01:08ID:???まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆質問する場合の注意
1. 自分のIDを表示させること。(メール欄に何も記述しないでください)
2. サーバーのOS、WebサーバーとPHPの種類やバージョン等を明記すること。
3. 己の行った操作、変更などを詳しく明記すること。
4. エラーメッセージはそのまま表記すること。「エラーが出ます」では絶対分かりません。
5. 質問者としても態度をわきまえること。
6. 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・質問者は必ずIDを表示させてください。(メール欄に何も記述しないでください。)
・2回目以降は最初に質問した際のレス番号を名前欄に入れてください。
(逆に回答者は質問者に対して>>(アンカー)をつけて答えてください。)
・解決しなくても回答をもらった場合はお礼を言う。
(荒らし、煽りは除く。逆に煽られたときも、無闇に反論せずスルーすべし)
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・オブジェクト指向については良スレがないから本を買え。理解できないならムリに使うな。
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
0201nobodyさん
2006/09/06(水) 08:17:42ID:???オプション指定なしのデフォルトであれば、ミリ秒単位でユニーク、ってレベル。
ミリ秒単位で全く同一の時刻に複数のプロセスがuniqid()を実行したら被るよ。
0202nobodyさん
2006/09/06(水) 08:23:05ID:???んー。去年辺りからRoRが注目を浴びてきてるからでしょ。
AjaxでJavaScriptがまた脚光を浴びたのと一緒よ。
ま、Javaも近々Javaベースのスクリプト言語を公開して
大半の開発ユーザをそっちに移行させちゃう予定だから、
今このタイミングでPHPユーザがJavaを勉強するってのは
確かに微妙かもしれんな。
0203nobodyさん
2006/09/06(水) 08:47:21ID:???0204nobodyさん
2006/09/06(水) 08:59:33ID:???ミリ秒ではなく、実はマイクロ秒。
マニュアルは誤記みたいだよ。
>>196
重複する可能性はほぼゼロと考えていいと思う。
第2引数にtrueを指定すれば、もっと重複する確率は減るらしい。
暇ができたら、Cで大量にプロセス生成して同時にマイクロ秒を取得するとどれくらい重複し得るか実験してみたいかも。
0205nobodyさん
2006/09/06(水) 10:43:07ID:???一回発行させてリダイレクトさせるだけでいいじゃん。
勿論無限ループにならないように注意してね。
JavaScriptで判別するのは論外。
大抵のブラウザではCookieとJavaScriptは両方デフォルトで有効になっている。
そこでセキュリティ上の問題でCookieを無効にしている人は、JSも無効にしている可能性が高い。
0206nobodyさん
2006/09/06(水) 10:53:37ID:???FTP経由でファイルの内容を拾ってくる方法は無いでしょうか?
現在は、FTPで一旦ダウンロードしてから、
file_get_contents()で内容を拾っています。
できれば、tmpファイルを作成せず、直接メモリに入れたいのですが・・。
0208206
2006/09/06(水) 11:21:26ID:???読みました、
> 現在は、FTPで一旦ダウンロードしてから、
ここでFTP関数は使用してます。
FTP_関数で、file_get_contents のような使用方法ができる
関数は無いような気がします
0209nobodyさん
2006/09/06(水) 11:23:52ID:???グローバル変数に影響を与えないことは分かったんですが、
グローバル変数は、クラス内の変数(メンバ変数?)
に影響は与えないのでしょうか?
その場合、クラスに変数を渡すのはどんな方法を使うのが一般的でしょうか
0211nobodyさん
2006/09/06(水) 11:34:00ID:???変数を渡したければ、引数で渡せ
記述が全然違うから、グローバル変数はメンバ変数に影響は与えない
メソッドや関数内のローカル変数には影響はある
$foo = 10;
myfunc();
function myfunc()
{
$foo = 20;
global $foo;
print($foo);
}
上記の出力はグローバルで定義された 10 になる
というか、聞く前に簡単なスクリプトを書いて試す癖を付けたほうがいいぞ
0212nobodyさん
2006/09/06(水) 12:20:26ID:???> メソッドや関数内のローカル変数には影響はある
メソッド内の変数!=メンバ変数、でしょうか?
メンバ変数、グローバル変数の細かな定義も曖昧なのですが、
何か参考になるサイトはないでしょうか?
また、他の言語でのメンバ変数、グローバル変数の解説でも
PHPも同じと考えてよいでしょうか?
ぐぐってみたのですが、よいサイトを見つけられませんでした。
> というか、聞く前に簡単なスクリプトを書いて試す癖を付けたほうがいいぞ
肝に銘じます
> 変数を渡したければ、引数で渡せ
これのことを指しているのでしょうか?
素人質問ばかりですいません > global $foo
0213nobodyさん
2006/09/06(水) 12:34:42ID:???とりあえず言語リファレンスから読み直せ
http://www.php.net/manual/ja/
0214nobodyさん
2006/09/06(水) 12:35:47ID:???<?php
$global = "Hello";
class Test {
var $member;
function Test() {
$this->member = "World";
}
function hogeHoge() {
echo $global.$this->member;
}
}
$object = new Test;
$object->hogeHoge();
?>
0215nobodyさん
2006/09/06(水) 12:49:28ID:???>何か参考になるサイトはないでしょうか
>>213 のレスの通り
公式サイトを読めるだけの基本的な知識がないと辛いよ
>また、他の言語でのメンバ変数、グローバル変数の解説でも
>PHPも同じと考えてよいでしょうか?
大きな部分では同じではあるが、細かいところではその言語ごとの
特色が出ている。
まったく同じと考えると、思わぬミスをすることになる。
0216nobodyさん
2006/09/06(水) 12:51:15ID:???>> 変数を渡したければ、引数で渡せ
>
>これのことを指しているのでしょうか?
>素人質問ばかりですいません > global $foo
・引数
function myfunc($foo)
{
print($foo);
}
上記のような、($foo) で記述すれば、引数として値を渡すことができる
$foo = 10;
myfunc($foo);
という風につかう
0217nobodyさん
2006/09/06(水) 12:54:47ID:???・メンバ変数
class myclass
{
var $bar;
function mymethod($foo)
{
$this->bar = $foo;
}
}
上記のような $this->bar をメンバ変数と呼べる
$bar ではなく、$this->bar であることに注意
function mymethod($foo)
{
$bar = $foo;
}
このような場合は、メンバ変数ではなく、メソッド内のローカル変数
まったくプログラムを知らない人には、なじみにくいものだとは思うが
まあ、ゆっくりとやればいい
0218nobodyさん
2006/09/06(水) 15:40:13ID:???前に見つけたんですが、忘れてしまいました。
一応管理機能等がある物だったんですが・・
0219nobodyさん
2006/09/06(水) 16:49:47ID:UXXHtXDVはどうしてますか?
0220nobodyさん
2006/09/06(水) 16:58:30ID:???使ってもアクセス制限程度だし。
顧客情報を管理するような重要なシステムなら、SSL導入。
0221nobodyさん
2006/09/06(水) 16:58:40ID:???単に通信路の暗号化という意味ならSSL使うのが正解だろ
SSL使わないときは、生で流してる。
SSL使わないけど、より安全にしたいってことなら、
クライアントでJavascript使って、パスワード+種にmd5とかして
それをサーバに流すとかすればいいんでないの?
0222nobodyさん
2006/09/06(水) 17:00:56ID:???GETならセキュリティ対策しても無意味なんで、何も対策しない。
作るアプリケーションもミッションクリティカルなものじゃない
はずだし。
POSTならSSLを導入する。
そのあとXSS対策とか色々考えるけど書くのめんどうだから後は
ぐぐれ。
とりえずSSL導入しないなら何しても無駄くらいに思っとけばよろし。
0224nobodyさん
2006/09/06(水) 17:11:00ID:???アドバイスきいてるの?
そんなことしたってあんまり早くならないだろうって意見がおおいじゃん
それなのにrequireとか見直すつもりなのかよ
もっとちゃんと負荷かかってるところ見極めた方がいいってことだよ
視点かえて、サーバ上でいらんプロセス動いてたら殺すとか
そういうことしたほうが効果あるんでないの?
究極的には、新しいサーバにした方が手っ取り早いって事もあるしさ
ま、他にもいろいろ考えてるんだったら、おせっかいでスマン
0225nobodyさん
2006/09/06(水) 17:14:04ID:UXXHtXDV0226nobodyさん
2006/09/06(水) 17:23:13ID:???そりゃPHP以前の問題だな
遠回りにおもうかもしらんが、
PHP入門というレベルですらなく、初めてのプログラミング
とかそういう本読んで、基本的なプログラミングの考え方
に触れといたほうがいいんでないかい?
じゃないと、ここでいくら聞いても混乱するだけだ
あと既出だが、マニュアルとかネットで読むだけでは
身につかん。解った気分になれるだけだな。
解ってるって思ってもいざコード書いて見ると???って思うこと
はたくさんあるぞ。
ま、自分でコード読んで何やってるか読み取れない時点で
理解してないってことは分かると思うんだが、ネットで探す、
でもって、コピペで動いた万歳というレベルのやしが多いんだ
なこれが。
0227nobodyさん
2006/09/06(水) 17:27:30ID:???それは個人でやってることなのか?
であれば、おれおれ証明書+OpenSSLとかで金かけずにSSLできるぞ?
仕事であるとしてなら、個人情報うんぬん考えて、SSL使いたい。
でも金かかるからヤメタってのはそりゃあんたダメだよ
ホントに個人情報漏れたときに、責任取らされないように気をつけることだ
0228218
2006/09/06(水) 17:38:32ID:B1MlJIFJそうですね、検索ワード思いつく限りは試してるんですが思い出せません。
どなたかそのようなチュートリアルがありましたらお願いします。
0229212
2006/09/06(水) 17:48:52ID:???0230nobodyさん
2006/09/06(水) 18:24:47ID:Z+QAwMX/0232nobodyさん
2006/09/06(水) 18:35:05ID:???グローバル変数の$_SESSION['hoge']を
クラス内、関数内で使用するにはどうすればいい?
ほとんど決まって使用する形なので毎度関数の引数にするのはいやづら
class Test{
var $hoge = global $_SESSION['hoge'];
function Test()
{
echo $hoge;
}
では上手くいかないづら
0234nobodyさん
2006/09/06(水) 18:40:46ID:???そもそも$_SESSIONはスーパーグローバルだからどこでも使える
http://jp2.php.net/manual/ja/language.variables.predefined.php
0235nobodyさん
2006/09/06(水) 18:43:11ID:???コンストラクタで初期化。
class Test{
var $hoge;
function Test()
{
$this->hoge = $_SESSION['hoge'];
echo $this->hoge;
}
0236nobodyさん
2006/09/06(水) 18:44:55ID:???var $hogeの参照の仕方は間違ってるし
= global $_SESSION['hoge'] ってなんだよだし
お前はまずPHPの文法から勉強すべきなんでは?
0237nobodyさん
2006/09/06(水) 18:50:59ID:???指定しなかったら変更せず、って可能でしょうか?
0238nobodyさん
2006/09/06(水) 18:52:57ID:???function hoge($a = "default") {
if($a == "default") {
echo "引数が指定されなかったよ";
}
}
0239nobodyさん
2006/09/06(水) 18:54:05ID:???デフォルト引数値
ttp://www.php.net/manual/ja/functions.arguments.php#functions.arguments.default
0240nobodyさん
2006/09/06(水) 18:54:53ID:???わざわざコンストラクタ意識しなくても
class Test{
var $hoge = $_SESSION['hoge'];
function Test()
{
echo $this->hoge;
}
でいけね?
0242nobodyさん
2006/09/06(水) 19:06:00ID:???コンストラクタじゃないならクラス名と関数名は別にしたほうがいいのでは?
0243nobodyさん
2006/09/06(水) 19:18:04ID:???0244nobodyさん
2006/09/06(水) 19:33:45ID:???0245nobodyさん
2006/09/06(水) 19:36:15ID:???なら数字キーは0じゃね?
0246nobodyさん
2006/09/06(水) 19:36:58ID:???0250nobodyさん
2006/09/06(水) 19:41:50ID:Ko4SqDiX0251nobodyさん
2006/09/06(水) 19:42:37ID:???配列の途中に抜けがないことを前提にできるなら
$key = count($a) - 1;
でいいと思うんだけどね。
0253nobodyさん
2006/09/06(水) 19:45:18ID:???それが数字キーとは別に文字キーも含まれていてcountは使えないのです。
切り分けるか他の方法を考えて見ます。
0255nobodyさん
2006/09/06(水) 20:02:28ID:???使えませんよね?
0258nobodyさん
2006/09/06(水) 20:13:26ID:Ko4SqDiXクラスの中でvar $aaa;を宣言するとどうなるのでしょうか?
0259nobodyさん
2006/09/06(水) 20:14:25ID:???0262nobodyさん
2006/09/06(水) 21:07:44ID:???md5('生パスワード')とやるのと、
md5('生パスワード'+'秘密の種')とやるのと、
どっちがいいですかね??
自分はずっと前者でやってましたが、やっぱり後者にすべきでしょうか?
0263nobodyさん
2006/09/06(水) 21:08:00ID:zhNqu6Fm1
<--shitei_start-->
2
3
4
<--shitei_end-->
5
-------------------------------
上記file.txtの<--shitei_start-->から<--shitei_end-->まで抜き出す方法について質問です。
自分なりに考えて、下記方法にて正常に処理することは出来たのですが、長いような気がしてなりません。
スマートな処理方法があれば教えて頂きたいです。よろしくお願いします。
WindowsXP SP2 + PHP4.4.4 + Apache2.0Handler
$shitei = file_get_contents("file.txt");
$shitei = str_replace("\r\n","",$shitei);
$shitei = str_replace("\r","",$shitei);
$shitei = str_replace("\n","",$shitei);
$shitei = preg_replace('/<--shitei_start-->(.+?)<--shitei_end-->/',"\\1",$shitei);
echo $shitei;
0264nobodyさん
2006/09/06(水) 21:12:15ID:???それで十分な気がするけど、まー短くしたいって言うなら。
$shitei = file_get_contents("file.txt");
$shitei = preg_replace("/[\r\n]/", '', preg_replace('/<--shitei_start-->(.+?)<--shitei_end-->/',"\\1",$shitei));
echo $shitei;
0265nobodyさん
2006/09/06(水) 21:17:19ID:???とりあえず
$shitei = str_replace("\r\n","",$shitei);
は要らないだろ。
0267nobodyさん
2006/09/06(水) 21:31:10ID:???PHP5は↑を推奨
互換性があるからvarでもおk(var=public)
0268nobodyさん
2006/09/06(水) 21:31:48ID:???preg_replaceでmオプションでいいんでないかい
$shitei = preg_replace('/<--shitei_start-->(.+?)<--shitei_end-->/m',"\\1",$shitei);
0269nobodyさん
2006/09/06(水) 21:38:24ID:???function hoge()
{
$a = "1";
}
function fuga()
{
echo $a;
}
}
上のようにfuga()でhoge()のローカル変数$aを使いたい場合、
どうすればよいですか?
0270nobodyさん
2006/09/06(水) 21:44:52ID:???さっきのvarと言い。
本を読んで自習して欲しい。
0271nobodyさん
2006/09/06(水) 21:45:53ID:???0272nobodyさん
2006/09/06(水) 21:47:29ID:???1
<--shitei_start-->
2
3
4
<--shitei_end-->
5
<--shitei_start-->
6
7
8
<--shitei_end-->
9
-------------------------------
263じゃないけど、似たようなこと聞きたかったので質問です。
上の場合(1〜4、5〜8を取得したい場合)は、どんな記述方法がありますか?
0275263
2006/09/06(水) 21:54:38ID:zhNqu6Fmpreg_replaceの中にさらにpreg_replaceが使えるんですねー。
参考にさせて頂きます。ご教授ありがとうございました。
>>265
OSによって改行コードが違うとどこかで見たんで、
それぞれに指定してみたんですが・・・。
確かに\nと\rさえ変換しておけば必要なさそうですね。
>>268
mオプションが使えれば一番いいんですが、
何故か正しく処理されなくて、スルーしてたんですよ。
原因追求と共に、もう一度調べてみようと思います。
ありがとうございました。
0279nobodyさん
2006/09/06(水) 22:16:10ID:Hk4G6jQR$body = <<<EOM
$data[1]
EOM;
こんなふうにかかれた部分がありました。
これはなんという関数?制御構文?なのでしょうか。
名前がわからず、検索するにも困っています。
0280263
2006/09/06(水) 22:16:25ID:???無論、基礎を勉強中ですよ。
まだPHP始めて3週間程度ですので、身の程はわきまえてるつもりです。
勉強の過程でやりたいと思ったことを息抜きのつもりでやってみて
楽しんでるだけなんですよ。たまには遊ばせて下さい。(´Д⊂
0282nobodyさん
2006/09/06(水) 22:18:15ID:???旧互換で残されてるだけで、使うと警告が出る。
ttp://www.php.net/manual/ja/language.oop5.visibility.php
> 注意: キーワードvarで変数を宣言する PHP 4の方法は、PHP 5オブジェクトではもはや 有効ではありません。
> 互換性のためにPHPで宣言された変数は、publicのアクセス権を 有していると仮定されますが、 E_STRICT警告が発生します。
0284nobodyさん
2006/09/06(水) 22:20:16ID:???別にmは無くてもいいかと。
mは改行部分での行頭/行末の扱いを変えるだけで、それ以外の改行は関係ない。
正規表現の中に「^」か「$」を含んでなければmはあっても無くても一緒。
mの有無に関係なく、改行変換を無くすと出力結果が変わっちゃうわけだが?
0285nobodyさん
2006/09/06(水) 22:23:08ID:SJHDxyO4軽く立ち読みした感じ、linuxユーザー向けに書いてあると思ったのですが、
windowsで勉強してる人には、役に立たないですかね??
あと、これのエキスパート編もlinux向けですかね?
どうか教えてください。
あと、お薦めの本もありましたら教えてください。
0286nobodyさん
2006/09/06(水) 22:26:56ID:???PHP関連の書籍 第3版
http://pc8.2ch.net/test/read.cgi/php/1150558685/l50
0288nobodyさん
2006/09/06(水) 22:33:23ID:???0289269
2006/09/06(水) 22:42:55ID:???0293nobodyさん
2006/09/06(水) 23:07:16ID:???PHPに限らずドットメタ文字が改行にマッチしないだけで
正規表現の中に.が入ってなければ複数行は無関係でしょ。
ってことでMultiLineのmじゃなくてDotAllのsが正解だと思う。
0294nobodyさん
2006/09/06(水) 23:21:09ID:???逆じゃないか?これ、sオプションつけなきゃマッチしないだろ。
>>264も>>268も間違ってるとオモ
>>272
複数取得したい場合はpreg_match_all()を使う。
0295nobodyさん
2006/09/06(水) 23:22:29ID:???0296269
2006/09/06(水) 23:30:58ID:/I1yABna初めてクラスに挑戦しています。
FTP関連のクラスを作って、
コンストラクタでftp_connectして、
メソッドでftp関連の処理を、
と考えてたのですが、今まで関数さえ一切使わず
グローバル関数が乱立していた
(もちろん変数被ってバグ頻繁に発生)ような自分のレベルからは
なかなか理解が難しいですね汗
メソッド内全てでftp_connectするか
classの最初で宣言しておいて
$this->使うとかの方法しかないでしょうか。
0297nobodyさん
2006/09/06(水) 23:35:32ID:???> classの最初で宣言しておいて
> $this->使うとかの方法しかないでしょうか。
元々、メンバ変数ってのはそのために用意されてる仕組み。
0298nobodyさん
2006/09/06(水) 23:41:12ID:???269のコンストラクトで
$this->a = $a;
して
fugaで
echo $this->a;すればよろし。
0299nobodyさん
2006/09/06(水) 23:44:29ID:???それをやらなきゃ解決できないようなロジック自体がだめ
0300nobodyさん
2006/09/07(木) 00:00:53ID:???class FTP
{
var ftp;
function FTP($host)
{
$this->ftp = ftp_connect($host);
}
function getRemoteFile($remote_file, $mode = FTP_BINARY)
{
$tmp = tmpfile();
ftp_fget($this->ftp, $tmp, $remote_file, $mode);
return $temp;
}
}
こんなの作ったらいいんじゃね?
マニュアルだけ見てちゃちゃっと書いたから動くか分からんが
0301nobodyさん
2006/09/07(木) 00:24:42ID:???何となく気分でtempからtmpに変えたけど、ちゃんとチェックしないとろくな事ないな。
■ このスレッドは過去ログ倉庫に格納されています