【PHP】くだらねぇ質問はここに書き込みやがれpart8
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2005/08/08(月) 01:18:55ID:54u1h4+Dここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
次スレは>>970あたりが建てて下さい
・過去スレ
【PHP】くだらねぇ質問はここに書き込みやがれ
http://pc5.2ch.net/test/read.cgi/php/1099322141/
【PHP】くだらねぇ質問はここに書き込みやがれpart2
http://pc5.2ch.net/test/read.cgi/php/1105218084/
【PHP】くだらねぇ質問はここに書き込みやがれpart3
http://pc5.2ch.net/test/read.cgi/php/1107780435/
【PHP】くだらねぇ質問はここに書き込みやがれpart4
http://pc8.2ch.net/test/read.cgi/php/1110697712/
【PHP】くだらねぇ質問はここに書き込みやがれpart5
http://pc8.2ch.net/test/read.cgi/php/1114787573/
【PHP】くだらねぇ質問はここに書き込みやがれpart6
http://pc8.2ch.net/test/read.cgi/php/1117945031/
【PHP】くだらねぇ質問はここに書き込みやがれpart7
http://pc8.2ch.net/test/read.cgi/php/1121100429/
0611nobodyさん
2005/08/24(水) 19:40:08ID:???"HTML の変更"で POST="url" って書いてあるところを変えることができるなら可能。
url を自分の PHP のアドレスにする。
しかしレンタルフォームを見てないけど、たぶんできないだろう。
メリットもよく分からない・・・。
0615nobodyさん
2005/08/24(水) 21:20:30ID:YErBP/YJを探しています。
どなたかご存知の方いらっしゃいましたらぜひ教えてください〜!
0616nobodyさん
2005/08/24(水) 21:23:47ID:???レンタルフォームを借りる顧客は、基本的に
システム部分を借りるために借りるんだよ。
電子署名関係の費用を浮かしたりできるしね。
PHP部分を自作するスキルがあるなら、
HTML部分も自作する方がはるかに簡単だよ。
0617nobodyさん
2005/08/24(水) 22:23:55ID:???垂直分散させることは無いと思うので、
「負荷分散」させるか「機能分散」させるかも設計段階でちゃんと考慮するようにします。
(ある意味それによって言語が決まってしまいそうですね)
ホント勉強になりました。ありがとうございました。
0620nobodyさん
2005/08/24(水) 22:33:36ID:???機能ごとの分散をどの程度行なうかによるけど、
もし本当にphpでやるとしたら、スクリプト分けて
Apache側でurl見て飛ばすようにする位しかないんじゃないかなぁ。
保守性も悪くなるし、かっこ悪いのは確かだね。
0623nobodyさん
2005/08/25(木) 00:55:18ID:Obq2ezYLSMTP経由でメール送信するためのサンプルをくんでたんですが
<?
require_once("Mail.php");
require_once("Mail/mime.php");
$mime = new Mail_mime("\r\n");
?>
これでエラーが出ます。
きちんと読み込むMail.phpとmime.phpは存在しててきちんと通ってます。
$mime = new Mail_mime("\r\n");で明らかにエラーでてるんだけどこれってナニがいかんのですか?
引数省略も可能なはずだからしてみたけどそれでも駄目です。
「極めるPHP」のP131の引用なんですけど…
0624nobodyさん
2005/08/25(木) 01:05:54ID:???0625nobodyさん
2005/08/25(木) 01:18:07ID:Obq2ezYLphp.iniの
error_reporting=E_ALL
display_errors=On
にはしてあります。
0627nobodyさん
2005/08/25(木) 01:31:39ID:Obq2ezYLPEARのDB系のプログラムは動いてるんですが。
ちょっとエラー表示もされない時点で明らかにおかしいんでもう少しみてみます、ごめんなさい。
0629nobodyさん
2005/08/25(木) 02:05:35ID:???処理の中の一行毎にerror_logなりなんなりでログはけばどこで落ちてるかわかるっしょ。
まずはそれからだ。
0630nobodyさん
2005/08/25(木) 02:09:23ID:95Treuew0631nobodyさん
2005/08/25(木) 02:20:23ID:???0632623
2005/08/25(木) 02:28:56ID:Obq2ezYL言いにくいんですが原因は、実験鯖が2台あってAで実行してるつもりがBで実行しててAの設定を必死でいじくっているという情けないボンミスでした。
けれど次はもう少し価値ある(?)疑問が昨日からありまして、これのせいでPEAR自体を信じられなくなっていて上でつい軽率な質問をしてしまったのですが…。
その疑問というのが
<?
require_once("Net/POP3.php");
$pop3 =& new Net_POP3;
$res=$pop3->connect('サーバーホスト名');
if(!$res)die("connect err");
$res=$pop3->login('ユーザー名','パスワード');
if(!$res)die("login err");
$pop3->disconnect();
?>
という、pop3でメールを呼び出すサンプルの途中なんですが、このloginの部分でエラーが出てしまいます。
Notice: Undefined offset: 3 in /usr/share/pear/Net/POP3.php on line 298
これはもうPEARの内部のコードですので一応みてはみたんですがちょっとぱっと理解するのは苦しいです。
ちなみに環境はPHP5です。
これは一体なぜなんでしょう…。
0633nobodyさん
2005/08/25(木) 02:56:14ID:???とりあえず一行目に、
error_reporting(E_ALL ^ E_NOTICE);
いれて先に進み、PEAR の偉い人が来るのを待つ。
0634nobodyさん
2005/08/25(木) 02:56:33ID:???loginの引数3つ必要とかそういうのじゃないの??
とりあえずソース見ようよ・・
POP3.phpの298行目で配列の要素の3番目を参照しようとしてるけど
その配列には3つ目の要素無いです。ってエラーだと思うよ。
0635nobodyさん
2005/08/25(木) 05:14:12ID:???634のいうことがあたってる気がする。
普通、サーバーホスト、ユーザーIDとパスワだけじゃ
どんなDBにも入れんです。
んで、この場合足りない3つ目の引数は
DB名じゃないかと。
0636nobodyさん
2005/08/25(木) 05:19:08ID:???0637nobodyさん
2005/08/25(木) 05:52:58ID:???hoge.php?hogeの場合は、hoge.phpとは別のページを表示させる
というのはどうやるのでしょうか?
もし宜しければ解説サイトも教えていただけると幸いです。
0638nobodyさん
2005/08/25(木) 06:48:23ID:???・hoge.php?hogeの時に、お目当てのファイルをrequire();する。もしくは、hoge.phpに埋め込む。
・<meta http-quiv="Refresh">を使う
・JavaScriptなで自動的に他のページにジャンプする等
パッと思いついただけでこれだけ。他にもまだあるかも。
解説は自分で探してくれ。
0639nobodyさん
2005/08/25(木) 07:09:26ID:???引数不足なら、Warning: Missing argument でるんじゃね。
function login($user, $pass, $apop = true)
だから、2引数でも動くし。
まぁとりあえず、
$res=$pop3->login('ユーザー名','パスワード', false);
にしておく。
ちゃんとソース読んでないけど、
なんか POP3 サーバが変な返値してる気がする。
だめなら試験している POP3 変えてみるよろし。
>>636
ナイスつっこみ。
0640nobodyさん
2005/08/25(木) 08:35:58ID:NxH/rXi6どのようにやったら実現できるのでしょうか?
ご教授お願いします。
0642nobodyさん
2005/08/25(木) 09:25:27ID:NxH/rXi6$filename = "sample.txt";
$lines = file($filename);
$fp = fopen($filename, 'w');
for ($i = 1; $i < count($lines); $i++) {
fputs($fp, $lines[$i]);
}
fclose($fp);
echo $lines[0];
このように書きましたが、もっとスマートに書けないかと思いまして。。
0643nobodyさん
2005/08/25(木) 10:52:35ID:DuoTARf6<form action="sample.php" method="post">
<input type="text" name="word">
<input type="submit" value="送信">
</form>
---sample.php---
$word = $_POST['word'];
print "$word";
という、ごく普通の変数の受け渡しについてですが、
ほとんどの言葉(日本語)はきちんと受け渡しができるのですが、
いくつかの言葉が受け渡しできません。
たとえば、「道路」という言葉が受け渡しできませんでした。
encodingはhtmlもphpもEUC-JPでそろえてあります。
一部の言葉だけが受け渡しできないという原因は何でしょうか?
0644nobodyさん
2005/08/25(木) 11:08:56ID:???$filename = "sample.txt";
$lines = file($filename);
array_shift($lines);
$fp = fopen($filename, 'w');
fputs($fp, implode('', $lines));
fclose($fp);
0645nobodyさん
2005/08/25(木) 11:22:13ID:???参考になるかも。
http://ns1.php.gr.jp/pipermail/php-users/2003-August/017686.html
0646nobodyさん
2005/08/25(木) 11:41:50ID:???解決しました━━━━━(゚∀゚)━━━━━ !!!!!
本当にどうもありがとうございました!! このご恩は忘れません。
0647nobodyさん
2005/08/25(木) 12:29:26ID:???ふむふむ。。
未だに理解できてない部分がありますが、今後の参考にさせて頂きたいと思います。
お忙しい中、本当にありがとうございました。
0648632
2005/08/25(木) 12:39:32ID:zPPHIyNWそのあたりはありとあらゆる手段を試してみたんですが。
サーバーも2つ試したんですがだめだったので、プロバイダーの提供するメールアドレスのサーバーとか使ってみて実験してみます・・・
0649nobodyさん
2005/08/25(木) 13:27:26ID:???関数が分からず途方に暮れています。どなたかご教示願います。
0651nobodyさん
2005/08/25(木) 14:57:15ID:At275aLQ0652nobodyさん
2005/08/25(木) 15:04:37ID:At275aLQスレッド形式の掲示板を作っているのですが、テーブルを2つ作成し、
tbl_thread(スレ管理用)にthreadno,timestamp,title
tbl_message(レス管理用)にmessageno,threadno,timestamp,user,message
というフィールドを作成しています。
タイトル一覧の画面にて各スレッドのレス数を表示させたいのですが、
これはその都度tbl_messageをthreadno毎にグループ化してcount()してやる必要があるのでしょうか?
スレ・レスともに増えていったらその都度tbl_messageの全てについて処理すると重くなるかも?と思ったので
なんとかtbl_threadの方にレス数も格納したいのですが、
投稿時に投稿後のテーブルに対するレス数をtbl_threadに格納するという方法だと
同時刻に投稿があった場合(トランザクションが同時に実行された場合)に誤差が生じてしまいそうです。
まぁ同時に投稿がある可能性もさほど高くはないし、一度誰かが投稿すればまた正常な数値に戻るはずなので
問題ないといえばないのかもしれませんが・・・。
こういった場合、1.その都度tbl_messageで数える方法 2.誤差くらいあっても処理が軽そうな方法 のどちらを選ぶべきなのでしょうか?
よろしくお願いします。
0653nobodyさん
2005/08/25(木) 15:12:40ID:???そこで一つ質問なんですが、PEAR::DB も pg_connect のように、
PHPが終了すれば自動でコネクションを閉じてくれるんでしょうか?
確か pg_close は持続的接続じゃなければ使う意味があまりないと聞きました。
であれば $db->disconnect も省略できるのかな…?
よろしくお願いします。
0654nobodyさん
2005/08/25(木) 15:21:41ID:???ソース見てみたら?
0655653
2005/08/25(木) 15:31:03ID:???pgsql.php を見たところ確かに pg_connect 呼び出してましたね…
てっきり独自の処理でコネクション張ってるものだと思ってました。
お騒がせしました。
回答ありがとうございました。
0656nobodyさん
2005/08/25(木) 15:31:07ID:???>確か pg_close は持続的接続じゃなければ使う意味があまりないと聞きました。
違う。持続的接続の場合に意味がない。
「意味があまりない」という下りは、通常の非持続的接続の場合には
PHPスクリプト終了時にDB_close相当の後処理が自動的に盛り込まれてるのと混同している。
0657nobodyさん
2005/08/25(木) 18:04:59ID:???トランザクションって意味が分かっていないのかな?
トランザクションというのは、複数の処理をひとつの単位として
管理するもの。
というわけで、トランザクション処理をしているのならクライアント
から同時にリクエストがあっても不整合がおきないように
トランザクションごとにデータベースがちゃんと処理する。
エスパーレスすると、652 はトランザクション対応じゃない MySQL を
使っているので、2の方法を使うなら、lock tables を使う。
PHP と関係ないので、これ以上は他のスレでどうぞ。
0658nobodyさん
2005/08/25(木) 18:32:06ID:???↑こちらのphpスクリプトを落として実行してみたのですが、
結果がすべて空白になります
ttp://cgikon.com/sample/php3/form_view.php3
正しい結果例↑
自宅サーバーなので、エラーログを見てみると
52行目でエラーがでているようです
エラーログ
php notice: underfined variable: NAME属性 in /var/www/html/form_data.php on line 52, referer:http://〜/Form_php.html
php52行目周辺
48// 値の取得
49
50for($loop = 0;$loop < count($title);$loop++) {
51$key = $title[$loop];
52$val = ereg_replace("\x0D\x0A|\x0D|\x0A","",$$key);
53$result[] = $val;
54}
55$result[] = date("Y/m/d H:i:s",time());
サイトのFAQのところにはhtml側と保存する側(form_data.tsv)のNAME属性が一致していない場合とありましたが
完全にすべて一致しております。
どこかエラー可能性のある場所はありますでしょうか?
よろしくお願いします。
0659nobodyさん
2005/08/25(木) 19:26:44ID:???全部見る気はしないがようするにform_data.tsvで指定されているnameと受け取るnameが一致してないって事でしょ
0660nobodyさん
2005/08/25(木) 19:34:01ID:???52行目 $val = ereg_replace("\x0D\x0A|\x0D|\x0A","",$$key);
の「$$key」を $_GET[$key] か $_POST[$key] に変更すればいける。
0661nobodyさん
2005/08/25(木) 19:52:12ID:???セキュリティーホール満載な上に処理が遅いのに。拡張子だけだったらいいんだけどヽ(´ー`)ノ
0662653
2005/08/25(木) 20:24:41ID:???「意味があまりない」という表現が悪かったですね…すみません。
pconnect の時は pg_close では切断できなくて、
connect の時にだけ有効なのは知ってました。
ただ、PHPの処理が終了すると自動で切断されるので、
pg_close を使わなくても良い
という意味で、使う意味があまりないと表現しました。
ttp://php.s3.to/man/function.pg-close.html
ここにも通常は必要ないとありますしね。
0663nobodyさん
2005/08/25(木) 20:33:33ID:???確認してみたら俺とこもだ。
無料スペースでPHPの設定変えられないとしたらどうしたらいいのでしょう。
多少それなりに自分で考えてみました。
どうやら他の文字も一緒に送ればいいみたい。
こんなんでいいかな。
0664nobodyさん
2005/08/25(木) 20:35:39ID:???0665nobodyさん
2005/08/25(木) 21:38:59ID:???magic_quotes_gpc=onに設定してある状態で、
テキストボックスから"hoge"のような文字を入力し、GET/POSTで渡した先で何も処理せずに表示させると
「\"hoge\"」と表示されますが、
そのままMySQLに登録すると、MySQLのクライアントから直接見ると"hoge"となっており、
エスケープされていません。
MySQLにはstripslashesのような機能があるのでしょうか?
0666665
2005/08/25(木) 21:43:01ID:???"hoge"に直されてから登録されるってことか。
ということは、掲示板で入力→確認→登録→閲覧という流れでデータを処理する場合は、
「確認」「登録」の時だけaddslashesされた状態となっているから、
「確認」の画面でhtmlに表示する場合はstripslashesを実行しなきゃいけないのか。
という理解であってますでしょうか?
0667nobodyさん
2005/08/25(木) 21:58:08ID:???たぶんいいんじゃないの。初心者なので良く知りませんが。
エスケープって、"で囲まれた文字列の中に"を入れたいときなどに使うものだから、
SQLを書くときに\"、\\、\'を使い、
DBに登録されるのは"、\、'となる。
0668nobodyさん
2005/08/25(木) 22:16:52ID:???みてる?
http://pear.php.net/bugs/bug.php?id=4243
0670nobodyさん
2005/08/25(木) 22:42:57ID:???新規に立てたら即応して定型文レスを返す、っていうプログラムを作ろうと思って
いるんだけどPHPでいいとおもう?
String関係に強いから気に入っているんだよね。
0671nobodyさん
2005/08/25(木) 22:50:37ID:???0672nobodyさん
2005/08/25(木) 22:54:04ID:???ヒント:addslashesでエスケープされる文字 !== MySQLでエスケープする必要のある文字
"POSTを受けるたび"にget_magic_quotes_gpc()でmagic_quotes_gpcを見て、onならstripslashesをかけて
SQL叩く前に、mysql_espace_string()でMySQL用にエスケープして、INSERT。
表示する際は何も触らない。(必要に応じてhtmlspecialchars()やmb_convert_encoding()等)
なんか、>>665-666を見てると、たまたま動いてるだけで、何かしら不具合抱えてる気が。
0673658
2005/08/25(木) 23:07:05ID:???NAME属性のほうは一致していましたorz
>>660
htmlの方でPOSTにしていたので、$_POST[$key]にしたところ
いけました。
本当にありがとうございます!
>>661
リンク間違ってましたw
実際はphp4の方を使っています
ありがとうございました
0675nobodyさん
2005/08/25(木) 23:34:30ID:???0676nobodyさん
2005/08/25(木) 23:40:54ID:qTYcS0PZ何の為に必要なのでしょうか?
0677665
2005/08/25(木) 23:48:29ID:???レスありがとうございます。とりあえず動作には問題なさそうです。
MySQLのエスケープシーケンスを確認したところ、' " \ NULL に関しては共通のようです。
(addslashesでエスケープされるので問題ないはず。)
% _ に関してはmysql_escape_stringでもエスケープしないということで、エスケープする必要はないということかな?
(DBに%,_を含んだ文字列を登録してみましたが問題ありませんでした。)
\b \t \z ついては利用する予定がないのでとりあえず無視しておくことにします。
改行がよくわからないのですが、複数行のテキストをDBに登録した場合に改行はどのように処理されているのでしょうか?
複数行あるテキストの改行をhtmlで表示するときに改行を反映させるべく「\r」や「\n」を<BR>に置き換えるといった処理をしているのですが、
DBにおいて改行は「\r」「\n」といった文字で登録されているのでしょうか?
(テキストボックスに「hoge\n」といった文字列を入力して登録してもちゃんと「hoge\n」と登録されるんだよなぁ・・・。)
(PHPでMySQLから呼び込み時に改行が「\r」「\n」といった文字に変わってるのかな?)
改行がどう処理されているかどなたかご存知でしょうか?よろしくお願いします。
0678nobodyさん
2005/08/25(木) 23:55:43ID:???俺が使うケースだが、
$f = fopen($filename, "w");
と
$f = fopen($filename, "a");
ftruncate($f, 0);
は等しいわけね。
で、何が違うのかというと、
ファイルをロックしたい時。
前者はロックする前にサイズが0になってしまうが、
後者ならfopen()の直後にflock()を入れれば問題ない。
この場合はrewind()でも似たようなことができるが、
ftruncate()の方が厳密に思うのでこれを使っている。
0682nobodyさん
2005/08/26(金) 00:56:28ID:???0683nobodyさん
2005/08/26(金) 00:58:08ID:???ああ、すまない
前提を勝手にこの先まで考えてた。
ファイルポインタを最初に戻せば、
この後fputs()かなんかで上書きされるだろうから
結果的には同じになるパターンが多いと思ってね。
まあ、元より小さいデータを書き込むとゴミが残ってダメダメなんだけど。
0684nobodyさん
2005/08/26(金) 01:10:08ID:???ttp://jp.php.net/manual/en/function.ftruncate.php
Note: The file pointer is changed only in append mode. In write mode, additional fseek() call is needed.
マニュアルサイトは良くできてるが日本語の説明は抜けや誤訳が多い。
0685nobodyさん
2005/08/26(金) 01:26:54ID:???PHP のエラーメッセージ一覧というのはありますでしょうか?
0687nobodyさん
2005/08/26(金) 03:03:53ID:???includeを2回使うと前の方だけちゃんと実行されるのですが、
後ろの方はソースが展開されてしまいます。
(順番を入れ替えても前の方だけちゃんと動く)
これはapacheとphpのどっちの問題でしょうか?
0689nobodyさん
2005/08/26(金) 08:05:29ID:???どうやってやるんでしょうか。
0691nobodyさん
2005/08/26(金) 09:20:08ID:???それがですねHTTP://?????? から(header("Location: HTTPS://??????"))、HTTPS://?????? へ
するとセッションが空になってしまうのです。
0692nobodyさん
2005/08/26(金) 10:01:49ID:???0693nobodyさん
2005/08/26(金) 12:24:59ID:???うまくいかないのは、ファイルを添付する方法です。
DIMEで加工してやらないといけないらしいですが、
具体的にどうすればよいのですか?
0694nobodyさん
2005/08/26(金) 13:57:14ID:nyexn78S↓のソースでアップロードファイルの名前が表示されると思うのですが、
表示できません。どこか間違っていますでしょうか?
php.iniの設定はfile_uploadsがOnなのは確認しました。
<HTML>
<BODY>
<?php
echo "[".$_FILES['userfile']['name']."]";
?>
<FORM method="POST">
<input type="file" name="userfile">
<input type="submit" value="送信">
</form>
</body>
</html>
0695nobodyさん
2005/08/26(金) 14:16:39ID:bg4VVVx+投稿された記事を、ファイル出力して管理するか、DBで管理するか悩んでいます。
記事の検索や、投稿者のポイント管理なども考えているのでDBのほうが便利だとは思うんですが、レンタルサーバなのであまりサーバに負担をかけてしまうのも心配です。
実際、ファイル出力とDB管理ではどちらがよいのかアドバイスをお願い致します。
0696694
2005/08/26(金) 14:20:10ID:???FORMタグに「enctype="multipart/form-data"」を入れたらアップロードできました。
とりあえずこれで行こうと思います。てかマニュアルに載ってなくね?
>>695
俺はDBが好き。
0697nobodyさん
2005/08/26(金) 14:22:26ID:???<form enctype="multipart/form-data" action="_URL_" method="POST">
0698nobodyさん
2005/08/26(金) 14:28:58ID:???ttp://www.php.net/manual/ja/features.file-upload.php
RFC 1867 - Form-based File Upload in HTML
つー決まり事があって、その中でenctypeの指定の仕方が決まってる。
0699nobodyさん
2005/08/26(金) 14:52:32ID:???ファイルアップロードのenctypeにmultipart/form-dataを指定するのはHTMLの決まりであってPHPは関係ない
0700nobodyさん
2005/08/26(金) 16:08:45ID:wVCDYq5xリンクにカーソルを乗せると、リンクの説明など文字を出すことができますが、
カーソルを乗せたときに、そのリンク先のファイル更新日付を出すにはどうすれば
よいですか?
よろしくお願いします。
0702nobodyさん
2005/08/26(金) 17:05:10ID:???PHPに限らずPerlでもJavaでもRubyでもPythonでもCでもenctype="multipart/form-data"が無いとアップローで出来ないから
0703nobodyさん
2005/08/26(金) 17:15:08ID:???html4.01の仕様
ttp://www.w3.org/TR/html401/interact/forms.html#adef-enctype
input type="file"を使う時は enctype="multipart/form-data"を使え、とある。
0704nobodyさん
2005/08/26(金) 18:20:12ID:???0706nobodyさん
2005/08/26(金) 19:05:04ID:???0707nobodyさん
2005/08/26(金) 20:28:52ID:???array ( [0] => a [1] => b [2] => c [3] => d [4] => e )
array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 )
array ( [0] => あ [1] => い [2] => う [3] => え [4] => お )
その後、すべての行をさらに配列の中に入れるには
array (
array[0] ( [0] => a [1] => b [2] => c [3] => d [4] => e ),
array[1] ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 ),
array[2] ( [0] => あ [1] => い [2] => う [3] => え [4] => お )
)
どのようなソースを書けば良いのでしょうか?
0708nobodyさん
2005/08/26(金) 22:34:35ID:???$fp = fopen("test.csv",'r');
flock($fp, LOCK_EX);
while(!feof($fp)){
$data_line = explode(",",chop(fgets($fp)));
$data_all[] = $data_line ;
}
flock($fp, LOCK_UN);
fclose($fp);
//print_r($data_all);
■ このスレッドは過去ログ倉庫に格納されています