【PHP】下らねぇ質問はここに書き込みやがれ 26
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001nobodyさん
2006/08/07(月) 13:11:50ID:???まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレは>>2-10 関連スレは>>4-10 FAQは>>6-10 辺り
◆質問する場合の注意
1. 自分のIDを表示させること。(メール欄に何も記述しないでください)
2. サーバーのOS、WebサーバーとPHPの種類やバージョン等を明記すること。
3. 己の行った操作、変更などを詳しく明記すること。
4. エラーメッセージはそのまま表記すること。「エラーが出ます」では絶対分かりません。
5. 質問者としても態度をわきまえること。
6. 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・質問者は必ずIDを表示させてください。(メール欄に何も記述しないでください。)
・2回目以降は最初に質問した際のレス番号を名前欄に入れてください。
(逆に回答者は質問者に対して>>(アンカー)をつけて答えてください。)
・解決しなくても回答をもらった場合はお礼を言う。
(荒らし、煽りは除く。逆に煽られたときも、無闇に反論せずスルーすべし)
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・オブジェクト指向については良スレがないから本を買え。理解できないならムリに使うな。
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
0809nobodyさん
2006/08/19(土) 16:55:21ID:???0811nobodyさん
2006/08/19(土) 17:08:04ID:+ytFUBf1fopen() でテキストファイルを作っていくプログラムを作りたいのですが、
htmlフォームからユーザーにテキストを入力させ、その内容をファイルに反映せさたいのです。
$fp = fopen("./test.txt","w");
fwrite($fp,"This is file write test.\n");
fclose($fp);
ここまでは理解できるのですが、
問題はこれをどうやってhtmlフォームと連携させるのかということです。
どの当たりを勉強したらよいか解らず、苦戦しています。
解るかた、ヒントだけでも頂けたらと思います。
よろしくお願いします。
0812nobodyさん
2006/08/19(土) 17:11:01ID:???0813nobodyさん
2006/08/19(土) 17:13:33ID:???http://www.php.net/manual/ja/tutorial.forms.php
0814nobodyさん
2006/08/19(土) 17:24:32ID:???いったん配列なりに入れて
チェック入れろ
0815nobodyさん
2006/08/19(土) 17:31:25ID:???>そこ…なのかな?
人様のアドバイスを実行・確認もせずに批判するぐらいなら
質問なんかしないで自分で解決しろボケカス。
0816nobodyさん
2006/08/19(土) 17:38:38ID:???現在、クライアントPC(Windows)にDreamweaverをいれて、そこからFTPで
ローカルの開発環境サーバー(linux)に直接
アクセスして開発しています。チェックは直接ブラウザからローカルIPを
叩いて確かめています。サービスが動いている本番サーバはまた別に存在します。
ただ、開発効率の悪さを実感しています。そこで
eclipse+phpeclipse に開発環境を変えようと思っていますが
クライアントPCにもphp+mysql+apacheをいれる必要があり、そうすると
ローカルのlinuxサーバーの意味があまりありません。
できれば、テストサーバ側のファイルを直接いじりつつ
デバック等もできればと思っていますが、こんな私に向いている
開発環境はなんでしょうか。
eclipse+phpeclipse+PHP/dbg というものもあるらしいですが。
# smarty+phpフレームワークも導入予定。
# バージョン管理はsubversion予定。
0817811
2006/08/19(土) 17:42:37ID:+ytFUBf1813を勉強してきます。
>>814
解らなければまた質問させてもらうかもしれません。
0818nobodyさん
2006/08/19(土) 18:00:02ID:???>>ローカルのlinuxサーバーの意味があまりありません。
んなことないでしょ、チームで開発するんだったら
担当部分を自分のPC内でまずコーディング・テストして
全員が利用するテストサーバで結合テストするのがいいんじゃないの
逆にテストサーバで直接いじってて他の人がテストしようとしたら
いじってたせいで動かない、とかで開発効率が悪くなってたりしない?
開発環境はソフト変えりゃいいってもんじゃない、やり方の問題と思う
0819nobodyさん
2006/08/19(土) 18:01:19ID:yXlsOUGI多い場合TEXTのNAMEなどを簡単に管理できる方法ってありますでしょうか??
皆さんはどのようにしていますか?ご教授お願い致します。
0820nobodyさん
2006/08/19(土) 18:15:30ID:???smartyを噛ませてジェネレートしてる。
フォーム、DBアクセス、詳細表示のページで同じ一覧のファイル
を使うようにしとけばらくちん。
便利なツールやライブラリは他の人の解説に譲るます。
0821nobodyさん
2006/08/19(土) 18:31:52ID:???なんかメンドイだけであんまり使えるような気がしない
0822nobodyさん
2006/08/19(土) 19:11:56ID:???0823nobodyさん
2006/08/19(土) 19:40:53ID:m4Ae+hcOttp://php.s3.to/man/types.comparisons.html
これを読むとempty()とisset()では、見分けることができません。
$x = "";---->FALSE
$x = NULL--->FALSE
$x = 0;----->TRUE
$x = 1;----->TRUE
のように見分けるには、どうしたらよいのでしょう。
0825nobodyさん
2006/08/19(土) 19:46:39ID:???if (strlen($x))
0828nobodyさん
2006/08/19(土) 20:04:45ID:m4Ae+hcOありがとうございます。
要は""とNULL以外はTRUEを返すのを、簡単に表記したかったんです。
===を使うと
if (!($x === "" or $x === NULL)) {
こんな感じになって冗長かなぁと、、、
>>825
下のを使うと
if (strlen($x) != 0) {
こんな感じですか?
0829nobodyさん
2006/08/19(土) 20:08:35ID:???0830nobodyさん
2006/08/19(土) 20:30:15ID:???if (strlen($x) != 0)
if (strlen($x))
一緒、strlenの戻り値はint
0831nobodyさん
2006/08/19(土) 20:31:14ID:???0832831
2006/08/19(土) 20:32:36ID:h+QG0TQi0833nobodyさん
2006/08/19(土) 20:51:20ID:???id を メルアドにするか 任意な文字列にするか迷ってます。
メルアドのほうが管理がらくだと思いますが、どちらが良いでしょうか。
0835nobodyさん
2006/08/19(土) 21:12:39ID:???・任意の文字列
サイト側としては個人情報を入力させたりDBに持たなくても済む
ユーザ側としては登録はしやすいが忘れやすい
ID忘れちゃうとリマインダはメール送ってもらうしかない
・メールアドレス
ユーザ側としては忘れにくい
ただ信用できるかどうか微妙なサイトには入力したくない
個人情報を抱えるリスクは生じる(メリットもある)
ちょっとしたツール的なサイトなら文字列ID、
ECとかメールアドレス必要前提のサイトならメアドかなあ
0836nobodyさん
2006/08/19(土) 21:18:27ID:???$hoge[5]="追加";
とかやると元々あった要素が削除されちゃいますよね?
http://210.143.110.132/~php/man/ref.array.html
ここを読んでも実現できそうな関数は見あたらなかったのですが…
0839nobodyさん
2006/08/19(土) 21:32:12ID:???setXXXやgetXXXなどのメソッド名はよく有りますが、
あるプロパティの値をtrueにする為のメソッド名はどのようにつけるべきだと思いますか?
とりあえずsetXXX(true)としてますが、デフォルトがfalseのためそのメソッドを呼べばtrueになるようにしたいのです。
引数でtrueを渡さないとなると、やはりsetXXXでは変な気がします。
そのプロパティをpublicにすればいいのですが、今回の場合それは微妙な感じですので。
0840nobodyさん
2006/08/19(土) 21:35:09ID:???0841nobodyさん
2006/08/19(土) 21:36:59ID:???0843839
2006/08/19(土) 23:20:58ID:???なんでそれが頭に浮かばなかったのか・・・あぁ、やっぱり頭が悪い。
本当にありがとうです。
0844nobodyさん
2006/08/20(日) 01:41:59ID:???eclipse+phpeclipse+PHP/dbg+Samba+subversionでやってます。
一人自宅でだけど。
統合開発環境スレは無くなっちゃったのかな?
0846nobodyさん
2006/08/20(日) 09:30:48ID:???ファイルの更新日時の取得ってどうやるんですか?
0848nobodyさん
2006/08/20(日) 12:35:12ID:???0849nobodyさん
2006/08/20(日) 12:38:20ID:???0850nobodyさん
2006/08/20(日) 12:38:49ID:???0851nobodyさん
2006/08/20(日) 12:40:10ID:O6c5lrE6test.php
<?php
echo "<!-- test -->\n";
?>
index.php
<?php
require('test.php');
?>
で、実行すると
<!-- test -->
と出力されるはずが
?<!-- test -->
となってゴミが付いてしまいます
レンタルサーバでもテスト環境でも結果は同じです
バージョンはともに4.4.2
0852nobodyさん
2006/08/20(日) 12:51:23ID:O6c5lrE6実害は無いのですが、精神衛生上よろしくないので
回避する方法、間違い等あれば教えてください
0853(^ω^)
2006/08/20(日) 12:54:40ID:???UTF-8じゃなかったらごめんね
0854nobodyさん
2006/08/20(日) 13:07:49ID:???べつの作業でツールの文字コード設定変えたままでした
ありがとうございました
0855nobodyさん
2006/08/20(日) 13:22:45ID:???gethostbynameはコアに含まれるのでPHP的には使える。
ただし、サーバからniku.2ch.netに向かってのDNSポートが閉じていると当然使用不可能
0856nobodyさん
2006/08/20(日) 13:44:58ID:???大抵の言語はDNSにアクセスできるでしょ?
つまり言語に依存しないってこと
0857nobodyさん
2006/08/20(日) 13:47:02ID:???0858nobodyさん
2006/08/20(日) 13:50:18ID:???0859nobodyさん
2006/08/20(日) 15:37:42ID:SEQXzGDk0860nobodyさん
2006/08/20(日) 16:51:11ID:???http://pc8.2ch.net/test/read.cgi/unix/1014614044/
http://pc8.2ch.net/test/read.cgi/unix/1000484092/
http://pc8.2ch.net/test/read.cgi/unix/1059971117/
http://pc8.2ch.net/test/read.cgi/unix/999837578/
http://pc8.2ch.net/test/read.cgi/unix/1007136614/
http://pc8.2ch.net/test/read.cgi/db/1057289721/
0862nobodyさん
2006/08/20(日) 17:55:18ID:SEQXzGDk0863nobodyさん
2006/08/20(日) 18:17:57ID:???hoge
└hoge1
└foo1.php
└hoge2
└foo2.php
というフォルダの構成だとして、foo1.phpから
foo2.phpに書かれたクラスを利用するには
foo2.phpをfoo1.phpでrequireしないとだめでしょうか?
php.iniでパス設定しないという前提で。
0864nobodyさん
2006/08/20(日) 18:29:26ID:???なんでそんな依存関係のあるクラスがhoge1とhoge2で分けられてるんだろ、という気がするが、
foo1をrequireするプログラムでfoo2もお約束としてrequireする、というのはダメか?
0865nobodyさん
2006/08/20(日) 18:58:00ID:???クラスのことが全然わかってないんですが、そもそも
PHPのクラスパスってどうなってるんでしょうか?
基本的にrequireしてからじゃないとクラス利用できない…なんてことは
ないようですし、php.iniのincludeで設定したパスのところに
置かないとクラスを読み込めないんでしょうか?
ほんとにくだらないレベルで申し訳ないですが、この辺説明した
書籍ってなかなかなくて…
0868nobodyさん
2006/08/20(日) 19:17:53ID:???0870nobodyさん
2006/08/20(日) 22:23:49ID:???フレームワークで自動で読み込まれるのは
http://www.php.net/manual/ja/language.oop5.autoload.php
を利用したり、iniで設定されたものを事前に読み込んだりしている。
0871nobodyさん
2006/08/21(月) 00:59:41ID:???0872nobodyさん
2006/08/21(月) 01:03:13ID:???それともプログラム中から呼び出すor書き込む等、必要に応じて
その都度セッション・ファイルから読み出し・書き込みされて、
スクリプトの終了と共にメモリから解放されるの?
0873nobodyさん
2006/08/21(月) 01:32:07ID:???Railsを参考にしたフレームワークは結構開発されてる。
詳しくは専用スレでドウゾ。
http://pc8.2ch.net/test/read.cgi/php/1151706907/
>>872
このスレで答えになる話題でてるぞ。探せ。
0874742
2006/08/21(月) 10:34:33ID:bnVaTE3o返答ありがとうございます。またせっかく回答をして頂いたのに返事が遅くなって、申し訳ないです。
クラス定義より前にデータを読み出しているという状態が、どんな状態か
ちょっとよく分からないのですが、以下の状態が同じ配列に並列にならんでいます。
object(stdClass)(11) {
["ItemAttributes"]=> &object(stdClass)(13) { ["Author"]=> string(16) "ほげ ほげお"
(略)
["ItemAttributes"]=> array(16) { [0]=> string(16) "ほげ ほげお"
}
毎回同じ本のデータがこの状態になります。
しかし本家Amazonのページで同じ本を検索すると問題なく著者が表示されているので、
私の方に何か問題があると思えるのですが、見当も付きません。
0875715
2006/08/21(月) 11:26:33ID:Xr9Z9Klv早速、金曜日の続きを以下のスクリプトで表現してみました
「確認画面」を押すと、別のphpファイルに飛ばしたいのですが、どうするのがベターなのでしょう?
<?php
$zz = $_POST['number1'];
if(mb_strlen($zz) == 6){
$ab ="OK";
}else{
$ab ="英数字で6文字";}
?>
<form method="post" action="test1.php">
<TABLE border="1">
<TBODY>
<TR>
<TD><INPUT size="6" type="text" maxlength="6" name="number1"
value="<?php print($zz); ?>">
</TD>
<TD>
<?php print($ab); ?>
</TD>
</TR>
</TBODY>
</TABLE>
<?php
if(mb_strlen($ab) == 2 ){
print "<input type=\"submit\" value=\"確認画面\">";
}else{
print "<input type=\"submit\" value=\"登録\">";
}
?>
</form>
0876nobodyさん
2006/08/21(月) 11:39:44ID:???if(mb_strlen($ab) == 2 ){
print "<input type=\"submit\" name=\"preview\" value=\"確認画面\">";
}else{
print "<input type=\"submit\" name=\"regist\" value=\"登録\">";
}
と区別可能な識別子を設定した上で
if(isset($_POST['preview'])) {
require("preview.php");
exit;
}
と指定された識別子があれば別のPHPファイルを読み込む。
0877715
2006/08/21(月) 11:41:38ID:Xr9Z9Klvありがとうございます!!
なるほど、nameで分けて、再度、IF文ですね
やってみまつ
0878nobodyさん
2006/08/21(月) 11:46:13ID:???1.POSTされたデータをセッションなどに格納した上で、
header("Location: /preview.php?sessid=セッションID");
exit;
とLocationヘッダで別ページに遷移する。
2.print "<input type=\"submit\" value=\"確認画面\" onclick=\"this.form.action='preview.php'\">";
として確認画面をクリック時にJavaScriptで遷移先を切り替える。
などもある。
0880nobodyさん
2006/08/21(月) 12:40:23ID:???どうしたらいいんでしょうか?
単純にソースコードを自分のサイトからDLできるようにしとけばいいのか、
それともsourceforgeみたいなところに登録(?)すべきなのか。
著作権などは維持しつつ、皆に無料で使ってもらうにはどういう方法がベストでしょうか。
0881nobodyさん
2006/08/21(月) 12:55:16ID:???著作権についてはドキュメントで明示すればよし。
0882715
2006/08/21(月) 13:20:52ID:???今回のところは、こうしました
<?php
if(mb_strlen($ab) == 2 ){
print "<input type=\"submit\" name=\"preview\" value=\"確認画面\">";
}else{
print "<input type=\"submit\" name=\"reverse\" value=\"登録\">";
}
if(isset($_POST['preview'])){
header("location:summer.php");
exit;
}
?>
次はCookieを使ってみます
0884nobodyさん
2006/08/21(月) 14:15:14ID:Dzmazm0+function is_yowai_pass($str) {
$regex = "(.{0,7}|[a-z]+|[A-Z]+|[0-9]+)";
if (ereg($regex,$str) == TRUE){
return TRUE;
} else {
return FALSE;
}
}
if (is_yowai_pass($password) == TRUE){
echo "脆弱だよ";
}
このとき、$passwordに「12345678」とか「abcdefgh」が入っていれば「脆弱だよ」と表示されて、
それはもちろん期待通りの動作なのですが、$passwordに「pass1234」など英数字を混ぜたものが
入っていても「脆弱だよ」が表示されてしまいます。英字と数字が混じっていれば
「脆弱だよ」と表示されないように作ったつもりなのですが、どこがおかしいのでしょうか??
0885nobodyさん
2006/08/21(月) 14:31:02ID:???正規表現に「^」と「$」をつけとかないと文字列全体をチェックできない。
今の状態だと「英字1文字」か「数字1文字」があれば必ず脆弱となる。
0886nobodyさん
2006/08/21(月) 14:33:17ID:???0887軟式PHP
2006/08/21(月) 15:17:34ID:???0888nobodyさん
2006/08/21(月) 15:37:14ID:???天才的関数名だなw
関数名以外の変数名とかはしっかりしてるというか、上級者らしいのに
is_yowai_passとは・・・「分かっててやってる」天才にしか出来ない技だぜ。
0889nobodyさん
2006/08/21(月) 16:25:41ID:???0890nobodyさん
2006/08/21(月) 16:36:13ID:???{
if ($my_konomi_type === $partner_konomi_type) {
return TRUE;
} else {
return FALSE;
}
}
0891nobodyさん
2006/08/21(月) 16:41:45ID:???$my_konomi_type === $partner_konomi_type だと、お互いに同じ性質を持つ人間でなければなりませんが。
0893715
2006/08/21(月) 17:03:41ID:???test1.php
----------
<?php
session_start();
$zz = $_POST['number1'];
if(mb_strlen($zz) == 6){$ab ="OK";}else{$ab ="英数字で6文字";}?>
<form method="post" action="test1.php">
<TABLE border="1"><TBODY><TR>
<TD><INPUT size="6" type="text" maxlength="6" name="number1" value="<?php print($zz); ?>"></TD>
<TD><?php print($ab); ?></TD></TR></TBODY></TABLE>
<?php
if(mb_strlen($ab) == 2 ){
print "<input type=\"submit\" name=\"preview\" value=\"確認画面\">";
}else{print "<input type=\"submit\" name=\"reverse\" value=\"登録\">";}
if(isset($_POST['preview'])){
$_SESSION['zz'] = $zz;
header('Location: test2.php');
exit;}?></form>
test2.php
----------
<?php
session_start();
if($_SESSION['zz']){
$zz = $_SESSION['zz'];
print($zz);
exit;}
?>
0894nobodyさん
2006/08/21(月) 18:48:19ID:???0895nobodyさん
2006/08/21(月) 18:51:10ID:???どうにかならないんでしょうか?
あと、メンバ変数に文字列を格納するときに . でつなぐ方法ってないんでしょうか。
PHP4が最悪だったので、5に移行したけど、やっぱあいまいすぎるこの言語・・・・泣
0897nobodyさん
2006/08/21(月) 19:26:52ID:???なんも表示されない。
なぜだかかわかる方いたますか?
0898nobodyさん
2006/08/21(月) 19:33:47ID:???perl よりかはマシって言う程度だからな
こういうスクリプト言語ではユニットテストがかなり重要
C++とかなら、コンパイラが出すエラーをユニットテストで見つける
ほかない
0899nobodyさん
2006/08/21(月) 19:43:28ID:???function is_love_me( $my_value, $partner_konomi_type )
{
if ($my_value === $partner_konomi_type) {
return TRUE;
} else {
return FALSE;
}
}
だろうが。
0901nobodyさん
2006/08/21(月) 21:13:43ID:???そうなんですか。
別のミラーとかから落としても駄目でした。
もう、ユーザー会のサイトの前文検索使わせてもらおうと思います。
0902nobodyさん
2006/08/21(月) 21:56:23ID:???ありがとうございます。
__set, __getで制御できるようですが、PHPの通常のエラーのように発生させたかったため
うまい方法が見つかりませんでした。
あとメンバの初期値設定時に、 . を使って文字列をつなぐとエラーがでてしまいます。
マニュアルにはphp4 ではムリと書いてあるけど、5については何も書いてないんだよなぁ・・・・
ムリならムリと5もかいてほしい・・・・
0903nobodyさん
2006/08/21(月) 23:23:47ID:???mysql_queryしようとするとなぜが成功しません。
select文は成功しました。
どこが原因なんでしょうか?
0904nobodyさん
2006/08/21(月) 23:29:20ID:???何の必要があるの?
普通にブラウザでアクセスしてスクリプト走らせてデバッグするのと何が違うの?
0905nobodyさん
2006/08/21(月) 23:36:52ID:???プロジェクトによってその単位とか、テストの方法もろもろ変わってしまうけど、
単体テスト⇒結合テストと行うことで、バグの発見をしやすくするんだと思う。
通常単体テストでは、1画面を1つの単位としてテストを行うと思うけど(自分の経験では)
そのときは、ブラウザを使おうが、デバッガを使おうが、単体テストだよ
0906nobodyさん
2006/08/21(月) 23:40:22ID:???本当にまんま同じSQLを発行しているかPHPでデバッグプリントして味噌
でも分からなければ問題無い範囲でここに貼りなされ
0907nobodyさん
2006/08/21(月) 23:43:02ID:???すいません。いまちょっといろいろためして見たら日本語が入ったらダメなことに気づきました。
文字セットの問題だとは思うのですが、php.iniをいじったら直るのかな。。。
0908nobodyさん
2006/08/21(月) 23:56:44ID:???たいていは、メソッド一つづつ、成功と失敗をする条件を与えて
期待通りに動くかテストする方法
早期にバグを見つけて、その処理の精度を高める
いきなり結合テストから始めると、バグが見つかったときに
解決をするのが時間かかったり、めったに出ない条件によって
引き起こされるバグを見落としたりする
レス数が900を超えています。1000を超えると表示できなくなるよ。