【初心者】励ましあいながらサイト製作【PHP】
■ このスレッドは過去ログ倉庫に格納されています
何も分からん俺がPHPでWEBサイトを作るスレ http://pc8.2ch.net/test/read.cgi/php/1125396428/ から分家。 共同で何かを作るわけではなく、それぞれが勝手に自分の物を 作りながらひとり言を言ったり傷を舐めあったり質問をしあったりするスレです。 >>91 自分の場合、一通り読んでからプログラムを組みます。 それで実際、組むとき、あやふやな部分を確かめるって感じです。 >>91 ヒマな時間にリファレンス本を流し読みして「この言語ではこういうことができる」 という部分をまず掴みます。 使いそうな関数のページには折り目をつけておきますが、まず読み返すことはありません。 実際に組む時は、8割方過去に作ったスクリプトからコピペして改変します。 過去にない処理が必要になった場合、例えば「php 全角英数 半角英数 変換 」 とかググって、その処理に必要な関数名を調べます。 次にその関数名でまたググり、オンラインリファレンスから例文をコピペして パラメータだけいじります。 自分で暗記で打てるのはif文程度。 >>91 プログラミングってものに慣れてきたら>>93 みたいなやり方。 別に参考書が全部を完璧に教えてくれるわけじゃないから(というか中途半端な場合が多い) 分からないところは、「分からなかった」って事だけ覚えてれば、その場では分からなくてもいいと思う。 (サンプルコードを打ち込むのはいまいち為にならない。サンプルコードを落として、適当にいじくり倒す方がずっと為になる) 1,2回読んで分からなければ、その文章自体が下手糞か、自分にはまだ早い場合が殆どだと思うんで 放っておいて、色んなドキュメントとかソースなんかを見てるうちに ピンと来る内容にあたることがあるだろうから、その時にしっかり物にすればいい。 (ずっとピンと来ないのであれば、向いてないって事だろうし、参考書をいくら読んでも理解出来ないはず) 最初の頃のお勧めの方法としては 1.参考書の章を読む 2.よく分からない部分はピックアップしていく 3.いまいち処理が分からない時は、関数名や文中のキーワードでググる(公式ドキュメントの関連項目は必読) 4.もう1回読む 5.分からなくても、分からなかったこととして保留したまま次の章へ。本を読み終わったらしばらく読み直さない(すぐに読み直してもどうせ理解出来ない)。 どんなことが出来るか最初は分からないんだよね。 だから最初は基本的な部分だけ押さえて、後はリファレンスばっかり読む。 あーこんなことが出来るんだーなんて言いながら概要を掴んで、 実際に書いてみて、いじってみて、あーこうなるんだーって理解する。 そういうのの積み重ねだ。あhっはははははははははははh まだ、初心者の域を出てないのに仕事でプログラムを書かざるをえない。 めちゃくちゃな処理でなんとか思い通りに動かして、あとになって、もっとスマートな方法を見つけるけど、自分で書いたコードなのにもう、こんがらがってそれを適用するのもまた大仕事。 皆さん色々なご意見ありがとうございますm(_ _)m これからの勉強の参考にさせていただこうと思います。 >>71 別に普通に落ちてくる。Firefox で確認 あと global $_POST は要らない PHP初めて一週間。 いま、オブジェクト指向ってのを勉強してるけど、やっぱり難しい・・ PHPの他の部分はちゃんと理解できてるか? PHPのオブジェクト指向って、使わなきゃ使わないでどうにかなるし、 どうにかしちゃう場合が多いので、他のとこ覚えてからの方がいい気がするよ。 >>100 そうなんですか。 じゃぁとりあえずは後回しでもいいんですね。 PHPはまだまだ覚えていない部分がたくさんあります(д`;) ファイルの扱いや、サーバーとクライアント間のデータのやりとりといったモノの方が実用的な気がするので こっちの方を先に覚えようと思います。 ありがとうございました。 $subject = $from = $text = $atta = $part = $attach = "" これって変数をまとめて初期化しているんですよね? 初期化に該当するかどうかは知らんけど、 羅列してる変数全てに""を代入してる。 PHPでは基本的にあまり変数の宣言や初期化はしないし、 するにしても、そういう分かりにくい仕方はしないよ。 え、phpって初期化不要? 気持ち悪いからしてるけど普通しないもんなの? 自分の認識外の部分で同じ名前のグローバル変数が使われちゃっている可能性もあるし、 http://d.hatena.ne.jp/keyword/register_globals register_globals問題もあるので、念のため初期化してからの方が無難なのかもね。 自分も初心者なのでよーわからんのですが、 function Hoge_Hoge(){ //必要なグローバル変数だけを意識的に取り込む global $str; 処理 } Hoge_Hoge(); ってな感じでとりあえずfunctionで囲んでおけば安心? >>104 初期化とは異なるけど、例えば分岐処理を簡単に済ませたい時とか function fooBar(){ $text = ""; if (式) { $text = "foobar"; } return $text; } こういうelseの必要ない書き方とか、あとは何があったかな 自分は、全部を全部初期化するんじゃなくて、初期化する必要のある変数だけ初期化するようにしてる。 たとえば for($i = 0; $i < 10; $i++) $foo .= $bar[$i]; なところは $foo = ""; for($i = 0; $i < 10; $i++) $foo .= $bar[$i]; とするとか。そのくらい。 自分が始めた時は、そういうことも大事だけど http://php.s3.to/man/types.comparisons.html あたりの挙動をちゃんと把握する事の方が、変な動作するスクリプト減らすのには役立つなぁと思った次第。 >>106 それって、パフォーマンス的にも可読性保つためにも、素直にelse使った方がいい気が… >>107 漏れは>>106 の書き方好き。 先にまず初期値。 その後、複数の条件を羅列することも出来る。 case文っぽい感じだよね? 可読性に関しては好みだとは思うけど、パフォーマンス的に差が出るようなものなの? trueなら"foobar"、そうでないなら""という動作をする記述をしたいなら、素直にそう書くべきという意見。 まぁ、「最初は""で、trueだった時だけ"foobar"」って見方も出来るから、好みっちゃ好みなのは確かなんだけど、 >>104 みたいな初期化の仕方をした上で>>106 の記述をすると、 「ん?この値何が入ってるんだよ」って感じで、ソースをさかのぼって見なきゃいけなくなっちゃう事が多い。 (書いてる時はいいんだけど、後から保守する時が……) パフォーマンス云々は、体感できる差じゃないけど、後から必ず値が入る場合にも初期化されちゃう分無駄だよ、ってだけ。 >>109 >>>104 みたいな初期化の仕方をした上で>>106 の記述をすると、 >>106 の方で「初期化とは異なる」と最初で断ってるわけなんだからこれはおかしいんじゃない? 変数を空にするのは、単に初期化するためだけはないと言ってるんじゃないの? それに>>106 みたいな手法の方が楽だということもあるんだし、それぞれじゃないかな。 >>110 >>106 は、初期化(初期値の代入)と取るのが自然な気が。 現に、""を初期値に設定して、ifがtrueの場合のみ"foobar"を代入、と捕らえるのが自然な記述だと思うし。 こういうのって、本人がどういうつもりで書いたかという事よりも 実際の挙動や、読み手がどう取るか、の方が大事なんじゃないかな。 んで、それぞれはそれぞれだよ、駄目だなんて一言も言ってない。 読み難くなくて、ちゃんと動けば全然問題ないと思う。 function fooBar(){ if (!式) { return; } return "foobar"; } 自分ならこう書くかな。 初期化以前に極力新しい変数は作らない。 まあ、その式次第だな。 たとえば式がcount(array)とかで、1ページで何回も呼び出されるものなら、 staticでページ1回につき1回の計算だけで済ましたりするだろう。 単純になんでもない式なら>>112 だな。 フォームから\マークを送信するだけでもれなく2倍還元! という感謝祭が私の作ったプログラムの中で連日開催されているのですが 何とかならないものでしょうか >>114 if (get_magic_quotes_gpc()) { $_POST['com'] = stripslashes($_POST['com']);//¥除去 } これ楽だぞ。自作で一番よく使う関数。 function getGPC($string) { if(is_array($string)) { foreach($string as $key => $value) $string[$key] = getGPC($value); return $string; } if (get_magic_quotes_gpc()) { return stripslashes(urldecode($string)); } else { return urldecode($string); } } >>116 GPCから入力された時点で自動的にurldecodeされてるはず それだと%41みたいな値が渡せない。 けっこう好きなスレなのにこのごろさっぱりだね・・ここ 作ってはいるんだけどねえ・・・ 完成してから公開、とか考えると逆に駄目だね。 一人で製作の弱点って、そこだな。 ttp://www.atmarkit.co.jp/fsecurity/rensai/hoshino01/hoshino01.html このシリーズ、役に立つようになるかも。 >>126 HTMLで済むのをむりやりPHPに移植するスレだったのか。 >ククク. だまされましたね? ここは自宅のPowerBook Serverです. くれぐれもアタックをかけない様に(藁 ttp://glagla.dw.land.to/index.php こっちにも同じ事書いてあるけど、land.toはいつからオマイの自鯖になったんだ? というか新たなnullの誕生か? 2度と行かね。 掲示板とかショッピングとか言ってたやつらはどうなったのだろう。。。 http://contents-factory.net/ 作ってますよー Guestアカウント ID:trial@smartworks.jp pass:guest カートの方は製作中かつ仕事だからまだ非公開だけど。 passはguest1でしたすみません。 どちらにせよ意地になって無理やり公開するもんじゃないね。 不具合多すぎ。 あ、land.to忘れてたや。 indexねぇぞっつう警告メール来たんでとりあえず置いて、そのままだったや。 思い出サセテクレテありがとう。 まぁ見るに耐えられない痛いサイトなのは承知だぜぃ・・・ 励ますのはかまわないけど、 本家が単発スレ立ち上げたものだから、 今一つ気がのらないだけ。 おまいらの作りたいサイトってXOOPSじゃ駄目なのか? XOOPSがあるんだから、独自にサイト作るのって車輪の再発明ってことに気づいてない? XOOPSを改良する方向に力注げよ。 基礎が出来てない香具師の改造は頂けないな つかXOOPSは駄目スクリプトだと洩れは思うぞ 大は小を兼ねないし、どこがセキュリティホールになるか把握しきれないやつが むやみに XOOPS を設置しまくるように仕向けるのは賛成できない 何事も練習だと思うのでコツコツBBSから作ってる俺 一点だけでも既存スクリプトにない要素を入れられれば勝ちだと思っている俺 >>139 案外工夫の余地があるんだよな デザインをテンプレートで分離するとか RSS の出力を工夫して管理しやすくするとかね データの管理の仕方とか 質問 テキストファイルのデータを読み込んでinsert文でmysqlのテーブルに挿入するスクリプト作ったんだが上手くいかなかった んで、いろいろ試して文字/改行コードをEUC、LFじゃなくてSHIFT-JIS、CR+LFにしたら上手くいった phpってEUCで書くもんだと思ってたけどコレでいいの? 勘だがテキストファイルがSHIFT-JISで保存されてたんじゃなかろうか sjisで流し込むならmysqlの設定ファイル弄らないと化けるよ >>143 いや、テキストもEUCだったよ >>144 化けてるね、凄まじい勢いで 化けてるね なんかますますわからん 今こんなカンジ テキスト(EUC)を読み込んでPHPスクリプト(S-JIS)でテーブルに挿入 mysqlにログインして直にテーブル内容を確認したらデータが文字化け 文字化けしたデータを別のPHPスクリプトで内容表示させたら文字化せずちゃんと表示される ちなみに表示させたデータをmb_detect_encoding()で確認したらEUCだった で、mysqlにログインしたついでにスクリプトではなく直にinsert文で同じデータを追加してみた 結果、テーブル内では文字化けしないが、スクリプトで表示させると文字化け(つーか日本語部分が表示されない) mb_detect_encoding()で確認したらS-JISになってた mysqlの設定がおかしいのか? my.iniの設定は以下のようになってたが・・・ [mysqld] default-character-set=sjis >>147 PHPの方かな 一応、mb_convert_encoding()使ってテーブルにデータ追加する時はEUC→S-JIS テーブルからデータ読み込む時はS-JIS→EUCとする事で思ったとおりの動作させることが出来たけど・・・ もしかしてmysqlの設定がS-JISになってるからダメなのか? でも何処でWINDOWSでmysqlの設定方法調べてmy.iniに [mysqld] default-character-set=sjis [mysql] default-character-set=sjis [mysqldump] default-character-set=sjis って書けって書いてるんだが いま、こんなふうなif文をやっているんだけど、 どうにもうまくいかない。ちょっと、教えてくれると助かります。 とりあえず、元のテキストデータ(複数)があって、たとえば0行目が 1であれば内容を表示するって言う感じで↓みたいにとりあえずして 実際動かしてみた。 <!--ファイル読み込み--> <?php $ファイル(1) = file("ファイル(1)"); } ?> 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 <!--内容表示--> <?php if(ファイル(1)の0行目指定 == 1) { print("内容"); } ?> で、まあこれで動いたんで調子乗ってもう一つのテキストデータを 読み込ませた同じやつ(ファイルの0行目指定(2)みたいな感じで) を同じように書いてみたんだけど、なぜか表示されない。(↓) <!--ファイル読み込み--> <?php $ファイル(1) = file("ファイル(1)"); $ファイル(2) = file("ファイル(2)"); } ?> 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 <!--内容表示--> <?php if(ファイル(1)の0行目指定 == 1) { print("内容"); } ?> <?php if(ファイル(2)の0行目指定 == 1) { print("内容"); } ?> にんともかんともわからなかったので if(ファイル(2)の0行目指定 == 1)を if(ファイル(2)の0行目指定 == 0←※)と言う風に他のに変えたら OKでした。これはやっぱり、なんか競合してるからダメポという事 なのでしょうか?? 説明ベタですみませんが、 知っている方教えていただけると助かります。 そんな日本語に置き換えまくったコードじゃわからねーよ <?php $f_one = file("hoge1.dat"); $f_two = file("hoge2.dat"); if($f_one[0] == 1){ print "内容";} if($f_two[0] == 1){ print "内容";} ?> ・・・こういうこと? 多次元配列$sel[][]を一括でFORM送信ってできないんですかね?? イメージ的にはこんな風に・・・。 <FORM action="a.php" method="post"> print "<input type='hidden' name='sel[][]' value='$sel'>"; </FORM> 配列はnameに[]をつけないといけないということはわかったのですが、 この書き方ではうまくいかず。。。 1個ずつ送らないといけないのでしょうかorz きらいじゃないんだがなぁ でもただの質問スレになるならいらね a,b,c,dってデータファイルをhtml上で ,を</td><td>に変えるのってどうやるのでしょうか? 初心者なもんで。誰かおしえてください。 $lines=file でやって foreachで繰り返す時にtrとかやったらいいんじゃない 一応 ereg_replaceとかで置換できますよ PHPで指定したディレクリにあるjpg|jpeg|gif|pngの画像枚数を取得したいんだが、教えてくれ。 質問させてください。 外部RSSを簡単に読み込んで出力するルーチン (ttp://phpspot.net/php/pg%E5%A4%96%E9%83%A8%EF%BC%B2%EF%BC%B3%EF%BC%B3%E3%82%92%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%81%BF.html)を使用して、 HPにブログの更新された日付とタイトルを表示させたいのですが、 日付が表示されないです。 どうかご教授下さい。 <table> <?php // 外部RSSを簡単に読み込んで出力するルーチン $RSSURL = "ttp://feedblog.ameba.jp/rss/ameblo/staff/rss20.xml"; $buff = ""; $fp = fopen($RSSURL,"r"); while ( !feof($fp) ) { $buff .= fgets($fp,4096); } fclose($fp); // パーサ作成 $parser = xml_parser_create(); // パーサオプションを指定 xml_parser_set_option($parser,XML_OPTION_SKIP_WHITE,1); // パース実行、連想配列にパース結果代入 xml_parse_into_struct($parser,$buff,$values,$idx); // パーサ開放 xml_parser_free($parser); // パースして得た連想配列をまわす $in_item = 0; $count = 0; foreach ($values as $value) { $tag = $value["tag"]; $type = $value["type"]; $value = $value["value"]; $tag = strtolower($tag); if ($tag == "item" && $type == "open") { $in_item = 1; } else if ($tag == "item" && $type == "close") { if($count < 10){ echo "<tr><th>".$dateDisp."</th><td><a href=\"".$link."\"> ".$title."</a></td></tr>\n"; } $count++; $in_item = 0; } if ($in_item) { switch ($tag) { case "title": // UTF-8なドキュメント $value = mb_convert_encoding($value, "UTF-8", "UTF-8"); $title = $value; break; case "link": $link = $value; break; case "category": // UTF-8なドキュメント $value = mb_convert_encoding($value, "UTF-8", "UTF-8"); $category = $value; break; case "dc:date"; $date = $value; $dateArr = explode("T",$date); $dateDisp = explode("-",$dateArr[0]); $dateDisp = implode(".",$dateDisp); break; }}} ?> </table> amebloを使用してるので、 $RSSURL = "ttp://feedblog.ameba.jp/rss/ameblo/staff/rss20.xml"; にはamebloスタッフさんのブログを表示させていただきました。 お知恵拝借できればとおもいます。 宜しくお願いします。 最近Webコーディングの勉強を始めた初心者なんだけどちょっと教えてほしいです。 まだApache云々とかまで全然手出せてないからわからないんだけど 色んな人のプログとかサイト見てるとブラウザのurlバーにhoge.htmlとかって リクエストに対して返ってきたファイルの拡張子まで表示される場合と拡張子のない場合と あるんだけどあれってどうゆうことなんでしょうか? >>167 使ってるphpのバージョンが5なら、「simplexml_load_file」を使うと、もっと簡素なソースで組めるぞ? この関数でサンプルソースをググってみれ。 >>169 http://httpd.apache.org/docs/current/content-negotiation.html php初心者です。 phpのコードとhtmlの見通しをよくしようと考えました。 <h1 id="h1"><img src="<?php bloginfo(template_url); ?>/images/title/info.png"></h1> <h3 id="h3">管理情報</h3> を <?php echo '<h1 id="h1"><img src="'. bloginfo(template_url) .'/images/title/info.png"></h1>', '<h3 id="h3">管理情報</h3>' ?> のようにしてみたのですが、 imgのsrcにURLを設定するbloginfo(template_url)の部分の処理の順番が前後してしまって、 表示したWebページのソースを見ると、 http://localhost/< ;h1 id="h1"><img src="/images/title/info.png"></h1><h3 id="h3">管理情報</h3> のようになっています。 これを修正する方法を教えてください。 bloginfo() を文字出力じゃなくて文字を返すようにする あと、WordPress を参考にしたんなら、 あれはプログラムの手本の真逆を行ってる 糞コードの最右翼だから気をつけれ なるほど。サンクスです。 bloginfo()がどこにあるのか見つけられなかったのですが、これはWordPressの関数なんですよね? ま、それはそれとして、自分でも、このコードの見通しは、大差ないかむしろ悪いくらいだわ、とは思ったんです…。 ふだんはC#なんですけど、phpって、こんなに見通しが悪いんだ…。 いやはや。 最近phpをさわっているのですが、うまく動かないので教えてください。 main.php(メイン) include_once( 'myclass.php' ); $my_class = new myclass(); $my_class->クラスの関数(); myclass.php(の中身) class myclass{ myclass(){} クラスの関数(){ include_once('hoge.php' ); $戻った値=関数1(); } } hoge.php(の中身) include_once('tmp.php' ); 関数1(){ global $tmp; … return … } tmp.php(の中身) $tmp = array(なんたら,かんたら) hoge.phpの関数1で、$tmpの中身が空なので、 間違っている所を教えてください。 xamppでapacheのサービスを有効にしようとすると、 「services cannot be installed or uninstalled while the service running」という、 エラーが吐き出されます。 スカイプを切り、apache control panelのプロパティにて「管理者としてこのプログラムを実行する」 にチェックを入れましたが解消されません。 何か他に対処方法はありますでしょうか? 使用OS:win7 ultimateです。 よろしくお願いいたします。 ウェブまんがのまとめサイト作ってみた。 Wordpressをカスタマイズして作成。 http://man3.everyday.jp/ PHP扱うのは初だったけど、Wordpressベースでだいぶ楽に開発できた。 仕事の合間の土日使って、実質10日くらい。(WordpressとPHPとCSSの勉強含む) いきなりはじめるphp読んではじめたものです XAMMP PHPをはじめるのにまず何からはじめたらいい? 1. ローカルのマシンにXAMMP入れる。 2. で、、作りたいものをいきなり作れるわけはないのでやっぱ参考書買ってきてPHPの基礎から書籍の例題にしたがってやっていくしかないかな? ==知識== PHPフレームワークとか意味が全然わかんない。 昔、XHTML1.0/CSSだったか書いてた事はあるけど、もう忘れた。 今後はHTML5/CSS3を改めて覚え直さないといけないのか? サーバーの知識とネットワークの基本的な知識はある。 ==とりあえずある環境== ・外部非公開の自宅テストサーバ(LAMP)※CentOS ・レンタルサーバー(Wordpress可) ==最終目的== ・Wordpressの既存テーマをカスタマイズ。 ・WordPressのオリジナルテーマを白紙から作る。 ・Wordpessを使わないでオリジナルのサイトをつくる。 ・仮想社内の社員管理(個人情報管理システム)みたいなのをつくりたい。 ==開発環境== Windows 10 Home 64 bit (10586) TH2 メモリ8GB とりあえず入れているもの ・GIMP2(最新) ・Inkscape(最新) ・サクラエディタ/TeraPad ・Aptana Studio3(最新) かなり苦手なこと ・画像処理、デザインセンスのなさ レンタルサーバーとかってRuby on RailsよりもPHPのほうが借りやすいんでしょうか? このご時世、レンタルサーバ借りなくても自由なVPSが変わらない値段であるからレンタルサーバうんぬんは考えなくていいんじゃない 自己責任でVPSの運用管理に時間取られるわけだからレンサバとコストが大差ないと見るのは如何なものかと 特にセキュリティの知識ないなら安易に手を出すのはやめたほうが吉 CSRF対策で、フォームの入力画面から確認画面への移行で <input type="hidden" name="token" value="<?=session_id()?>"> という記載が見られます。 ソース見ると丸見えなのですがそれでも意味あるのでしょうか? すみません追記です。 セッションではなく固定値ではダメでしょうか? (どちらかというとこちらの質問が本命。) どなたかお願いします。 セッションIDそのものやセッションに紐付いた値ならば、アクセスしてくるユーザーごとに(ブラウザごとに)値が変わる 他者がその値を推測することが困難だから、本人が意図したとおりの正規のアクセスかどうかの確認用として意味があるわけ 固定値なら他のサーバに同じ値を使ったフォームを設置するだけで同じHTTPリクエストを再現できてしまうのでほとんど意味がない 1度アクセスしてそのブラウザ(セッション)のまま悪さしたら? ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.1 2024/04/28 Walang Kapalit ★ | Donguri System Team 5ちゃんねる