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

くだすれPHP(超初心者用)4

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2008/06/13(金) 20:32:36ID:???
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
PHP使いが優しくコメントを返しますが、
お礼はPHPの布教と初心者の救済をお願いします。

PHP Home Page
http://www.php.net/
http://jp.php.net/



前スレ: くだすれPHP(超初心者用)3
http://pc11.2ch.net/test/read.cgi/php/1193295871/

適当に関連スレ(マルチはだめぽ)
【PHP】下らねぇ質問はここに書き込みやがれ 69
http://pc11.2ch.net/test/read.cgi/php/1211879073/
03203182008/09/22(月) 01:10:00ID:???
if ( !strcmp ( $ip_address, $list_ip ) )
これ使っていけるかな・・・・・・?
03213182008/09/22(月) 01:10:58ID:???
>>319 それなぜか思いつかなかった。トンクス。
03223182008/09/22(月) 02:51:53ID:???
txtファイルから文字列読み込んだときに改行まで読み込まれて比較ができない。
どうすればよいですか?
0323nobodyさん2008/09/22(月) 03:00:08ID:???
改行文字を除いてから比較すれば?
03243182008/09/22(月) 03:15:17ID:???
>>323どうもうまくいかなかった.........

<?php
$ip = $_SERVER['REMOTE_ADDR'];
$str = "$ip";
$len = strlen($str);

$handle = fopen('ip.txt','r');
$contents = fread( $handle, $len );
fclose( $handle );
echo $contents."<br />\n";

if($ip==$contents){
echo "成功";
}
else{
echo "失敗";
}
?>

ipアドレスの文字数分引っ張り出して比較することで回避できた。
0325nobodyさん2008/09/22(月) 03:21:01ID:???
ip.txtに入ってるIPの方が今アクセスしてる人のIPより長かったらどうすんの?
03263182008/09/22(月) 03:24:26ID:???
>>325 したら絶対IP違うからエラーでていいんでない?
03273182008/09/22(月) 03:27:42ID:???
一時的にip.txtの中に入ってる一番最初のIPの人以外見せたくないものを作るんだ。
処理が終われば解除されるようなかんじで。

0328nobodyさん2008/09/22(月) 03:39:53ID:???
212.134.32.14

212.134.32.143
0329nobodyさん2008/09/22(月) 06:54:54ID:???
>>317
変わってないな
0330nobodyさん2008/09/22(月) 12:43:54ID:???
PerlのNet-CIDRを移植したら?
0331nobodyさん2008/09/22(月) 15:10:26ID:EKIEGJ69
phpでカート作成のHP教えて
0332nobodyさん2008/09/22(月) 15:12:32ID:???
>>331
http://www.nintendo.co.jp/ds/amcj/
0333nobodyさん2008/09/22(月) 15:19:02ID:EKIEGJ69
ありがとう><;
0334nobodyさん2008/09/22(月) 16:42:16ID:???
ワラタ
0335nobodyさん2008/09/22(月) 16:44:51ID:???
>>331
ショッピングカートの基本はセッションを上手く扱うことだと思う
具体的なカート作成のサイトはなくてもセッションに関する記事は多いから、そこから学べば良いかと
どうせ学習目的とかでしょ?
0336nobodyさん2008/09/23(火) 01:10:46ID:KzC+qHTk
>>312
ありがとうございます! 助かりました!
0337nobodyさん2008/09/23(火) 12:55:10ID:BK/ZFWc8
ちょっとまてよ、>>331はPHPを使ってカートを作るHPというのを教えて欲しいんじゃないか?
0338nobodyさん2008/09/23(火) 12:59:43ID:???
さあ?
0339nobodyさん2008/09/23(火) 13:06:07ID:???
>>331-333の流れでネタのようにしか思えん
0340nobodyさん2008/09/23(火) 13:08:38ID:???
>>318は日本語の勉強から始めないと意図が伝わりにくいと思うが
まず何が目的で特定IP以外からのアクセスを制限したいかが不透明

内容からするに何らかの処理をしている期間は別の接続者を拒否したいって意味のようだが
その処理ってのが何度もリクエストを受けて完了するもだとしたら
---
アクセスがある

閲覧者IPのデータを確認する─(IP記録なし)→閲覧者IPを記録し結果表示
↓<(IP記録がある)
IP比較─(一致)→結果表示
└(不一致)→拒否
---
こんな感じでコード書けばいいだろ
記録IPをいつ削除するかは知らんけど、この処理書くどこで詰まってるの?

もし、一回のリクエストの結果表示までにすべて処理が終わってしまうようなものだったら
ファイルロックとかの方法でも調べれれ。IPを比較する意味ない

あとどうでもいいけど改行の削除は置換を使えよ
0341nobodyさん2008/09/23(火) 13:10:56ID:???
<?php
echo(">>331\n");
echo("このサイトを見れ\n");
echo("http://www.nintendo.co.jp/ds/amcj/");
?>

つまりこういうことだな
0342nobodyさん2008/09/23(火) 14:16:43ID:???
echoで括弧を付けるのはダサい
0343nobodyさん2008/09/23(火) 14:20:41ID:???
echoはカッコ付けなくてもエェ子やで
0344nobodyさん2008/09/23(火) 18:25:40ID:???
PHPなんて久しぶりに書いたから忘れてたわw
えーこと聞いた
0345nobodyさん2008/09/23(火) 19:38:04ID:???
fopenを使ってURLを開くとき
複数のURLに対して並列に処理を行いたいんだけど
どういう風にやればいいですかね?
最悪参考になりそうなサイト教えてください。
0346nobodyさん2008/09/23(火) 19:52:08ID:???
fopenはブロックするから並列処理には向かない
0347nobodyさん2008/09/23(火) 20:59:24ID:???
>>346
ブロック?とはどういうことでしょうか?
並列処理に向いているfopenに代わる関数を
教えていただけるとありがたいです。
0348nobodyさん2008/09/23(火) 21:01:16ID:???
そんなのない
0349nobodyさん2008/09/23(火) 21:05:07ID:???
じゃあfopenでがんばるとして
並列処理を行うにはどうすればよいでしょうか?

というかPHPでそんなことするなってことでしょうか?
0350nobodyさん2008/09/23(火) 21:18:43ID:???
>>345
HTTPDのプロセスを複数起動
0351nobodyさん2008/09/23(火) 21:31:31ID:???
>>345 ちなみにPHPではマルチスレッドはできない。
プロセスで何とかする。
0352nobodyさん2008/09/23(火) 22:13:13ID:???
なるほどプロセスを複数起動ですか
とりあえずその方向でググったりしてなんとかしてみます
ありがとうございました
0353nobodyさん2008/09/24(水) 23:43:55ID:???
$a=1;
$b=9;
$c=3;

「bが一番大きいです。」
と表示させたいのですが、maxだと数値しか返ってこないし・・・
教えていただけると幸いです。
0354nobodyさん2008/09/25(木) 00:11:02ID:???
>>353
変数名を取得することは出来ないから値の管理方法を変えよう
出来ないなら諦めるしかないと思う

例: 連想配列
$var = array(
 'a' => 1,
 'b' => 9,
 'c' => 3,
);
0355nobodyさん2008/09/25(木) 00:19:45ID:???
ありがとうございます!
0356nobodyさん2008/09/25(木) 00:20:07ID:???
いいてことよ
0357nobodyさん2008/09/25(木) 05:09:05ID:???
ちょっと疑問に思ったんだけど、
連想配列の場合、
$var = array(
 'a' => 1,
 'b' => 9,
 'c' => 3,
 'd' => 9,
);

この場合、どうなるんだろ?
0358nobodyさん2008/09/25(木) 05:29:20ID:???
何がどうなるんだろなのかわからないけどこういうこと?

$var = array('a'=>1, 'b'=>9, 'c'=>3, 'd'=>9);
$keys = array_keys($var, max($var));
var_dump($keys);
0359nobodyさん2008/09/25(木) 06:08:13ID:???
>>358
この出力結果ってb dってなるのかな?
0360nobodyさん2008/09/25(木) 06:21:43ID:???
お前は何を言ってるんだ
0361テスト2008/09/25(木) 23:34:41ID:???
てす
03622008/09/25(木) 23:39:24ID:???

てすと
0363nobodyさん2008/09/27(土) 20:36:51ID:Zle5Z5JO
return文と返り値がよく分からないんですが
PHPのマニュアルを見てもさっぱりです
どなたかreturn文が詳しく書いてあるサイト知っていたら教えてください
0364nobodyさん2008/09/27(土) 20:53:26ID:???
>>363
returnについてなんてマニュアル以上のことが書いてあるサイトはないと思うぞ
何が分からなくて、何が知りたいんだ?言ってくれれば答えるが
0365nobodyさん2008/09/27(土) 21:09:22ID:???
function hoge() {
0366nobodyさん2008/09/27(土) 21:15:49ID:???
$a = 'a';
0367nobodyさん2008/09/27(土) 21:18:59ID:???
return $a;
0368nobodyさん2008/09/27(土) 21:20:42ID:???
}
0369nobodyさん2008/09/27(土) 21:27:34ID:???
$huga = hoge();
0370nobodyさん2008/09/27(土) 21:31:06ID:???
この場合、$hugaには 「ああ゛っでるっ…!!たまみるくでるっ!! でっでるうっブリジットのこくまろミルクぅ」 が入ります
0371nobodyさん2008/09/28(日) 21:34:07ID:+UcDtbz0
PHPの動作確認のページが
Not Found
The requested URL /phpinfo.php was not found on this server.
Apache/2.0.63 (Win32) PHP/5.2.6 Server at localhost Port 80
と出てしまいます。どなたか教えていただけませんか?
0372nobodyさん2008/09/28(日) 21:37:11ID:???
マルチ乙
0373nobodyさん2008/09/28(日) 22:52:10ID:???
>>371
「/phpinfo.phpが無い」って書いてあるじゃないか。
これ以上何を教えろというのか
0374nobodyさん2008/09/29(月) 20:16:12ID:???
マンモス本2冊買った。1回一通り読んだけど、インストールからわけわからん。
なにをDLしたらいいのかさっぱりぜよ・・・。
0375nobodyさん2008/09/29(月) 20:39:55ID:???
それはプログラミング以外に問題がありそうだが・・・
0376nobodyさん2008/09/29(月) 22:54:33ID:ex4B3ZuI
PHPの確認動作で、phpinfo.php.txtとアドレスに表示されたまま、
画面には<? phpinfo(); ?>
と出てしまいます。
明らかに間違いですが、何がおかしいと思いますか?
どなたか教えてください。
0377nobodyさん2008/09/29(月) 23:01:53ID:???
誰か、華麗に答えてやってくれ。華麗にだぞ?
0378nobodyさん2008/09/29(月) 23:39:32ID:???
>>376
マルチ乙(どう?華麗でしょ
0379nobodyさん2008/09/30(火) 00:43:56ID:???
>>374?

0380nobodyさん2008/09/30(火) 16:45:48ID:???
>>376
拡張子txtがPHPのファイルとして定義されていないから。
0381nobodyさん2008/10/01(水) 05:38:30ID:ggjV1Mvy
getMessage()について質問させてください

ttp://www.php-labo.net/tutorial/class/pear.html
でgetMessage()が定義されてないのにエラー表示のときに表示するとありますが
どうしてなのでしょうか?
よろしくお願いします
0382nobodyさん2008/10/01(水) 06:04:37ID:???
require_once 'DB.php';
してるから
0383nobodyさん2008/10/01(水) 09:00:47ID:12eBxrbJ
http://www.php.net/manual/ja/language.operators.comparison.php
この辺のことだと思うのですが、質問させてください。

$a == $bのところで、日本語の文字を使うには、
$a == "日本語"のようにすると思うんですけど、
これは、「日本語」に等しいということですよね。

たとえば「日本」を含む文字列の条件を指定したいとき、
どうしたらいいでしょうか? 
条件の分岐で、「日本語」も「日本人」も「日本古来」もその他も
一括して指定したい、という感じなのですが。よろしくお願いします。
的をはずしていたらごめんなさい。
0384nobodyさん2008/10/01(水) 09:22:18ID:???
mb_ereg_match
0385nobodyさん2008/10/01(水) 10:43:40ID:???
できました! ありがとうございます。

もうひとつ合わせて質問なのですが、
完全に一致するものを、$a == "アメリカ"として
部分的に一致するのを、mb_ereg_match("[日本]",$a)として、
それぞれ処理をしようとしています。
else ifでつなげたほうがいいのですか? 
別のifとして分けたほうがいいですか?
それとも、どっちでもいいですか?
0386nobodyさん2008/10/01(水) 11:56:07ID:???
>>385
分けるかどうかはやりたいことによって違うからなんともいえないけど、
今回の場合は分けなくていいでしょ。
分けちゃうと一回アメリカと完全一致したものをもう一回日本が含まれてるか
判定することになるから余計な処理になる。
0387nobodyさん2008/10/01(水) 12:12:38ID:???
なるほどー! 
では、どんどんつなげていくことにしますね。
よく判る説明で、助かりました。ありがとうございます!
0388nobodyさん2008/10/01(水) 12:54:11ID:???
>>387
注意
ヒント
ある文字列が他の文字列内に含まれているかどうかを調べるためだけに preg_match() を使うのは避けた方が良いでしょう。 strpos() か strstr() 関数を 使う方が速くなります。
http://jp.php.net/manual/ja/function.preg-match.php
0389nobodyさん2008/10/01(水) 13:20:15ID:???
すみません、参照先を見たけど、書き方がよくわかりませんでした。

$aに入る文字列は数十文字くらいの短いもので、それを見ています。
早さはそんなに変わらないと思うので、このままで大丈夫ですよね?
0390nobodyさん2008/10/01(水) 22:32:30ID:HCEY5R1b
質問させて頂きます。
基礎からのPHPorやさしいPHPを買おうか迷ってるのですが、
基礎からのPHPはアプリが動作しないと聞きました。
自分は、アプリの有無よりも文法やクラス(?)、データベースの基礎を学びたい
と思っているのですが、そのような場合はアプリの動作は気にしなくてもよいでしょうか?
その他の面(参考書としての面)では良いと聞くので。

書籍スレでの質問はナンセンスだと感じたのでこちらでさせて頂きました。
ご教授願います。
0391nobodyさん2008/10/01(水) 22:49:30ID:???
動作しないわけないだろ
0392nobodyさん2008/10/01(水) 22:56:32ID:???
マジレスすると(ry
0393nobodyさん2008/10/01(水) 23:58:01ID:???
オライリーの初めてのPHP+mysqlがいいと思います。
もしくは実践マスターか。
基礎からのPHPorやさしいPHPは意味がないと思います。
特に基礎からのPHPはアプリが動作しませんでした。
びっくりです。
これは捨てました。
アプリを改造していくといろいろスキルがあがってくるので、
ただ本見てもおもしろくないと思いますし。
アプリが動くやつがいいと思います。
では
0394nobodyさん2008/10/02(木) 10:20:57ID:Qa3+G5H3
あるphpで、別のphpを呼び出すのに、こうやって書いています。
<?php include('ini.php'); ?>

この、ini.phpを、別のサーバにおいて呼び出したいのですが、
<?php include('http://別のサーバ/ディレクトリ名/ini.php'); ?>
みたいにやっても、うまくいきません。

どこでつまづいていて、どうすればいいのか、教えてください。
0395nobodyさん2008/10/02(木) 10:40:39ID:???
> どこでつまづいていて
基礎的な理解からつまづいてる

http://...をinclude = webサーバ経由でinclude
= ini.phpの「実行結果」をinclude

ini.phpの「内容」をincludeしたいなら、ftp経由にするとか、
ini.phpをincludeしたい内容の文字列を返すものにするとか。
0396nobodyさん2008/10/02(木) 10:59:48ID:Qa3+G5H3
ありがとうございます。もうちょっと勉強してみます。
0397nobodyさん2008/10/02(木) 18:21:25ID:???
うまくいかないといってもパースエラーが出るのか空文字が返ってくるのか接続できないとWarningが返ってくるのか
によって全く違う。
こういうのが「うまくいかない」しか書かない心理って何なの?
0398nobodyさん2008/10/02(木) 18:25:19ID:???
考えるのすら面倒なんでしょ
0399nobodyさん2008/10/02(木) 20:57:18ID:JC9hPbTs
>>393
ありがとうございます。オライリーですか、参考にしてみます。
にしても、やさしいPHPのレビューってないですね。
あと基礎PHPとかはもう古いのかな‥
0400nobodyさん2008/10/02(木) 21:31:32ID:PvYZxYkH
変数のスコープについての質問です。
mona.php
<?php
$a = 1;
include("giko.php");
include("fusa.php");
?>
giko.php
<?php
$b = 2+$a;
?>
ってあったときに$aがincludeされたファイル内でも利用だというのはわかったのですが
giko.phpの$bはmona.phpやfusa.phpで見れるのでしょうか?
ユーザー定義の関数の予定はないです。
0401nobodyさん2008/10/02(木) 21:41:47ID:???
100回includeのページを読め
0402nobodyさん2008/10/02(木) 21:55:19ID:PvYZxYkH
>>401
スコープの方を必死に検索かけてました
includeの方で調べればよかったんですね
ありがとうございます
0403nobodyさん2008/10/06(月) 07:28:33ID:eMKnyKHT
PHPでpearのパッケージを利用したいのですが
インストールの仕方が分かりません
ttp://www.php.net/manual/ja/install.phpには拡張モジュールしかないので
よく分かりませんでした
ttp://pear.php.net/manual/ja/installation.getting.php
に書いてあるように コマンドプロンプトを使えばいいのですが
コマンドプロンプトの使い方が分からないので
使い方を教えてください よろしくお願いします
0404nobodyさん2008/10/06(月) 07:48:42ID:???
>PEAR インストールのアップデートを行うには、 http://pear.php.net/go-pear をブラウザで表示してその出力をローカルファイル
> go-pear.php に保存します。そして次のコマンドを Windows のコマンドプロンプトで実行してください。
04054032008/10/06(月) 07:56:08ID:eMKnyKHT
レスありがとうです
多分その上の行らへんでつまずいていると思います

>PHP をダウンロードしインストールが完了したら、
>バッチファイルを実行します。 というのはダブルクリックだけでいいんでしょうか?
するとコマンドプロンプトが出てくるだけですが


>インストールしたフォルダへのパスを
>PATH 環境変数に追加します。 手動で追加する
> (スタート > コントロールパネル > システム > 環境変数)
>以上で、Windows のコマンドプロンプトから pear コマンドを使い PEAR パッケージマネージャを実行できるようになります。

pealパッケージとは PHPをインストールした時点で使用できるわけではないと思うので
多分ここでつまずいてます
よろしくおねがいします
0406nobodyさん2008/10/06(月) 08:05:35ID:???
バッチファイルの方はやらなくていいよ
go-pearの方保存して実行すればおk
04074032008/10/06(月) 08:13:05ID:eMKnyKHT
ありがとうございます
確認させてください
go-pear.phpというファイルを作ってそこに
http://pear.php.net/go-pearのソースをコピペ
そのあと保存先はC:\phpで
コマンドプロンプトで php go-pear.php
を実行するんですよね?

実行すると『内部コマンドや外部コマンド バッチファイルなどと認識されませんでした』
と表示されます
C:\PHP\PHP-pear.phpを実行しても
エディタが起動するだけでした

よろしくお願いします
0408nobodyさん2008/10/06(月) 08:15:52ID:???
phpの実行ファイルがある場所に移動してから実行すべし
0409nobodyさん2008/10/06(月) 08:19:25ID:???
> 実行すると『内部コマンドや外部コマンド バッチファイルなどと認識されませんでした』

C:\Documents and Settings\username>
で実行してるので php.exe が見つからないとかそういうオチなのかな。
04104032008/10/06(月) 08:38:03ID:eMKnyKHT
>>408-409
その通りです。。。
もう少しコマンドプロンプトの使い方勉強してきます

今から学校なので ありがとうございました
0411nobodyさん2008/10/07(火) 10:08:44ID:rx4j8OHY
PDT + xDebugはここで大丈夫かなぁ?
どっちもインスコ、php.iniを書き換えるがうまくいかない。

下のように、extensionだと、phpinfo()にxDebugの項目が現れるけど、
extension=php_xdebug-2.0.3-5.2.5.dll

下のようにzend_extension_tsの指定ではうまくいかない。
[xdebug]
zend_extension_ts = c:\php\ext\php_xdebug-2.0.3-5.2.5.dll

DebugBuildはnoで、ThreadSaftyはenabledだから、後者の書き方の筈なのだが。

で、まぁ前者で行くとして、問題は、[xdebug]の中に書いた設定が全然反映されない...orz
xdebug.remote_enable=true
とかやっても、phpinfo()で見ると、offになってる。
他の設定も同じ。

なので、eclipseでブレークポイントで止まってくれない...orz

誰かお助けを〜
0412nobodyさん2008/10/07(火) 12:08:43ID:???
zend_extension_tsじゃないとダメよん
0413nobodyさん2008/10/07(火) 12:35:01ID:rx4j8OHY
>> 412
どうもありがとうございます〜。
0414nobodyさん2008/10/07(火) 13:15:45ID:2lCZsXeT
PHPではサーブレットやmod_*、あるいはrailsなどのWebアプリのように
URIにコントローラやアクションを含めるような設計ってできるんでしょうか。
PHPのインスコ状況によるのかもしれませんが、どうも情報見つかりません。
0415nobodyさん2008/10/07(火) 13:23:31ID:???
コントローラーからビューに変数を渡したいのですが、
コントローラーで$this->set('test', 10);と書くと
exception 'Zend_Controller_Action_Exception' with message 'Method "set" does not exist and was not trapped in __call()' 〜
とエラーがでてしまいます。
setを使うのに宣言か何かが必要かと思い、調べたのですが何処を見てもsetを使えばできるとしか書いていません。
コントローラーで$test;や$test=3;はエラーが出なく、エラー文を見てもsetに原因がある気がするのですが、何が原因なのでしょうか?
0416nobodyさん2008/10/07(火) 13:41:47ID:???
>>415
フレームワークのこと知らないので適当だけど、
メッセージを見るとsetが未定義で、call(多分ビルトインの)で
トラップ(多分、未定義のメソッドが呼ばれたときに適当なメソッドを割り当てる)もできないと言ってる。
多分$thisはControllerクラスのことだと思うので(多分ばっかですんまそ)

要するにControllerクラスにsetが定義されてないんじゃないかと思います。
クラス定義やメソッド一覧するメソッドがあると思うので、確認してみては?

ちなみに今気づいたんですが、フレームワークを使ってると>>414の質問の答えはYesでしょうか?
0417nobodyさん2008/10/07(火) 14:12:15ID:???
>>414
「?name=value」が嫌ならmod_rewrite(Apache)で出来る

>>415
コントローラにsetがないってことじゃないか?
$thisじゃなくてビューのオブジェクトのsetを呼べばいいような気がする
ZendFWは使ったことないが、普通はそうだと思うぞ
0418nobodyさん2008/10/07(火) 14:28:36ID:???
>>415
もしかしてキャメルケースのアクションで引っかかってない?
04194152008/10/07(火) 14:44:42ID:???
>>415
ご指摘どおり、thisはコントローラーでsetがありませんでしたので、
中身のないsetを作ってみたところエラーは出なくなりましたが、変数の受け渡しはうまくいきませんでした(空なので当たり前ですね)
これでエラーそのもの原因は分かったので次は変数が受け渡せるように頑張ります。

>>417
確かにコントローラーに無いのでthisだと自分で処理を書くか、何処かからコピーしてこないといけないようです。
何処かからコピーしてくるんならそれを使えよって話なので、まずビューからそれらしいのがないか探して見ます。

>>418
キャメルケースが何なのか分からないのでぐぐってみましたが、命名規則(camelCaps?)の事でしょうか。
とりあえず命名規則はチェックしましたが大丈夫でした。
■ このスレッドは過去ログ倉庫に格納されています