【PHP】下らねぇ質問はここに書き込みやがれpart16
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/02/05(日) 22:35:34ID:sf8bx52Dここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
まず読め【PHP マニュアル】
http://www.php.net/manual/ja/
本スレ【PHP】質問スレッドpart32【php】
http://pc8.2ch.net/test/read.cgi/php/1136276300/
前スレ【PHP】下らねぇ質問はここに書き込みやがれpart15
http://pc8.2ch.net/test/read.cgi/php/1137236771/
過去スレは>>2
010499
2006/02/07(火) 17:14:43ID:???php4とphp5がみにいくphp.iniを別個に用意することはできないでしょうか?
0106nobodyさん
2006/02/07(火) 17:54:04ID:???PHPのコンパイル時にかっちり指定してもいいし、
CGI版なら普通な設定ならば、違うものを読みにいくでしょ?
0107nobodyさん
2006/02/07(火) 18:34:21ID:???ここでいいのか判らないけど、質問します
現在ロリポップでmovable type(SQLite)を運営していますが
さくらのプレミアムプランへの移行を考えています
この場合、例えば設定を書き換えた上で
ダウンロードしたファイルをそのまま丸ごとアップして
パーミッションさえ設定すればデータは復旧できるのでしょうか?
それとも、インストールから一通りの手順を踏む必要があるのでしょうか
0108nobodyさん
2006/02/07(火) 18:44:11ID:z2Ed5501ttp://www.php.net/manual/ja/ref.fdf.php
を読み、Adobeのサイトで FDF Toolkit というのを
ダウンロードしようとしましたが、住所氏名電話番号使用目的など
たくさん書いて、Adobeの人に承認されないとダウンロードできません。
ttp://partners.adobe.com/public/developer/acrobat/fdf/topic.html
なので誰かください。
# FDF Toolkit for Windows (ZIP: 2.2MB) [FDF Toolkit access approval required]
FPDFはあまりに煩雑すぎてイヤです。
0110nobodyさん
2006/02/07(火) 18:52:34ID:???簡単なメール送信フォームを作成したのですが、メール送信後に
511 Headers specify no receipients.
というエラーメッセージが出ます。
mb_language("ja");
mb_internal_encoding("sjis");
も指定してます。どうしたら出ないように出来るのでしょうか?
0113nobodyさん
2006/02/07(火) 20:49:13ID:???そのメール内容は送信相手にちゃんと届いてますか?
そのエラー訳したら
「ヘッダーは受取人を全く指定しません」
ってなったけど。あとreceipientsではなくrecipientsだと思う
0114nobodyさん
2006/02/07(火) 21:25:39ID:QxUNaPeItest/&test2/&test3/&
という文字列から&の直前のスラッシュのみをすべて取り除きたいのですが
正規表現に詳しい方がいたらやり方を教えてください。
0115nobodyさん
2006/02/07(火) 21:25:43ID:xKyeolaWmethodがPOSTになっているフォームの内容をPHPで送信したいんですが、どうやれば良いんでしょうか?
例えば、ユーザIDとパスワードを求めて来るページに、PHPで自動的にログインしたいんです。
そのあと、戻って来たページ(html)を読み込みたいんです。
fopen()でURLを指定する事も出来ませんよね。
よろしくお願いします。
0116nobodyさん
2006/02/07(火) 21:34:21ID:???&の直前のスラッシュって条件なら、
正規表現使わなくても
$text = test/&test2/&test3/&;
$text = str_replace("/&", "/", $text);
でできないかな。
的外れならスマン
0117nobodyさん
2006/02/07(火) 21:34:54ID:???だった
0120nobodyさん
2006/02/07(火) 21:41:49ID:???(
[0] => あああ
[1] => いいい
[2] =>
[3] => ううう
[4] => えええ
)
から、空の要素を削除して
Array
(
[0] => あああ
[1] => いいい
[2] => ううう
[3] => えええ
)
にするにはどうすればよいのでしょうか。
0121nobodyさん
2006/02/07(火) 21:44:53ID:???0122nobodyさん
2006/02/07(火) 21:50:12ID:QxUNaPeIおお!!ビンゴです!!
わたしが難しく考えすぎていたみたいです。
どうもありがとうございました。本当に助かりました。
0127nobodyさん
2006/02/07(火) 23:29:30ID:xKyeolaWなるほど、参考になりました。
どうもありがとうございました。
0128nobodyさん
2006/02/08(水) 01:14:09ID:???あれってGDでも出来るんですか?
普通の文字ならまだしも、無駄にふにゃふにゃしてますよね。
何かフォントでもあるんでしょうか。
0129nobodyさん
2006/02/08(水) 01:27:12ID:???0130nobodyさん
2006/02/08(水) 02:03:14ID:???GDでできなくはないけど結構面倒くさいと思う。
元のフォント自体があんな風になってるわけじゃなく、フォントから生成した画像に対して
ピクセル単位にデータの位置をずらしていく、いわゆる画像フィルタ処理のライブラリを
用意しておいて、それを通して加工した画像を表示させてる感じ。
PHP+GDでもピクセル単位での読み出しと出力はできるので頑張れば同じような
画像加工も可能だとは思うけど、一発でそういう変換ができるわけじゃない。
自分で頑張って座標変換の計算をするような演算式を書く必要あり。
ま、画像の加工と言っても基本的には座標位置の変換だけなので、
画像変換処理の中では比較的楽な部類ではあると思うけどね。
(左右ずらしだけじゃなく回転や歪みが入ってくると計算が面倒になってくるけど)
0131nobodyさん
2006/02/08(水) 02:13:16ID:???0132nobodyさん
2006/02/08(水) 02:18:08ID:xBsMO0LFそういうのを作ってくれるCGIがあったはずなので
それ探して使えば?
0133nobodyさん
2006/02/08(水) 02:30:02ID:xmigkNJp0134nobodyさん
2006/02/08(水) 02:40:34ID:T0ghpS/6どうしたらいいのかなぁ。
<?php
include("jcode-LE.php");
if ($fp = @fopen("http://www.yahoo.co.jp", "r")) {
while (!feof($fp)) $data .= mb_convert_encoding(fgets($fp, 1024), "SJIS", "EUC-JP");
fclose($fp);
}
$match_all = preg_match_all("%<a href=\"http://rd.yahoo.co.jp/toppage/topics/(.+?)\">(.+?)</a>%is", $data, $item);
echo "Yahoo!ニュース <a href=\"http://www.yahoo.co.jp/r/fc1\" target=\"_blank\">トピックス</a>\n";
echo "<ul>\n";
for ($i=0; $i< $match_all; $i++) {
$url = "http://dailynews.yahoo.co.jp/fc/". $item[1][$i];
$title = $item[2][$i];
$title = strip_tags($title);
echo "<li><a href=\"". htmlspecialchars($url) ."\" target=\"_blank\">". htmlspecialchars($title) ."</a></li>\n";
}
echo "</ul>\n";
echo "Yahoo!ニュース <a href=\"http://www.yahoo.co.jp/r/fc2\" target=\"_blank\">一覧</a>\n";
?>
0135nobodyさん
2006/02/08(水) 02:49:53ID:???0137nobodyさん
2006/02/08(水) 05:28:53ID:???php|architectまたはPHPプログラマーズマガジンの2003年2月号で
「Building a Turing Test with PHP and the GD Library
(PHPとGDライブラリでチューリングテストを試みる)」
http://www.asial.co.jp/magazine/backnumber/200302/
という記事がある。自分で作るなら参考にすると良い。
やってるのは描画位置ずらしと違う色の線を重ねるパターンだけだけど。
他に回転や複数フォントの組み合わせもやると、更に高度になるけど
スクリプトローダー相手にはそこまでしなくても、まあ大丈夫。
あと探せばライブラリは何個かあるよ。
0138nobodyさん
2006/02/08(水) 05:33:22ID:???つ http://www.linkclub.or.jp/~ma3ki/webutil/jpgraph/howtomake-jpgraph.html#antispam
0139nobodyさん
2006/02/08(水) 08:40:33ID:???0140nobodyさん
2006/02/08(水) 09:44:40ID:???>ユーザIDとパスワードを求めて来るページに、PHPで自動的にログインしたいんです。
sessionとかcookieとか使ってみたらどうよ。
0141シャットダウン2世@初心者
2006/02/08(水) 09:50:48ID:HTXUrlQxレスサンクスです。SQL5を再インストールしたら(汗)
PHPで書いた文でWebページにテーブルが表示されるようになりました。
いろんなバージョンをいじくってたら、ポートが3307になってたり
したけど、今はSQL5ひとつだけのポートは3306になっている模様。
3つほどさらに質問があるんですが、
1、PHPの設定はSJISにしてるんですが、とってきたレコードが文字化けします。
2、PHPのプログラムで接続、クローズしてもW2kのサービスで反映されてません。
ブラウザでは「connect DB」とか「close DB」とか
ちゃんと表示されているのに。
3、「insert into …」で新しい行を書き込んだら、
ブラウザでは「書き込みました」と出るのに、Mysqlで見てみるとレコードが
入ってません。
オレのPCには魔物が天狗がひそんでいるんでしょうか。
0142nobodyさん
2006/02/08(水) 10:02:29ID:???そこでsessionやcookieきたのにワラタwwwwww
>>126 がいってる通りPEARのHTTP_Requestを使うのが一番楽い。
コードで記述すると以下みたいな感じになる。
$req = new HTTP_Request("URI");
//POSTを定義
$req->setMethod(HTTP_REQUEST_METHOD_POST);
//実際に渡すPOSTデータをセット
$req->addPostData("foo", "var");
//リクエスト
$req->sendRequest();
//ヘッダー取得
$header = $req->getResponseHeader();
//レスポンスコード取得
$code = $req->getResponseCode();
//リクエスト後のHTMLを取得
$body = $req->getResponseBody();
詳しくは以下参照
ttp://pear.php.net/manual/ja/package.http.http-request.php
そういやHTTP_RequestのsetProxyメソッドを使用した際に
timeout処理の部分にバグがあったから手直しした事があるな。
0143nobodyさん
2006/02/08(水) 10:13:59ID:???まず1に関して
何をSJISにしてるんだ?
内部コード?出力コード?
まぁどっちにしろ、MySQL側の文字コードとPHP側の文字コードがあっていないからそういう事態が発生する。
2に間して
MySQLの終了が出来ないと言ってるのか?
もしそうならば勘違いしている。
PHP側がMySQLを起動終了させるわけではなく、アクセスのオープン、クローズをしているわけだ。
3に関してはコードを見ないとなんとも言えないな。
0146nobodyさん
2006/02/08(水) 11:58:52ID:???特に変更する必要がある点などあるのでしょうか?
4で動いていれば基本的に5でも問題なく動作するのでしょうか?
0147nobodyさん
2006/02/08(水) 12:09:46ID:???>>1
まず読め【PHP マニュアル】
http://www.php.net/manual/ja/
0149nobodyさん
2006/02/08(水) 15:55:23ID:zajb1emBpear upgrade pear
したら、
requires package 'PEAR' >= 1.3.3
とメッセージが出てアップグレードできません。
確かにインストールされてる PEARは1.3.1 です。
アーカイブをダウンロードしてきて、
手動で pear/PEAR ディレクトリを書き換えてしまっていいのでしょうか?
0150nobodyさん
NGNGポストされるファイルのサイズを制限したいんですが
どうしたらいいですか?
0152nobodyさん
2006/02/08(水) 18:21:31ID:???<?
$max_size = 1024 * 100;
$kb = $max_size / 1024;
if($_FILES["hoge"]["size"] > $max_size){
exit("アップロードされたファイルは最大ファイルサイズ(".$kb."KB)を超えています。");
}
?>
0153nobodyさん
2006/02/08(水) 18:23:28ID:0zkvAuO5phpのコードに出てくる「 => 」の意味は何ですか?
貰ってきたコードに出てきました。
数字=>"ファイル名"みたいになってます。
0156nobodyさん
2006/02/08(水) 18:35:32ID:???ini_set関数でも設定は変えられるわな。
場合によっては、upload_max_filesizeだけでなく、post_max_sizeも変える必要もあるかと。
>>152
これって、実際にPOSTされた後でしか実行できないよね?
0157149
2006/02/08(水) 18:36:25ID:zajb1emB0158nobodyさん
2006/02/08(水) 18:37:04ID:0zkvAuO5うひょー。どうもです。
=>を使えば、順番にかかわらず配列の中身をコントロールできますね。
すげー。わかりやすいし。
ありがとうございました。
0159nobodyさん
NGNGどうもありがとうございます。
>>151
あ、.htaccessでもできるんですか。
それは知りませんでした。
てっきりphp.iniでしかできないのかと思ってました。
>>152
その方法でやってみたんですが、
>>156のとおり
アップロードされた後にチェックする感じになってしまいましたorz
>>156
phpスクリプトの中からも変えられるんですね。
できるだけphpスクリプトの中だけやりたいので
それで行こうと思います。
0160nobodyさん
2006/02/08(水) 18:43:25ID:o/oLkGrK$cnt1〜$cnt100まで、今のところ100個の変数にそれぞれ数値が格納されています。
コレを「一番大きいもの」を見つけるにはどうやったらいいのでしょうか?
正規表現でこういうのとかあるんですか?
それとも比較して1つ1つ気の遠くなるような作業をするんですか。。。orz
どうやればいいのか分からないので、アドバイス下さい。
0163150
NGNGなんかうまくいきませんでした。
で、なんでだろうとググったりしてみたら
>>156の方法が有効なのはPHP 4.2.3 までらしいです。
それ以降のバージョンでは
upload_max_filesizeとpost_max_sizeが
PHP_INI_PERDIRという分類になってて
.htaccessとかphp.iniからしか変更できないっぽいです。
なのでphpスクリプトから制限するのは諦めて
.htaccesで制限する方向でやってみようと思います。
0164nobodyさん
2006/02/08(水) 19:27:48ID:???あれ?upload_max_filesizeってPHP_INI_SYSTEM|PHP_INI_PERDIRじゃなかったっけ?
0165nobodyさん
2006/02/08(水) 19:28:50ID:???0166nobodyさん
2006/02/08(水) 19:38:24ID:???push(@cnt, ${"cnt$_"}) foreach(1..100);
$max = (sort(@cnt))[-1];
だからPerlでもあんまりかわらんと思う
0167nobodyさん
2006/02/08(水) 19:46:15ID:???0168156
2006/02/08(水) 20:00:58ID:???うぉ、すまんかった。
パラメータによって有効無効があるのは知っていたけど、いちいち確認してなかった…
htaccessからでも、<FilesMatch>ディレクティブか<FilesMatch>ディレクティブを使えば、
ファイルごとに設定を変更できるよ。
0169nobodyさん
2006/02/08(水) 20:05:19ID:???ここまでやんなきゃ大したことないって。ふつーふつー
0170150
NGNGありがとうございます。
一応うまくいきました。
でもちょっと気になることがあるんですが、
upload_max_filesize を10Kにして、さらに
<input type="hidden" name="MAX_FILE_SIZE" value=100000000000>
というタグを入れてブラウザに知らせるマックスファイルサイズを大きくした上で
100Mbyteのファイルをアップロードしようとすると、
upload_max_filesize が10Kなのにもかかわらず
ブラウザはずいぶんと長い時間送信し続けるようになります。
そして最終的にアップロード失敗や成功の画面ではなく
投稿フォームの初期の画面に戻ります。
スクリプトは実行されていないみたいで
テンポラリファイルのサイズを調べることができません。
これってブラウザが勝手に送りつけてるだけで
サーバー側は upload_max_filesize 以上受け取っていないと考えて良いんでしょうか?
読みにくい文章ですみません(・・;
0171nobodyさん
2006/02/08(水) 22:07:23ID:???Apache自体は全部受信してて、それをPHPコアがフォーム分解してテンポラリを作る際に、
サイズが大きすぎたら処理を中断してエラーフラグを設定して、スクリプトの実行を開始、
って感じだと思う。
サーバー負荷を下げるのが目的ならname="MAX_FILE_SIZE"で指定してやんないといけないし、
それを無視するブラウザを弾きたいということであればApache側でPOSTの制限をするなどの
設定をしてやる必要があると思う。
0172156
2006/02/08(水) 22:08:28ID:???んー、PHPマニュアルには、
『MAX_FILE_SIZEはブラウザへの勧告に過ぎません。この最大値を 出し抜くのは簡単なことなので信頼してはいけません。
しかし、 PHP側の最大サイズの設定を欺くことはできません。 しかしそれでもMAX_FILE_SIZEを指定すべきです。
なぜなら、 巨大なファイルを転送しようとして、
実はそれが大きすぎて転送できないということを長時間待ったあとで知らされるのを防げるからです。 』
とあるので、
MAX_FILE_SIZE(HTML) < POSTしようとするファイルサイズ < upload_max_filesize(PHP) の場合は、
(MAX_FILE_SIZEを欺くことは簡単にせよ)ブラウザ側で警告が出る。
upload_max_filesize(PHP) < POSTしようとするファイルサイズ < MAX_FILE_SIZE(HTML) の場合は、
ブラウザ側で警告は出ずに、サーバ側から"大きすぎて転送できないということを長時間待ったあとで知らされる"。
ということだろうから、その挙動は合っていると思う。
エラーコード、$_FILES['userfile']['error'] をechoしてみれば分かるんじゃ?
0173nobodyさん
2006/02/08(水) 22:32:04ID:???ini_setで関係のありそうな場所を設定してるのですが、気を付けた方がいい所はありますか?
漠然とした内容ですいませんが、第一引数に「ー」や「]」などを入れると文字化けして、ini_setや他の関係ありそうな関数を使っても必ずどっちかが文字化けしたりで途方に暮れてます…
0175nobodyさん
2006/02/08(水) 23:41:03ID:???現在ある掲示板を、携帯絵文字対応にしようと思っております。
既存の掲示板では携帯から絵文字を投稿すると
<img src="img/i/F8C7.gif" width="12" height="12" border="0">
と変換されているのですが、これを携帯から見た時に
?
と変換したいのです。
このような変換を行う場合はどのようにしたらよろしいでしょうか?
よろしくお願いいたします。
0176175
2006/02/08(水) 23:41:43ID:???です。文字化けしてしまいました・・。
0178nobodyさん
2006/02/09(木) 00:06:23ID:MhSFpTrNhttp://c-others.2ch.net/test/-/php/1139146534/w ←こんな感じで書き込めるようにするにはどうしたらよいでしょうか
hiddenの値とかは何とかなると思いますが、ソケットプログラミングが全くわかんないので、できたら実際に書き込みできるスクリプトを見せていただきたいのですが・・・
よろしくお願いします。
0179nobodyさん
2006/02/09(木) 00:12:01ID:???すでに「p2」というPHP製の非常に優れたGATEWAYプログラムが存在してますので、
まずはそちらの中身を解析してみて、それ以上のものを作って公開してくださいね。
0181179
2006/02/09(木) 00:21:24ID:???>>178で参考になるスクリプトが見たいといってるから、
存在するオープンソースで一番目的に近いものを紹介して
なんで、「死ね」とか言われなきゃならんのだ・・・凹むぞ
0182nobodyさん
2006/02/09(木) 00:37:21ID:???0183nobodyさん
2006/02/09(木) 01:00:28ID:???0184nobodyさん
2006/02/09(木) 01:21:00ID:???0185150
NGNGありがとうございます。
そして遅レスですみません。
>>171
Apache側の設定のこと完全に忘れてましたw
それでApache方面でググった今の自分にぴったりな(?)文章を見つけました。
http://multix.jp/html/memo/030521.html#00010201
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
LimitRequestBody
クライアントから送信されてくる POSTや PUTデータを受け入れる
最大値を指定します。初期値は 0(無制限)で、バイト単位で
2147483647(2GB)までを指定できます。これを使えば CGIで
ファイルアップローダを運用するような場合、CGIプロセスが
起動する前に巨大すぎるデータの受け入れを容易く拒否することができます
(CGIプロセスに渡ってからではほとんどの場合、手遅れ)。
それ以外でもバッファオーバーフローやサーバクラッシュ目的での
DoS攻撃を回避するのに有効ですから、サーバ管理者は必ず再設定しておくべきです。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
>>172
upload_max_filesize以上post_max_size未満のサイズなら
$_FILES['userfile']['error']でちゃんとエラーを拾えるんですが
post_max_sizeを超えてしまうと拾えなくなってしまいます。
というか何もPOSTされなかったかのような反応になります。
しかも送信してる間にハードディスクがガリガリいってるぽいので
どうも>>171のとおりPOSTされたデータをApache側で
全部受け取ってるのかもしれません。
うーんでもApache側で一旦受け取るんだったら
upload_max_filesizeとupload_max_filesizeの意味無いような気がするし。。。
もうわけわかめ。
0186nobodyさん
NGNGそれにphpのテンポラリディレクトリは
ウェブディレクトリの外側なので
LimitRequestBodyで設定できませんでした。
0187nobodyさん
2006/02/09(木) 02:07:21ID:???鯖のリソース余ってるやつちょっと来い@自宅サーバ
http://pc8.2ch.net/test/read.cgi/mysv/1137564375/l50
0188150
NGNG>というか何もPOSTされなかったかのような反応になります。
良く調べたらこれはMAX_FILE_SIZEに引っかかっただけでしたorz
MAX_FILE_SIZEを100000000000000000000にして
やってみたらエラーを拾えるようになりました。
いろいろやってみた結果、
結局サーバー側は upload_max_filesize 以上受け取っていない
ということかもしれません。
ご迷惑をおかけてすみませんでした。
0189nobodyさん
NGNG0190nobodyさん
2006/02/09(木) 03:40:24ID:???0192nobodyさん
NGNG0194nobodyさん
2006/02/09(木) 07:55:13ID:???(my) $hoge = 1;
(my) $hige = 2;
// hogeにhigeを加える
$hage = $hoge + $hige; //hogeをhageに間違える
print $hoge;
0196nobodyさん
2006/02/09(木) 09:01:55ID:???str_replace("\n", "<br>", stripslashes($textarea))
としているのですが、テキストエリアにタグを入れた場合、改行が入っていると
<br>が入ってしまいます(当然ですが)
例)
<table>
<tr>
<td>テキスト </td>
</tr>
</table>
これを改行無しに記述すれば問題はないのですが、ホームページ作成ソフトなどから
直接タグをコピペする時もあります。
どうすれば整形済みのタグを入れても<br>だらけにならないように出来るのでしょうか?
説明が下手ですが、何かアドバイスをいただければと思います。
0198196
2006/02/09(木) 09:29:55ID:???それが、普通のテキスト文字の場合は改行した時、<br>に変換が必要なんです。
ブログの記事書き込み部分のようなイメージです。
ブログ(MTなど)でも記事フォームにタグを入れている場合は、改行せずに
入れているような気がしないでもないですが、もし何か良い方法があれば、ご教授願います。
0199nobodyさん
2006/02/09(木) 09:49:35ID:???HTMLでの記事書き込みとテキストでの記事書き込みとをモード切替してるとこはある。
同一のものとして扱うのであれば、タグの開始と終了<hoge></hoge>を判別して、
その間だけ<br>変換やめるとか。
同じ名前のタグをネストされた時の対処が必要だしちょっと面倒かもしれんが…
XMLパーサとか使ってみるのもテではないでしょうか?
0200nobodyさん
2006/02/09(木) 09:51:04ID:???0201196
2006/02/09(木) 10:12:05ID:???なるほど。やっぱり、入力フォームを分けるという対処しかありませんよね。。
1つのテキストエリア上で出来たら、便利だと思っていたのですが、
入力する側が手間になるといけませんので、断念します。
アドバイスありがとうございました。
0202149
2006/02/09(木) 10:17:13ID:g3a/RWdO■ このスレッドは過去ログ倉庫に格納されています