【PHP】くだらねぇ質問はここに書き込みやがれpart3
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
05/02/07 21:47:15ID:???ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
次スレは>>970あたりが建てて下さい
・過去スレ
【PHP】くだらねぇ質問はここに書き込みやがれ
http://pc5.2ch.net/test/read.cgi/php/1099322141/
【PHP】くだらねぇ質問はここに書き込みやがれpart2
http://pc5.2ch.net/test/read.cgi/php/1105218084/
0423nobodyさん
05/02/18 17:08:14ID:???マジレスするとUTF-8に日本語って定義がない
違いはシングルバイトコードかマルチバイトコードの区別だけだ
PHP固有の質問でもないから、あとはgoogleで調べてくれ。
0426nobodyさん
05/02/18 17:51:21ID:???はじめ送られてきたフォーム内容を解析して、<input ... checked>などで
書こうとしたのですが、手元のPHP本を読んだらセッションを使った方法が
書いてありました。
この2つの方法の違いというか、メリット、デメリットはなんでしょうか?
0427nobodyさん
05/02/18 17:59:13ID:???2ページならセッションの出番が無いと思われ。
フォーム -(1)-> フォーム -(2)-> 確認画面等
セッション利用有無に関係なく、(1)は当然<input>になる。
セッションを使うと(2)の部分でセッションのデータを利用可能になり、
フォームデータの再送信による手間を防げたり、
(クライアント側からの)データ改竄を防げたりする。
0428nobodyさん
05/02/18 18:39:47ID:???丁寧な説明ありがとうございます。よく理解できました。
フォームデータが毎回変わり、一回切りのページ表示なので
セッションの意味はないことがわかりました。
ありがとうございました。
0429nobodyさん
05/02/18 21:37:24ID:???Warning: main(xxxxxxxxxx.html) [function.main]: failed to open stream
Fatal error: main() [function.require]: Failed opening required
上記二つのエラーメッセージが、<?php require(xxxxxxxxxx.html); ?>と言うのを、
htmlに埋め込んだところ出てしまいました。色々と試しているのですが、なかなか出来ません。
どなたかご教授頂けると幸いです。
ちなみに、サーバーはxreaをお借りしています。
0430nobodyさん
05/02/18 21:46:34ID:???0431nobodyさん
05/02/18 21:46:41ID:???0432nobodyさん
05/02/18 21:50:47ID:???PHP4でのオブジェクトの参照渡し $foo &= new Hoge(); はどういう時に使うべき
ものなんでしょう?
php 参照渡し オブジェクトでgoogleさんに聞いてみましたが出てこなかったです。
0433nobodyさん
05/02/18 21:52:34ID:???ですが、それでも無理なんです。
0434nobodyさん
05/02/18 22:53:38ID:JUw9WZeiその際に、投稿者の名前や、メッセージなどの情報も記入してもらい、これをmysqlに入れてしまい、ファイルパスもDBに入れて管理するものを作ろうとしてます。
<form action="hoge.php" method="post" enctype="multipart/form-data">
名前:
<input type="text" name="name">
メッセージ:
<input type="text" name="message">
ファイル:
<input type="hidden" name="MAX_FILE_SIZE" size="*****">
<input type="file" name="file">
<input type="submit" name="submit" value="送信">
</form>
multipart/form-dataにすると、2バイトの文字だとまともに値(ここでは$nameと$message)を受け渡し出来ません。
ファイルのアップと、その他の情報を2回に分ければすむ話ですがなんとか
関連情報の記入、ファルの選択
確認画面
ファイルアップ、ならびに、DB登録、(場合によっては管理者への告知メール、登録者への確認メール)
という流れにしたいと思っていますが、$nameと$messageに対してどういう処理をすれば、値が取り出せるのか解りません。この辺について、解りやすい説明や、サンプル等あるサイトがあれば教えて下さい。
0435nobodyさん
05/02/18 23:54:53ID:???>multipart/form-dataにすると、2バイトの文字だとまともに値(ここでは$nameと$message)を受け渡し出来ません。
んなこたぁない!
0438nobodyさん
05/02/19 00:42:10ID:???> PHP4でのオブジェクトの参照渡し $foo &= new Hoge(); はどういう時に使うべき
> ものなんでしょう?
$foo = & new Hoge();
なら、”使うべき”つうか、インスタンス生成するときは大概そうするよ。
0439nobodyさん
05/02/19 11:04:17ID:a1KdI/7k0440nobodyさん
05/02/19 11:16:49ID:???JSPが凄そうなのでJSPを一生懸命勉強しました。
勉強の成果を試そうと、HPスペースを探しました。
JSPを無条件で使えるところはほとんどありませんでした。
泣きそうになりました。
これに懲りたので、今度は普及度の高そうなPHPを勉強しました。
最新バージョンであろうPHP5の書籍を参考に勉強しました。
勉強の成果を試そうと、HPスペースを探しました。
PHP5を使えるところが見当たりませんでした。
死にたくなりました。
0441nobodyさん
05/02/19 11:22:52ID:???0442nobodyさん
05/02/19 11:30:26ID:???はやくphp5がつかえる無料スペースを教えて下さい。
0443nobodyさん
05/02/19 11:38:53ID:???0444nobodyさん
05/02/19 11:47:22ID:???自分で鯖を立てるほどの根性はありません。
どなたか、php5を無料スペースで使ってる方はいませんか。
0445nobodyさん
05/02/19 11:49:07ID:???本当は超生きたいです。120歳くらいまで生きたいです。
110歳くらいまでPHPをやりたいです。
ですから無料スペースを教えて下さい。
0446434
05/02/19 12:14:30ID:62TgDRLY>>434です。
自分なりに調べてみたのですが、
ttp://ns1.php.gr.jp/pipermail/php-users/2002-July/008617.html
この辺りで、調べる方向は合ってますか?
phpのバージョンによっても、いろいろみたいですが、漏れの使ってる鯖はPHP Version 4.3.1です。
0447nobodyさん
05/02/19 12:59:21ID:???ページのテストの度にFTP を使うのが面倒になって
クライアント(win2000)にapache1.3 とphp4 を
インストールしました。
クライアントのphp から自宅サーバのpostfix を使って
php スクリプトでメール送信を実現するには
クライアント側のphp.ini をどう設定すればいいのでしょう?
ご教授お願いします。
0448nobodyさん
05/02/19 13:25:13ID:???やってみどんな問題があったのさ。
http://jp.php.net/mail
0450nobodyさん
05/02/19 13:55:30ID:???読み込むファイルをHTMLなどにして、charsetなどを指定した方が良いのでしょうか?
誰か教えて下さい。
0451447
05/02/19 14:30:24ID:???> やってみどんな問題が・・・・
Warning: mb_send_mail(): SMTP server response: 501 Bad address syntax in f:\hoge\fuga.php on line 246
というエラーになります。
現在のクライアント(win2000)のphp.ini には、
[mail function]
; For Win32 only.
SMTP = 192.168.11.xx ← サーバのローカルIP アドレス
smtp_port = 25
; For Win32 only.
sendmail_from = [email protected]
と記述しています。
このhuga.php はユーザ登録時に登録完了メールを自動送信するというようなもので、該当個所は
//メール送信処理
$mail_subject = "メンバ登録を完了しました";
$mail_body = "登録ありがとうございました。\n";
$mail_body.= "あなたのログインIDとパスワードは以下の通りです。\n";
$mail_body.= "ログインID : " . $_SESSION["user_id"] . "\n";
$mail_body.= "パスワード : " . $_SESSION["passwd1"] . "\n";
$mail_headers = "From: " . mb_encode_mimeheader("振り込め株式会社") . "<[email protected]>\r\n" ;
$mail_headers .= "Cc: " . $cc . "\r\n" ;
$mail_headers .= "Bcc: " . $bcc . "\r\n" ;
$mail_headers .= "Content-Type: text/plain; charset=ISO-2022-JP\r\n" ;
$mail_headers .= "Content-Transfer-Encoding: 7bit\r\n" ;
$mail_returnpath = "[email protected]"; //エラー返送メールの受取
mb_send_mail($_SESSION["mail"], $mail_subject, $mail_body, $mail_headers, "-f".$mail_returnpath); ← line 246
です。"振り込め株式会社" というのは創作です。
ちなみにサーバにFTP 転送すれば問題なく動作します。
0452447
05/02/19 14:31:49ID:???> Samba入れてWindows共有しろ・・・・
一番先にそうしようと思っていたのです。
Samba は導入済みで運用もしているのですが、
その共有ディレクトリはWebDAV でも見えるようにACLアクセス制御を
設定しています。
で、クライアント(win2000)にapache1.3 のドキュメントルートを
共有ディレクトリ内に変更したのですけど、何故か全く見えない
(だったと思います、当時の記憶がおぼろげ)。
ん゛〜分からん、ということでほったらかしにしていました。
win2000 にapache_1.3.xx-win32-x86-no_src.exe からインストールした
apache はwindowsログインしているユーザアカウントではなくて、
nobody とかでドキュメントルートにアクセスするのですかね?
windowsログインしているユーザアカウントと同名のアカウントは
ACLアクセスの対象にしていて、ファイルサーバ的には問題なく
動作しているのですけど。
0453447
05/02/19 14:41:27ID:???php.ini の[mbstring]の各ディレクティブはどうなっていますでしょう?
mbstring.http_input = auto
mbstring.detect_order = auto
などに設定して、webサーバを再読込した後でも文字化けしますか?
0454450
05/02/19 15:15:02ID:???php.iniとは何処にあるものなんでしょうか?
0455nobodyさん
05/02/19 15:21:21ID:???$box[$id]は正しく表示されています。通常変数がセットされていない時に
出力されるエラーだと想うのですが他にはどのような状況で表示されて
しまうのでしょうか?。
$box['hoge'] = '123456789';
$sql = mysql_fetch_assoc($result);
$uid = $sql['uid'];
echo $box[$id];
>>450
テキストファイルをrequireしているというのが良くわからないけど
requireしているファイルの文字コードは確かめてる?
0456450
05/02/19 15:24:30ID:???さきほどGOOGLEで調べてみたんですが、
Shift_JISかEUC-JPじゃないといけないんでしょうか?
0457450
05/02/19 16:16:00ID:???読み込んだHTMLファイルに直接アクセスして見たんですが、
そこでは普通に表示されているのに、requireした先では、
文字化けしてしまいます。
xreaを使っているんですが、php.iniの設定などを弄ることは
出来るのでしょうか?
0458nobodyさん
05/02/19 16:21:35ID:???xrea固有のことはxreaのサポート掲示板で訊くのが筋(近道)。
確かサーバモジュール版とcgi版の両方が使えるような環境だったと思うので
変更が可能なら、それぞれ設定が違うやり方になる筈。
0459447
05/02/19 16:33:00ID:???xrea って、レンタルサーバのことですね。
そのサーバでの設定がどうなっているかですね。
php の内部コードがどのエンコードで動いているかとか、
その他もろもろの固有情報を集めないと答えられないと
思います。
>>458さんのおっしゃる通りですね。
ワタシのくだらねぇ質問は流れていってしまったのかなぁ・・・
0460450
05/02/19 16:41:42ID:???質問に答えてくれてどうも有難う御座いました。
0462447
05/02/19 16:56:54ID:???リレー防止関係ですか・・・
「メインテナンスのため、現在メール受信及びユーザ登録はできません」と
ページを更新したので、ルータのメール関係のポートを閉じて
LAN内で実験してみます。
うまくいってもいかなくてもまた報告に来ます。
0464447
05/02/19 17:31:29ID:???以下の不正中継防止及びsmtpAuth関係全てコメントアウトしてLAN内で
実験してみましたが、同じエラー表示が出ますね。
はぁ・・・。
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $mydomain
smtpd_helo_required = yes
disable_vrfy_command = yes
strict_rfc821_envelopes = yes
allow_percent_hack = yes
swap_bangpath = yes
allow_untrusted_routing = no
smtpd_client_restrictions = permit_mynetworks, reject_rbl_client, relays.ordb.org, reject_invalid_hostname, reject_unknown_client, permit
smtpd_helo_restrictions = permit_mynetworks, reject_invalid_hostname, reject_unknown_client, permit
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, reject_sender_login_mismatch, check_relay_domains
smtpd_sender_restrictions = reject_unknown_sender_domain
smtpd_etrn_restrictions = permit_mynetworks, reject_invalid_hostname
smtpd_use_tls = yes
smtpd_tls_cert_file = /usr/local/ここは内緒
smtpd_tls_key_file = /usr/local/ここは内緒
smtpd_tls_loglevel = 1
smtpd_tls_session_cache_database = sdbm:/etc/postfix/smtpd_scache
tls_random_source = dev:/dev/urandom
virtual_maps = hash:/etc/postfix/virtual
>>463さん
周りも迷惑というのは全くその通りです。
ですから、LAN内で実験すると書いたじゃないですか。
幾種類かの不正中継防止に関する試験はクリアしていますし、
上記のディレクティブではかなり細かく設定しているつもりですが、ダメですかね?
0465nobodyさん
05/02/19 17:44:10ID:???0467447
05/02/19 18:52:29ID:???ログは以下です。
192.168.11.yy はクライアント(win2000)のローカルIPです。
client01.example.jp はクライアント(win2000)のローカル内向きDNS上の名前ですね。
connect from client01.example.jp[192.168.11.yy]
56FF7807C69: client=client01.example.jp[192.168.11.yy]
warning: Illegal address syntax from client01.example.jp[192.168.11.yy] in RCPT command:
disconnect from client01.example.jp[192.168.11.yy]
「 Illegal address syntax RCPT command 」でぐぐるとぞろぞろ出てくるので明日丹念に見直そうと思います。
私用で外出しますし、php からそれてしまっているのでこのスレでの私のくだらねぇ質問は一時終了に
しようと思います。
>>466さん
posrfix は勉強したくないけど、postfix のsmtpd.c とか見直した方がいいのかもしれません。私。
0468nobodyさん
05/02/19 19:31:29ID:1PmY20I2phpPgAdminでどれか一つのDBへアクセスできると、他のDBにも
アクセスできるようになってしまいます。
各DBを完全に独立させるのはどのような設定を行えばよいのでしょうか。
ご教示いただけますと助かります。
0469nobodyさん
05/02/19 22:40:47ID:J52hsPlwif (ereg("\.cn", $email))
こうすると、
[email protected] も拒否られてしまいます。
解決方法をきぼんうでございます
0470nobodyさん
05/02/19 23:12:50ID:???正規表現を \.cn にすると、文字列のどっかで .cnが現れた場合にtrueになる。
君がやりたいのは文字列の「終わり」が .cn になるものなので、
マニュアルの「パターン構文」を参照してそういう風に作る必要がある。
ttp://jp.php.net/manual/ja/pcre.pattern.syntax.php
ここに載ってるやつくらい身に付けていないと後々苦労するよ。
0471nobodyさん
05/02/19 23:52:30ID:bvx2N1A1いまいち理解が乏しくうまくいきません。そもそもpear自体インストールするというより置くだけ?
な感じで、あら?
0472nobodyさん
05/02/20 00:48:05ID:???これはどう言う意味でしょうか?
requireで外部phpファイルを読み込もうとしたら出てきました。
0473nobodyさん
05/02/20 01:03:46ID:???PHPファイルの実行時には、PHPの中の人がPHPファイルの中を読んで行きますが、
その読み方ってのは日本語の場合の主語・述語・名詞・形容詞みたいな感じで解釈していきます。
その時に日本語としておかしい場合にParse errorを出して読むのを止めます。
主語・述語・名詞・形容詞のようなパーツを トークンといいます。
ttp://www.php.net/manual/ja/tokens.php
今の場合だとT_STRINGというトークンが来ないはずなのに出てきたってことになります。
表でT_STRINGを探すと、、、説明が無いですね。
仕方ないのでトークン名からSTRING=文字列(''や""で囲った文字列等)と推測しましょう。
0474nobodyさん
05/02/20 05:26:00ID:???自分で特定の日にちに設定できませんか?
2月3日とか9月30日とか。
0475nobodyさん
05/02/20 05:29:54ID:???それはPHP言語じゃなくて、SSI言語(?)ですよ。
この板だとSSIを扱えそうなスレは 初心者の質問スレかな。
「SSI config timefmt」でググると、こんなページもあります。
ttp://cocohome.hp.infoseek.co.jp/ssi/timefmt.shtml
0476nobodyさん
05/02/20 05:32:24ID:???0477nobodyさん
05/02/20 12:10:38ID:???if ( ereg ("DoCoMo", $x)){
echo $x;
exit;
} else {
echo "携帯端末以外 $x でしょ?ココは携帯用サイトです。";
exit;
}
あの〜携帯サイトを作りたいんですが、
上記を試すとUndefined index: HTTP_USER_AGENTって出るんです。未定義?
コレではダメなのでしょうか?それともphp.iniの何かを弄らないといけないのでしょうか?
ちなみにwake.php等で保存してindex.phpに<?php include('wake.php'); ?>等と挿入するとそれ以降が表示されなくなります。
なぜでしょうか?教えてください。
0478nobodyさん
05/02/20 12:34:44ID:???だけ書いたPHPで試してみたら?これでごるぁされたらgetenv使うとか
関係ないけど、
eregよりpregの方が速いらしい
exitは条件分岐から抜けた後に書けば1つにまとめられる
0479nobodyさん
05/02/20 12:40:55ID:TyCJwqCV$page = ($_GET['page']) ? $_GET['page']:
$next = sprintf("<a href=\"%s?page=%s\">NEXT</a> ", $PHP_SELF,$page+1);
$back = sprintf("<a href=\"%s?page=%s\">BACK</a> ", $PHP_SELF,$page-1);
print "$back $next";
と書いたらBACKしか出力されませんでした。
これを「BACK NEXT」のように二つ一緒に出力するにはどう書いたらよいのでしょうか?
0480nobodyさん
05/02/20 13:03:09ID:VBegR7N/$next = の行が三項演算子のfalse側になってる
$page = ($_GET['page']) ? $_GET['page'] : 1;
$next = sprintf("<a href=\"%s?page=%s\">NEXT</a> ", $PHP_SELF,$page+1);
$back = sprintf("<a href=\"%s?page=%s\">BACK</a> ", $PHP_SELF,$page-1);
print "$back $next";
ただ、これだとおかしな事になるのが目に見えてるから
if( $page > 1 ){
$back = sprintf("<a href=\"%s?page=%s\">BACK</a> ", $PHP_SELF,$page-1);
}
みたいな感じにしといた方がいいと思う
>>479のままのソースで $next = の行と $back = の行を入れ替えれば同じ事出来るけど、
読みにくくなるから止めといた方がいい
0481nobodyさん
05/02/20 15:00:34ID:???と
$_SESSION['abc']
ってまったく別物ですか?
0482481
05/02/20 15:32:40ID:???私の持っているマニュアルではsession_register()を使って変数名を登録するとあるのですが、
$_SESSION['']でいきなり変数を入れれます。
session_register()の使い方間違っていますでしょうか?
0483nobodyさん
05/02/20 15:52:58ID:HD8VrkSM$_REQUESTに入っちゃうけど、加工前のデータはFORMの上の方から
順番になって送られてくるんでしょうか?それとも順序はでたらめ?
0484nobodyさん
05/02/20 16:14:06ID:???公式のマニュアルにそのことについて書いてありますよ。
>>483
html4の仕様では特に規定されていないので、どんな順番でくるか不定と考えた方がよいでしょう。
本スレでも言われてたことだけど、順序にこだわるなら自分で制御(sort)した方がいいですよ。
0485nobodyさん
05/02/20 16:14:46ID:???最新のマニュアル
http://jp.php.net/manual/ja
chm版
>>116
0486482
05/02/20 16:36:32ID:???ありがとうございます。
こんなとこでつまづくのは私くらいかと思いますが一応
>$_SESSIONの場合、 session_register(), session_unregister(), session_is_registered()は不要です
とのことです。
ありがとうございまいした。
0487nobodyさん
05/02/20 16:37:59ID:buvb0b1/0488nobodyさん
05/02/20 16:49:51ID:???0489nobodyさん
05/02/20 17:01:09ID:???わざわざ->とか使わんといかんし、thisつかうのにも$thisとかダサすぎ。コーディング速度が明らかに落ちる。
広く使えるPHP4だとインタフェースはおろかprivateやpublicの指定もできないし
で、クラス使って管理して楽になるようなものって何かある?
0490nobodyさん
05/02/20 17:06:23ID:/OfJuMCV---------------------
if ($a == "hoge"){
$b = "fuge";
}else{
$b = "muge";
}
---------------------
↓省略?
---------------------
$b = ($a == "hoge") ? "fuge" : "muge";
---------------------
0491nobodyさん
05/02/20 17:19:05ID:???0492nobodyさん
05/02/20 17:26:47ID:VBegR7N/>>490の内容なら普通に三項演算子で書いたほうが早いけど、
使うと見難くなるようなところで無理使ったり、
似たような判断処理でifと三項演算子混在させて使ったりするとわけわからんソースになる事必至。
0493nobodyさん
05/02/20 17:36:54ID:???クラス使うかどうかはスタイルの問題でしょ。
とはいえ、他人のプログラムを読むならまっとうなOOPに則って書いてあるとホッとする。
OOPじゃないと、相当ドキュメントとか、コメントがちゃんとしてないと苦しい。
て訳で、他人のソースを読むときに楽になる。
0494nobodyさん
05/02/20 17:43:32ID:???0495nobodyさん
05/02/20 17:44:51ID:???有難うございます。
三項演算子なんぞ知らんかった…。
0497nobodyさん
05/02/20 21:32:47ID:???0498497
05/02/20 21:41:44ID:???関数はないけど作れるんですね;
0499nobodyさん
05/02/20 23:29:28ID:???全部をOOPに書こうとしなくてもいいんじゃない。
0500nobodyさん
05/02/21 00:16:31ID:???eacceleratorのキャッシュファイルが350kbを越えた!
0501nobodyさん
05/02/21 01:17:47ID:???0502nobodyさん
05/02/21 01:19:18ID:???俺はCookieとMySQLのクラスを作ってるよ。
もちろん再利用性が重要。
0503nobodyさん
05/02/21 02:21:36ID:???今はクラス使ってる派
0504nobodyさん
05/02/21 02:32:44ID:???$fp = @fopen("hoge.dat","r+");
です
Apache モジュールPHP5.0.3 WinXP SJIS
CGIのPHP4でも同じです
0505nobodyさん
05/02/21 02:55:50ID:???>>473の説明を流用すると、
その行で出てくるはずの無い文字列がでてきたってことだから、
それより前の行で " で文字列を開始したまま閉じてない、とかじゃないの?
hoge.dat の直前の " で文字列終端になって、
次にきた hoge.datが来る筈の無い文字列なのでエラーつーことで。
0508504
05/02/21 11:37:35ID:???1行目は<HTML><BODY>
2行目は<?php
Parse error : Syntax error, unexpected T_STRING in .php on line 3
となってしまいます
SJISはEUCの間違いでした
0509nobodyさん
05/02/21 11:42:17ID:???0511nobodyさん
05/02/21 11:47:32ID:???_SERVER['HTTP_REFERER']だとリファラー取れないんで
なんとかならないですかね?
0512全角スペースor文字でとほほ
05/02/21 11:48:07ID:???<html><body>
</body></html>
次に
<html><body>
<?php
?>
</body></html>
と一行づつ増やしてどこでエラーがでるかやってみそ。
それぐらいのこと、やってから質問しる。
0513504
05/02/21 13:05:33ID:???<HEAD><BODY>
<?php
$fp = @fopen("hoge.dat","r+");
処理
?>
</BODY></HTML>
全角文字はPHP内にはありませんでした。
また、ソースを改造してもエラーは必ず$fp = @fopen("hoge.dat","r+");のある行で出てきました
0515nobodyさん
05/02/21 13:28:14ID:hTSJdz6/Server API Apache 2.0 Handler
となっているのはモジュール版ですか?
0518nobodyさん
05/02/21 14:42:48ID:???0519nobodyさん
05/02/21 15:09:30ID:???全てのページをPHP化するというのは無謀か?
負荷とか大丈夫か?
0520nobodyさん
05/02/21 15:35:23ID:???正規表現の記述がわからず
正常に置き換えられません。
$reg = '##.*##';
ereg_replace($reg, $key, $str)
これだと最初の##から最後の## まで全てが空白になってしまいます。
どなたかアドバイスください。
■ このスレッドは過去ログ倉庫に格納されています