トップページ⇒php
1001コメント280KB

【PHP】質問スレッドpart20【php】

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん04/08/06 15:44ID:paJ4kjjQ
・PHP全般の質問スレです。
・新規質問の方は上げてください。age進行でお願いします。
・質問する際には環境も明記。
・正しい日本語で分かりやすく。
・レスがつかないからって逆切れする厨お断り。
・解決しなくてもこたえてもらったら礼を。


■本家
 http://www.php.net/

■日本 PHP ユーザ会
 http://www.php.gr.jp/

■PHP マニュアル
 http://www.php.net/manual/ja/

■PEAR マニュアル
 http://pear.php.net/manual/ja/

過去スレ, 関連スレ等>>2-4


抜けているものがあったら補足願います
0002nobodyさん04/08/06 15:45ID:paJ4kjjQ
過去スレ
【PHP】質問スレッドpart19【php】
http://pc5.2ch.net/test/read.cgi/php/1089929550/
0003nobodyさん04/08/06 15:50ID:paJ4kjjQ
関連スレ
Pear
http://pc5.2ch.net/test/read.cgi/php/985665522/

【PHP】Smarty【Template】
http://pc5.2ch.net/test/read.cgi/php/1047225437/
0004nobodyさん04/08/06 16:39ID:???
>>1
立てたら前スレにリンク貼れやボケが!
0005nobodyさん04/08/06 16:59ID:???
過去スレ
【PHP】質問スレッドpart19【php】
http://pc5.2ch.net/test/read.cgi/php/1089929550/

って2に書いてあるぞ、4よ
0006軟式PHP04/08/06 17:03ID:8a2aplVU
(*´▽`*)乙
0007nobodyさん04/08/06 17:11ID:???
>>5
前スレ「の」リンクじゃなくて、前スレ「に」新スレのリンクを貼れということだろ。
なかったから俺が貼ってきたけどさ。
0008nobodyさん04/08/06 17:21ID:MRWEjhxd
php4.2.2でcheckauth関数を使うにはどこの設定をかえればよいのでしょうか?
おながいします
0009nobodyさん04/08/06 17:30ID:zD2/bc5/
PHPからMySQLにデータ書き込みするとき、
たまに文字化けするってのにもうずっと悩まされています。

色々試しに修正いれても、
たまにしか文字化けしないので直ったかどうか分からず辛いです。

どうすればイイかの方法論を教えて欲しいです。
助けてください。
0010nobodyさん04/08/06 18:19ID:???
【SJISで運用する場合】
my.ini の設定
以下のふたつは設定しておくこと
[mysqld]
default-character-set=sjis
[mysql]
default-character-set=sjis


ってことじゃないの?

あと影響しそうなのは
php.ini
magic_quotes_gpc = Off
とか?


表とか十とか申とか化けてない?
0011nobodyさん04/08/06 18:28ID:???
ってか、設定変更するときは、本当にその問題なのか、
きちんと把握してから変更してね。
0012nobodyさん04/08/06 19:12ID:???
>>8
PHPの標準関数の中にはねぇな。
> Sorry, but the function checkauth is not in the online manual.
pearのAuthのやつなら pearのマニュアルのインストール部分を読んで入れれ
0013nobodyさん04/08/06 19:37ID:???
前スレ976です。

重複しますが、よろしくです。
/*前スレ990*/
$image_dir_path = dirname($image_path);/*元イメージ格納ディレクトリーパス*/
$mkdir_path = $image_path.$mkdir_name;/*サムネイルを作成するディレクトリーまでのパス*/
mkdir($mkdir_path , 0777);
chmod ($mkdir_path , 0777);/*←これが無いとmkdirでは755にしかならなかった、*/
で一応目的のディレクトリーを作ってサムネイルも作成できるのだけど
$mkdir_path へディレクトリーを作るにはその上層のディレクトリーのアクセス権を777にしないと
行けないので、mkdirの前にchownでchown($xxx , www);
としたけど、
chownするのはそのまた上層にwwwへのアクセス権777が必要みたい・・・
結局、サムネイルを作成するディレクトリーまですべてwwwをオーナにして777にしないと
いけない状態。。
どうすればいいんだろうか。。
0014nobodyさん04/08/06 22:24ID:???
綺麗にかけよ
0015nobodyさん04/08/06 23:49ID:???
>>13
そんなディレクトリ構成にしたお前が悪い
0016nobodyさん04/08/06 23:55ID:???
777しろよ
0017nobodyさん04/08/07 00:01ID:???
707にしろ
グループは0にしとけ、マジで。
無料鯖はユーザーを同じグループにしてて普通に他人のディレクトリは入れるようなずさんなところあるから
どっちにしてもセキュリティのためにグループは0で
0018nobodyさん04/08/07 00:21ID:???
php5.0のphp.iniで
output_handler = mb_output_handler
と指定してもphpinfo()では"no value"となってしまいます。
mb_stringsを使いたいのですが、この項目は必要ないのでしょうか
0019nobodyさん04/08/07 00:24ID:???
[No.13]
カポコン04/08/07 00:13
04/08/07 00:13
>>11
文句があるなら、ココに言ってくれ。
思いっきり.NETバイトコードって書かれてるだろ。
http://japan.linux.com/opensource/04/04/26/0139204.shtml

ちなみにバイトコードとはネイティブコードの中間にあたるコードの事。

まーLinuxで.NETバイトコードって言われるゆえんは、LinuxOSに詳しい人間なら
分かるだろうけどね(ボクはまだ、マウス派だから分からないか?)
所詮、IT用語辞典関連の検索キーで調べた浅はかで唯々諾々とやってきただけの知識か・・・。
0020nobodyさん04/08/07 00:25ID:???
http://board.aaacafe.ne.jp/read.cgi/php/1091350197/
0021nobodyさん04/08/07 00:37ID:???
>ちなみにバイトコードとはネイティブコードの中間にあたるコードの事。
全然違う。
仮想コンピューター上でのコードのことであって、
中間というわけではない。
0022nobodyさん04/08/07 01:04ID:???
しったかはもううんざい
0023nobodyさん04/08/07 01:09ID:???
うんざいだな
0024nobodyさん04/08/07 08:31ID:???
>>13
safe modeでmkdirはやめておけ。使い物にならない。
0025nobodyさん04/08/07 14:27ID:???
だな、始めに作っとく方がいい
0026nobodyさん04/08/07 17:26ID:I/AgGnLb
PHP版の更新時刻取得エージェント(アンテナ)を配布しているサイトを
ご存知の方はいらっしゃいませんか?海外のでも構いません…。
ぜひ参考してみたいと思いますので、どうぞよろしくお願いします。
0027nobodyさん04/08/07 21:00ID:???
GDを使用して元の画像から色を変更したいのですが
http://www.uploda.net/anonymous/etc2/upload25313.gif
こういう画像で(分かりにくいのですが左下を透過処理しています。)透過されてない部分の色を
任意の色に書き換えたいんですが可能でしょうか?
もし可能であればご教授お願い致します。
0028Tom04/08/08 00:20ID:5rvsGlMW
PHP初心者です。詳しい方、何卒お助け下さい。
文字列をダブルクオーテーション内に書いたときは「"」を、シングル
クオーテーション内に書いた時は「'」をエスケープしなくてはなりませんが、
ダブル、シングルの両方エスケープする必要がある場合はどうしたら
よいのでしょうか?

例えば下記のようにJavaScriptのファンクションをコールするHTMLタグを
PHPで書き出して、このファンクションにPHPの変数を渡したい場合、
シングルとダブルクオーテーションの両方を使わざるを得ないと
思うのですが、このファンクションに渡される変数に例の$details1
〜3のようにシングル、ダブルクオーテーションの両方が含まれて
いると、いずれもエラーになってしまいます。

<?php
$details1 = "My friend's name is \"John\""; //ダブルクオーテーション内 ダブルのみをエスケープ
$details2 = ' My friend\'s name is "John"'; //シングルクオーテーション内 シングルのみをエスケープ
$details3 = "My friend\'s name is \"John\""; //ダブルクオーテーション内 両方エスケープ

echo "<input type='button' value='Show Details1' onClick='showDetails(\" $details1 \")' >";
echo "<input type='button' value='Show Details1' onClick='showDetails(\" $details2 \")' >";
echo "<input type='button' value='Show Details1' onClick='showDetails(\" $details3 \")' >";

?>

変数に' や"が含まれるのが避けられないケース(ユーザによる
フォーム入力値など)があると思うのですが、この場合皆さんはどう
処理されているのでしょうか?
ご教授よろしくお願いいたします。
0029nobodyさん04/08/08 00:27ID:???
>>28
俺の場合、それは頻繁に使うからこうしている
変換する文字列を簡単に拡張できるようにstrtrを使っているが別にstr_replaceで置換を使ってもいいと思う

/* HTML特殊文字変換 */
function htmlspecialcharsEx( $text ){
$translations = array(
  "'" => "?",
);
return strtr( htmlspecialchars($text) , $translations );
}

同様に改行付き出力の為にprintlnも定義したりしている。
0030nobodyさん04/08/08 00:28ID:???
おっと……こうね。

$translations = array(
  "'" => "&#39;",
);
0031Tom04/08/08 01:51ID:5rvsGlMW
レス29&30さん

なるほど!!!そうすればいいのですね!早速やってみます。
レス本当にどうもありがとうございました!
0032nobodyさん04/08/08 03:00ID:F0zxfskV
PHPを書くときって借りてるサーバでテストできないですよね?
皆さんどうしてるんですか?
0033nobodyさん04/08/08 03:06ID:???
自分のPCで鯖作るとか、Eclipseでデバッグするとか。
0034nobodyさん04/08/08 03:11ID:F0zxfskV
Eclipse入れればテストできるのですか?
0035nobodyさん04/08/08 03:25ID:???
つか、なんで開発機にPHP入れないの?
鯖だってフリーのhttpdがいろいろあるのに。
0036nobodyさん04/08/08 03:30ID:F0zxfskV
これからはじめるので。
0037nobodyさん04/08/08 06:07ID:???
夏だね、夏過ぎる。

>>30
二重置換になってるぞw
0038nobodyさん04/08/08 12:25ID:???
winXPのローカル環境でmail関数を使ってメールを送れるかテストしたいんですが

"sendmail_from" not set in php.ini or custom "From:" header missing

と出て送れませんでした。


php.iniの[mail function]は
SMTP = localhost  または SMTP = xx.xx.com(普段使ってるメールのSMTP)
sendmail_from = [email protected] (普段使ってるメールアドレス)
で試しました。;は外してあります。Apacheも再起動しています。

telnetを試したところ、上記のメールアドレスとSMTPで正常に送信できました。
どこがダメなんでしょうか、誰か助けてください……
0039nobodyさん04/08/08 13:04ID:zYHZKtON
>>38
SMTP = xx.xx.comって中継を許可してんの?
ま、まさかねぇ・・・

SMTP = localhostって自分のPCでメールサーバーを動かしてるよね?
0040nobodyさん04/08/08 13:28ID:???
<win32/sendmail.h>
#define W32_SM_SENDMAIL_FROM_NOT_SET19

<win32/sendmail.c>
static char *ErrorMessages[] =
 {"\"sendmail_from\" not set in php.ini or custom \"From:\" header missing"}, // 19

/* Fall back to sendmail_from php.ini setting */
if (mailRPath && *mailRPath) {
 RPath = estrdup(mailRPath);
}
else if (INI_STR("sendmail_from")) {
 RPath = estrdup(INI_STR("sendmail_from"));
} else {
 if (headers) {
  efree(headers);
  efree(headers_lc);
 }
 *error = W32_SM_SENDMAIL_FROM_NOT_SET;
 return FAILURE;
}
つーことは、sendmail_fromが設定されていないんでねぇの?
0041nobodyさん04/08/08 13:29ID:???
>>39
うう、たぶんそれです。


PHP関係ない部分でコケてたんですね…すいません。
正直なとこメールだのSMTPだの、よく知らないんで(PHP自体も、覚えたてでして)
エラー文とかをググって、出てきた方法を片っ端から試したんですが……
それ以前の問題ってことでしょうか。また調べてきます。
0042nobodyさん04/08/08 13:42ID:???
掲示板に1ページ目、2ページ目を作りたいのですが
皆さんどうしてます?
0043軟式PHP04/08/08 14:08ID:???
ヽ(`Д´)ノ
0044nobodyさん04/08/08 14:12ID:???
>>42
今のページに表示数を足したり引いたりしてまっしゅ。
0045nobodyさん04/08/08 14:13ID:???
軟式軟式。海いった?
0046Imo ◆.jC7ANgFY. 04/08/08 14:36ID:???
>>42
必要ページ数 = ceil(記事数 / 1ページあたりの表示数)
計算はこんなところ。あとはrangeでも使ったりして。
0047nobodyさん04/08/08 15:01ID:zYHZKtON
ページの切り替えで何時も思うのは記事数を拾わないといけない点だよね。
ごっそりデータを読み込んでから拾うしかないのだろうか。
良い方法を見つけた人いないですか?。
0048nobodyさん04/08/08 15:15ID:???
>>47
カウンターとかつくったことない?
0049nobodyさん04/08/08 15:25ID:zYHZKtON
>>48
ありません!。
投稿総数を保存しているのは当然の事だしなぁ。
カウンターにもっと高度なヒントが隠されているのでしょうが、
どんなヒントなのだろう。
私には思い付かないので教えてくださいm(_)m。
00503804/08/08 15:48ID:???
行き詰ったんで、もう一度質問お許しください。(忘れてましたけど、PHP4.3.4です)

mail関数などで調べると、どこのサイトを見ても、
php.iniの  SMTP = xx.xx.xxx  と  sendmail_from = [email protected]
を自分の使ってるものにすれば、それで送れるようになる。

みたいに書いてあるんですが、勘違いなんでしょうか。それだけじゃダメなんですか?
0051nobodyさん04/08/08 16:22ID:???
指定先のSMTPサーバ動いていれば、それで問題ありません。
0052nobodyさん04/08/08 16:23ID:zYHZKtON
>>50
SMTP = localhost
smtp_port = 25

というのは、localhost:25でMTA(メールサーバー)が稼働している
事が前提であってMTAが無ければ当然メールは送信出来ません。

他は、>>40を参照
0053nobodyさん04/08/08 16:35ID:???
POSTの場合…$_POST['変数名']

GETの場合…$_GET['変数名']

これは普通の変数と何が違うんでつか?
0054nobodyさん04/08/08 16:55ID:???
安全面
0055nobodyさん04/08/08 17:15ID:mbHx5JiB
mbstring.internal_encoding って
EUC-JP、Shift_jis、
どっちが一般的なんでしょう?
Shift_jis で使うのってナンセンス??
0056nobodyさん04/08/08 17:28ID:???
上の質問と若干かぶるんですが、
mbstring.internal_encoding = euc-jp
にするとメール送信フォームなんかのときに
再度、euc から shift_jisに変換する必要が出てくるんですよね?
0057nobodyさん04/08/08 18:00ID:???
あいうえお
かきくけこ
さしすせそ

仮に上のような複数行にまたがる文字列があったとして
「こ」を含む行全体(かきくけこ)のみを取得するには
どうすれば良いのでしょうか?
どうぞよろしくお願いします
0058nobodyさん04/08/08 18:20ID:???
>>56
普通メールはJISで送るものだが…
00595504/08/08 18:23ID:???
あちゃ〜本当ですね。
shift_jis だと問題ありでしょうか?
0060nobodyさん04/08/08 18:23ID:???
>>55
内部コードはOSによる
・Windowsならshift-jis
・LinuxならEUC(FedoraはUnicodeらしいがよく知らん)
詳しくはここ
http://tsuttayo.sytes.net/php/char_trn/index.html
0061nobodyさん04/08/08 18:33ID:???
>>60
>>内部コードはOSによる

(! ̄д ̄)えぇぇぇ
それはちょっとおかしいだろ。

そもそも本家で配布されているWin用バイナリは--enable-zend-multibyteしてるんだっけ?
--enable-zend-multibyte付でコンパイルされてなかったらSJISを内部コードに出来なかったと記憶しているが。
00626104/08/08 18:35ID:???
あ、スマソ。
スクリプトが--enable-zend-multibyteしていないとSJISは拙いんであって
internal_encodingは問題ないのか。。。
0063nobodyさん04/08/08 18:41ID:???
基本的にはLinuxでもWinでも内部コードはEUCだったはずだし
その方がいいと思うよ
0064軟式PHP04/08/08 20:49ID:???
>>45
いや、今年は行ってないな。周りから「色白すぎ」と言われる。
焼けても赤くなるだけのタイプ>俺

>>57
正規表現使うとか、改行で分割して判定して取得とか。
0065nobodyさん04/08/08 21:34ID:???
これからphp勉強しようかなーと思っているものなんですが、
ttp://www.gta-series.com/eng/index.php
↑のサイトはどこでphpを使っているんでしょうか?
教えてください、お願いします
0066軟式PHP04/08/08 21:37ID:???
>>65
管理者に聞けや。
0067nobodyさん04/08/08 21:45ID:???
管理人にしかわからないものなんでしょうか?
0068nobodyさん04/08/08 21:48ID:Odqra96P
変数にあまり長い文字列を入れ、出力すると表示がおかしくなることってありますか?
0069nobodyさん04/08/08 21:53ID:???
>>68
いろいろ実験して誰でも再現できる現象を確認したらそれ持って又質問しに来い
0070Imo ◆.jC7ANgFY. 04/08/08 22:09ID:???
>>57
$txt = <<<EOM
あいうえお
かきくけこ
さしすせそ
EOM;

$search = preg_quote('こ');
$txt = preg_grep("/$search/", explode("\n", $txt));
echo implode("\n", $txt);
0071nobodyさん04/08/08 22:20ID:???
$txt = <<<EOM
あいうえお
かきくけこ
さしすせそ
EOM;
0072nobodyさん04/08/08 22:23ID:???
$txt = <<<ERO
いやん
ばかぁん
えっちぃ
ERO;
0073nobodyさん04/08/08 22:33ID:???
ひさびささぶいぼたった
0074nobodyさん04/08/08 22:41ID:???
>>70
preg 系は文字コードが UTF-8 で u オプションを使用するときだけにした方がいい。
その例で、文字コードが EUC-JP の場合、「修学旅行」という文字が含まれていても引っかかる。
0075nobodyさん04/08/08 23:22ID:Odqra96P
変数がdata0からdata10まで作りました。
その変数をfor文を使って初期化したいです。

for($i=0; $i<10; $i++)
$data$i = "abc";

これだと、エラーで動きません。
どこを修正したらいいでしょうか?
0076nobodyさん04/08/08 23:29ID:???
$data{$i}
0077nobodyさん04/08/08 23:29ID:???
>>75
何で配列使わないの?
0078nobodyさん04/08/08 23:31ID:???
for($i=0; $i<10; $i++)
${"data".$i} = "abc";
00797504/08/08 23:32ID:Odqra96P
使い忘れというか、変数名を変える予定だったので、てきとうにつけました。
0080nobodyさん04/08/09 00:07ID:???
>75は口調が小学生の息子に似てる
0081軟式PHP04/08/09 00:54ID:???
頑張れ75
00827804/08/09 01:30ID:???
何で俺スルーされてんの?
0083nobodyさん04/08/09 02:15ID:???
>>75
どーでも良いが、0から10まで作りたいなら
for ($i=0;$i<=10;$i++) じゃないのか?

>>78
なんでだろ?
0084nobodyさん04/08/09 02:47ID:???

<?php
$name = "山田";
$_GET ["name"];
print $_GET;

?>
実行結果「Arrey」

$_GETの使い方教えてください・・・
0085nobodyさん04/08/09 03:10ID:???
>>84
何で$_GETを使いたいんだ?
00868404/08/09 03:13ID:???
ページが切り替わるとよく変数がカワップになるぽ
0087nobodyさん04/08/09 03:13ID:???
何がしたいのかわからん
0088nobodyさん04/08/09 03:38ID:???
>>84
なんかワロタ
0089nobodyさん04/08/09 04:15ID:???

        ○   o ○  ○ 「ママー夏過ぎるよ」
             ○`「「「l        
                  \. V7       r‐、
        ____`o ○ |  |.       >、,>
      //      |O。゚-ト、. |      | |
   .//| /(・) ∩ |o.  | | |  /\ | |
    |//|       |   | | | /   | | ̄`l     /\
    |//|   (・)   \_| |─/    /く  |   /  r、/`ーっ
    |//  \           | /   /  |  \/\/  `ー'"
    |/  ヽ__       //  /   |     /
   mn____|___r──l__/    |    /
   ヽ_______|__ノ────' ──''"
0090軟式PHP04/08/09 09:13ID:???
>>84
<?php
print 'GET:' . $_GET['name'] . '<br>' .
'<a href="'.$_SERVER['PHP_SELF'].'?name=山田">山田クリック</a><br>';
?>
0091nobodyさん04/08/09 09:26ID:???
<a href="?name=山田">name</a>
<?=$_GET["name"];?>
軟式軟式。私も真っ白。
0092Imo ◆.jC7ANgFY. 04/08/09 10:44ID:???
>>74
ついついpregしか使わない癖があってorz(perlから入ったからかなぁ、、、
ereg_replace_callbackみたいなのがあったら移りやすいのだけど…。

>>90
rawurlencodeをして渡したほうがいいのでは?
ブラウザによっては日本語をUTF-8に変換して取得しようとするから、
0093nobodyさん04/08/09 11:04ID:???
mb_convert_kana() って 変換可能文字列長制限とか、
そのた制限ありますかね?

〜だと全く変換されないとかっての

$conv = mb_convert_kana($str, 'asHVc');
0094軟式PHP04/08/09 11:13ID:???
>>92
確かに。スマンカッタ。GETで直接日本語を渡す機会が殆ど無かったから忘れてた。
そういえばHDMLのFORM構文の初期値に日本語を入れる場合もurlencodeしてたなぁ。
初心者にはエンコ無い方が分かりやすいかもしれないからユルシテ。・゚・(ノ∀`)・゚・。
0095nobodyさん04/08/09 11:46ID:lYQyr6Nk
郵便番号をmysqlに入れて、検索できるphpスクリプトを
配布されているところって知らないかい?
0096nobodyさん04/08/09 12:07ID:???
知ってても君のような態度の人には教えてあげれない。
0097nobodyさん04/08/09 12:14ID:???
ていうかそんなの自分で作れよ
まぁその前にSQLを全然知らないみたいだが
0098nobodyさん04/08/09 13:48ID:???
郵便番号の CVS データは癖があるので
それを DB に落とし込むのは日本各地で車輪の最発明は無駄だよね。
あと、郵便番号は更新しないといけないし。
大学のデータとかもどこか SOAP や XML-RPC とかで提供しないかな。
0099nobodyさん04/08/09 14:00ID:???
車輪再発名ほど大変な作業ではない。
0100nobodyさん04/08/09 14:32ID:???
オブジェクト指向について質問です。

Class関連の使い方はだいたい分かるのですが、
実際に使っていきたいのですが、
どうもとっかかれなくて、書籍もJAVA関連になるので躊躇ぎみで、

こんなところから、とっかかればいいよ、などなど
アドバイスを頂ければと思っています。
宜しくお願いします。
0101nobodyさん04/08/09 14:35ID:???
classを使うことがオブジェクト指向ではありません。
まずは言語とは無関係にオブジェクト指向が何かを学ぶことをお勧めします。
■ このスレッドは過去ログ倉庫に格納されています