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

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

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

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



くだすれPHP(超初心者用)4
http://pc11.2ch.net/test/read.cgi/php/1213356756/

適当に関連スレ(マルチはだめぽ)
【PHP】下らねぇ質問はここに書き込みやがれ 69
http://pc11.2ch.net/test/read.cgi/php/1211879073/
0268nobodyさん2008/12/20(土) 22:06:37ID:maii3k3G
pagerで
1 2 3 4 5
ではなく
0 1 2 3 4
とゼロから始めるにはどうすれば良いでしょうか?
0269nobodyさん2008/12/20(土) 22:21:47ID:???
>>267
ありがとうございました
0270nobodyさん2008/12/20(土) 23:15:27ID:???
>>268
何のpagerだよ
質問の仕方にも程があるぞw
0271nobodyさん2008/12/20(土) 23:16:59ID:???
PEARじゃね
俺なら迷ってる時間があったら丸ごと全部再実装する
0272nobodyさん2008/12/20(土) 23:18:25ID:???
全部再実装とか、よっぽど暇なのか。
0273nobodyさん2008/12/20(土) 23:18:35ID:???
結果を-1するかソースで-1すればいいじゃん
02742692008/12/21(日) 01:06:19ID:???
すみませんでした PEARのPagerです。
>>273さんのやり方で例えば
ttp://www.phpbook.jp/pear/pear_pager/index4.html
このページではどこで-1すれば良いでしょうか?
0275nobodyさん2008/12/21(日) 01:23:54ID:???
$naviの中かgetLinksメソッドの中
02762692008/12/21(日) 01:37:38ID:???
>>275
ありがとうございます。やってみます!
0277nobodyさん2008/12/21(日) 12:44:01ID:???
PEAR::Pagerの出力はHTMLタグだからいじりづらいんだよ。
入力はこっちでいじればいいが、出力はgetLinks()の結果を正規表現とかで置換するしかない。
どっちかっつーといじりたいのは変数の方じゃなくて画面表示の方だろうしな。
インターフェイスはおおむね決まってる(パクる)から、残りの作業は実装だけだしな。
0278nobodyさん2008/12/21(日) 12:51:30ID:???
別にソースいじればいいじゃん
0279nobodyさん2008/12/21(日) 18:50:29ID:???
HTMLからURLで変数をもらいその変数でrequireするtxtファイルを変え
ページの管理を楽にしようと思っているのですが
馴れていない人がやると、まずいことはありますでしょうか
0280nobodyさん2008/12/21(日) 18:58:59ID:???
ぐぐれ
0281nobodyさん2008/12/21(日) 19:06:00ID:???
>279
txtをrequireする、の意味がまったく分からん。

ファイル名に「../../../」とか指定されると、ヤバいファイルを開かれる危険がある(ディレクトリ・トラバーサル脆弱性)。
総じて、予期しないファイルを開かれないような対策が必要になる。

数種類しかないなら、決まった文字列以外は許可しないようにする。
たくさんあってそうするのが面倒なら、「/」を入力されたらエラーにする。
hoge.txtを開きたいなら「hoge」の部分だけ入力させる、などの対策が必要。
ファイル名は自分で決められるんだし、[0-9a-Z-_]あたり以外の文字列が来たら問答無用でエラーになるようにするのが無難だな。
0282nobodyさん2008/12/21(日) 19:34:34ID:???
>>281
ありがとうございます

HTMLで記述したファイルの拡張子をPHPに変え、
任意の部分にrequireでtxtファイルを読み込むと
メニューなどの管理が楽になると某サイトで読みました
それをメニューではなく内容に変えれば、
外観や増えていくページの管理が楽になるのかなってことで
初心者ながら、勉強もかねて質問をさせていただきました


自分の決めた文字列だけを対象にするということで

switch ((string)$page):
case 'log1':
case 'log2':



break;
default:
echo "ファイルが見つかりません";
endswitch;

こういった記述でよろしいのでしょうか
0283nobodyさん2008/12/21(日) 19:45:19ID:???
勉強なら自分で調べろやボケ
0284nobodyさん2008/12/21(日) 20:02:13ID:???
>>283
勉強は兼ねてるだけだろ?よく読めよ
0285nobodyさん2008/12/21(日) 20:04:15ID:???
>>283
頼むからコテつけてくれ
0286nobodyさん2008/12/21(日) 20:04:16ID:???
caseを使えば、たぶん安全。
コードがないとなんとも言えんわな。
やってみて、動くコードができてから来たほうがいい。
何もやらずにいきなり聞く姿勢は歓迎されんし。
0287nobodyさん2008/12/21(日) 20:09:44ID:???
これでいいんでしょうか
どう書けばいいんでしょうか
じゃ勉強の糞の足しにもなりゃしねぇよカス
0288nobodyさん2008/12/21(日) 20:12:29ID:???
>>287
おまえなんでこのスレにいんの?
いやむしろ何のために生きてんの?w
0289nobodyさん2008/12/21(日) 20:27:01ID:???
>>287
スレの趣旨すら分からないなら口出すな
0290nobodyさん2008/12/21(日) 20:38:48ID:???
>>283
努力します

>>286
中途半端でした、すみません

一応、問題なく動いたので評価をお願いしたいです

log001.txt
<b>表示されました</b>

index.html
<A Href="pagelog.php?log=log001">log1へ</A>

pagelog.php(head略)
<body>
<?php
$_GET['log'];

switch ((string)$log):
case 'log001':
case 'log002':
require($log.".txt");
break;

default:
echo "ファイルが見つかりません";
endswitch;
?>
</body>
02912862008/12/21(日) 21:01:57ID:???
>290
それが動く事に少なからず衝撃を受けた。

requireやincludeは、基本的にPHPプログラムを読み込むためのもの。
それだとたぶん、txtの中にPHPプログラムとして解釈可能な文字列があると、実行されてしまう。
単純にテキストファイルの中身を読み込む場合、file_get_contents()を使ったほうがいい。
動くなら問題ないっちゃあないんだが…
0292nobodyさん2008/12/21(日) 21:07:15ID:???
って、ああそうか、よく考えたら動いて当たり前か。

「評価されると危ないので避けたほうがいい」という意見は変わんないけどな。
txtは自分が編集するから、安全といえば安全なのだが、無駄な危険の芽は摘んだほうがいい。
いつの日かうっかりtxtにexit();とか書き込んだらエラーになるし。
0293nobodyさん2008/12/21(日) 21:39:17ID:???
>>292
うっかりが起きないとも限らないので
file_get_contents()について調べてみます。
勉強になりました。
ありがとうございました。
0294nobodyさん2008/12/21(日) 21:45:08ID:???
>>290
まぁ、動いているので問題ないけど、
コーディングのマナーとしてはよろしくないかもね
・require等の中に変数は入れない方がいい
・比較するときにキャストして使う時にキャストしないというのは問題になることがある。

前者は設定によってはリモートでのコード実行につながるから
後者は比較が通っても、問題のある変数で実行する可能性があるから
0295nobodyさん2008/12/21(日) 21:53:40ID:???
>>292
なんねーよ
echoと同じだ
0296nobodyさん2008/12/21(日) 22:28:16ID:???
>>294
参考になります

まだまだ馴れてない部分が多いので基礎から覚えるために
やはり、書籍を一つ買おうと思います
0297nobodyさん2008/12/21(日) 22:58:47ID:???
うむもう二度と来ないでくれ
0298nobodyさん2008/12/21(日) 23:00:10ID:???
>>297
来なければ、いいだけじゃね。
0299nobodyさん2008/12/22(月) 18:00:09ID:???
プログラミング初心者だけどPHP難しすぎて投げそう(';ω;`)
2週間位で基礎を学ぶには何したら良いんですか(';ω;`)ウォウォ…
0300nobodyさん2008/12/22(月) 18:02:13ID:???
教えてくれそうな男に体でも売ればいいんじゃね
0301nobodyさん2008/12/22(月) 18:06:33ID:???
もうウンコして寝込むしかねぇ・・・
0302nobodyさん2008/12/22(月) 18:21:33ID:???
マニュアル嫁
0303nobodyさん2008/12/22(月) 18:26:34ID:???
どっかから小さめなスクリプト落してきて、
「なんで?なんで?なんでこうなるの?」と思いながら丁寧に読んだり、
チョっとした機能を追加してみたりして、
いろいろもがくといいんじゃないだろうか。
0304nobodyさん2008/12/22(月) 20:08:10ID:???
初心者が読めるようなちょっとしたスクリプトは大抵がPHP4時代の糞CGIで変な癖がついたりする罠。
グローバル空間にexplodeしてたりするスクリプトが多すぎる。
0305nobodyさん2008/12/22(月) 20:09:08ID:???
explode→extract
0306nobodyさん2008/12/22(月) 20:09:52ID:???
>>304
それがどうしたの。
0307nobodyさん2008/12/22(月) 20:18:07ID:???
んなの読まなきゃいいだろ
0308nobodyさん2008/12/22(月) 22:15:31ID:???
>>299
初めてのプログラミングがPHPで、配列/連想配列でこけたけど、しばらくしてからやってみたらすぐ理解できた。
あんまり根詰めないで気楽にまったりやるといいよ。
読むだけじゃなくて手も動かすといい。
サンプル丸写しして、いろいろ自分で弄ってみるんだ。
エラー出ればメッセージ出て何が原因かすぐわかるしね。
03092992008/12/22(月) 22:16:58ID:W3OrxKsT
>>303
どっかから?
どっかから?そのどっかから?はどっかから?
つまり僕が言いたいのはどっかから?なんです。お願いします。

03102992008/12/22(月) 22:39:19ID:W3OrxKsT
>>308
( ´_ゝ`)フーン
「どうもありがとう」って言っといてだってお兄ちゃんが
妹より
0311nobodyさん2008/12/22(月) 22:51:01ID:???
で、どう書いたら>>304さんに変な癖がついてると言われない書き方なのよん
正しい書き方教えてくりっ
0312nobodyさん2008/12/22(月) 22:59:57ID:???
PHPの公式マニュアルで「非推奨です」「危険です」と書かれている書き方を全て避ける。
0313nobodyさん2008/12/22(月) 23:00:21ID:???
変な癖が付いてると言われなければいいのか
0314nobodyさん2008/12/22(月) 23:04:23ID:???
>>304 みたいな奴には何を見せても重箱の隅つつかれるよね。
スルーでいいとおもう。
0315nobodyさん2008/12/22(月) 23:15:14ID:zcPu3Ss9
PHP4用の開発ノウハウってのがあって、これは今となってはバッドノウハウ。
PHP5のみサポートの有名なFWで開発してみて、動いたらソースを読むのが吉
0316nobodyさん2008/12/23(火) 00:46:09ID:???
ノウハウ以前のレベルだろうに
0317nobodyさん2008/12/23(火) 02:41:59ID:???
いまだに共用鯖じゃPHP4主流だもんなあ。
0318nobodyさん2008/12/23(火) 03:56:34ID:207JnJAg
JavaScriptの"for〜in"構文をPHPで書くとどうなるのでしょうか
PHPはあまり分らないもので
0319nobodyさん2008/12/23(火) 04:00:08ID:???
>>299
漏れは先にperlを2ヶ月やってから
PHPに移動した。
0320nobodyさん2008/12/23(火) 04:13:36ID:???
>>318
マニュアル
0321nobodyさん2008/12/23(火) 13:04:10ID:???
>>318
$array=array('name'=>'aki','age'=>23,'karesi'=>'futsu');
foreach($array in $key=>$item) {
echo "$key $item\n";
}
0322nobodyさん2008/12/23(火) 13:54:23ID:???
単にforeach文て言えば済むじゃねぇかw
03232992008/12/23(火) 17:39:32ID:???
>>319
何でですの?教えてごらんなさい
0324nobodyさん2008/12/23(火) 17:43:37ID:???
ご先祖様だから
0325nobodyさん2008/12/23(火) 18:14:25ID:???
ご先祖様はCだろw
0326nobodyさん2008/12/23(火) 18:37:45ID:???
そこまで戻る必要は無い

ってか、Cは却って難しい
0327nobodyさん2008/12/23(火) 20:41:02ID:???
SQLite3ってPDOってやつを使ってアクセスするんですよね
マニュアルにあるSQLite3ってやつとは何が違うんでしょうか
0328nobodyさん2008/12/23(火) 20:45:19ID:???
別にPDOじゃなくてもアクセスできるけど
0329nobodyさん2008/12/23(火) 21:06:01ID:???
なるほど
ググってもPDOのことしか見当たらずそこからマニュアルに流れ着いて
SQLite3文?って物があるのを知ったのでどういった違いがあるのかなと思ったのですが
どっちを使っても構わないってことでしょうか
0330nobodyさん2008/12/23(火) 21:06:50ID:???
うん
0331nobodyさん2008/12/23(火) 21:19:15ID:???
わかりました
どちらがいいのかはわかりませんが、せっかくなのでSQLite3も使ってみます
0332nobodyさん2008/12/23(火) 21:44:59ID:???
DBっていうのは、MySQLとかSQLiteとかPostgreSQLとかOracleとか、似たようなのがたくさんある。
元々はそのそれぞれに対して、よく似てるけどちょっとずつ形の違う関数がいっぱいあった。
で、それが不便だからって事で、「同じ書き方でどれにでもアクセスできるような仕組みを作ろう!」となった。
それがPDO。

PDOを使って書かれたプログラムは、DBがSQLiteからMySQLに変わっても、PDOクラスをnewしてるところだけ書き換えれば普通に動く。
また、PDOひとう覚えれば、どのDBでも使えるようになる、というメリットもある。
0333nobodyさん2008/12/23(火) 21:50:29ID:???
普通DSNを書き換えるんだろ
0334nobodyさん2008/12/23(火) 21:50:51ID:???
じゃあ自由度は下がるってことでFA?
0335nobodyさん2008/12/23(火) 21:57:29ID:???
ひとう → ひとつ

これだけだとバランス取れないので、一応デメリットも。
全DBでなるべく共通の操作を提供する、という仕組みのため、一部のDBに固有の機能が使えなかったりする事がある。
よくある話だと、MySQLの持続的接続が使えなかったりな。あと、パフォーマンスでもPDOは若干劣る。

個人で使う最大のメリットは、プリペアドステートメントのサポートだと個人的に思う。
SQLインジェクションの危険性をほぼゼロにできる上に、プログラムの可読性も上がる。
0336nobodyさん2008/12/23(火) 21:58:54ID:???
> よくある話だと、MySQLの持続的接続が使えなかったりな。

それってパフォーマンスに影響するんだっけ?ベンチとった?
0337nobodyさん2008/12/23(火) 22:14:41ID:???
PDOは文字コード変更用の関数がないからなー……。
SET NAMES 危ないって聞くし。
03383352008/12/23(火) 22:49:27ID:???
>334
んな事いったら、sqlite関数やmysql関数を使ってしまえば、将来のDB変更の自由度が失われるわけだが。
俺は自由度や性能云々以前に、DB依存のコードがそこら中にあるのを気持ち悪いと感じる。そんなものはどっかで隠蔽されるべきだ。
(実際問題、DBを置き換えるなんて事態は普通ないだろうけどな)
0339nobodyさん2008/12/23(火) 22:58:50ID:???
>>338
あたまでっかちおっさんどっかいけよ
0340nobodyさん2008/12/25(木) 05:23:16ID:???
>>339
335, 338の発言を理解できないなら発言するな。
339的な発言は、このスレの害虫。
0341nobodyさん2008/12/25(木) 05:57:49ID:???
>>PDOを使って書かれたプログラムは、DBがSQLiteからMySQLに変わっても、
>>PDOクラスをnewしてるところだけ書き換えれば普通に動く

SQL文自体がDB固有になるだろうから、現実的にそれはあり得ないんじゃないか?
(標準SQLだけで書かないでしょふつう)

俺的なPDOのメリットは、DB関連関数をどのDBにも共通で使えるため開発の学習量を
減らせること。これはソースコードの可読性の向上、メンテ性の向上にもなる。
0342nobodyさん2008/12/25(木) 18:01:58ID:???
標準SQLだけで書かないのが普通という前提なら、共通で使える部分の学習量なんてほとんど0じゃないか?

0343nobodyさん2008/12/25(木) 20:20:04ID:???
DBを変更する予定があるとき、
単純にPDOだけで実現できるわけじゃぁないが、
PDOで標準SQLだけを使うか、
PDOよりも抽象化したFWを使うわけで、
素の関数を使うよりは汎用性が高い。

どっちの言うことも大きく間違っちゃいないわな
0344nobodyさん2008/12/29(月) 23:28:23ID:hqhRjo69
オブジェクトのメソッド名とプロパティ名の一覧ってどうやって取得したらいいんでしょうか?
0345nobodyさん2008/12/29(月) 23:37:49ID:???
リフレクション
03463442008/12/30(火) 12:21:58ID:???
>>345
有り難うございます
おかげで3週間越しの問題が解決しました
本当に有り難うございます
0347nobodyさん2008/12/31(水) 11:35:34ID:???
phpの質問かJavaScriptの質問か迷ったのですが、ボタン(button)がクリックされた時に
確認用のダイアログを出すにはどうすれば良いでしょうか?


実行しますか?
【OK】 【キャンセル】

※ダイアログを表示し【OK】が押された場合のみ
submit処理を行ういたいです。
0348nobodyさん2008/12/31(水) 11:47:59ID:???
>>347
超JavaScript
ググれば死ぬ程出てくる
一番最初に引っかかったページ http://promptbox.jp/blog/memo/index.php?itemid=785

お年玉くれw
0349nobodyさん2008/12/31(水) 12:38:49ID:???
>>348
ありがとうございます。
でもお金ないです。。。
0350nobodyさん2008/12/31(水) 12:39:59ID:???
つI
0351nobodyさん2008/12/31(水) 13:25:47ID:???
つD 御縁がありますように。
0352nobodyさん2008/12/31(水) 13:30:12ID:???
っH
0353nobodyさん2008/12/31(水) 16:42:47ID:???
htmlかphpかわからないのでこちらで質問です。
formのプルダウンメニューの値を送信ボタンで渡すのはわかるのですが
プルダウンで選択しておいてリンクをクリックしたときにその値を一緒に
送るような使い方はできるのでしょうか。
ようはメニューでレイアウトの種類を選択して、リンク先をそのレイアウトで
表示させるといったことをしたいのですが。
0354nobodyさん2008/12/31(水) 17:24:24ID:???
php関係無し
0355nobodyさん2008/12/31(水) 18:25:42ID:???
そうですか、phpで操作できたらよかったんですが。
その後ググってるとJavaScriptでメニューの値が取得できるようですので
これとonClickだかでどうにかできるのかなってことでJSはわからないんですが
少し勉強してみようとおもいます
スレ違い失礼しました。
0356nobodyさん2008/12/31(水) 18:29:31ID:???
JavaScriptのほうが最適ではあるだろうけど
工数増えるけどPHPでできないこともない
まぁガンガレ
0357nobodyさん2008/12/31(水) 18:57:38ID:???
素直にやるならJavaScriptだろうな。
プルダウンを変更した時点でリンク先を書き換えるか、クリック時にフォームのsubmitイベントを呼び出すか。
0358nobodyさん2008/12/31(水) 18:59:09ID:???
>>353
リンクにonclickといれてsubmitさせてやればいい
0359nobodyさん2008/12/31(水) 19:01:23ID:???
俺ならselectが変更された時点でJavaScript経由でcookieに表示設定を放り込む。
一度選択したら2回目以降は覚えていて欲しいだろうからな。
0360nobodyさん2008/12/31(水) 19:49:56ID:???
URLに数字等を入れる事により1つのphpページ画面をそのパラメータによりページの内容を
変えたいと思います。

どうすれば同一phpページをパラメータURLを指定する事により表示内容を変更する事が出来ますか?

http://www.test.php=1234
http://www.test.php=1235


0361nobodyさん2008/12/31(水) 19:52:15ID:???
httpのクエリストリングから調べろ
0362nobodyさん2008/12/31(水) 20:01:42ID:???
>>360
http://www.example.com/?page=1234
こういう形なら$_GET['page']で1234が取得できるから
これを使って切り替えれば良い
ただしpage=1234の1234は誰でも値を入れる事ができるから
チェック等は必ずするように
03633602008/12/31(水) 20:14:49ID:???
>>361
ヒントをありがとうございます。

>>362
詳しくご解説頂きありがとうございました。
早速「ガキ使い」を見ながらプログラミングしてみようと思います。
0364nobodyさん2009/01/03(土) 12:58:05ID:???
phpでシステム開発をする場合には通常次の階層の直下に*.phpファイルを置いて
動作確認を行いますよね?
  C:\Program Files\Apache Software Foundation\Apache2.2\htdocs

しかし、1つのPCで複数サイトの開発を行う場合には、次の用にフォルダを切った上で
開発を行っているのですが、この方法は正しいですか?

  C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\site1
  C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\site2

※要するに動作確認をする場合には次の用にしなくてはならないので。(まっ、これしか方法は無いかな?)

  http://localhost/site1/index.html
  http://localhost/site2/index.html
0365nobodyさん2009/01/03(土) 13:04:40ID:???
hosts にサイト名追加して、VirtualHost つかうとかもあるな。
0366nobodyさん2009/01/03(土) 13:12:49ID:???
俺はZF使ってるからmod_rewrite
0367nobodyさん2009/01/03(土) 13:20:37ID:???
使ってれば偉くなった気になるんですね。わかります。
■ このスレッドは過去ログ倉庫に格納されています