【PHP】下らねぇ質問はここに書き込みやがれpart17
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/02/24(金) 22:05:48ID:YHkZgU8bここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
まず読め【PHP マニュアル】
http://www.php.net/manual/ja/
本スレ【PHP】質問スレッドpart33【php】
http://pc8.2ch.net/test/read.cgi/php/1140027592/l50
前スレ【PHP】下らねぇ質問はここに書き込みやがれpart16
http://pc8.2ch.net/test/read.cgi/php/1139146534/l50
過去スレは>>2
0341nobodyさん
2006/03/03(金) 21:27:04ID:???0344nobodyさん
2006/03/03(金) 21:52:12ID:???高校の「数学」の教科書にBASIC載ってるしな。
センター試験でBASIC選ぶと、他の問題に比べてめちゃくちゃ簡単なんだが。
CやJavaは変数の型とかあるから、数学の授業では無理があるだろうけど。
そういう意味ではPHPはうってつけか。
「情報」の授業ってプログラミングやるのかな?
0345nobodyさん
2006/03/03(金) 21:56:04ID:???中高ぐらいからもっと実践的な講師呼んだ授業やったら学校も楽しそうだなぁ
ってここなんてスレ?
0347nobodyさん
2006/03/03(金) 22:13:16ID:???技術者の取り込みを狙ったのか、高校「情報」の教免は一般試験があったぞ。
今はもうないが。
教育現場も規制緩和して、実技科目に関しては教免なくても
外部の講師を呼べるようにすればいいのに。
0348nobodyさん
2006/03/03(金) 23:01:58ID:???0349nobodyさん
2006/03/03(金) 23:35:20ID:???0350nobodyさん
2006/03/03(金) 23:48:32ID:???マニュアルのサンプルで
$foo = $foober() or die();
という文をよく見かけるんですけど
これってどういう仕組みなんでしょうか?
0351nobodyさん
2006/03/03(金) 23:57:26ID:???if ($a == 1 or $a == 2) の"or"と仕組みは同じです。
$foober()が真を返せば、orの後ろは実行されません、
$foober()が偽を返せば、orの後ろのdie()が実行されますから、
die()によって処理がそこで止まります。
ファイルのオープンとか、DBの接続とかで使用することが多いでしょうか。
私はあまり使いませんが。
0352nobodyさん
2006/03/04(土) 00:35:17ID:???0353nobodyさん
2006/03/04(土) 01:00:17ID:???ループで得られる1000行程度のEUCコードの文字列を
最終的にSJISでファイル保存する場合、
一旦全てを変数に格納して、最後にSJIS変換して書き込むのが良いのか?
それともループ内で随時SJIS変換しながら書き込んでいくのが良いのか?
さぁ、DOTCH?
0355nobodyさん
2006/03/04(土) 01:30:53ID:???Cでこんな感じの話?…
Cだと|は後ろが先に評価されるコンパイラがある可能性があるので、あんましこういうのは推奨されてないはず…
うろ覚えでスマソ
0358nobodyさん
2006/03/04(土) 02:01:48ID:???こういう書き方もあるって感じで、予備知識としての話だったと思います
使わない方がいいとも言われました
0359nobodyさん
2006/03/04(土) 11:41:48ID:???<input type="hidden" name="PHPSESSID"
value="5fb6b70b37b53114518ce19ac215e8ea">
こういうやり方でユーザー認証などを行う場合、セキュリティ的に問題などありますか?
教えてください。よろしくお願いします。
0361nobodyさん
2006/03/04(土) 11:57:17ID:???タイムアウト実装のあるセッション ID を hidden で受け渡すだけなら
問題はないが、他のパラメータには使わないように。
参考: IPA/ISEC セキュアプログラミング講座
ttp://www.ipa.go.jp/security/awareness/vendor/programming/a01_05.html
0362nobodyさん
2006/03/04(土) 14:58:31ID:???最後まで文字列を操作するかじゃね?
EUCで生成すること自体勧められないけど。SJISで保存するなら最初からSJISで生成すべき。
文字化けが許容出来ないなら、文字コード変換したら負けだよ。
0363nobodyさん
2006/03/04(土) 15:38:43ID:???日本語でおk
0364nobodyさん
2006/03/05(日) 00:19:00ID:j6g607oY>もちろん、クライアント側のアプリでは階層の深さを直接
>提示するでしょうが。ウエブの開発者はツリーをループしながら、
><li></li> と <ul></ul> のタグを深さが増えたり、減ったりする
>毎に、追加します。
これのやり方がいくら考えても分からないのですがどうやったらいいのですか?
0365nobodyさん
2006/03/05(日) 00:28:33ID:???| name | depth |
+----------------------+-------+
| ELECTRONICS | 0 |
| TELEVISIONS | 1 |
| TUBE | 2 |
| LCD | 2 |
| PLASMA | 2 |
| PORTABLE ELECTRONICS | 1 |
| MP3 PLAYERS | 2 |
| FLASH | 3 |
| CD PLAYERS | 2 |
| 2 WAY RADIOS | 2 |
+----------------------+-------+
↑を<ul><li>を使って↓みたいにしたいんです。
・ELECTRONICS
・TELEVISIONS
・TUBE
・LCD
・PLASMA
・PORTABLE ELECTRONICS
・MP3 PLAYERS
・FLASH
・CD PLAYERS
・2 WAY RADIOS
0366nobodyさん
2006/03/05(日) 00:44:55ID:???お詫びの文章を出してスクリプトをストップ!
ってのはどうやってやるんだ?
0367364
2006/03/05(日) 00:53:08ID:???http://aazukan.s201.xrea.com/test.txt
動作
http://aazukan.s201.xrea.com/test.php
ここまでやってみました。
0368nobodyさん
2006/03/05(日) 01:17:45ID:???0370nobodyさん
2006/03/05(日) 01:46:26ID:yRA2j2VbDBの設計が激しく間違っている気がするが?
→そうなの?
板違いなのでDB板で勉強して来い
→わかってます
正しくソートされていると仮定
$depth = -1;
foreach($categories AS $category) {
while ($depth<$category['depth']) {
echo "<ul>\n";
$depth++;
}
while ($depth>$category['depth']) {
echo "</ul>\n";
$depth--;
}
 : echo '<li>', $category['name'], '</li>', "\n";
}
while($depth>=0) {
echo "</ul>\n";
}
こんなかんじかな。 デバッグもしてないし適当だから保障しない。参考程度に。
0371370
2006/03/05(日) 02:19:56ID:???んで
while($depth>=0) {
echo "</ul>\n";
$depth--;
}
ね。
0372364
2006/03/05(日) 02:41:57ID:???色々書いて頂いて申し訳ないのですが、
↓で100点になるようなものがよかったので使いませんでした
http://openlab.ring.gr.jp/k16/htmllint/htmllint.html
そーす
http://aazukan.s201.xrea.com/test.txt
動作
http://aazukan.s201.xrea.com/test.php
これでとりあえず動くのですがもうちょっとスマートにできませんか?
0373nobodyさん
2006/03/05(日) 02:59:51ID:???$list .= "<ul><li>";
} else {
if($depth > $category['depth']) {
$list .= str_repeat("</li></ul>", $depth - $category['depth']);
}
$list .= "</li><li>";
}
0374364
2006/03/05(日) 03:03:47ID:???0375nobodyさん
2006/03/05(日) 03:15:29ID:???0376nobodyさん
2006/03/05(日) 04:04:12ID:???0377nobodyさん
2006/03/05(日) 05:24:59ID:8JhBJBZ6$m_header = $_SERVER['DOCUMENT_ROOT'] . '/header.php';
この $_SERVER['DOCUMENT_ROOT'] を自分のサイトのmain root pathに変更しろとあるんですが、
これはこのままじゃダメなんでしょうか?
ググっても解らず、困っています。
解る方がいらっしゃいましたら教えて下さい。
0378nobodyさん
2006/03/05(日) 06:19:26ID:???$_SERVER['DOCUMENT_ROOT'] の値がちゃんと取れてるなら、そんままで良いんでね。
取得できない事(環境によっては無いわけでもない)を、作者が考慮して
確実に動くように手動で明示しとけと言ってるのかな。
そのアプリは何?
0380nobodyさん
2006/03/05(日) 06:33:28ID:8JhBJBZ6ありがとうございます。そのままでも大丈夫なんですか・・・。
じゃあスクリプトが動かない原因は他にありそうです。
実はアメリカのなので私も良く解ってないんですが、
登録したサイトを閲覧できる(?)というものなんです。
>>379
すいません、書き方が悪かったです。
変えようにも、何を変えていいのか解らなかったので。
もしかして/usr/bin/phpなのか?と思って適当に変えてみたりはしたんですが。
的外れだったみたいです。
0381nobodyさん
2006/03/05(日) 07:56:49ID:???それは自分のWebサーバのドキュメントルートを取得するスーパーグローバル変数だよ
オレの環境では
<?
echo $_SERVERT['DOCUMENT_ROOT'];
?>
で、ブラウザからアクセスしたら「C:/Program Files/Apache Group/Apache2/htdocs」って表示されたよ
0382378
2006/03/05(日) 07:59:18ID:???あと、ちゃんとheader.phpっていうのはあるのかい?
0383nobodyさん
2006/03/05(日) 08:37:22ID:???したいんだけど、メールが1日に数万通〜数十万通ともなると、すごい負荷かな??
別のメール配信専用サーバみたいなのを用意したほうがいいんでしょうか。
仮に用意できたとして、どうやってメール作成スクリプトからその配信専用サーバに
メール配信の指示を出せばいいの? メール作成スクリプトで「mb_send_mail」を
実行しちゃったらその鯖から送信されちゃうだろうし・・・。
0387nobodyさん
2006/03/05(日) 13:55:53ID:???>別のメール配信専用サーバみたいなのを用意したほうがいいんでしょうか。
ですな。サーバだけじゃなくて回線もね。
あと同じドメイン宛に短時間に大量のメールを出すと、
相手の接続拒否リストに載せられることもある。
その辺も絡めて勉強して、業者に依頼することをお薦め。
(最低限の勉強をしてないと業者の良否判断や注文も出来ないからね)
実際のメールの出し方については、その業者とすりあわせ。
0388nobodyさん
2006/03/05(日) 14:27:55ID:???PHPには関係ない。
0389nobodyさん
2006/03/05(日) 18:25:30ID:???無知なバカども、分からないなら「分かりません」と言えばいいのに。知ったかぶるな。
お前らが知ってる程度の知識なら俺も持ってる。端折って書いてるだけ。
>>387 ありがとう。でも、なるべく自前でやりたいんだけど・・・。
>>388 SMTP実装かぁ。プロトコルの話だよね? それを勉強したとして、PHPで実現できる??
0393nobodyさん
2006/03/05(日) 18:44:13ID:???> >>388 SMTP実装かぁ。プロトコルの話だよね? それを勉強したとして、PHPで実現できる??
お前できないの?バカじゃね?
0394nobodyさん
2006/03/05(日) 18:52:04ID:iaaLXl/Xこんな感じで、$_POST['name']が空の場合、文字例を出力させるには
どうすれば良いでしょうか?
それから、POSTデータを取得出来ない場合、
$err.= "POSTデータが不正ですよん。。";
みたいにさせるにはどうやれば良いでしょうか?
応用力がなくてすみません。
0395384
2006/03/05(日) 18:55:51ID:???if($_POST['name'] == "") $err.= "名前が入力されてないぞ";
0396nobodyさん
2006/03/05(日) 19:05:58ID:???・・・本当にわからないのか?if文が解らないのか、文字列を表示する方法が解らないのか
あと、余談だけど、POSTデータが取得できない場合は取得できてないんだから$_POST['name']
の中身はもちろん空だよね?
だからこれも表示するエラーメッセージは「名前が入力されていません」にしたほうが良いんジャマイカ?
0397nobodyさん
2006/03/05(日) 19:10:50ID:???俺も初心者なんだが trim()を使うのは駄目かなぁ?
if(trim($_POST['name'] == "")) $err.= "名前が入力されてないぞ";
0399nobodyさん
2006/03/05(日) 19:28:49ID:???0400nobodyさん
2006/03/05(日) 19:28:56ID:???trim()は改行コードとかを除けてくれる便利な関数だけど今回のでは必要無いっぽいぞ?
でも、どう考えてそういう答えに至ったかは解らないけど、自分で考えて何か仮定を立てる
ことの出来るお前は偉い。
あとはその仮定をどうやってテストして実証していくかの方法を身につけるんだ!
0401nobodyさん
2006/03/05(日) 19:50:00ID:???ん〜、何も入力しないでPOSTで上げたフォームのテキストの値($_POST['name']の事ね)をtrimでスペースとか除けても
issetにかけると値がある、って判断されるっぽいね。何が入ってるんだろ?
出来るならemptyか$_POST['name'] == "" とかで判断したほうが良いと思う。
0403nobodyさん
2006/03/05(日) 19:58:27ID:???その例ならif(!$_POST['name'])
0404nobodyさん
2006/03/05(日) 20:11:32ID:???知ったかぶりのバカども乙wwwwwwwwwwwwwwwwwwwww
何も具体的なことを言えないヤツの説得力はゼロ。
ウンコなクズは氏ね。
0405nobodyさん
2006/03/05(日) 20:24:18ID:???OS、メール配信のタイミング、アクションの方法、PHPのバージョン、その他もろもろ記述もし
ないでよく具体的な事が云々言えるなお前。
まぁ、どうせLinux系だろうから、実行のタイミングが決まってるのなら普通にサーバ別にたて
て今のサーバでシェルでsshとPHPファイルの実行をキックさせるようなヤツ書いてcronに突っ込む
だけじゃないのか?
もう出て行ってくれ
0407nobodyさん
2006/03/05(日) 21:02:37ID:???なんかphp.iniの設定でそういうっぽいのいがあったんだけど
readでブロックとかしてるような待ち状態は消費時間として
カウントされないみたいなんだよね
やっぱ別のプログラムで監視しててサーチアンドデストロイ?
0408nobodyさん
2006/03/05(日) 21:08:15ID:???もうちょっと勉強しろ。
issetは値があるかどうかじゃなく変数の有無を確認するのに使うもので、
NULL以外の空っぽ文字列などが格納された時点で常にtrueを返す。
フォームのテキスト入力で何も入力しないってのは "" という空文字列を
格納してるのに等しいからこれはissetで必ずtrueになる。
if(isset($_POST['hoge'])) みたいのはsubmitのボタンなど、押した場所によって
送信自体がされなくなるinputの送信有無を判別するのに使われる常套手段。
しかし、それも if(isset(trim($_POST['hoge']))) なんて真似をしてしまうと
NULL→""変換されてしまうので何があってもtrueが返ることになり全く意味がない。
テキストデータが空っぽのときに文字列をセットしたいだけなら最初の >>394-395の
if($_POST['name'] == "") $err.= "名前が入力されてないぞ";
で全く問題がないと思うが、これで何が問題あるのかまず説明しろ。
0409nobodyさん
2006/03/05(日) 21:10:40ID:???通称:合法スパム
0410nobodyさん
2006/03/05(日) 21:13:20ID:???ブロック状態で戻ってこないのはPHP自身では検知できないらしいからなぁ…
そういうプログラムが多数できるなら1個のサーチプログラムを作ってkillさせるか、
数が少ないならプログラム毎に自分のプロセスIDと起動時間を渡して
子プロセス作って一定時間後にsignal送信させるとか…
0411nobodyさん
2006/03/05(日) 21:51:38ID:???401じゃないけど、その方法で問題がある点を説明するね。
ユーザー入力の受付は、
$username = ( isset($_POST["username"])?$_POST["username"]:"" );
で、if( $username == "" )とかで入力チェック。
$_POST["username"]を直接評価するのはNG。
入力されていない場合に、その値を参照しようとすると
未定義(undefined)扱いになるから立派なエラー。
問題があるとしたらそのへん。
0414nobodyさん
2006/03/05(日) 22:56:21ID:???セキュリティ上Noticeは気にするべきだよ。
この場合は@で回避して比較するのもアリかも知れないが。
どちらにしろ放置はよろしくないよ。
とりあえず一覧
|未定義 |NULL |"" |0 |"0" |
isset |false |false |true |true |true |
empty |true |true |true |true |true |
=="" |エラー |true |true |true |false |
>>411
if (!isset($_POST["username"]) || $_POST["username"]!="") {
$err .= 'カラですわ';
}
でもいいな。
0415age
2006/03/06(月) 01:21:53ID:???試みております、
PHP マニュアル、google探しましたがなかなか情報見つからず、
質問させていただきました。
root@linux[php-5.1.2]$rpm -qa |egrep php| xargs rpm -e
にて、一度削除し、
$./configure \
--with-apxs2=/usr/local/apache2/bin/apxs \
--enable-mbstring
を実行し、
$make
で、「make: *** ターゲットが指定されておらず、makefile が見つかりません. 中止」
とのメッセージでmakeができません。。。
config.log にはエラーらしきものは見当たらず、と言いますか
自分が気が付いていないだけかもしれませんが。
よろしければ、アドバイス頂けませんでしょうか。
マシン構成は
Redhat linux9
php-5.1.2
Apache version:2.2.0
CPU:P3 800Mhz
Memory:256MB
HDD:20GB
です。(スレ違いでしたらすみませんです。。。)
0416nobodyさん
2006/03/06(月) 03:22:12ID:???0417nobodyさん
2006/03/06(月) 03:27:59ID:???0418nobodyさん
2006/03/06(月) 03:46:43ID:???http://jp2.php.net/manual/ja/types.comparisons.php
http://www.blueshoes.org/en/developer/php_cheat_sheet/
http://www.deformedweb.co.uk/php_variable_tests.php
==や!=は案外鬼門だよな。
0419nobodyさん
2006/03/06(月) 03:56:43ID:???ドキュメントルートに無くても問題ないのでしょうか?
一応動作しましたが。
0421nobodyさん
2006/03/06(月) 04:36:26ID:???むしろ置けるんであればドキュメントルートに置かない方がいいくらいかと。
requireされるだけでなく単独でページとして動作するファイルなら別だけど。
0422nobodyさん
2006/03/06(月) 13:37:25ID:???マルチバイト文字を扱う関数が未定義となってしまい使えません。
例)
<?php
//1
$str = "サーバサイド技術";
print(mb_substr($str,3,5));
//2
$sstr = "PHPはPHP:HepertextPreprocessorの略です";
print(mb_strpos($sstr,"PHP"));
print(mb_strrpos($sstr,"PHP"));
?>
実行結果:Fatal error: Call to undefined function mb_substr() in C:\Program Files\Apache Group\Apache2\htdocs\4.1.php on line 4
mb_strrpos(),mb_convert_kana(),mb_convert_encording()関数でも同様のエラーがでます。
設定をどう弄ればよいか教えてください。
0425nobodyさん
2006/03/06(月) 14:13:55ID:???他に設定が必要なのですか?
当方windowsXPです。
0428nobodyさん
2006/03/06(月) 14:37:38ID:???phpinfoで、mbstringの項目があるかどうか確認せよ。
無ければphp.iniが適切なパスに置かれていないか、Webサーバを再起動していない可能性あり。
0429nobodyさん
2006/03/06(月) 14:41:11ID:QzUnKc0K423だけが本当の事を言っている。
ひとまずphpinfo()してみたら?
Apacheの再起動を忘れている可能性大。
0430nobodyさん
2006/03/06(月) 14:43:20ID:QzUnKc0K0432nobodyさん
2006/03/06(月) 15:36:57ID:???0433425
2006/03/06(月) 15:54:48ID:???0435nobodyさん
2006/03/06(月) 16:54:06ID:???0436425
2006/03/06(月) 16:55:21ID:???0437nobodyさん
2006/03/06(月) 17:19:18ID:???0438nobodyさん
2006/03/06(月) 19:06:06ID:???phpinfo() だ。
0439nobodyさん
2006/03/06(月) 19:28:03ID:???0440nobodyさん
2006/03/06(月) 19:39:23ID:???■ このスレッドは過去ログ倉庫に格納されています