【初心者】励ましあいながらサイト製作【PHP】
■ このスレッドは過去ログ倉庫に格納されています
何も分からん俺がPHPでWEBサイトを作るスレ
http://pc8.2ch.net/test/read.cgi/php/1125396428/
から分家。
共同で何かを作るわけではなく、それぞれが勝手に自分の物を
作りながらひとり言を言ったり傷を舐めあったり質問をしあったりするスレです。 このスレ見て改定新版基礎PHPを今日、買ってきた。
まだ75ページ目くらいしか見てないけど、なかなかいい感じですこの本。
MySQLとの連携も書いてあるみたいだし。
WEBでいろいろPHP関連のサイトをずーっと見てたけど、やっぱり本はいいね。
PDFのマンモス本見てるより本見る方が楽。
おたがいがんばりまそ。 俺も基礎PHPで勉強した。
まぁPHPやる前にPerlやってたから最初の方は適当に読んだけどね。
今は2XXページあたりの図書管理のデータベース使ったプログラムを書いてる
データベースすげーー!って感じですw よく一部の携帯サイトで見受けられるリンクを分けずにワンクリック(一つのコンテンツのみ)で機種ごとに対応させるにはどうしたらできる?例えば着メロとかはキャリアごとに形式違いますよね。
知ってる人はよろしく >>53
MS Access + SQL Server程度しかやった事なかったんで、DBすげーになるまでがんがりまつ。
やっぱアマゾンの書評より2chの書評の方がいいような希ガス。 User-Agent見るといいよ。
携帯電話以外でもUser-Agentに載ってる情報でクライアントに関する色々な情報が得られる。 >>53 >>55
DBすげーってなったら、DBの設計・操作の基礎みたいなのが掴めれば、
DB絡みの簡単なシステムは大体は作れるようになると思う。非効率的なコードになるとは思うけどね。
あと、DB独自の関数群(php側DB側両方)とかも覚えていくと、phpでごちゃごちゃ書く量が減ってかなり楽になる。
設計とかユーザ管理が面倒くさいけど、とにかくシステムをサクサク作りたい、って時は
phpMyAdminとかphpPgAdminを使うとスプレッドシートみたいな感覚でお手軽にやれるよ。 >>54
糞マルチ死ねよ
糞マルチ死ねよ
糞マルチ死ねよ
糞マルチ死ねよ
糞マルチ死ねよ
糞マルチ死ねよ
というマルチを誘う罠だな 10日で覚えるPHP5は10日じゃ覚えられない…と思い出した今日この頃(´・ω・)
やっぱ自分には無理なのか…(つД`)グスッ
自分の頭悪さ加減が嫌になった… 無理に読んで詰め込む必要ないよ。
解説書全てに言えることだけど、適当に読み飛ばしつつ、使えそうなところだけ拾っていって
よく読んでないところも「この辺にこんなのがあったなぁ」程度に覚えとくだけで十分。
あとは自分の作りたいものを作りつつ、2chの関連スレやフォーラムをブラブラして
初心者質問スレで聞いたり、分かる範囲で人に教えたりしながら、少しずつ出来る事を増やしていけばいい。
止めずに続けてりゃ、気が付いたら大概の事が割とまともに出来るようになってるはず。
正直、入門書の類を何冊読んだって、ゴリゴリ書いて自分なりのノウハウを掴んで行かないと、いい物は作れないと思う。
入門書読むより何が大事かって、楽しいと思って取り組む事と、興味の沸いた事を積極的に調べて取り込んで行く事だ、と言ってみる。 PDFみてマンモス本買おうとしたらPHP5のやつしか本屋になかったorz
まだまだ4で逝くのでPHP4版が欲しいけど大きな本屋に逝けばあるのかな? 出版してないっぽいから(だからPDFで配布してるんだけど)
チェーン店とか他の書店からの取り寄せが出来るところで店員に聞いてみるといいかも。
PDFで必要なとこだけ印刷して読むとかじゃ駄目?
確かにディスプレイ上じゃ見難いけど、1回通して読んだ後は、必要なとこ読むだけだから
検索の利くPDFの方が利便性高いと思うんだけど。
まぁ、どうしても製本されたのが欲しいって気持ちも分からなくもないから、止めはしないけど。 >>62
あれはプリントのロックがかかっててプリント出来ないのです。
画面で読むのはきついんで。 >>57
ありがとさんです。
phpMyAdminとかphpPgAdminぐぐってみました。
かなり便利なもんがあるんですね。
たすかりますた。
PHPエディタ(スタンドアロン版)
http://phpspot.net/php/phpeditor.html
たまにエラーが出て白紙が開いたり上書き保存が効かなくなるバグが >>66
スタンドアロン版なんてあったのか
汎用エディタに慣れてしまうと、プロジェクト管理とか面倒なんだよな <?
Header("Content-type: text/octet-stream;");
Header("Content-disposition: attachment; filename=hoge.csv");
print("あいうえお\n");
?>
単純にCSVファイルをダウンロードさせたいだけなのですが、
これにアクセスしてもただ文字が表示されるだけです。
なぜでしょうか。お願いします。 >>68
content-typeがtextだから >69
ありがとうございます。
もう1個だけ教えて下さい。
<?
function csv(){
Header("Content-type: Application/octet-stream;");
Header("Content-disposition: attachment; filename=hoge.csv");
print("あいうえお\n");
}
function html(){
print "<form action=csvtest.php method=post>";
print "<input type=hidden name=hoge value=hoge>";
print "<input type=submit>";
print "</form>";
}
global $_POST;
$hoge = $_POST['hoge'];
if($hoge == ""){
html();
}else{
csv();
}
?>
上記を実行して頂くとわかるのですが、ダウンロードダイアログが開いて、
開くをクリックすると、なぜかもう一度ダイアログが出て開くをクリックすると
csvが開けます。なぜダイアログが2回出てしまうのでしょうか。
ご教示ください。
POSTしているのがいけないのでしょうか?
確認していませんが、GETでやると1回で済むと思います。 PostgreSQLは追記型DBなので、バキュームをしないとDBが肥大化
すると聞きました。
高性能らしいのですが、書き込みの多いサイトだと放っておいたら
レン鯖だとそのうち容量オーバーしやすいのでしょうか。
大した事はしないので、おとなしくMySQLを使っていた方が無難? postメソッドで受け渡しする際に引数の中に『&』が入っても大丈夫な記述ってできないですか?
例えばこんな感じで、〜/hoge.php?a=1&b=2&c="d&e"とかくくってもダメなんです...
>>74
urlencodeしなきゃだめだ
つか励ましあうのって無理があるな 移動したんですね。自分はまだ全然進んでません。
詳しくは日記を見てください;;
http://zone.s33.xrea.com/nik/nik.cgi
1Mでいいので開通早くて速度でる会社教えてください
YAHOO ソネット Jコム ビッグローブ アサヒネット
ケーブル以外でお願いします;;。 http://images-jp.amazon.com/images/P/B00009B8MC.09.22TLZZZZ.jpg
http://images-jp.amazon.com/images/P/B00009B8MC.09.99TLZZZZ.jpg
Amazonみたいに、path_infoとGDを使って値引率を動的に画像の中に
合成しようと思っているのだけど、ImageTTFTextは使わずにimagestringを
使いたい。
でも、imagestringのパラメータにフォントサイズの項目が見当たらない・・・
ビットマップフォントを無理に拡大しても荒れるだけだからなのかなあ。 あ、いや、AmazonがPHPを使っているとかそういうことではなくて、
PHPで同じ機能を再現できないかと思って。
でもAmazonの値引率の表示って結構凝っていて、文字部分まで
リアルタイムに合成して作っているんじゃないっぽい。
どうも1.png〜99.pngまでの合成用画像をあらかじめ用意しておいて
それを使っているような気がしてきた。
で、そんな面倒なことをする気がない私はビットマップフォントの合成で
お茶を濁しましたとさ。
見た目ちょっとヘボいけど、汎用性が高いからこれでいいや。めでたしめでたし。 >>84
なんでimagettftextは使いたくないの? >>85
サイト名と設置URLとメールアドレスを設定するだけですぐにスタートできる、
お手軽なショッピングサイト構築ツールを作ってるんですわ。
フリーの書体だとしても、配布セットの中に勝手に他人の著作物を
同梱するわけにもいかないので、お気軽さ優先で。 >>86
だったらこれ使えば?
ttp://www.widgnet.com/gdf_fonts/ >>87
紹介感謝です。
もし公開後にショボいと言われまくるようだったら、専用のフォントでも
自作して同梱することにします。
たかだか「0〜9+o+f」の12文字だけだしね。 >>89
2chブラウザでも使っとけ。
誤爆が減っていいぞ。 参考書を読んで大体しくみを理解できたら、実際にソースを打ち込んで、何も見ないで打てるようになったら次の章にすすむ
自分はこういうやり方でやってるんですが、皆さんはどうやってますか?
>>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でした。これはやっぱり、なんか競合してるからダメポという事
なのでしょうか??
説明ベタですみませんが、
知っている方教えていただけると助かります。 そんな日本語に置き換えまくったコードじゃわからねーよ ■ このスレッドは過去ログ倉庫に格納されています