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

【PHP】質問スレッドPart3

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。02/02/17 13:23ID:N+9Uw5dE
レスは気長に待つのが良い感じかも。
答えられる方、返答よろしくお願いします。

<<参考リンク>>
■本家
http://www.php.net/
■PHP日本語マニュアル
http://www.php.net/manual/ja/
■JapanPHPUsersGroup
http://www.php.gr.jp/
■PHP日本語ページ
http://www.cityfujisawa.ne.jp/~louis/apps/phpfi/index.html
■Pearのドキュメント
http://phpdocu.sourceforge.net/peardocs/

<<過去スレ>>
■【PHP】質問スレッドPart1
http://ebi.2ch.net/test/read.cgi/php/982687820/
■【PHP】質問スレッドPart2
http://pc.2ch.net/test/read.cgi/php/1003283567/

<<教えて君>>
■ここ見習って書き込んじゃ、駄目よ
http://pc.2ch.net/test/read.cgi/unix/1011345180/242-245
044944002/03/27 22:52ID:???
>>447
http://www6.lunartecs.ne.jp/~stp/cgi/bbsnote/shi_help.htm#POST
独自形式なんでuploadでは無理みたいなんです。
045043402/03/27 23:58ID:???
>>448
なるほど、謎がとけました。どうもありがとう。
0451名無しさん@お腹いっぱい。@52202/03/29 00:35ID:RtQXAlBI
質問です!!!

PHPでpostgreSQLをcreatedbしたくて
まず、hoge.shというファイルをシェルで作成

su - postgres -c "createdb $1"

次に、phpソースでは、
<?
system("csh hoge.sh DB_NAME");
?>
って書いたんだけど、createdbしてくれません。なぜか教えて〜ぇ

ちなみに、コマンドラインからだとちゃんとシェルが動いてるんだけどね
0452nobodyさん02/03/29 00:42ID:???
su - postgres -c "createdb $1"

ってrootじゃないといかんのじゃ?
0453名無しさん@お腹いっぱい。@52202/03/29 00:47ID:RtQXAlBI
>>452
じゃ、どうするの?
0454名無しさん@お腹いっぱい。@52202/03/29 01:15ID:RtQXAlBI
>>452
これはどうなの?

hoge.shのファイル
su -
****** <- rootのパスワード

su - postgres -c "createdb $1"
0455名無しさん@お腹いっぱい。@52202/03/29 02:16ID:RtQXAlBI
<?
echo system("who");
?>
rootじゃないんだけど・・・・
どうしたら、rootになるの?
どこで、設定するの????
0456nobodyさん02/03/29 03:56ID:???
>>455
あほ
0457nobody02/03/29 13:06ID:0qXfiGHt
>>456
出来ないの????
0458nobodyさん02/03/29 14:26ID:ioukNhEY
apache1.3.24+php4.1.2+postgresql7.2+modssl2.8.8の構築をしたいです。
OSはportsが便利そうという事でFreeBSDで行こうと思います。
・全てportsからインストールして環境を整えるのは可能でしょうか?
・インストールした後にソースから入れる時でいうconfigureオプションは
 どこのファイルを書き換えるべきなのでしょうか?
・ソースからインストールとportsからインストールのメリットデメリットもあれば
 教えていただきたいと思います。
・ここを見ろ!というのでも助かります。
よろしくお願いいたします。
0459 ◆AngelBlk 02/03/29 16:08ID:???
>449
調べてみたんだけど、いまいちよくわからず・・・。
また時間ある時に調べてみる。
スマソ。

>450
portsから入れる利点は
インストール/アンインストールが楽
依存性があるソフトは足りないソフトも一緒にいれてくれる

欠点はインストールされる位置とか設定ファイルの場所とか
把握してないと見失いがちなこと。
後、最新版に即対応出来ないことがあることかな。

configureはPortsのMakefile見ればわかるはず・・・。
0460nobodyさん02/03/29 20:44ID:ioukNhEY
portsからphp4を入れてみたんですが
libphp4.soってどこに入るんですか?
0461親切な人02/03/29 20:51ID:???

ヤフーオークションで、凄い人気商品、発見!!!

「高性能ビデオスタビライザー」↓
http://page2.auctions.yahoo.co.jp/jp/auction/b22199908

ヤフーオークション内では、現在、このオークション
の話題で、持ちきりです。
0462nobodyさん02/03/29 21:58ID:???
>>460 /var/db/pkg/$PKGNAME/+CONTENTS
046346002/03/29 22:06ID:ioukNhEY
>>462
/var/db/pkg/$PKGNAME/+CONTENTS
とはどういう意味ですか?
libphp4.soがこれなんですか?
046446002/03/29 22:40ID:ioukNhEY
自己レス。
portsから
/lang/php4でいれたときは
/www/mod_php4も入れれば
libphp4.soが入りました。
0465nobodyさん02/03/29 23:46ID:???
$PKGNAME を自分が入れた ports の名前に置き替えるべし。
すなわちこの場合は /var/db/pkg/mod_php4-4.1.2/+CONTENTS
このファイルの中にインストールされたファイルやらなんやらが書いてある。
0466nobodyさん02/03/30 01:44ID:???
>463
$ file /var/db/pkg/mod_php4-4.0.6_4/+CONTENTS
/var/db/pkg/mod_php4-4.0.6_4/+CONTENTS: ASCII text
$ cat /var/db/pkg/mod_php4-4.0.6_4/+CONTENTS
@name mod_php4-4.0.6_4
@cwd /usr/local
@pkgdep mysql-client-3.23.42
@pkgdep apache-1.3.20
@comment ORIGIN:www/mod_php4
bin/pear
@comment MD5:22b7923ad56776c64f234b57d60b3c0f
bin/php-config
@comment MD5:87c9caa19893adc928cee314d69ddb31
bin/phpextdist
:
:
(以下略)
0467nobodyさん02/03/30 19:40ID:fhg4NU7F
web mailを作っているのですが、
<textarea rows="5" wrap="soft" name="msg"></textarea>
で取得したmsgを
mail($to, $subject, $msg, $header);
で送信すると、本文の頭に必ず3行分の改行が入ってしまいます。

他に$msgをいじっている部分は
入力チェックと
文字コード変換
$msg = JcodeConvert($msg, 0, 3);
ですが、上記の部分はコメントアウトしても変化がなかったので
関係ないと思われます。
サーバーに関しても別のサーバーで試したところ、同様の結果に
なったので関係ないと思われます。

何か他に思いつく原因はないでしょうか?
よろしくお願いします。
0468nobodyさん02/03/30 22:49ID:???
>>467
とりあえず各処理の間で$msgの中身をファイルへ出力してどこが原因か探してみたかい?
046946702/03/31 01:46ID:pwj7EFfY
>>468
mail();の後も含め5箇所くらいでecho $msg;をしましたが、
いずれも$msg自体は正常に受け渡した通り出力されています。
ってことはmail()でなんか変なことをやっているとか・・・?

ちなみにソースは
http://pm5.kiss1.net/mail.phps
にあります。
実行は
http://pm5.kiss1.net/form.html
からです。
047046702/03/31 01:49ID:???
あ、phpsが使えない・・・
とりあえずtxtにしてあげておきます。
http://pm5.kiss1.net/mail.txt

ついでに稚拙な部分(ほとんど?)を直してみてほしいとか
他力本願なことを言ってみたり(^^;
0471nobodyさん02/03/31 06:28ID:???
>>467
一通りソース見ただけだから自信はないんだけど、
これは恐らくmail関数の問題では?
今昔知り合いが書いたソースを読んだんだけど、
そいつがmail関数使うところではヘッダの最後の行は
改行無しだった。
最後の引数の$headerの最後に\r\nいれちゃってるから
関数内で加えられる改行とで合計3つとか。
ここのところが一番臭いから試してみて。
047246702/03/31 11:04ID:???
>>471
おお!
おっしゃる通り、ヘッダにつける改行を削ったらちゃんと動作しました。
どうもありがとうございました。
しかし、ヘッダに改行があると本文に反映するってのはよくわからんなあ・・・
0473nobodyさん02/03/31 20:48ID:gcEm6bxV
ポマエラ!こんなロジック組んでくれ。おながいします

CSVデータの変更プログラム

列A,列B,列C
11,22,33
44,55,66
  ・ 
  ・
  ・

これを

列A,列B,列C
11,22,33
44,XX,66
  ・ 
  ・
  ・

55のところをXXに変更。
指定した列の指定した行を任意に変更できるロジック。
もちろん、なるべくメモリを食わないように。
0474nobodyさん02/03/31 21:10ID:???
>>473
本当にメモリの使用量を気にするなら、
CSVのファイルから直接読み込むのか
メモリ上にCSV形式のデータを編集するか
どちらかを教えれ。

これを作るに当たって何がわからないの?
メモリをなるべく使わない方法?
それとも置換そのもの?
とりあえず今まで何して、どう失敗したかとか書いてくれや。
047547402/03/31 21:11ID:???
ちょっとミス。

>メモリ上にCSV形式のデータを編集するか
メモリ上にあるCSV形式のデータを編集するのか

の間違いでした。
0476nobodyさん02/03/31 22:01ID:???
マルチポスト
http://pc.2ch.net/test/read.cgi/php/1017456911/8
0477nobodyさん02/04/01 09:24ID:wTPI09Op
html出力とファイル出力をうまく切り替えられる方法ないですかねぇ?
イメージ的には下のような感じにしたいのですが(もちろん動作しません)
/////////////////////////////////////
if($filesave==1){
fopen($fp,"filename.dat");
}else{
fopen($fp,"html"):
}
fputs($fp,"データ");
fclose($fp);
/////////////////////////////////////
0478nobodyさん02/04/01 12:55ID:???
>477
クラス作れ

class foo
var $f;
function foo($hoge)
{
$this->f=$hoge;
}

function fputs($data)
{
if ($this->f == なんとか) {
fputs ふが
else
fputs ほげ
}

こんな感じ。
047947702/04/01 13:13ID:???
そうしてみます。
ありがとうございました。
0480nobodyさん02/04/01 20:03ID:213sjeJ3
かちゅ〜しゃから送信されたフォーム情報がPHPで取得できません。
$HTTP_POST_VARSも空っぽです・・・。

ブラウザからなら取得できるのですが。

どうやったら取得できるのでしょう・・・。
0481nobodyさん02/04/01 22:11ID:RDA5NK4q
上省略
/bin/sh /usr/home/xxx/src/php-4.1.2/libtool --silent --mode=link gcc -I. -I/usr/home/xxx/src/p
hp-4.1.2/ -I/usr/home/xxx/src/php-4.1.2/main -I/usr/home/xxx/src/php-4.1.2 -I/usr/home/xxx/s
rc/php-4.1.2/Zend -I/usr/home/xxx/src/php-4.1.2/ext/mysql/libmysql -I/usr/home/xxx/src/php-4.1
.2/ext/xml/expat -I/usr/home/xxx/src/php-4.1.2/TSRM -g -O2 -o php -export-dynamic stub.lo lib
php4.la
/usr/libexec/elf/ld: cannot find -lpq
*** Error code 1

Stop in /usr/home/xxx/src/php-4.1.2.
*** Error code 1

Stop in /usr/home/xxx/src/php-4.1.2.
>
php4.1.2をダウンロードしてきて./configure makeしたところなんですが
こんな感じです。なにがいけないのでしょうか?
おねがいします。
0482nobodyさん02/04/01 22:13ID:RDA5NK4q
/bin/sh /usr/home/xxx/src/php-4.1.2/libtool --silent --mode=link gcc -I. -I/usr/home/xxx/src/p
hp-4.1.2/ -I/usr/home/xxx/src/php-4.1.2/main -I/usr/home/xxx/src/php-4.1.2 -I/usr/home/xxx/s
rc/php-4.1.2/Zend -I/usr/home/xxx/src/php-4.1.2/ext/mysql/libmysql -I/usr/home/xxx/src/php-4.1
.2/ext/xml/expat -I/usr/home/xxx/src/php-4.1.2/TSRM -g -O2 -o php -export-dynamic stub.lo lib
php4.la
/usr/libexec/elf/ld: cannot find -lpq
*** Error code 1

Stop in /usr/home/xxx/src/php-4.1.2.
*** Error code 1

Stop in /usr/home/xxx/src/php-4.1.2.
>
となってしまいました。
なにがいけないのでしょうか?よろしくおねがいします。
048348102/04/01 22:14ID:RDA5NK4q
あれ?書き込めてる。失敗。
0484名無しさん@お腹いっぱい。02/04/02 00:31ID:cW7c6rc4
どこに質問していいのやら・・・
板違いだったらごめんなさい。
通信技術のほうにも書き込みました。

画像UPのPHPを作ったんですが、動作チェックをしてて妙な事に気づきました。
1ピクセルごとに、赤、青、緑、赤、青、緑・・・
2行目緑、赤、青、緑、赤、青・・・
3行目青、緑、赤、青、緑、赤・・・
というように交互に塗っていって、BMP Win形式24bitで保存した画像をupしようとすると、24×24ピクセル以上は、なぜかupできないのです。
それ以上のファイルサイズの普通のbmpファイルはアップできます。
いろいろ試してみました。
Windows2000personal+IE6.0、Windows2000Server+IE5.0、Windows2000Server+NN4.5、MacOS9.2+IE5.0,MacOS9.2+NN4.7
いずれも同じ動作で、OSやブラウザによる依存はないように思われます。
また、画像のほうもPhotosho5.5Win版で加工したものですが、ペイントブラシで作成したりいろいろ試しました。
また、2色、4色の格子は問題ないのですが、3色の格子だけだめなようです。3色のスプライト、ボーダーも同様の現象。
また例えば100×100の上記格子に、先頭以外の一部分(例えば20×20)の黒塗りつぶし領域をつけても同様でした。(先頭は試してません)
また、CGIの画像UP掲示板なんかも試してみたのですが、これもだめでした。
なにかこの現象についてご存知の方がいらしたら是非教えてください。
また、3台のマシンでしか試してないので、皆さんの結果もできれば聞きたいです。
私の稚拙な頭では、画像のパターンが原因か通信部分での問題しか思いつかないのでよろしくお願いします。
0485nobodyさん02/04/02 00:45ID:???
>>484
とりあえず検証用に問題の画像をうpすれ。
0486名無しさん@会社02/04/02 09:27ID:0y5SIjSU
>>485

FTPもできなかったので、とりあえずJPGにしてageました。
使用時BMPに変換してください。

http://www.geocities.co.jp/MotorCity-Race/2671/syo2.jpg
http://www.geocities.co.jp/MotorCity-Race/2671/syo3.jpg
http://www.geocities.co.jp/MotorCity-Race/2671/syo4.jpg
0487nobodyさん02/04/02 09:42ID:ff+k1ZXe
画面表示を SJIS で、内部処理を EUC でやっているPHP プログラム A.php があります。
(サーバは FreeBSD 4.4R, Apache 1.3.20, PHP 4.1.2)

たとえば、

$t1 = "SJISの文字列";
<form action="B.php" method="POST">
<input type="text" name="t1" value="$t1">
:
</form>

と書いた場合、B.php では $t1 は SJIS で受け取れるんでしょうか、
それとも EUC ですか。

あるいは、HTTPサーバによって異なってしまうんでしょうか。

A.PHP と B.PHP で、うまく日本語が渡ってくれなくて困っています。

どなたか助けてください。
0488 ◆AngelBlk 02/04/02 10:32ID:???
>487
ブラウザの仕様によるのでは?
基本的にブラウザが表示している文字コードで送られてくるはず。
その後、どうなるかはPHP側の設定。
mbstring.http_inputがautoになっていたら
SJISで受け取った後内部エンコーディング(この場合EUC)に
変換してると思います。

心配ならmb_convert_encoding使って自分で文字コードを
指定したほうがトラブル無いと思うけど。
0489nobodyさん02/04/02 18:50ID:C7YJwDj/
フレームを使って、フレームの要素のページに、前のページのフォーム
からの値を、送れるようにしました。

<frame src="fra3.php<? echo ("?atai1=$atai1"); ?>

ここで$ataiに配列を利用したいのですが、どう記述すればよろしいで
しょうか。atai[0]=$atai[0]&atai[1]=atai[1]、と網羅的に記述すれば
確かにできるのですが、見にくいものとなってしまいます。

簡潔に書く方法がご存知でしたら、参考サイトや手段など教えてくださ
い、よろしくお願いします。
0490あはっ。☆。。。☆。02/04/02 18:57ID:MsnfFTr6
http://www.kokorode.com/000000/
0491名無しさん@お腹いっぱい。02/04/03 00:21ID:gGeAb4cd
484です。
どうも火壁の問題のようです。
お騒がせしました。って解決はしてないんですけど。
0492apacheuserさん02/04/03 01:56ID:???
>>489
区切り文字を一つ適当に選んで、
配列の中にその文字があったらエスケープする。
後はimplodeで区切り文字をつければよし。

復元のほうのアルゴリズムのほうがちょっと面倒。
そんな難しくないけど。

こんなんでいい?
0493 02/04/03 09:53ID:qAYnfRwX
>apacheuserさん

うまくいきました。
どうもありがとうございました。
0494名無しさん@お腹いっぱい。02/04/04 04:19ID:???
tableやdivで、例えばaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
とかやると、スタイルシートで幅を定義してても、びにょ〜んと伸びちゃいますよね。
これの対策としてwordwrap使ってぶった切りかませばいいのだなと
やっちゃみたのですが、これのlengthってバイト数だそうで、
1バイト文字と2バイト文字を組み合わせて使っちゃうと変に切れて文字化けしちゃいます。

何かいい方法ありましたらどうかご教授ください。
0495nobodyさん02/04/04 12:17ID:WzAT/ySJ
>>494
mbstrlenを使うとよろし
0496名無しさん@お腹いっぱい。02/04/04 13:22ID:???
>>495
mbstring関連の関数って、mbstring は拡張モジュールとかマニュアルに書いてあるんですが、
どこでもつかえるのですか?
ribbon networkにアップして、
<?
echo mb_strlen("あげ");
?>
とやってみたのですが、何も表示されません。
これだけじゃだめなんですか?
0497nobodyさん02/04/04 16:04ID:HHqarjRe
>>496
print mbstrlen("あああaa","Shift_JIS");
これでテストしてみるとよろし
049849402/04/04 17:41ID:???
>>496さん、ダメです。何も表示されません・・・。
<?
print "前";
print mb_strlen("あああaa","Shift_JIS");
print "後";
?>
このように書くと、



だけしか表示されませんでした・・・。
0499 ◆AngelBlk 02/04/04 18:08ID:???
>498
うちの環境だと
前5後
って出るけど。

で、ふと思ったこと。
PHPの設定を確認してほしいんだけど
php.iniで
display_errors = Off
にしてない?
これだと
1.mbstring入っていないからmb_strlenが無いというエラーがでる
2.エラーが出た場所以降、画面には何も表示されない。
ってことに。
0500 ◆AngelBlk 02/04/04 18:09ID:???
>499に追加。
<?php
phpinfo();
?>
っていうファイルを実行すべし。
display_errorsのOn/Offもわかるし
mbstringが入っているかどうかもわかるはず。

0501nobodyさん02/04/04 20:46ID:???
ribbon.toはエラー出ない設定になってるしmbstringも入ってない。
050249402/04/04 21:58ID:???
ううう、懇切丁寧にありがとうございます皆さん。

で、mbstring入ってないってことは他の方法考えにゃならんってことだということですよね、、、
むむむー。ギブアップ。
0503_ ◆IVXmlxmI 02/04/04 22:41ID:???
こんな感じでいいかな?無理矢理切り取ってきた糞ソースですまん。

$textが置き換え対象
この場合は80文字で改行とチンチンを挿入
場合によってはreturnで戻す前に'<br />' . $tempurlをいれてください。

$tangoregx = "([a-zA-Z0-9]{80,})";
$text = preg_replace_callback("$tangoregx","gyou",$text);
function gyou($url){
 for($m = 0;$m < count($url);$m++){
   $tempurl = $url[$m];
   $nkosuu = (int) $nkosuu = strlen($tempurl) / 80;
   for($n = 1;$n < ($nkosuu+1);$n++){
     $tempurl = wordwrap($tempurl,(80 * $n),"<br />",1);
   }
   return $tempurl;
  }
}

それとかなり前の方の人への遅レスだが、Perlでforとwhileの違いなかった・・・
計った時にファイルを読み書きさせたところで差が出た模様。
紛らわしくてすまん。あひゃん♪
050449402/04/04 22:45ID:???
すんません。jcode_mini.phpsを使ってなんとなく出来ちゃいました。

<?
require("jcode_mini.phps");
$string="aあcdでe使f";
$Max_strlen=strlen($string);

for($i=0;$i<$Max_strlen;$i++){
$std=substr($string,$i,1);
$d=AutoDetect($std);
if($d==0){echo $std;}
else {$std=substr($string,$i,2);echo $std;$i++;}
}
?>

1バイトずつ取って逝って、アスキー文字だったらそのまま、
それ以外だったら2バイト?ってことで。
050549402/04/04 22:48ID:???
>>503
わわわ、ありがたく使わしてもらいますです!
>>504は無かったってことで(^^;
0506 02/04/05 14:11ID:vKH3Wlrd
質問です。
index.htmlにphpで作ったカウンタを入れたいんですが、
index.htmlからcounter.phpを呼び出してその返り値っていうか
要はカウンタをindex.htmlに埋め込んで表示するにはどうしたら
いいんでしょうか?
0507nobodyさん02/04/05 19:34ID:ol6QsPih
>>506
カウンタ表示を画像にするか文字にするかで方法が違うんだけど、どっち?
0508nobodyさん02/04/05 20:17ID:8HekwyeF
質問です。
httpsでファイルのダウンロードをするサイトを作ろうとしています。
セッション管理はPHPLIBで行っています。
セッション管理をPHP4から用意されたセッション処理関数で行う場合、
session_cache_limiter('public');
をセッション開始前に行わないとうまくいかないそうなのですが、
PHPLIBでのセッション管理では、これにあたる物は有るのでしょうか?
050949402/04/06 09:23ID:???
たびたびすいません。
[:alnum:]だとか[a-Z]などのパターンは、マニュアルのどこに載ってますか?
探したんですけど一向に見つからなく・・・
0510_ ◆IVXmlxmI 02/04/06 21:19ID:xiXLt5jB
>>494
正規表現なので、正規表現について調べればいいのでは?
preg_replace_callbackはPerl互換
レイが見えるのは霊感
0511nobodyさん02/04/07 04:50ID:sDrsWdZs
今までhtml内のSSI経由で呼んでいたperlのCGIアクセス解析を
phpファイル内から呼ぶ方法ってありますか?
0512nobodyさん02/04/07 04:55ID:sDrsWdZs
>>511
自己レス。というか、php内でperlなcgiを動かせる方法があればいいのかな?
0513nobodyさん02/04/07 07:39ID:???
>>511
普通に外部プログラムとして呼んで、出力をprintすればいいのでは?
0514nobodyさん02/04/07 09:00ID:oKmtaXBH
なんか、おまえら、会話が、あほだぞ・・・・
0515nobodyさん02/04/07 16:12ID:sDrsWdZs
>>513
レスthanx. 例えば、includeすると結果はwebページにちゃんと表示されますが、呼び出しているのが、
PHPなので、アクセス解析にはブラウザがPHP 4.1.2、アクセスもとがウェッブ・サーバとか出てしまう
という欠点があります。

>>514
だから意外に難しいと思ったんですけど、あほですか?
0516nobodyさん02/04/07 23:55ID:???
>515
system関数使うのはダなの?
0517nobodyさん02/04/09 11:24ID:???
>>516
やってみましたが、うんともすんとも言わなかったでした。

素直にphpなアクセス解析使ったほうがいいのかなぁ。
オススメのアクセス解析ってありますか?
0518nobodyさん02/04/09 13:40ID:???
>>517
アクセス解析のログをphpで吐き出せば?
0519 ◆AngelBlk 02/04/09 14:35ID:???
>517
systemで呼ぶときはcgiに渡したい値を
引数で渡さないとだめなような。

昔やってたんだけど、もう忘れたなぁ・・・。

まあ、PHPで書き直すのがいいかもね。
勉強にもなるし。
0520nobodyさん02/04/09 19:23ID:???
>>518
ログを吐き出すだけなら、できますけど、ブラウザとかの情報はとれないですよね?
>>519
なるほど、引数ですか、ちょっと試してみます。

phpで作ろうかと思って勉強しています。
$SCRIPT_NAMEでもgetenv("SCRIPT_NAME")でも自分のファイル名を
とれますけど、どっちを使ってますか?
0521nobodyさん02/04/09 19:51ID:???
>>520
$SCRIPT_NAME って自分のファイル名だけでなく、パスも入っちゃうよ。
0522nobodyさん02/04/09 22:06ID:???
>>520
マニュアル読め〜
http://jp2.php.net/manual/ja/language.variables.predefined.php
0523nobodyさん02/04/09 23:45ID:v8USxwZs
>>520
phpinfo();を参考に環境変数を取って、
GETでPerlに渡せばどうよ?
0524nobodyさん02/04/10 00:52ID:QeMF+ULc
PHPでaddslashes()とhtmlspecialchars()を使ってユーザー側からのJavasqriptなどの危険なコマンドの無効化をしたのですが、これを使うと日本語表示でも時々\がついてしまうことがあります。
なんとか日本語表示のときだけ\がでないようにしたいのですが、どうしたらいいのでしょうか?
0525nobodyさん02/04/10 01:34ID:???
Javasqript(´,_ゝ`)
0526nobodyさん02/04/10 01:40ID:???
失礼、本文を書き忘れた

通常なら
htmlspecialchars($text,ENT_QUOTES)
のみで十分かと

DB使うなら
addslashes()ではなくstr_replace()を使ってはいかがか?

それと文字コードはどうなってる?
0527nobodyさん02/04/10 16:35ID:i95Gvoeh
ちょうど私も似たような状況です。

掲示板を作っているのですが、設定をiniファイルに保存しているので
それを読み出す際、
$iniData = file($iniFileName);
で一気に配列に読み込んでから
for($i = 0; $i < count($iniData); $i++){
 $iniData[$i] = str_replace("\r\n", "\r", $drnArray[$i]);
 $iniData[$i] = str_replace("\r", "\n", $drnArray[$i]);
 $iniData[$i] = str_replace("\n", "", $drnArray[$i]);
}

ってやって改行コードを切ってるんですが、
配列の中に「\」があると「\\」となり、
「表」っていう文字があると「表\」となっちゃいます。

原因すらわからないので、助けてください。
052852702/04/10 16:37ID:???
すいません、間違えました

for($i = 0; $i < count($iniData); $i++){
 $iniData[$i] = str_replace("\r\n", "\r", $iniData[$i]);
 $iniData[$i] = str_replace("\r", "\n", $iniData[$i]);
 $iniData[$i] = str_replace("\n", "", $iniData[$i]);
}

str_replaceの引数コピペ間違い。
0529nobodyさん02/04/10 23:20ID:???
aaa \t あ \t 1
bbb \t い \t 2
ccc \t う \t 1
aaa \t あ \t 2
bbb \t い \t 2
ccc \t う \t 3

このような中身のファイルがあり、一番左の項目が重複する時にまとめて
数字だけは足したい場合は、どのようにすればよいでしょうか。

aaa \t あ \t 3
bbb \t い \t 4
ccc \t う \t 4

こうしたいです。
0530apacheuserさん02/04/10 23:52ID:???
>>529
タブ区切りのCSVってことでいいのかな。
一番左が一致してるときに真中の値はどうするかは
よくわからんけど、とりあえず普通にハッシュ使えば?
0531nobodyさん02/04/11 00:01ID:0MrGuQ4Q
>>524>>527
ひょっとして文字コードshift_jis?
magic_quotes と問題がごっちゃになっているが
0532nobodyさん02/04/11 01:24ID:0YnZBQoe
PHP3で書かれたソースをWeb上で見つけて、それを自分のサーバーで使いたいのですが、自分のとこはPHP4なので、エラーが出てしまいます。
ソースは
------------------------------------------
<?
Header( "Content-type: image/gif"); /* 出力がGIFファイルであることを示す */
$font_num = 4; /* フォントの種類 */
/* PHP3では1以上の数にfontを割り当てることができる。 */
/* 1〜4までは、PHP3に組込まれたBitmapfontが使用される。*/
/* でも、日本語は使えない(;;) */
/* 全体の作画範囲の決定 size_xが水平方向 size_yが垂直方向 */
$size_x = strlen($write_word)*imageFontWidth($font_num)*2;
$size_y = imageFontHeight($font_num)*2;
/* 文字列の作画位置の開始座標の決定 */
$write_x = ($size_x - strlen($write_word)*imageFontWidth($font_num))/2;
$write_y = ($size_y - imageFontHeight($font_num))/2;
/* 空のimageの作成を行なう。*/
$im = ImageCreate($size_x, $size_y);
/* imageのbackgroundの色を作成する。*/
$bgcolor=ImageColorAllocate($im,(int)$bg_red,(int)$bg_green,(int)$bg_blue);
/* imageのforegroundの色を作成する。*/
$fgcolor=ImageColorAllocate($im,(int)$fg_red,(int)$fg_green,(int)$fg_blue);

ImageFill($im ,$size_x, $size_y, $bgcolor);

ImageString($im,$font_num,$write_x, $write_y, "$write_word",$fgcolor);
ImageGif($im); /* imageをGIFとして出力する。 */
ImageDestory($im); /* imageを破棄する。*/
?>
-----------------------------------------------
なんですが、自分のとこで実行すると、
<br>
<b>Fatal error</b>: Call to undefined function: imagefontwidth() in <b>/home/majihima/public_html/test.php</b> on line <b>25</b><br>

と出てしまいます。
どこを改造したらうまく実行できるのか教えていただけないでしょうか。
よろしくお願いいたします。
0533nobodyさん02/04/11 03:33ID:???
>>532
GDとfontはいれてある?
053452702/04/11 10:02ID:???
>>531 えーと、Shift_jisでした。
EUCで保存しなおしたら、「表」が「表\」になるのは
直ったみたい。嬉。

でも「\」は「\\」になっちゃうなぁ。

ちなみに改行コードって、今までCR+LFだったのを
LFのみにしたんですが、実際どれにすればよいのか
まったくわかりません。
053552702/04/11 10:05ID:Qk43qoJG
すみません、文字コード関連でもうひとつ質問があります。

プログラム(phpファイル)をEUCで書けば、そのプログラムが
生成するファイルもEUCになるんでしょうか?
0536Grips ◆ZEplUyt2 02/04/11 11:42ID:s9L3xhCG
spaceports.comで、MySQLを使うのに、SQLでCREATE DATABASE ABCとPHPに埋め込んだのですが、
どうもデータベースが作成されていないようなんです。
どうやったらデータベースが作成できるでしょうか?
0537nobodyさん02/04/11 12:26ID:???
>>535
php.iniのmbstring.http_outputの設定か、
mb_output_handlerとか使う。
0538Grips ◆ZEplUyt2 02/04/11 14:14ID:s9L3xhCG
>>536
がダメであれば、せめてMySQLのダンプをPHP上で実行する方法を誰か分かる人がいるのであれば教えてください。
分からなくて困っています。
0539nobodyさん02/04/11 14:52ID:???
>>536
たいていのフリーホスティング系はユーザにDBを作成する権限を与えてない。
ユーザ名のDBが1コだけ提供される。spaceport.comもそのはず。
>>538
phpMyAdminを入れるってのは?
バックアップファイルも直接流せる。
054052702/04/11 15:06ID:Qk43qoJG
>537
なるほど。みっけました。

さらに質問なんですが、掲示板等でタグを使われないために、
"とか<とか>をエスケープさせたいんですが、
ほかにもやっといたほうがいい文字ってどんなのありますかね
0541nobodyさん02/04/11 15:58ID:???
>>540
htmlspecialcharsか、
htmlentitiesとか使う。
0542Grips ◆ZEplUyt2 02/04/11 20:04ID:STOJDdM0
>>539
ありがとう!
解決できました!
nobodyさんの知識にカンパーイ!
0543nobodyさん02/04/11 22:55ID:99F5CMsa
>>533nobodyさん
返答ありがとうございます。

すいません。GDが入っているかどうかというのはどうやったらわかるのでしょうか。
UNIXあんまりわからないもので、、、。
一生懸命調べていますが、ヒントを教えていただければありがたいです

0544nobodyさん02/04/12 00:05ID:???
>543
マニュアルのイメージ関数の項を見れ
0545nobodyさん02/04/12 00:11ID:???
GD が組み込まれていれば <? phpinfo(); > でどんな設定になってるか
出てくるはず。出なければ GD なし。
054652702/04/12 10:41ID:8K23hqg+
>>541
この二つってどう違うんでしょうか?
マニュアルにはhtmlspecialcharsは「&」「"」「'」「<」「>」を
変換するって書いてあるんですが、
htmlentitiesのほうは何をどう変換するのかぜんぜんかいてません。
すべての文字ってことなんですかね?

ちなみにこれは、たとえば掲示板だとすると、
書き込まれた瞬間に変換してログファイルに保存するときは
変換済みで保存するべきなのか、それともとりあえず
書き込まれたとおりに保存しておいて、表示する段階で
変換するべきなのか、どっちでしょ?
0547nobodyさん02/04/12 10:45ID:???
URLに?a=50&b=30 とか入れると変数の値を渡せますが
別な方法でコッソリ(ユーザーにどんな値を渡してるか秘密で)
渡すことってできますか?
0548nobodyさん02/04/12 11:32ID:???
>>547
cookie か POSTでhidden か セッション でどう?
それか、渡す値を一時的に暗号化するってのはどう?
■ このスレッドは過去ログ倉庫に格納されています