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

【php】part29【php】

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2005/07/06(水) 09:57:54ID:0DucnAyH
・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-10辺り

前スレでは、尾張の方でお世話になりました。
原因は唯のファイル名間違いでした。ダッセー俺OTZ

0302nobodyさん2005/08/19(金) 14:18:09ID:???
>>299
$scheme = ($_SERVER["SERVER_PORT"] == 80) ? "http://" : "https://";
80以外でhttp鯖動かしてるならだめだけど
0303K2005/08/19(金) 14:47:13ID:axffmqRn
レス300、301さん、302さん
ふむむ、そういうこともできるんですね!
試してみます。
アイデアどうもありがとうございました!
0304nobodyさん2005/08/19(金) 18:03:53ID:???
>>302
http://p0t.jp/mt/archives/2005/07/uri.html
0305nobodyさん2005/08/19(金) 19:24:33ID:???
>>304
SERVER_PROTOCOLってHTTP/1.0or1.1以外もあるのか?
0306nobodyさん2005/08/19(金) 19:44:05ID:???
SSI下でINCLUDEDとかあったような
0307nobodyさん2005/08/19(金) 19:53:39ID:???
だめじゃん
0308nobodyさん2005/08/20(土) 07:41:26ID:???
>>305
XREAだとINCLUDEDになってた
mod_layoutとかの関係かな
0309nobodyさん2005/08/23(火) 16:54:44ID:???
>>295
まだ答えが見つかってないみたいだからヒントをやろう

適当にhost突っ込んだ結果を第三者に見せる方法を考えろ

見つけられたら発見者として名前が刻まれるかもしれない(嘘八百)
0310nobodyさん2005/08/26(金) 16:15:00ID:vJGu4kC7
index.php?page=1
などで他のコンテンツを出すやり方を教えてください!
0311nobodyさん2005/08/26(金) 16:35:46ID:???
>>310

<?php
if(array_key_exists("page",$_GET) && is_string($_GET['page'])){
switch($_GET['page']){
case "1":
?>
<p>"?page=1" のページ</p>
<?php
break;

case "2":
?>
<p>"?page=2" のページ</p>
<?php
break;

default:
?>
<p>"?page=それ以外" のページ</p>
<?php
}
}
else{
?>
<p>デフォルトページ</p>
<?php
}
exit();
?>
0312nobodyさん2005/08/26(金) 16:55:00ID:vJGu4kC7
>>311
ありがとうございました!
0313nobodyさん2005/08/26(金) 21:05:42ID:???
おいおい・・・ネタなのか、真性なのか、このスレだとまじで判断出来ん・・・
0314nobodyさん2005/08/26(金) 21:55:57ID:???
入力フォームを作るにはどうするんですか?
0315nobodyさん2005/08/26(金) 22:11:23ID:???
>314
なぜここに・・・。
0316nobodyさん2005/08/26(金) 22:36:05ID:???
>>314
つ make_inputform()
0317nobodyさん2005/08/27(土) 01:36:06ID:???
http://www.google.com/search?q=make_inputform+site:www.php.net&l=ja

釣りだったのかorz
03183162005/08/27(土) 01:39:58ID:???
>>317
スマン。実装は各自行なってくれ
0319nobodyさん2005/08/27(土) 01:50:03ID:???
俺も一応検索した
あったら何か便利そうだなと
0320nobodyさん2005/08/27(土) 01:57:26ID:???
質問の意図がよく分からないけど、フォームに関するあれこれなら、pearのHTML_* とか。
ttp://pear.php.net/manual/ja/package.html.php
0321nobodyさん2005/08/27(土) 02:22:58ID:???

echo"<FORM method=post action=./index.php>";
0322nobodyさん2005/08/27(土) 10:14:22ID:???
トランスフォームを作るにはどうするんですか?
0323nobodyさん2005/08/27(土) 10:36:42ID:???
コンボイの謎?
0324nobodyさん2005/08/27(土) 12:01:09ID:???
echo "トランスフォーム!";
0325nobodyさん2005/08/27(土) 12:05:19ID:???
フォームに2chのサーバー、ディレクトリ、スレッドキーを入れて送信するとそのスレのURLをだすようにしたいんですが

[index.php]
<html><body>
<form action="index2.php" method="POST">
サーバー:<input type="text" name="server" size="35"><br>
フォルダ :<input type="text" name="folda" size="35"><br>
キー   :<input type="text" name="key" size="35"><br>
<input type="submit" value="表示">
</form>
</body></html>

[index2.php]
<html><body>
<?php
echo "<A HREF=\"http://$server/test/read.cgi/$folda/$key/\">http://$server/test/read.cgi/$folda/$key/<;/A>";
?>
</body></html>

これではできないんですが、どうすればいいのでしょうか?
0326nobodyさん2005/08/27(土) 12:12:00ID:???
>>325
http://jp.php.net/manual/ja/language.variables.external.php
0327nobodyさん2005/08/27(土) 12:21:59ID:DxkPepn/
>>326
それのとうりやったつもりですがhttp:///test/read.cgi////と表示されます。
0328nobodyさん2005/08/27(土) 12:26:55ID:???
>>327

[index2.php]
<html><body>
<?php
extract($_POST);
echo "<A HREF=\"http://".$server."/test/read.cgi/".$folda."/".$key."/\">http://".$server."/test/read.cgi/".$folda."/".$key."/</A>";
?>
</body></html>
0329nobodyさん2005/08/27(土) 12:46:47ID:DxkPepn/
あいがとうございました。
>>328をみるまえにできました。
まださきはながい。。。
0330nobodyさん2005/08/27(土) 15:43:03ID:???
2chのスレがdat落ちしたら「dat落ちしています。
とでるようにしたいんですがどうすればいいですか?
0331nobodyさん2005/08/27(土) 16:00:13ID:???
>>330
>>325の人かい?
1. 実際にアクセスしてみないとdat落ちしてるかどうか分からん。
2. dat落ちしているかを判断する方法を探す。

1. ファイルシステム関数あたり。場合によってはfsockopen(ネットワーク関数)を使う。
2. 通常時とdat落ち時の違いを比較すりゃ分かるべ。
0332nobodyさん2005/08/27(土) 16:32:48ID:???
質問です。
XMLファイルの
<rdf:RDF>
<item>
<link>http://www.yahoo.co.jp<;/link>
<title>ヤフー</title>
</item>
ここ
</rdf:RDF>

に
<item>
<link>http://www.google.com/webhp?hl=ja<;/link>
<title>Google</title>
</item>
を書き込みたいのですが、
普通にfputsなどでできませんでした、
どうしたらいいのですか?
0333nobodyさん2005/08/29(月) 22:58:24ID:???
よそのサーバにあるXMLファイル?
03343322005/08/29(月) 23:53:10ID:???
>>333
自分のサーバーにあるファイルです。
0335nobodyさん2005/08/30(火) 00:06:45ID:???
>>334
そうか、ならいいよ。
0336nobodyさん2005/08/30(火) 00:26:44ID:???
>>332
>普通にfputsなどでできませんでした、
が考えられない。

>どうしたらいいのですか
読み取り側、書き込み側のXMLファイルのパーミッションを
確認しなおし、PHPのエラーが出てないことも確認し、
その上で処理に使用したコードを抜き出して晒してみな。
03373322005/08/30(火) 00:40:09ID:NQqDUgFw
>>336
ありがとうございます。

ちょっと考えてきます。
0338age2005/08/30(火) 01:56:53ID:pRMjTqBI
すみません、質問です。
今日、初めてPHPを勉強してみようと思い、
http://y-kit.jp/saba/xp/phpsetup.htm#inst
というサイトを参考にPHPのインストールとApacheのインストールをしました。
PHPはバージョンが4.4.0で、Apacheは1.3.33です。
インストール後、他のサイトを参考にして

<?php phpinfo(); ?>

一行だけを実行するものを作りました。
それに関してはhttp:/localhost/test.phpから表示がなされたのですが、

<html>
<head>
<title>初めてのPHP</title>
</head>
<body>
<p>今日は<?php echo date("n月j日"); ?>です。</p>
</body>
</html>

というように打ち込むと、Internet Explorerに「0B」と表示されるだけで、講座を開かれているサイトのような結果が出ません。
もう一度、インストール方法が書かれたサイトの内容と自分のインストール方法(php.iniとhttpd.confの設定など)を確認したのですが間違っているところが見つかりませんでした。
<?php phpinfo(); ?>
が正常に表示されていれば良い、ということなのですが…どなたか原因が推測できる方がおられましたら、ご助言お願いします。
0339nobodyさん2005/08/30(火) 02:02:13ID:???
>>338

<html>
<head>
<title>FirstPHP</title>
</head>
<body>
<p>Today is <?php echo date("n/j"); ?></p>
</body>
</html>

と、やってみたらいかがだろう?
これで表示されるなら、文字コードの問題。
03403382005/08/30(火) 02:06:24ID:pRMjTqBI
ぅわ…Internet Explorerに「Today is8/30B」ってちゃんと(?)表示されました!!
ありがとうございます、ありがとうございます!!^^
でも、最後の「B」って…それに文字コードの問題…うーん…
他のサイトなんかも参考にしながら頑張って調べてみます!^^
ありがとうございましたっ^^
03413382005/08/30(火) 02:18:06ID:pRMjTqBI
>>>339さん
「Today is8/30B」の「B」は「です。」の部分を消し忘れてただけでした、すみません;;
0342nobodyさん2005/08/30(火) 17:32:09ID:???
>>338
メモ帳で作ったの?
eucが扱えるテキストエディタを使ってる?
0343nobodyさん2005/08/30(火) 19:40:22ID:???
特定の文字列($str)に数字以外と1文字以下の文字が含まれていたら処理を中止したいのですが、
下記のように記述したスクリプトだとBADエラーが出ます。
if(!ereg("[0-9]{1, 7}", $str)){
echo '数字以外の文字が含まれています。';
exit();
}

当方正規表現は今まで避けてきていたのですが、今回だけは使わないとどうにもならないので
いろいろ検索をかけた結果このようになりました。ご指導よろしくお願いします。
0344nobodyさん2005/08/30(火) 20:08:40ID:???
>>343
>>if(!ereg("[0-9]{1, 7}", $str)){
「{1, 7}」を「{1,7}」("7"の前のスペース削除)にすればエラーは出ない。

でもそれだけだとパターンにマッチしない。
あとは正規表現の基本なのでググればすぐでてくるハズ。
数字"しか"許可しないという事は"全文字"(最初から最後まで)数字って事ですよ。
0345nobodyさん2005/08/31(水) 07:50:17ID:???
>>343
正規表現を避け続けたいなら
if (!is_numeric($str) or !is_int($str) or $str > 9999999 or $str < 0) {
echo "数字以外または8桁以上の数字";
}
0346nobodyさん2005/08/31(水) 17:30:59ID:MJNcLNXp
$str='';
ctype_digit($str);
はなんでtrueなの?
0347nobodyさん2005/08/31(水) 18:02:45ID:???
>>346
digitfだけでなくctype_*全部でtrueになる。
ソース見たら
for(n=0;n<len;n++) {
if(!iswhat((int)*(unsigned char *)(p++))) RETURN_FALSE;
}
RETURN_TRUE;

len = 0だからforループ回らずにtrue返してるようだ
0348nobodyさん2005/08/31(水) 18:23:09ID:MJNcLNXp
>>347
なるほどサンクス
空やゼロが絡む場面で使っててハマったよ
0349nobodyさん2005/09/01(木) 00:31:21ID:???
>>347
乙。
しかし、、なんじゃそりゃーですね。それは。
ちょっと書けば、0の時はFALSE返せるのに…。
0350nobodyさん2005/09/04(日) 03:14:58ID:???
テスト環境を簡単に構築することができるツールについてですが
phpdev、XAMPP以外に、そのようなツールがあれば教えていただけませんか?
0351nobodyさん2005/09/04(日) 04:01:07ID:???
>>350
XSAS

その名(用途)通りにXOOPSも入ってるけど、
WAMP(PHP&Perl)環境。
0352nobodyさん2005/09/04(日) 04:07:39ID:???
>>351
早速試してみたいと思います
ありがとうございました
0353nobodyさん2005/09/04(日) 04:08:14ID:???
あとFoxServとかUniform Serverとか。
他に韓国系企業の配布してる日本語設定されたパッケージがあって記憶がある。
0354nobodyさん2005/09/04(日) 04:36:34ID:???
>>353
そちらの方もじっくり試してみて、自分の環境に沿ったものを選びたいと思います
皆様本当にありがとうございました
0355nobodyさん2005/09/04(日) 12:56:20ID:???
>>354
あっ、サンクス。
1クリックで開発環境を一度にインストールするツールもあるんだ。
03563552005/09/04(日) 12:57:22ID:???
誤爆。orz
0357nobodyさん2005/09/05(月) 19:34:08ID:???
PHPでMySQLに画像を追加したり、追加した画像をPHPで表示させたりしたいのですが、
可能なのでしょうか?

環境
FreeBSD/5.4-RELEASE-p6
Apache/2.0.54 (Unix)
mod_ssl/2.0.54
OpenSSL/0.9.7e
MySQL/4.0.25
PHP/4.4.0
0358nobodyさん2005/09/05(月) 19:36:51ID:???
>>357
はい
0359nobodyさん2005/09/05(月) 19:43:00ID:???
MySQLスレの内容だけど
BLOB型カラムにINSERT出来る
0360nobodyさん2005/09/05(月) 19:44:15ID:???
質問する前に試しましょう
0361nobodyさん2005/09/05(月) 21:53:31ID:tWqFRk3N
配列のメモリサイズを知るのには、どのようにしたらいいでしょうか?
(countで要素数を知りたいのではなく、メモリサイズです。)
環境は、PHP4以上を想定しています。
用途としては、
Fatal error: Allowed memory size of 8388608 bytes exhausted
を、サーバー側の変更を伴わず、プログラム側で回避したいです。
よろしくお願いします。
0362nobodyさん2005/09/05(月) 21:57:51ID:???
>>361
ソースを読みましょう。
PHPは読んだ事ないですが、
1つの変数は、2つ以上の構造体が組になってるはずなので、そのサイズをチェック。
てか、なぜそんな事が起きる…。
0363nobodyさん2005/09/05(月) 22:01:57ID:???
メモリサイズの上限を規定するphp.iniを変更せずにということだよね?

その馬鹿でかい配列はなんで発生したの?
SQLが原因ならselectをやめてfetchでデータを取る。
他の理由ならプログラムの構造を見直した方がよい。
0364nobodyさん2005/09/05(月) 22:03:58ID:???
gdじゃないの
0365nobodyさん2005/09/06(火) 07:52:08ID:???
確かに画像処理はメモリ食うからな
jpgとかもビットマップみたいに展開しないと処理できないしね
0366nobodyさん2005/09/06(火) 11:47:11ID:???
>>362-365
どうもありがとうございます。
お察しの通り、GDです。
>メモリサイズの上限を規定するphp.iniを変更せずにということだよね?
そうです。メモリー上限は増やせないのと、仮に増やせたとしても、画像なん
で、状況によってはその上限も超えてしまう可能性があるので、メモリサイズ
を取得して、上限を超えそうなら自分でエラーメッセージを出すようにして、
Fetal errorは回避するような仕様を想定していました。
0367nobodyさん2005/09/06(火) 12:05:44ID:???
>>366
画像1枚でそのサイズなの?
0368nobodyさん2005/09/06(火) 12:27:13ID:???
>>366
画像のピクセル数で制限したら
0369nobodyさん2005/09/06(火) 13:29:18ID:???
しかしメモリを最大で8メガしか使わせてくれないなんて酷だな。
巷のレンサバとかはそれくらいが相場なの?
0370nobodyさん2005/09/06(火) 13:41:19ID:???
php.iniのデフォが8Mだったと思う。
VPSや専鯖なら自由に設定できるが。
0371nobodyさん2005/09/06(火) 13:45:37ID:???
>>369
XREAは50Mある
0372nobodyさん2005/09/06(火) 14:11:39ID:???
get_memory_usageだったっけか
0373nobodyさん2005/09/06(火) 14:46:03ID:???
>>372
memory_get_usageは残りの使えるメモリだから今からimagecreate*で確保するメモリ量はわからんだろ
0374nobodyさん2005/09/06(火) 14:52:11ID:???
そこはphpのソース見て構造体のサイズ計算するしかなかろう
パディング入るから運用する鯖で確認しないとダメだが
0375nobodyさん2005/09/06(火) 16:04:52ID:???
GDでimagecreatetruecolor()とかするなら、少なくとも width*height*24/8 バイトは必要だね。
適当にテストしてみたところ、それよりだいぶ多く食うみたい。
サムネイルの分はせいぜい数百KBしか使わないだろうけど、オリジナルがでかいと厳しい。
(可能なら)外部コマンドでImageMagick使った方が幸せになれるかも。

php -r '$memB = memory_get_usage();
quote> $im = imagecreatetruecolor(640, 480);
quote> $memA = memory_get_usage();
quote> $val = array_map("number_format", array($memB, $memA, $memA - $memB, 640*480*24/8));
quote> var_dump($val);'
array(4) {
[0]=>
string(6) "39,640"
[1]=>
string(9) "1,586,976"
[2]=>
string(9) "1,547,336"
[3]=>
string(7) "921,600"
}
0376nobodyさん2005/09/06(火) 16:38:56ID:???
>>375
それってなんかメソッドも含んだサイズになってるんじゃ?
オブジェクト2つ作って変化調べてみ?
0377nobodyさん2005/09/06(火) 16:40:10ID:???
>>375
1pixelあたり5バイトだね
imagecreate()だと1pixelあたり2バイトだった
0378nobodyさん2005/09/06(火) 20:25:38ID:???
>>371
CGI版とmod版、さらに鯖番号によっては8MBだったり40MBだったり。
0379nobodyさん2005/09/06(火) 23:08:08ID:???
何個かわからないものをバインドする方法ご存知でしょうか?

$db = DB::connect( DSN );
$sql = "select * from table where id in ( ?, ?, ?, ?, ? )"
$db->getAll( $sql, array( 1, 2, 3, 4, 5 ) );
※PEAR使ってます

ここで、
array( 1, 2, 3, 4, 5 )
の要素が場合によって増減するときが悩みどころです…
0380nobodyさん2005/09/06(火) 23:17:40ID:???
>>379
prepareするんじゃないならimplodeで連結して突っ込めばいいじゃん
0381nobodyさん2005/09/07(水) 00:49:02ID:4ftygnTr
おまいらプロだろ
0382nobodyさん2005/09/07(水) 07:02:12ID:???
perlでtime().$$みたいなユニーク値ってphpではどうすれば作れるのでしょうか?
0383nobodyさん2005/09/07(水) 07:09:01ID:???
>>382
uniqid('');
0384nobodyさん2005/09/07(水) 07:09:01ID:???
>>382
uniqid('');
0385nobodyさん2005/09/07(水) 08:46:06ID:???
すごい。
1秒以内だ。
0386383-3842005/09/07(水) 09:04:35ID:???
いや、単に送信ボタンをダブルクリックしてしまっただけだ。
スマソ。
0387nobodyさん2005/09/07(水) 09:08:35ID:???
       ヽ(・ω・)/   ズコー
      \(\ ノ
0388nobodyさん2005/09/07(水) 10:34:37ID:???
>>383-387
ワロタwww
03893792005/09/07(水) 17:39:08ID:???
>>380

即レス有難うございます。
implodeした文字列を一つの ? にぶちこんでもいけるんですね。
チャレンジしてみます。


連投すいません。
別件で一つ疑問が出てきました。

PEARのマニュアルページ
ttp://pear.php.net/manual/ja/package.database.db.db-common.getall.php
で、

$data =& $db->getAll('SELECT cf, nf, df FROM foo');
if (PEAR::isError($data)) {
die($data->getMessage());
}

とあるんですが、
一行目の =& は何の意味があるのでしょうか?
普通に = で解説してるサイトもあるようですが…
0390nobodyさん2005/09/07(水) 18:18:37ID:Zs1gbbuG
RSSから情報を取得してその情報で2chにスレ立てるようにしたいんですがどうやればいいでしょうか?
0391nobodyさん2005/09/07(水) 18:38:07ID:???
ちょwwwおまwwwwそんな安易にスレたてるなんてwwwww
0392nobodyさん2005/09/07(水) 18:39:16ID:???
>>389
ttp://www.php.net/manual/ja/language.references.php

>>390
ttp://pc8.2ch.net/test/read.cgi/php/1102980903/
0393nobodyさん2005/09/07(水) 22:38:46ID:QGlSv/RF
>>390
ひろゆき乙
最近人が減って、スレ立て自演しないといけなくなったんだろ?
0394nobodyさん2005/09/07(水) 23:14:28ID:???
ZENDがやってるPHPの資格持ってる人いますか??
試験受けようとおもってるんですが。。
03953822005/09/07(水) 23:36:06ID:???
>>383-334
ありがとうございましたm(_ _"m)ペコリ
0396nobodyさん2005/09/09(金) 21:44:22ID:???
5.0.5で配列関数に変な変更入ったんだが対応せんといかんもんかね?
0397nobodyさん2005/09/09(金) 21:59:42ID:???
>>396
array_shift(file("hoge.txt")) とか、リファレンスの挙動を厳密にした影響受けてる奴でしょ?
修正必須。
0398nobodyさん2005/09/09(金) 22:10:16ID:???
>>397
それそれ。
4系列も同じ流れになるなら良いんだが、なんか突出してる気がしてなぁ。
0399nobodyさん2005/09/09(金) 22:16:39ID:???
配列関数に限った話じゃないよん
0400nobodyさん2005/09/09(金) 22:23:48ID:???
4.4.0でも同様の修正入ってますよん
0401nobodyさん2005/09/09(金) 22:27:21ID:???
>>339
うん。force_refで定義された引数持ってる関数が全部影響ある。
単に、戻り値だけ欲しくてこの手の関数呼ぶケースが配列関数に多いだけ。

>>400
あれー?うちだと問題無いんだけど。もいちど落としてくるか・・。
■ このスレッドは過去ログ倉庫に格納されています