元スレ【初心者】励ましあいながらサイト製作【PHP】
php覧 / PC版 /みんなの評価 :
101 = :
>>100
そうなんですか。
じゃぁとりあえずは後回しでもいいんですね。
PHPはまだまだ覚えていない部分がたくさんあります(д`;)
ファイルの扱いや、サーバーとクライアント間のデータのやりとりといったモノの方が実用的な気がするので
こっちの方を先に覚えようと思います。
ありがとうございました。
103 = :
初期化に該当するかどうかは知らんけど、
羅列してる変数全てに""を代入してる。
PHPでは基本的にあまり変数の宣言や初期化はしないし、
するにしても、そういう分かりにくい仕方はしないよ。
104 = :
え、phpって初期化不要?
気持ち悪いからしてるけど普通しないもんなの?
105 = :
自分の認識外の部分で同じ名前のグローバル変数が使われちゃっている可能性もあるし、
http://d.hatena.ne.jp/keyword/register_globals
register_globals問題もあるので、念のため初期化してからの方が無難なのかもね。
自分も初心者なのでよーわからんのですが、
function Hoge_Hoge(){
//必要なグローバル変数だけを意識的に取り込む
global $str;
処理
}
Hoge_Hoge();
ってな感じでとりあえずfunctionで囲んでおけば安心?
106 = :
>>104
初期化とは異なるけど、例えば分岐処理を簡単に済ませたい時とか
function fooBar(){
$text = "";
if (式) {
$text = "foobar";
}
return $text;
}
こういうelseの必要ない書き方とか、あとは何があったかな
107 = :
自分は、全部を全部初期化するんじゃなくて、初期化する必要のある変数だけ初期化するようにしてる。
たとえば
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使った方がいい気が…
108 = :
>>107
漏れは>>106の書き方好き。
先にまず初期値。
その後、複数の条件を羅列することも出来る。
case文っぽい感じだよね?
可読性に関しては好みだとは思うけど、パフォーマンス的に差が出るようなものなの?
109 = :
trueなら"foobar"、そうでないなら""という動作をする記述をしたいなら、素直にそう書くべきという意見。
まぁ、「最初は""で、trueだった時だけ"foobar"」って見方も出来るから、好みっちゃ好みなのは確かなんだけど、
>>104みたいな初期化の仕方をした上で>>106の記述をすると、
「ん?この値何が入ってるんだよ」って感じで、ソースをさかのぼって見なきゃいけなくなっちゃう事が多い。
(書いてる時はいいんだけど、後から保守する時が……)
パフォーマンス云々は、体感できる差じゃないけど、後から必ず値が入る場合にも初期化されちゃう分無駄だよ、ってだけ。
110 = :
>>109
>>>104みたいな初期化の仕方をした上で>>106の記述をすると、
>>106の方で「初期化とは異なる」と最初で断ってるわけなんだからこれはおかしいんじゃない?
変数を空にするのは、単に初期化するためだけはないと言ってるんじゃないの?
それに>>106みたいな手法の方が楽だということもあるんだし、それぞれじゃないかな。
111 = :
>>110
>>106は、初期化(初期値の代入)と取るのが自然な気が。
現に、""を初期値に設定して、ifがtrueの場合のみ"foobar"を代入、と捕らえるのが自然な記述だと思うし。
こういうのって、本人がどういうつもりで書いたかという事よりも
実際の挙動や、読み手がどう取るか、の方が大事なんじゃないかな。
んで、それぞれはそれぞれだよ、駄目だなんて一言も言ってない。
読み難くなくて、ちゃんと動けば全然問題ないと思う。
112 = :
function fooBar(){
if (!式) { return; }
return "foobar";
}
自分ならこう書くかな。
初期化以前に極力新しい変数は作らない。
113 = :
まあ、その式次第だな。
たとえば式がcount(array)とかで、1ページで何回も呼び出されるものなら、
staticでページ1回につき1回の計算だけで済ましたりするだろう。
単純になんでもない式なら>>112だな。
114 = :
フォームから\マークを送信するだけでもれなく2倍還元!
という感謝祭が私の作ったプログラムの中で連日開催されているのですが
何とかならないものでしょうか
115 = :
>>114
if (get_magic_quotes_gpc()) {
$_POST['com'] = stripslashes($_POST['com']);//¥除去
}
116 = :
これ楽だぞ。自作で一番よく使う関数。
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);
}
}
119 = :
けっこう好きなスレなのにこのごろさっぱりだね・・ここ
120 = :
作ってはいるんだけどねえ・・・
完成してから公開、とか考えると逆に駄目だね。
一人で製作の弱点って、そこだな。
121 = :
どう禿増していいのか良く分からんしな
122 = :
ストレスで禿げ増えた
123 = :
オンライン越しにペアプログラミングとか。
125 = :
http://www.atmarkit.co.jp/fsecurity/rensai/hoshino01/hoshino01.html
このシリーズ、役に立つようになるかも。
126 :
http://niwaka.is-a-geek.org/
まだまだ未完だけど上げてみる
127 = :
>>126
HTMLで済むのをむりやりPHPに移植するスレだったのか。
>ククク.
だまされましたね?
ここは自宅のPowerBook Serverです.
くれぐれもアタックをかけない様に(藁
http://glagla.dw.land.to/index.php
こっちにも同じ事書いてあるけど、land.toはいつからオマイの自鯖になったんだ?
というか新たなnullの誕生か?
2度と行かね。
128 = :
掲示板とかショッピングとか言ってたやつらはどうなったのだろう。。。
130 = :
passはguest1でしたすみません。
どちらにせよ意地になって無理やり公開するもんじゃないね。
不具合多すぎ。
131 = :
あ、land.to忘れてたや。
indexねぇぞっつう警告メール来たんでとりあえず置いて、そのままだったや。
思い出サセテクレテありがとう。
まぁ見るに耐えられない痛いサイトなのは承知だぜぃ・・・
132 = :
ま。ま。励ましてこ。
133 = :
励ますのはかまわないけど、
本家が単発スレ立ち上げたものだから、
今一つ気がのらないだけ。
134 = :
アップデートを励ましてみるっつーのはどうだろう
135 :
おまいらの作りたいサイトってXOOPSじゃ駄目なのか?
XOOPSがあるんだから、独自にサイト作るのって車輪の再発明ってことに気づいてない?
XOOPSを改良する方向に力注げよ。
136 = :
基礎が出来てない香具師の改造は頂けないな
つかXOOPSは駄目スクリプトだと洩れは思うぞ
137 = :
大は小を兼ねないし、どこがセキュリティホールになるか把握しきれないやつが
むやみに XOOPS を設置しまくるように仕向けるのは賛成できない
138 = :
かぶったorz
139 = :
何事も練習だと思うのでコツコツBBSから作ってる俺
140 = :
一点だけでも既存スクリプトにない要素を入れられれば勝ちだと思っている俺
141 = :
>>139
案外工夫の余地があるんだよな
デザインをテンプレートで分離するとか RSS の出力を工夫して管理しやすくするとかね
データの管理の仕方とか
142 = :
質問
テキストファイルのデータを読み込んでinsert文でmysqlのテーブルに挿入するスクリプト作ったんだが上手くいかなかった
んで、いろいろ試して文字/改行コードをEUC、LFじゃなくてSHIFT-JIS、CR+LFにしたら上手くいった
phpってEUCで書くもんだと思ってたけどコレでいいの?
143 = :
勘だがテキストファイルがSHIFT-JISで保存されてたんじゃなかろうか
144 = :
sjisで流し込むならmysqlの設定ファイル弄らないと化けるよ
145 = :
>>143
いや、テキストもEUCだったよ
>>144
化けてるね、凄まじい勢いで
化けてるね
146 = :
なんかますますわからん
今こんなカンジ
テキスト(EUC)を読み込んでPHPスクリプト(S-JIS)でテーブルに挿入
mysqlにログインして直にテーブル内容を確認したらデータが文字化け
文字化けしたデータを別のPHPスクリプトで内容表示させたら文字化せずちゃんと表示される
ちなみに表示させたデータをmb_detect_encoding()で確認したらEUCだった
で、mysqlにログインしたついでにスクリプトではなく直にinsert文で同じデータを追加してみた
結果、テーブル内では文字化けしないが、スクリプトで表示させると文字化け(つーか日本語部分が表示されない)
mb_detect_encoding()で確認したらS-JISになってた
mysqlの設定がおかしいのか?
147 = :
MySQLもおかしいけどPHPもだね
148 = :
my.iniの設定は以下のようになってたが・・・
[mysqld]
default-character-set=sjis
>>147
PHPの方かな
149 = :
一応、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
って書けって書いてるんだが
150 = :
いま、こんなふうなif文をやっているんだけど、
どうにもうまくいかない。ちょっと、教えてくれると助かります。
とりあえず、元のテキストデータ(複数)があって、たとえば0行目が
1であれば内容を表示するって言う感じで↓みたいにとりあえずして
実際動かしてみた。
<!--ファイル読み込み-->
<?php
$ファイル(1) = file("ファイル(1)");
}
?>
~~~~~~~~~~~~~~~~~~~~~~~~
<!--内容表示-->
<?php
if(ファイル(1)の0行目指定 == 1) { print("内容");
}
?>
で、まあこれで動いたんで調子乗ってもう一つのテキストデータを
読み込ませた同じやつ(ファイルの0行目指定(2)みたいな感じで)
を同じように書いてみたんだけど、なぜか表示されない。(↓)
みんなの評価 :
類似してるかもしれないスレッド
- 【PHP】セッションについて語ろう!【PHP】 (829) - [40%] - 2018/6/27 23:16 ○
- 【ANTI】今、あえてPerlで攻める【PHP】 (161) - [36%] - 2017/12/31 9:32
- 【Perl】何をやれば「出来る」といえる?【PHP】 (185) - [35%] - 2019/5/9 7:46
- 【Perl】勉強したい人協力したい人ドゾー【PHP】 (92) - [32%] - 2022/12/22 9:00
トップメニューへ / →のくす牧場書庫について