【初心者】励ましあいながらサイト製作【PHP】
■ このスレッドは過去ログ倉庫に格納されています
何も分からん俺がPHPでWEBサイトを作るスレ http://pc8.2ch.net/test/read.cgi/php/1125396428/ から分家。 共同で何かを作るわけではなく、それぞれが勝手に自分の物を 作りながらひとり言を言ったり傷を舐めあったり質問をしあったりするスレです。 自分の認識外の部分で同じ名前のグローバル変数が使われちゃっている可能性もあるし、 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度アクセスしてそのブラウザ(セッション)のまま悪さしたら? 我が家は娘が気づいて3年前からPCカメラを目隠ししてる。 「web講義」を受けた時に「おや?」と思って「もしかして、こっちも見られてる?」と思ったらしい。 油断も隙もない世の中だね〜一般国民は油断も隙もありありなんですが・・・ 【身を守れ】FBI、スノーデン、ザッカーバーグらがノートPCのウェブカメラをシールで隠すよう提言 http://xn--nyqy26a13k.jp/archives/22080 健康法.jp/archives/22080  以前、深夜未明にカメラが勝手に起動したときは本当に驚いた https://twitter.com/wVega_Planet/status/777657551479418880 CSRFは本人が意図しない動作をやらされるのが問題 本人が何らか悪さするのとは全く関係ない 今年からPHPを始めました! いきなりですけど教えてください! XAMPPを使って参考書を進めてるのですが、 演算子の「&&」と「||」が「&」と「|」だけでもエラーを出さずに機能してしまいます。 これは一つだけでも機能するものなのでしょうか? あと、スレ違いだったらごめんなさいです。 どうやらビット演算子というものらしいです! お騒がせしました! 誰でも簡単にネットで稼げる方法など 参考までに、 ⇒ 『半藤のブブイウイウレレ』 というサイトで見ることができます。 グーグル検索⇒『半藤のブブイウイウレレ』 0V8KFKHR55 スレチだったらゴメンナサイ。 現在、WindowsでApacheでPHPを動かしています。 DドライブにVirtualHostごとにフォルダを複数作ってます。 例えば、Aドメイン内のPHPで、「unlink('D:/ドメインB/test.txt');」を実行すると、削除できてしまいます。 また、「unlink('C:/test.txt');」も実行可能でした。 これだとちょっと怖いので、できればAドメイン内のPHPではAドメインフォルダ内のファイルのみ上書き/削除できるようにしたいのですが、 php.iniなのかApacheのConfigなのか、どのあたりの設定を調整すれば良いのか教えていただけないでしょうか。 どうぞ宜しくお願いします。 プログラミングを誰でも習得できる方法は、「前場アキドルのプログラミングマスター方法」というブログで見られるらしいよ。ネットで調べると見られるらしいです。 KOCIO □は全角スペース <p>あいうえお</p> <p>□□うえ□</p> <p>あい□□お</p> 例えば「え」が縦3つがそろうようにしたいです。 HTMLに直に書くとブラウザで固定幅フォントとしてそろいます。 ところがphpで echo "<p>あいうえお</p>\n"; echo "<p>□□うえ□</p>\n"; echo "<p>あい□□お</p>\n"; とするとバラバラ(段々)になってしまいます どうしたらいいでしょうか? <html><body> <?php $e = getenv(); foreach ($e as $k => $v) { echo "$k:$v<BR>"; } // $x = $_SERVER['REMOTE_ADDR']; ?> </body></html> 環境変数が取得できません。(PATH, PWD, SHLVLだけしか$eに入りません) しかし下から三行目のコメントアウトしてある行を入れると取得できます。 鯖はエックスサーバー、PHPのバージョンは7.2.6です。 何がいけないのでしょうか? ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.1 2024/04/28 Walang Kapalit ★ | Donguri System Team 5ちゃんねる