【PHP】下らねぇ質問はここに書き込みやがれ Part19
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/04/09(日) 01:31:18ID:???ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
まず読め【PHP マニュアル】
http://www.php.net/manual/ja/
本スレ【PHP】質問スレッドpart33【php】
http://pc8.2ch.net/test/read.cgi/php/1140027592/
【PHP】下らねぇ質問はここに書き込みやがれpart18
http://pc8.2ch.net/test/read.cgi/php/1142417901/
過去スレは>>2-3あたり
0523nobodyさん
2006/04/19(水) 01:51:48ID:???大抵サーバがEUCだからEUCでスクリプト書いておくと何か問題があったときにviとかで直接見られる。
サーバ上にあるスクリプトを直接見ることで、何者かの手によって勝手に改変されてないかわかる。
・・・てことより、バグ見っけたらサーバ上のスクリプトをコッソリ直すってコトの方が多いなw
だからEUCで書いてた方が楽なときが多い。
全てのサーバがnkfとか入れてるわけじゃないからね。特に海外のレンタルサーバなんて・・・
まぁコメントとか日本語使わなきゃいいんだけど、日本語のコメントなきゃサッパリ分からないしー
0524nobodyさん
2006/04/19(水) 01:55:59ID:???mb_** みたいなライブラリが使えない状況だと、EUC の方が圧倒的にコーディングが楽だよ。
SJIS は、文字列を途中から評価しようとしたとき、そのバイトが2バイト文字の一部なのか、そしてそれが何バイト目なのかがすんなり判断できない。
あと環境によっては、2バイト文字の一部に \ を含むものがあるというのがネックになる。
ヘタするとスクリプトのパースすら失敗するしね。
できるだけどこでも動くものを作ろうと思うと、SJIS よりも EUC の方が苦労しないと思う。
0525nobodyさん
2006/04/19(水) 01:58:44ID:???なんかちゃんと動いてんのかわかんねー
DBへの書き込み自体はうまく行ってるみたいだし
pg_query( 'begin' )だけで問題ないよね?
0527nobodyさん
2006/04/19(水) 02:53:15ID:???サンクスコ
0528nobodyさん
2006/04/19(水) 03:51:04ID:sslsiAd8PHPでオンラインテストを作る課題を出されました。
mySQLでtest、question、answerが含まれたテーブルを作ったんですが、このテーブル1つだけで
テストを選んだら複数の問題が表示される
1つの問題に3つの答えが表示される
3つのうち1つだけが正解
というスクリプトは書けるでしょうか?
0529nobodyさん
2006/04/19(水) 04:08:09ID:enTaLLydこういう場合は引数で渡して、こういう場合はglobal宣言っていう例ない?
0530nobodyさん
2006/04/19(水) 04:12:06ID:???書けなくはないけど、効率悪いか、問題のメンテナンスに難がある。
・テストに対して問題は1対多
・問題に対して選択肢は1対多(ただし3つ固定)
てことを考えると、テストと問題は別テーブル、回答は本来別テーブルだけど、
パフォーマンスに難があれば問題に含めても良い。
…全然PHP関係ないね。DB板向け。
0531528
2006/04/19(水) 04:32:32ID:sslsiAd8最高でもテーブルは2つまでとのことなので、テーブルを2つ作り、テストのみ、問題と回答1、回答2、回答3というようにしたらいいでしょうか?
正解の回答も回答4などとして加えてスクリプトで、選んだ回答が回答4のとき、などと書いて正解を確かめるんでしょうか?
最初DB板で似たような質問したのですが普通にスルーされまして・・・(;´Д`)
PHPのスクリプトの問題なのかと思いこちらで質問させていただきました。
0533528
2006/04/19(水) 04:51:23ID:sslsiAd8分かりました。
どうもすいませんでした。
0534nobodyさん
2006/04/19(水) 07:22:37ID:???使う変数は前もって定義しておく
$err['name'] = "";
$err['tel'] = "";
$err['address'] = "";
0535nobodyさん
2006/04/19(水) 07:29:27ID:???ファイル名の最後が表とかで終わってるんじゃない
htmlの出力をshift jis以外にするしかないと思う
0536nobodyさん
2006/04/19(水) 09:08:20ID:???文字化けとかセキュリティ的な問題とか山のようにある。
http://d.hatena.ne.jp/t_komura/20060122#1137944280
携帯とかSJISのほうがいい場合は、出力直前にSJISにコンバートすりゃいい。
(ただ、最近の携帯はパソコンとほぼ同じく複数のエンコードに対応してるからEUCがオススメ)。
で、スクリプトの内部やDBではEUCで統一したほうが圧倒的に楽。
0537nobodyさん
2006/04/19(水) 09:34:24ID:???0538nobodyさん
2006/04/19(水) 09:44:08ID:???0539nobodyさん
2006/04/19(水) 09:58:26ID:???へぇ、こんなSQLインジェクションのテクニックがあったんだね。
今までSJISを避けてきたけど、SJIS使わされるハメになったら穴だらけになるところだった。
危ない危ない
0540nobodyさん
2006/04/19(水) 10:27:12ID:???SJISにこだわる理由を聞け、理由を。
っていうかそんな客なんか切るか、もしくは
「セキュリティ強度が低下しますけどいいんですね?
または強度を維持したいなら見積もり額アップしますけど」
って言えよ。
0541nobodyさん
2006/04/19(水) 10:34:25ID:???IE5の時代はよくあった
0544nobodyさん
2006/04/19(水) 11:12:26ID:???0545nobodyさん
2006/04/19(水) 11:13:47ID:???0551nobodyさん
2006/04/19(水) 12:13:20ID:???途中にあっても駄目
ディレクトリの区切り記号"\"と判定されるから
表などであって他にもある
結論はシフトジスは使わない
0552nobodyさん
2006/04/19(水) 12:13:34ID:FFPzklJQhttp://8909.teacup.com/tomi/bbs
0553nobodyさん
2006/04/19(水) 13:11:01ID:???if (!file_exists($log)){
$logが見つからなかったらパーミッション666で$logを自動生成する
}
といったことをやりたいのですが、
fopenを使った場合、ログファイルなのでパーミッションを666にしたいのですが、
パーミッションが644になってしまい(Xrea使ってます)、
ディレクリの権限を変更しないと(707や777等)作成されませんでした。
なんかいい関数とか方法ありませんでしょうか?
functionで作れるような腕はもっておりませんorz
0555nobodyさん
2006/04/19(水) 13:22:07ID:???ハァ??
PHPで動作しないと思われる文字エンコーディングの例を以下に示します。
JIS, SJIS, ISO-2022-JP, BIG-5
これらのエンコーディングで書かれたPHPスクリプトは、特に符号化された文字列がスクリプトで記述子やリテラルに使用される場合には、動作しない可能性がありますが、
入力されるHTTPクエリに関してmbstringの透過的なエンコーディングフィルタを設定することでこれらのエンコーディングをほとんど使用しないようにすることができます。
注意:
SJIS, BIG5, CP936, CP949, GB18030 は、読者がパーサ/コンパイラ、文字エンコーディングと文字エンコーディングの問題点について精通していない限り内部エンコーディングとして使用するべきではありません。
0557nobodyさん
2006/04/19(水) 13:42:26ID:???デフォでは使えないということは、対応してないというわけではない。
(デフォで対応してないのはmb系全般そうだけど)
そこの説明は「非推奨。使用する場合は注意すること」っていう説明。
0558nobodyさん
2006/04/19(水) 13:53:00ID:???SJIS使ってるときにエスケープでaddslashesなんて使う方が悪い気がするけど。
mysql_escape_string使ってれば全角文字をちゃんと認識してエスケープできる。
0562nobodyさん
2006/04/19(水) 14:51:21ID:yEjSiGYT使っているキーボードは日本語配列ですか、それとも英語配列ですか?
双方のメリット、デメリットと合わせて教えて下さい。
0563nobodyさん
2006/04/19(水) 14:59:01ID:???日本語
メリット ここは日本で私は日本人だから
デメリット 特に無し
個人的にはそんなものよりキーを押したときの硬さなどが気になる…
長時間やっても疲れないのが一番!!
0565563
2006/04/19(水) 14:59:56ID:???0567nobodyさん
2006/04/19(水) 15:28:38ID:???0568nobodyさん
2006/04/19(水) 15:34:30ID:???0569nobodyさん
2006/04/19(水) 16:23:24ID:???どうすればよかとでしょうか?
0570nobodyさん
2006/04/19(水) 16:42:28ID:???日本語配列のメリット:慣れてると打ちやすい デメリット:慣れてないと打ちにくい
英語配列のメリット:慣れてると打ちやすい デメリット:慣れてないと打ちにくい
0572nobody
2006/04/19(水) 18:05:49ID:k/ExYNcl半角カナ文字のみ条件だと文字化けします。
A.php(「検索」を押すとB.phpが実行)
<input type=text name="hankaku_kana">
<input type=text name="zenkaku_kana">
<input type="button" value="検索">
B.php
$sql = "select * from Table where col = *";
if(hankaku_kana != NULL)
$sql = $sql."and col = hankaku_kaa";
if(zenkaku_kana != NULL)
$sql = $sql."and col = zenkaku_kana";
このとき、zenkaku_kanaに全角文字が入っていると
検索できるんですが、
半角文字だけだと文字化けします。
どうしたらできますか?
0573nobodyさん
2006/04/19(水) 18:12:08ID:???オレsjisで作ったコトある・・・しかも商用orz
0574nobodyさん
2006/04/19(水) 18:14:58ID:???よく分からないなら、UTF-8 使っとけ。
EUC-JPに比べてUTF-8を使うメリット
・最近のUnix/Linux系OSではUTF-8が標準であることが多い
・国際標準なのでどの言語でも利用できる
・Windows/Macでも内部コードとして使われてきている
0575nobodyさん
2006/04/19(水) 18:19:29ID:???超大手商用サイトでもShift_JIS使ってるとこなんていくらでもあるよ
当たり前な日本語になるが、問題なければ問題ない
0576nobodyさん
2006/04/19(水) 18:39:05ID:???・UTF-8は日本語が3バイト(EUC-JPはほぼ2バイト)だから容量制限にひっかかる(DBが5MBの某鯖とか)
・Winのメモ帳などでいじるとBOMがついて誤作動する
ただ
・DBの文字コードとスクリプトの文字コードは同じほうが効率が良い
・SQLiteはUTF-8/16推奨
0577572
2006/04/19(水) 18:51:40ID:k/ExYNcl0578nobodyさん
2006/04/19(水) 18:54:06ID:???0579nobodyさん
2006/04/19(水) 18:55:51ID:???0580nobodyさん
2006/04/19(水) 19:22:43ID:???つかUTF-8とかならともかく日本語環境でなんでEUCを内部コードに使うのかわからん
0581nobodyさん
2006/04/19(水) 19:53:22ID:???0582nobodyさん
2006/04/19(水) 20:08:41ID:yEjSiGYTサーバの文字コードとDBの文字コードとスクリプトの3つを気にしなきゃいけないのですか?
0583nobodyさん
2006/04/19(水) 20:15:11ID:???サーバの文字コードとDBの文字コードとスクリプト内部処理の文字コードと
HTML出力の文字コードの全てを「UTF-8」にすれば完璧です。
それ以外の心配はいりません。
0584nobodyさん
2006/04/19(水) 20:27:20ID:lD0hd5jB$myArray_sum = array_sum($myArray)
これでは値が0になってしまいorz
配列自体に数値が入っているのは確認しました。
配列の配列 array_sum/二次元配列 array_sum/等
でググったんですけど分かりませんでした。ど
うやったらいいでしょうか?
よろしくおながいします。
PHP Version 4.3.9
0585nobodyさん
2006/04/19(水) 20:28:17ID:yEjSiGYTレンタルサーバでも変更できますか?
0586nobodyさん
2006/04/19(水) 20:40:02ID:???$myArray_sum = 0;
foreach($myArray as $a) $myArray_sum += array_sum($a);
かなぁ
もっと簡単な方法ってあるのかな。
0587nobodyさん
2006/04/19(水) 20:45:19ID:???掲示板のようなもので、データを書き込んだら
なぜか「ソ」のあとに\が付くんですが、なぜでしょう。
カタカナを確かめるとソ以外の後ろには付きません。
htmlspecialcharsと、str_replaceで、改行、キャリッジリターンを<br>で変換する処理をしたあと、
ログに書き込んでいます。ログに書き込まれた時点で\が付いてるので表示の問題ではないようです。
お願いします。
0589587
2006/04/19(水) 20:51:57ID:???0590nobodyさん
2006/04/19(水) 20:55:12ID:???OS自体の文字コード。
WindowsはShift_JISで変更不可。
Fedora Core (Linux) なら UTF-8 が標準。(設定で変更可)
かんたんに言えばこんなかんじだ。
0592nobodyさん
2006/04/19(水) 20:57:39ID:???ん、ケータイ用サイトの文字コードもUTF-8にしているよ。
auとtu-ka、WILLCOMは全機種UTF-8対応でしょ。
(ゲートウェイで変換されるから旧機種でも問題無い)
たしかDoCoMoもよっぽど古い機種じゃなけりゃ問題ないとおもう。
たぶんアクセス解析すりゃ98%以上がUTF-8対応じゃないの?
0593nobodyさん
2006/04/19(水) 20:58:05ID:???> EUC-JPに比べてUTF-8を使うメリット
> ・最近のUnix/Linux系OSではUTF-8が標準であることが多い
「多い」ってことは全部じゃない?
> ・Windows/Macでも内部コードとして使われてきている
「きている」ってことはやっぱ全部じゃない?
0594584
2006/04/19(水) 20:59:35ID:lD0hd5jBありがとうございました。
数もそう多くないんで処理できれば問題なかったんで。
加算代入の存在忘れてました。
0595nobodyさん
2006/04/19(水) 20:59:47ID:???全部では無い。
ただ、EUC-JPよりは利用率が圧倒的に高い。
> 「きている」ってことはやっぱ全部じゃない?
全部では無い。
WinはShift_JISの箇所が一番おおいしな。
EUCはUnix用のコードだからWinの内部コードではないっしょ。
0596nobodyさん
2006/04/19(水) 21:01:08ID:???容量制限の問題はたしかにあるな。
> Winのメモ帳などでいじるとBOMがついて誤作動する
そもそも、EUCだとWinのメモ帳じゃ弄れないよね。
0598580
2006/04/19(水) 21:19:24ID:???0600nobodyさん
2006/04/19(水) 22:23:19ID:???XHTMLと文字コードは関係無いわけだが。
あとMOVAでWeb巡回する人なんてそんないないだろ。
2円/1パケット=128バイト もぼったくられるでしょ。
1MBで2048円にもなる。
0601nobodyさん
2006/04/19(水) 22:24:17ID:???0602nobodyさん
2006/04/19(水) 23:38:56ID:???公式嫁。
HTMLはSJIS、XHTMLはSJISかUTF8と書いてある。
つーか、わざわざイリーガルなことをせず素直に一般的な方法を選べよ。余計な事をして後悔したくなければな。
0603nobodyさん
2006/04/20(木) 00:22:29ID:???公式の情報が正しいとは限らないわけだが。
特にDoCoMoの情報はいい加減。
[email protected] というメールアドレスが
RFC準拠だとも書いてあるぞw
0605nobodyさん
2006/04/20(木) 01:00:15ID:???いくら大丈夫だからって気持悪い。
0606nobodyさん
2006/04/20(木) 03:59:38ID:???Warning: Invalid argument supplied for foreach() と怒られます。
--------------------------------------------------
<?php
include('mainmenu.inc');
$page = new mainmenu(HOME);
$array = array('HOME' => 'home.php','SERVICES' => 'service.php','PORTFOLIO' => 'portfolio.php','CONTACT' => 'contact.php');
$page->ex = $array;
$output = $page->mainmenu('HOME');
print $output;
?>
--------------------------------------------------
0607606
2006/04/20(木) 04:01:33ID:Rr5Gf5oo--------------------------------------------------
<?php
class mainmenu
{
function mainmenu($atpage)
{
$print .= '<table align="center" width="360" cellpadding="0" cellspacing="5">';
foreach($this->ex as $key => $val)
{
$print .= ahref("$val","$key","$atpage");
}
return $print;
}
}
function ahref($link,$name,$atpage)
{
if($name != $atpage)
{
return "<td><h2><center><a href=$link>$name</a></h2></td>";
}
else
{
return "<td><h2><center>$name</h2></td>";
}
}
?>
--------------------------------------------------
正直試行錯誤しながら適当に書いたのですが、エラーの理由が分かりません。
表示をちゃんと出来ているのでエラーを黙らせるだけでもいいのですが・・。
0609606
2006/04/20(木) 04:09:36ID:Rr5Gf5ooclass mainmenu
{
var $ex;
function mainmenu($atpage)
{
といった感じで、他の変数も宣言してみましたが変わりませんでした・・。
0610nobodyさん
2006/04/20(木) 04:40:15ID:???あーわかった。
new した時点でコンストラクタが実行されるのに、その時点ではまだ ex に値が入ってないからだね。
0611nobodyさん
2006/04/20(木) 05:48:34ID:5qR+ryMI$html = implode('', file('http://hoge.com/'));
print $html;
?>
これを、ローカルで実行すると「問題が発生したため、Apache HTTP Server
を終了します。 」とでるが、XREAにアップして実行するとエラーになりません。
ローカルでエラーにならない方法知ってる方、いらっしゃいますか?
0612nobodyさん
2006/04/20(木) 05:56:37ID:A22L6gzyどのように書けばいいのでしょうか。
誰か教えてくれませんか。
0613nobodyさん
2006/04/20(木) 06:18:02ID:???リモートファイルが使えるようになってる?phpinfo()で確認
http://jp.php.net/manual/ja/features.remote-files.php
>>612
「一定時間ごとに起動」はcronやat、タスクスケジューラなど
スクリプト起動しっぱなしなら永久ループでsleepとか
0614nobodyさん
2006/04/20(木) 06:19:32ID:???意図がよくわからない。応答返さずに定期的にアクティブになるならsleepだけど、意味ないわな。
一定時間ごとに応答が欲しいなら、ブラウザにRefresh指定しなさいな。
0615nobodyさん
2006/04/20(木) 06:42:41ID:5qR+ryMIphp.ini の設定は次のようになっています。
; Whether to allow the treatment of URLs (like http:// or ftp://) as files.
allow_url_fopen = On
ちなみにOSはWindowsXPです。
0616nobodyさん
2006/04/20(木) 07:15:59ID:A22L6gzycronとは初めて聞いたのですが、どのようなものなのですか。
書き方を知ろうと思いググってみたのですが、
どう書いたらよいのか分からなくて。
良かったら、教えていただけませんか。
0617nobodyさん
2006/04/20(木) 07:37:21ID:A22L6gzyphpinfo();で確認ってことじゃないの?
0618nobodyさん
2006/04/20(木) 08:01:58ID:???ちなみにマニュアルは読んだ?
>>注意: PHP 4.3未満のWindows版PHPは次の関数については リモートファイルアクセスをサポートしてません: include(), include_once(), require(), require_once(),
>> そして参照LVIII, イメージ関数(image)拡張によるimagecreatefromXXX関数。
はどう?
確認するのはphpinfo()で表示されるRegistered PHP Streamsにhttpがあるかどうか。
#関係ないけど最初の implode('',file('...'))はfile_get_contentsのほうがいいかなっと
>>616
OS書いてないからわかんないけど、cronは定期的に自動実行するUNIX系のツール
phpのスクリプトを設定した時間がきたら動かすってことだな。
ぐぐればわんさか出てくる。WinならVectorでもいけばそういうツールあると思うけど。
0619613
2006/04/20(木) 08:05:34ID:???べくたーにこんなんあったけど
http://www.vector.co.jp/soft/winnt/util/se232096.html
UNIXのcronみたいなの
0620nobodyさん
2006/04/20(木) 09:58:55ID:???お前、>>536で提示されてるリンク先をよく読んだか??
読んでもまだ意味がよく分からないようなら相当ヤバイので、
エンコード云々に限らず、Webプログラム開発自体を止めたほうがいいよ。
0621nobodyさん
2006/04/20(木) 10:40:57ID:???Apacheは
./configure --prefix=/usr/local/apache --enable-module=so
PHPは
./configure --without-mysql --enable-mbstring --with-apxs=/usr/local/apache/bin/apxs --prefix=/usr/local/php4
でインストールしました。
Apacheを起動し、<?php phpinfo(); ?>を書いたファイルにアクセスしたところ、php.iniのパスは/usr/local/php4/libでした。
ところが、/usr/local/php4/lib/にphp.ini-recommended⇒php.iniとして配置し、Apacheを再起動しても設定が反映されません。
何か作業に見落としがあるのでしょうか?
0622nobodyさん
2006/04/20(木) 10:55:22ID:???マニュアルは読みました。
PHP Version は 4.4.2 です。
Registered PHP Streams はphp, http, ftp, compress.zlib で
httpはあります。
■ このスレッドは過去ログ倉庫に格納されています