【PHP】初心者コーナー 3 Released【スローモード】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
03/06/11 06:24ID:???ファイル MySQL PostgreSQL 正規表現でも なんでもいってみ
でもな、アホな質問であっても詳しく質問しろよ。 ネタはおもしろく書けよ。
前スレ http://pc2.2ch.net/test/read.cgi/php/1048442813/l50
■PHPの普通の質問はあっちな、【PHP】質問スレッド Part8
http://pc2.2ch.net/test/read.cgi/php/1050249148/l50
■PHPへ移行したいPerl信者はあっちな、【待望】PerlユーザのためのPHP入門
http://pc2.2ch.net/test/read.cgi/php/1046326634/l50
■マニュアル嫁ってうるさいのがいるからちょっとは嫁な、
http://www.php.net/manual/ja/
■おまえ初心者なら入門本くらいかっとけな、PHP関連の書籍(但しPHP出版系お断り)
http://pc2.2ch.net/test/read.cgi/php/985315574/l50
■これはなズープスと読むらしいがあっちな、XOOPS
http://pc2.2ch.net/test/read.cgi/php/1031736248/l50
でもな、ここで書きたかったらここで書き。 あとは関連な、>>2
0412404.HDML ◆StMXML.EXE
03/07/15 02:16ID:???どこぞのサイトで「一度インスコしたPHPを再設定する為に再インスコする場
合、元有るファイル群を根刮ぎ消しとかないと設定が反映されてない」みたい
な内容のメモを見た事が有る気がするけど。。実際はドウナンダロウ。
って、解決済だったのか。。(・∀・∀・)
>>410
具体的には以下の一文を".htaccess"に書き加えたりします。
以下では、".php",".phtml","html"の拡張子でPHPを動作させます。
AddType application/x-httpd-php php phtml html
但し、アナタが利用しているウェブサーバで".htaccess"による設定変更を
許可していれば、の話でっせ。
0413404.HDML ◆StMXML.EXE
03/07/15 02:25ID:???>AddModule mod_php4.cは指定しないが、同じバージョンの付属のhttpd.confでも
>公開時期の違いで記述に差(ClearModuleListの位置だったか、有無だったかな)があって
>指定しないと駄目な場合もあった。[warn] module mod_php4.c is already added,skipping
>となってるのなら、指定しないでOK。
これは知らなかった。公開時期の違いって具体的には、いつといつの違い?
俺が試したのは、昨日そのうちにダウソしたもの(Apache/1.3.27)なんだけど。
0415nobodyさん
03/07/15 03:29ID:???.htaccessはセキュリティ上置かない、と言うサーバがありましたが
セキュリティ弱いんですね。
0416404.HDML ◆StMXML.EXE
03/07/15 06:23ID:???>読み方はエイチティーアクセスと読むんでしょうか。
その通り。
>.htaccessはセキュリティ上置かない、と言うサーバがありましたが
>セキュリティ弱いんですね。
そりゃユーザ任意で好き勝手な設定されたらサーバ管理しづらいからね。
但し、ウェブサーバ管理者の設定によって".htaccess"で変更できる内容を
細かく制限できるので、一概に「セキュリティが云々」というのも、只の
怠け文句の様にしか聞こえんわな。
ああ、そうそう。".htaccess"は、"Apache(アパッチ)"というウェブサーバにて利用できる、
ディレクトリ毎の設定ファイルの事です。
ウェブサーバとしてApacheを採用していない所では使えませんよ。
0417山崎 渉
03/07/15 11:06ID:???__∧_∧_
|( ^^ )| <寝るぽ(^^)
|\⌒⌒⌒\
\ |⌒⌒⌒~| 山崎渉
~ ̄ ̄ ̄ ̄
0418nobodyさん
03/07/15 11:10ID:1Nim6t2Z一部のタグを使用できるように独自タグを実装し、
[code][/code]を<pre></pre>タグに置き換えています。改行は<br>に置き換えしています。
問題は<pre>タグ内の改行文字も<br>に置き換えているので、見た目上は問題ないのですが、
コピペすると、改行のない1行としてペーストされてしまうのです。
<pre>タグ内の改行が\nならきちんと改行されてコピーできるのを確認しました。
[code]〜[/code]で囲まれた文字内の改行文字だけを"~"などの
特殊な(使わなそうな)文字に置き換える方法はないでしょうか?
表示時に"~"を\nに置き換えたいと思っています。
情報不足でしたら、ご指摘ください。
windows2k apache 1.3.27 php4.2.3の環境で作業しています。
よろしくお願いします。
0419nobodyさん
03/07/15 11:12ID:DBSRX3ivApacheをインストールしないとだめですか?
0420nobodyさん
03/07/15 11:31ID:???0421nobodyさん
03/07/15 12:33ID:VrVVC0RBfunction error($msg){
echo $msg;
exit;
}
を入れると
Fatal error: Cannot redeclare error() になる…
因みに別の設定ファイルにおいて require してます
0422nobodyさん
03/07/15 12:36ID:dUuUFsTqメール内容を残したいのですがどうすればいいんでしょうか・・・助けてください。
0424nobodyさん
03/07/15 12:57ID:???で、クライアントがサーバのメールを読んで削除してしまうのを
残したいってことか?
0425nobodyさん
03/07/15 14:13ID:VrVVC0RBrequireでなくしたら治った…なんだったんだ
0426nobodyさん
03/07/15 14:23ID:dUuUFsTqだいたいそんな感じなのですが
htmlでメールフォームを作り、送信を押すとリナックスサーバにメールを
送るということなのですが、やり方がわからなくて・・・
メールアドレスに送るのは簡単にできましたが・・・。
よろしくお願いします。
0427nobodyさん
03/07/15 14:30ID:???追記できないようにしました。ですが次回そのファイルにアクセスしよ
うとした時にパーミッションを変えた情報はどこにも残していないので
書き込みモードで開くとpermission deniedのエラーになります。
if(!($fp = fopen(***,**))){ error_trap()}
してもエラー処理は続行されますがエラー文は返ってきます。
これを回避するにはどうすればよいでしょうか?
パーッション情報を得て回避させるか完璧なエラー回避の構文に
するかだとは思うんですが具体的な知識がないので困ってます。
ググっても良い解決策は見当たりませんでした。
よろしくお願いします
0428427
03/07/15 14:43ID:???0431427
03/07/15 17:21ID:ptJK4UDQおお!そんな手もあるんですね。ありがとうございます。
応急処置でstat(filename)でやってみましたがそちらに切り替えて
みます
0432nobodyさん
03/07/15 17:51ID:???Windows 2000
php 5.0.1b1-win32.zip
apache 2.0.47
手順どおりphpのファイルを展開。
apache起動時にcannnot load c:/php/sapi/php4apache2.dllが
ロードできませんとのエラーメッセージ。
ファイルはあるけど、ロードできないです。
0433427
03/07/15 17:54ID:ptJK4UDQ成功です。ありがとうございました
0434nobodyさん
03/07/15 17:56ID:???PHP5を入れたいのにphp4apache2.dllを組み込もうとしてるの?
もしPHP4の間違いならすでに動かしている方のhttp.confの一部を
見せてもらうとか
0435nobodyさん
03/07/15 17:58ID:???>>426
何がやりたいのか?
そもそもメールフォームからのメールの送信は出来ているのか?
そのメールをサーバに置いて何かしたいという事なのか?
0437395
03/07/15 18:19ID:???httpd.confの
LoadModule php4_module C:/usr/local/php/sapi/php4apache.dll
をいれる位置が問題だったみたいです。
最初は176行目あたりに
# Example:
# LoadModule foo_module modules/mod_foo.so
LoadModule php4_module C:/usr/local/php/sapi/php4apache.dll
としていたのですが、>>411を参考にして、CGIやshtmlのAddHandlerの下あたり848行目に追記したところ
うまくいきました。なんか納得いきませんが。
ちなみに、Apache2ではこのような問題は発生せずすんなりでした。謎。
0439nobodyさん
03/07/15 19:19ID:???部分以外はまだ何が変わったか調べる手間がもったいないと思う。
PHP4.3をいじくり回してみてある程度飲み込めてからでいいんじゃない
すか?
0440nobodyさん
03/07/15 19:21ID:ptJK4UDQ0441nobodyさん
03/07/15 23:07ID:???正規表現してください,お願いします。
0442nobodyさん
03/07/16 00:27ID:???すみませんです・・・
0443nobodyさん
03/07/16 00:40ID:4pRAgQGCあるデータベース(何故か不明)のテーブルを書き出したtxtファイルがあり、
それをPosrgres+PHPのシステムに移してほしいと頼まれました。
(手元にはそのtxtファイルしかなく、元のデータベースは既に無いらしい・・)
が、あるフィールドがtextareaだったらしく、途中で改行が入っているのです。
id name abc(textarea) tel
1 あああ あああああ 11111
2 いいい いいいいい 22222
3 ううう うう −−−(ここで改行)
\ううう 33333 −−−(改行の続き)
4 えええ えええええ 44444
といった感じです。
Excelにインポートして少し配置を変えてからエクスポート、それから
COPYコマンドで入れ直すつもりだったのですが、途中の改行が邪魔をして
(上の例だと、「¥ううう」が、あたかもidのように居座っています)
困っています。しかもレコードは5000件ほどあり、手で直すわけにも・・・
どうにか上手くExcelでいじれる形まで持っていけないでしょうか?
お願いします。
0444415
03/07/16 00:48ID:???どうもありがとう。
少しづつですがわかってきている状態です。
ちなみに僕が使っているとことはファイル設定が出来るそうです。
PHPどころかプログラム初心者なのでめちゃ苦労している状態です。
そもそも、PHPを始めたのはDBを作りたかったからです。
それ以外にもPHPが優れているところはどこなのでしょうか?
皆さんがなぜPHPをやり始めたのか聞かせてもらえませんか。
に比べてそれ以外に
0445415
03/07/16 00:50ID:???>>に比べてそれ以外に
↑これいりませんねw
0446nobodyさん
03/07/16 00:51ID:???データもってきたアホにやらせれば?
ってのは冗談で
本来の行末のフィールドに絶対改行が入らないなら、
一行ずつ取っていってフィールド数がたらんかったら
次の行を追加するようなスクリプト作れば?
0448447
03/07/16 00:54ID:???0449nobodyさん
03/07/16 01:32ID:APFwOkckというよりタブ空文でも改行でもデータを拾うようにして4フィールど
毎に1つ目のフィールドが数字である事をチェックして真なら改行。
これでよいはず。前述でも同じ結果が得れたらなんでもいいだろうけど
0451404(・∀・∀・)HDML ◆StMXML.EXE
03/07/16 01:42ID:???俺の場合、PerlよりハイカラなイメージがPHPに有ったからというだけの理由。
ちなみに今でもド素人の部類に入ると思います。Perlの勉強すらすっとばして
いきなりPHPから始めちゃった訳ですから。
そもそも、自前でアクセス解析スクリプト程度のものを作れればいいかなー、
程度の目標だったんで上達する事も無く。
今借りてるレンタルサーバがSQLに対応してくれていないせいも有って、データ
ベース系を勉強する機会も興味も沸かないし。
0452nobodyさん
03/07/16 01:48ID:APFwOkckデータ4個周期を基本にチェックしてるわけだし。よほどいいかげんな
DB処理でないかぎりIDとデータが混同される事はないでしょ。
0453nobodyさん
03/07/16 02:07ID:???id name abc tel
1 あああ あああ(改行)
1(改行)
1 090-xxxx-xxxx(改行)
2 あああ あああ 090-xxxx-xxxx(改行)
ってのを
split /\t|\n/
ってやるとややこしくなんね?
違うやり方をいってるならスマソ。
0454415
03/07/16 02:55ID:???そうなんですかw
僕の方は幸い、なんでも出来そうな環境が整っています。
DBまでの道のりは長そうなので、まず何Pかカウンターを作ってみました。
で、次なんですけど、何をやろうか迷っています。皆さんの参考を教えてください。
まだ、面白いと思える段階ですw
0455nobodyさん
03/07/16 09:14ID:APFwOkckまず1行分と予測する生データを4つバッファリングして5つ目のデータ
を参照。5つ目がIDデータだと判断できたら1行分を修正済みを格納す
る配列へ代入。もし5つ目がIDデータでないなら4つ目とくっつける。
で、6つ目をチェック。以下同様。
根本的に異常なデータが混じっていない限りきっちり修正出きると思う。
処理はややこしいかもしれないが確実。無条件な状況判断ではどこか
でおかしな処理をしやすいから串だんごみたいにして1本ずつ丁寧に
修正してやるとよいかも。
2ch互換スクの故障データの修正で体験した
0456nobodyさん
03/07/16 16:45ID:IyV1t1TM自作のエラー用の関数で、何処で起きたか表示させたいのです
0457418
03/07/16 17:05ID:???力業っぽいですが、解決しましたのでお知らせします。
#<pre class="code">〜</pre>に置き換え後、
$msg = str_replace("\n", "<br />", $msg);
$array = split("pre", $msg);
for($i = 0; $i<count($array); $i++){
if(strstr($array[$i], "class=\"code\"")) $array[$i] = str_replace("<br />","~~", $array[$i]);
}
$msg = join("pre", $array);
表示処理で
$msg = str_replace("~~","\n", $msg);
ありがとうございました。
0458nobodyさん
03/07/16 21:11ID:???(C言語で言うところの int i; のように)
タイプミスで一文字違っただけで数時間も悩むのはもうイヤ!
0459nobodyさん
03/07/17 01:05ID:???つこてるバージョンによっても違うが、
error-reportのレベルをNOTICEも出力するようにすると出ない?
error_reporting(E_ALL)とか。
http://jp.php.net/manual/ja/function.error-reporting.php
あとは折れは"$文字列"の正規表現で、ファイルあたりの出現回数を
カウントしたりしてる。変数名に固有のプリフィクスつけて管理してるので。
0461nobodyさん
03/07/18 07:11ID:???もし存在するならどこにあるか教えてください。
0463nobodyさん
03/07/18 23:43ID:Uzp0kmuOMac OS �] 10.2.6ですが、
PHPのバージョンてどこをみれば分かるのですか。
0464あぼーん
NGNG0469nobodyさん
03/07/22 10:50ID:???header("Location: http://hogehoge.com");
をつかってみたのですが、これだとリファラが残ってしまいます。
ソケット関数使わずにリファラを消すにはどうしたらいいですか?
0470nobodyさん
03/07/22 20:45ID:???困って問題があるのか?
不特定多数を別のサイトに送り込んでカウンタを無駄に上げたりするような用途位のような気がするんだが。困るのは。
0471nobodyさん
03/07/23 02:19ID:???てか、もう一つページを挟めばいいかな。
適当にがんがって見ます。
0472PHP初心者
03/07/23 21:32ID:8eneuWCZ↓は上のフォームに記述して送信した文字列を下のフォームに表示する、
というものですが、
<body>
<form method="GET" action="form.php">
<p><input type="text" name="text1" size="40"> <input type="submit"
value="送信します" name="b"></p>
<p><input type="text" name="text2" size="40" value="<?php echo $_GET['text1'] ?>"></p>
</form>
</body>
実行すると、
<b>Notice</b>: Undefined index: text1 in <b>C:\Apache Group\Apache\htdocs\samples\form.php</b> on line <b>11</b><br />
というエラーが出ます。どこがおかしいのか、わからなくて困ってます。PHPは4.3.2を使ってます。
よろしくお願いします。
0474あぼーん
NGNG0475nobodyさん
03/07/23 21:37ID:???<p><input type="text" name="text2" size="40" value="<?php echo $_GET['text1'] ?>"></p>
ここが11行目です。
0477nobodyさん
03/07/23 22:13ID:???0479nobodyさん
03/07/24 08:32ID:???namazuで検索したいのでEUC版が欲しいのですが・・・
0480nobodyさん
03/07/24 09:41ID:???0481nobodyさん
03/07/24 10:03ID:???0482nobodyさん
03/07/24 10:37ID:???とりあずNotice出したくないんなら変数を宣言しろ。
if(!isset($_GET[text1])) {$_GET[text1]="";}
if(!isset($_GET[text2])) {$_GET[text2]="";}
0483482
03/07/24 11:06ID:???if(!isset($_GET['text1'])) {$_GET['text1']="";}
if(!isset($_GET['text2'])) {$_GET['text2']="";}
こうだね。
0484nobodyさん
03/07/24 11:14ID:???if(!isset($_GET['text2'])) $_GET['text2'] = "";
むしろこうじゃ無いのかと。
@$_GET['text1'];
@$_GET['text2'];
でもいいけどね。
0486nobodyさん
03/07/25 03:55ID:???includeは常時、ファイルをincludeして監視状態なのでしょうか?
ということは、大規模になると、遅くなる原因になるのかなと思いまして。
たとえば、config.phpが、
//config.php
$hoge = "2ch";
$moge = "3ch";
・
・
・
-------------------------
この時、
include "config.php";
echo $hoge;
それとも、
if($hituyou){include"config.php";}
echo $hoge;
こんな感じ。
大規模の時に下の方が負担は軽減される。
と妄想してるんですが、本当はどうなんでしょうか?
0487nobodyさん
03/07/25 04:05ID:???includeはその時点で全て読み込まれるんじゃ・・・
そのincludeファイルが必要になった時点で読み込めばいいと思うけど。
そんなに遅くなる原因にはならないと思うけど。
0488nobodyさん
03/07/25 09:51ID:wJ5ItSlnphpでgzip圧縮通信がしたくて、php.iniファイルの設定で、
output_handler = ob_gzhandler
としたのですが、これで正しく圧縮通信ができるのでしょうか?
もしできているのなら、それをどうやって確認すればいいでしょうか?
環境はRedHat9.0 Apache2 PHP 4.3です。
0489nobodyさん
03/07/25 10:53ID:TM9efvfmphpのバージョンを4.2.3から4.3.2にアップグレードさせようと考えています。マニュアル、FAQ等でその方法を調べてみたのですが、探し方が悪いのでしょうかイマイチ明快な答えが見つかりません。
一応以下に示す方法を実行しよようと考えているのですが何か安易な気がしてなりません。お気付きの点がありましたらご指摘ください。
私的には、3. でmake clean して前のヴァージョンの makeファイルを削除するのがミソかなと思っているのですが…。
これでは前のヴァージョンをアンインストールすることにならないような気もします。そもそも前のヴァージョンを削除する必要があるのかどうかすら分かりません。
勉強不足で申し訳ありませんが、皆様宜しくお願いします。(昨夜一度質問してみたのですが、どこの板に書いたか見失ってしまいました…)
環境:RedHatLinux7.1+apache1.3.27+php4.2.3
1.まずhttpdを停止する。
$ su
# /etc/init.rd/httpd stop
2.php4.2.3のソースファイルが展開されているディレクトリに移動する。
# cd /usr/local/src/php-4.2.3
3. make clean でmakeファイルを削除する。
# make clean
4.php4.3.2のソースファイルが展開されているディレクトリに移動する。
# cd /usr/local/src/php-4.3.2
5. ./configure を実行する。
# './configure' '--enable-mbstring' '--enable-mbregex' '--enable-zend-multibyte' '--with-pgsql' '--with-apxs=/usr/sbin/apxs' '--without-gd' '--with-zlib' '--with-openssl' '--enable-versioning'
6.make 、make install を実行する。
# make
# make install
7.httpd を起動する。
# /etc/ini.rd/httpd start
0490あぼーん
NGNG0492あぼーん
NGNG0493nobodyさん
03/07/25 11:31ID:???make clean が何をやっているのか考えてみましょう
0494nobodyさん
03/07/25 20:46ID:???index.phpからinclude_onceで読むのはうまくいくのですが、
count.phpからこれと同じ場所にあるデータファイルのcount.datを開こうとして
$fp =@fopen( "count.dat", "r") ;
とすると、
Warning: fopen("count.dat", "r") - No such file or directory in *********/count/count.php on line 42
となってしまいます。includeされたファイルの中で別のファイルを開く場合、パスの表記はどのようにすれば良いんでしょうか?
読み込み元のファイルのディレクトリを基準にするのか、読み込まれたファイルのディレクトリを基準にするのかが分かりません。
と言うより後者ならこれでうまくいくと思うのですが、これだと一つのカウンタで複数ページをカウントさせるのに
面倒な気がするので、もっと良い方法が無いかと探しているのですが…
0497nobodyさん
03/07/25 23:55ID:OQ729f+cネット上によくある、フリーCGIの配布サイトでは時々
「セキュリティホールが見つかったのでバージョンアップしてください」
というようなことが書かれてたりしてますが、
PHPでもセキュリティホールはあるんですか?
あるとしたら、どんなのがまずいんでしょうか
とりあえず、どこかのPHPスレではPHPが「index.php」を吐くのはマズイ、
と書いてありました
フォーム入力を受け付ける、掲示板みたいなものを作る場合、タグを
除去すれば大丈夫ですか?
0499494
03/07/26 00:00ID:???分かりました。その方法でやってみます。
ただ思い付きでいろいろ足して分かんなくなってきたので、
一から書直そうと思いますが。ありがとうございました。
0503nobodyさん
03/07/26 00:08ID:???>>502
PHP自体のセキュリティーホールとヘタレなコーディングによる
セキュリティーホールを混同してない?
「あんめろ」は「あんたには向いてない、やめろ」の意。
(民明書房刊「よくわかるセキュリティホール」より)
0504nobodyさん
03/07/26 00:16ID:???回答ありがとうです
自分が知りたかったのは、へたれなコーディングによる…の方でした
どんなコーディングがマズイのかな、と思って
「あんめろ」身に沁みました
0505nobodyさん
03/07/26 01:21ID:???>とりあえず、どこかのPHPスレではPHPが「index.php」を吐くのはマズイ、
なんでマズイの? 俺、吐き出してる。吐き出してる。
0506あぼーん
NGNG0507あぼーん
NGNG0508nobodyさん
03/07/26 03:13ID:83bOjRPY相当するものはない?
てっきりfileutimeみたいな関数があるだろうと思ってマニュアルを
見てみたがどこを探してもない。
どうやって変えるのだ??
0509nobodyさん
03/07/26 03:37ID:VZ1x6qD8んなこたーない。
"ファイルシステム関数"という章をよく見る。
0510nobodyさん
03/07/26 21:05ID:92eVqrLvhttp://www.hogehoge.com/~hoge/test.php/20030724/2310
↑こんな感じにPHPへデータを渡す方法知りませんか?
test.phpの内容を
<?php
phpinfo(32);
?>
にして結果見てみればわかる。
■ このスレッドは過去ログ倉庫に格納されています