トップページ⇒php
986コメント299KB

【PHP】初心者コーナー 

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。02/01/21 03:21ID:???
長島も阪神のコーチになった。
仕方ない、人気のないPHPを応援してやる。 

データベース禁止 MySQL PostgreSQL はどっかいけ。
純粋にPHPプログラミングだけ。
初歩的な事ならWebProg板の誰かが素早く教える。
もちろんPerlプログラマーも手伝ってくれ。
ほんじゃ質問してみ。

 >>2-9 誰か情報かいてくれ。
010210102/09/27 22:15ID:ShlRmfg7
なんか変な文章だ・・・
0103nobodyさん02/09/27 23:21ID:???
下に4.2.2あるよ。
010410102/09/28 00:19ID:uj+xgRhi
確認不足で申し訳ない。
0105nobodyさん02/10/11 01:12ID:1pjL9YYa
質問です。
test.phpの中で$emailにデータベースから取り出したメールアドレスを
格納し、
<form method="post" action="./mail.php">
<input type="hidden" name="mail" value=$email>
・・・・</form>
というふうに、inputでアドレスをメール関数に渡しているのですが、
これだとソースにメールアドレスが表示されてしまうため、
ソースに表示されない別の渡し方があれば教えてください。

0106nobodyさん02/10/11 01:26ID:ZQEK3Po2
test.php
$_SESSION[mail]=データベースから取り出したメールアドレス

mail.php
メール関数に$_SESSION[mail]を渡す
0107nobodyさん02/10/11 09:33ID:abgKHNAE
$ip = getenv("REMOTE_ADDR");

$ipのIPを(例:211.126.27.101→211.126.27.*に)置換するには
どうやればいいのでしょう?
010810702/10/11 09:47ID:abgKHNAE
$y = substr($myip,12,3);
$x = substr($myip,0,12);
$z = ereg_replace("[0-9]{1,3}","*", $y);
$w = $x.$z;

一応、↑でできたのですが、もっといい方法はありますか?
010910702/10/11 09:49ID:???
訂正です。
$x = substr($ip,0,12);
$y = substr($ip,12,3);
$z = ereg_replace("[0-9]{1,3}","*", $y);
$w = $x.$z;
0110nobodyさん02/10/11 09:54ID:???
$ip = split('\.', getenv("REMOTE_ADDR"));
$x = "$ip[0].$ip[1].$ip[2].*";
011110702/10/11 10:07ID:???
>>110
すごい!こんなに簡単にできるんですね
ありがとうございます!
0112nobodyさん02/10/11 10:17ID:???
正規表現一発で済ませろ。
$ip = ereg_replace("[[:digit:]]+$", "*", getenv("REMOTE_ADDR"));
011310502/10/11 18:19ID:nZwz8aye
>106
返答ありがとうございます。
とりあえずsessionを使ってみたところ

test.php
<?
session_start();
$_session[email]=メールアドレス;
<form method="post" action="./mail.php">
<input type="hidden" name="mail" value=$email>
・・・・</form>
?>
ここで$_session[email]に正しいアドレスが入ってる事を確認。

mail.php
<?
session_start();
echo "$_session[email]";
?>
しかしここでは何も値が入っていませんでした。
sessionはグローバル変数だと思っていたのですが、違うのでしょうか?
使い方が誤っていたらご指摘お願いします。
0114bloom02/10/11 18:21ID:zzYfW1z9

http://homepage.mac.com/leverage/
011510602/10/11 18:40ID:???
hellosessionfrom.php
<?php
session_start();
$_SESSION[hell]="Hello,HellWorld!\n";
$_session[heaven]="Hello,HeavenWorld!\n";
?>
<html><head><title></title></head><body>
<a href="hellosessionto.php">hellosession</a>
</body></html>

hellosessionto.php
<?php
session_start();
?>
<html><head><title></title></head><body>
<?php
echo $_SESSION[hell];
echo $_session[heaven];
?>
</body></html>

どうやれば天国にいけるでしょう。
011610502/10/11 19:44ID:???
>106
神よ、有難うございます。
$_SESSIONは大文字でないといけないのですね。
あなたの未来に幸多からんことを…
0117nobodyさん02/10/12 15:01ID:SMl4F7k6
全くのショッシーでスマソ。
JacaScriptに慣れてる人、ちょっとJavaをかじった人が、そんなに難しく
ないCGIをやる場合、Perlでしょうか?PHPでしょうか?
0118nobodyさん02/10/12 15:43ID:???
>>117
JSP&Servletが良いのでは
じゃなくて、使ったことが無い言語を覚えるのが
 苦痛でなければ、どっちでも良いと思う。
 あとは、コーディングしてみて自分に合ってる方を
 選べばいい
0119nobodyさん02/10/12 18:05ID:???
>>117
何でも問題ないと思うがphpスレッツウ事でPHPをおすすめしとく。
0120nobodyさん 02/10/13 00:40ID:LvGYJMzQ
PHPファイルにJavaScriptは使えないですか?
どうも失敗するのですが。
0121nobodyさん02/10/13 00:52ID:???
出来ますた。
コードミスだったです。
お騒がせしてスミマセン
0122nobodyさん02/10/13 09:03ID:i/uPn3q6
php 4.0.6 WinXP です。

<?
session_start();
session_register("data1");
$data1 = 1;
?>
<html><body><a href="./test2.php">表示</a></body></html>

結果
Warning: open(/tmp\sess_cd8624e6e06d93e2625bddd88f204896, O_RDWR) failed: m (2) in c:\phpdev\www\phpdev4\q.php on line 2
表示

php.int設定
session.save_path = "c:\windows\temp\"

どなたか教えて下さい。
0123nobodyさん02/10/13 22:21ID:???
session_start();
session_register("data1");
$data1++;
echo "$data1";
0124nobodyさん02/10/21 23:06ID:???
なんだ、PHPにも初心者スレがあったのね。
つーわけでage.
0125nobodyさん02/10/21 23:33ID:???
おうよ。アホみたい質問はこっちでよろしく。
0126nobodyさん02/10/22 07:43ID:ZX80GK7s
PHPマニュアルにdisk_free_spaceの例文が載ってるんですが、使い方がわかりません。
アフォでスマソ
0127nobodyさん02/10/22 08:20ID:???
>>126
ディスクのパーティションの空き容量がわかる。
0128nobodyさん02/10/22 09:02ID:???
>>125

ホント「アホみたいな質問」ですね。
例文見て使い方が分からないなんて。(w
0129nobodyさん02/10/22 09:40ID:???
>>128
PHPの事なら何でもいいじょ。


【PHP】初心者コーナー
http://pc.2ch.net/test/read.cgi/php/1011550860/l50


0130nobodyさん02/10/22 11:29ID:nuvCZH1t
超初心者な質問ですみません。
バイナリデータをファイルに書き出す方法がわかりません。
たとえば単純に「ゼロが10バイト並んだファイル」を作るために
$fp = fopen ("test.bin", "w");
for ($n = 0; n < 10; $n++) {
fwrite($fp, 0, 1);
}
fclose($fp);
としてみたら「ゼロ」ではなく「0x30」つまり「ゼロの文字コード」が
10個並んだファイルができてしまいました。
「ゼロが10バイト並んだファイル」はどうやって作ればいいのでしょうか?
どなたか教えてください。
0131nobodyさん02/10/22 11:59ID:???
n < 10 を $n < 10 で、0000000000できたよ。
そのtest.bin削除して、メモ帳で書いてもういっぺんやってみ。
0132nobodyさん02/10/22 12:06ID:???
バイナリかー。
0133nobodyさん02/10/22 12:26ID:???
>>130
<?php
$fp = fopen ("test.bin", "wb");
for ($n = 0; $n < 10; $n++) {
fwrite($fp, "\x00", 1);
}
fclose ($fp);
?>
0134nobodyさん02/10/22 21:31ID:n3viipFn
PerlからPHPに移ったんですが、データベースのことがよく分かりません。
データを保存する際、普通のファイルよりもデータベースファイルの方が良いのでしょうか。
またその場合データベースを扱ってみたいんですが、分かり易いサイトなど紹介してもらえないでしょうか。
よろしくお願いします。
0135hmk02/10/22 21:45ID:???
>>134 スレ違い。PHP + PostgresSQLスレあたりに逝け。
0136nobodyさん02/10/22 22:06ID:???
>>134
【PHP】初心者コーナー では、
PHPの初心者クラスのアホな質問を受け付けております。

PHP + MySQL
http://pc.2ch.net/test/read.cgi/php/983250751/l50

PHP + PostgreSQL
http://pc.2ch.net/test/read.cgi/php/983128806/l50
0137nobodyさん02/10/23 19:59ID:???
例えば

$count = 動的パラメタ...として


for($i;$i<=$count;$i++){
print '<input type=text name=count_'.$i.'>input_'.'$i.'<br>';
}

...で複数のテキストフィールドを動的に作った場合
このテキストフィールドのパラメタを全て回収するには
どすればよいでしょうか?
0138nobodyさん02/10/23 20:48ID:???
動的パラメタって数値なんすか?
forで回してるから$countは123・・・順の最高値なんすか?
<input type=hidden name=count value=$count>で渡して、
受けたら$count以下のを扱うとかいうのは違うすか?
つか、何がしたいのかさっぱりわかりませんずら。詳細キボンヌ
0139hmk02/10/24 00:38ID:???
>>137
私なら、配列を使います。例えば、

<?php for ($i = 1; $i <= $count; $i++) { ?>
<input type="text" name="cnt[<?php echo $i; ?>]">input_<?php echo $i; ?><br>
<?php } ?>

このようなフォームにしておけば、

<?php
for (reset($cnt); list($k, $v) = each($cnt);) {
// このようにして後で回収できます。
}
?>

138の言うようにhiddenで最大値を渡してもできる。
用途に応じて、使いやすい方法でいくのがよいでしょうかね。
014013702/10/24 10:40ID:???
>>137-138
レスどもです。
わたしの意図するところは伝わったようですが
自分なりの常識を押し付けるような書き方になってしまいました。
反省してます。

念のため
php のversion は4.2.3
php.ini のregister_grobals=Off
そのため、フォームから渡されたパラメタは
$param_name=$HTTP_GET_VARS['param_name']
で回収する必要があります。
当初、これをfor でまわして

for($i=1;$i<=$count;$i++){
$param_name[$i]=$HTTP_GET_VARS['param_name[$i]']
}

とできると思ったのですがダメでした。
外部フォームからの変数が格納されている配列
また、その配列から要素を抜き出す方法を教えてください。
0141nobodyさん02/10/24 11:10ID:???
PHPはFORMのnameに配列が使えます。
<form action="<?=$_SERVER[PHP_SELF]?>">
<?php
$count = 10;
for($i = 0;$i<=$count;$i++){
print "<input type=text name=param[]>input_".$i."<br>\n";
}
print '<input type="submit"><br>'
for($i = 0;$i<=$count;$i++){
print "param".$i."=".$_GET[param][$i]."<br>\n";
}
0142nobodyさん02/10/26 20:59ID:???
PHPでBBSを作ろうと思い、
勉強するために本を買おうと思ってるのですがPHP3なんです。
「プロフェッショナルPHPプログラミング」という本なのですが。
しかしサーバーがPHP4なので大丈夫かな?と思い質問させていただきました。
0143nobodyさん02/10/27 09:48ID:???
>>142
その本PHP4.0.4で動作確認してるって書いてるよ。おすすめかも。
おれならマンモンス本の赤と青を買うな。
詳しくしりたいなら -> PHP関連の書籍(但しPHP出版系お断り)
http://pc.2ch.net/test/read.cgi/php/985315574/l50
0144nobodyさん02/10/28 15:24ID:uGqL/qit
PHPでデータをファイルに保存するとき、
普通のテキストファイルよりもデータベースファイルに保存した方がいいんでしょか。
管理し易いとか速いとか。。。
0145nobodyさん02/10/28 18:42ID:b7KIhGgz
>>144
データの出し入れはデータベースの方が圧倒的に便利です。
014614402/10/28 18:47ID:uGqL/qit
厨な質問でスマソ
データベースファイルを扱う場合、
やっぱりMySQLとかインストールしないと無理なんですか。
0147nobodyさん02/10/28 19:02ID:???
当 た り 前 だ の ク ラ ッ カ ー
0148nobodyさん02/10/28 22:02ID:???
お そ れ 入 谷 の 鬼 子 母 神
0149nobodyさん02/10/28 22:03ID:???
>>146
PHPが無くてもPHPは動きますでしょうか?無理なんですか。


        当 た り 前 だ の ク ラ ッ カ ー

0150nobodyさん02/10/28 22:28ID:???
厨な質問でスマソ
ホワイトベースを扱う場合、
やっぱりブライト艦長とかインストールしないと無理なんですか。
0151nobodyさん02/10/29 02:21ID:???
>>150
さむっ。
0152○02/11/02 16:40ID:sGSys/RS
PHPメールで受信したデータをオートで送信するのは可能ですか?
0153nobodyさん02/11/02 18:08ID:KWT88uG8
>>152
「PHPメール」って、何?
0154名無し募集中。。。02/11/03 01:13ID:dBGKbheQ
リア厨ですいません。
「if」をつかって、日ごとに違う文章を表示させたいのです。

もし「11/03」ならば「今日は11月3日なわかけだが」
もし「11/04」ならば「今日もお休みで(・∀・)イイ!!」
もし「11/05」(略


表示させる文章は自分で適当に書くだけです。
ようは、日付を使ってどうやって「if」を使えばいいかを知りたいのです。

よろしくおねがいします☆ミ
0155nobodyさん02/11/03 02:18ID:pFxZ0WjN
PHPのソースを秘密にして、配付する方法はありますか?
0156nobodyさん02/11/03 02:55ID:???
>>155
Zend Encoder 使えばできるよ。
ただし $2400
初心者と言うか貧乏人には無理です。
0157nobodyさん02/11/03 03:04ID:???
>>156
教えてくれて、ありがとう。お金持ちになりたい…。
0158nobodyさん02/11/03 03:43ID:???
>>155

秘密にする必要があるくらいスンゴイのが作れるなら
キミはきっと金持ちになれるよ。
0159nobodyさん02/11/03 03:53ID:???
>>158
別にすごいから秘密にしたいってわけじゃないよ。
2chに書き込みをするスクリプトなんだけど
いたづらで悪用されたら、こまるから、
秘密にできたらいいなって思ってん。
0160nobodyさん02/11/03 04:17ID:???
>>159
> 2chに書き込みをするスクリプトなんだけど

悪用以外に用途が思い浮かばない。
0161nobodyさん02/11/03 04:19ID:???
>>160
えー嘘やん。そんなん、もう公開してるし、どうしよう。
0162nobodyさん02/11/03 04:20ID:???
フリーでエンコード出来るやつがあった気がする
ただZend Encoderと違って速くはならないらしいけど
0163nobodyさん02/11/03 04:53ID:???
>>162
APC (ALTERNATIVE PHP CACHE) というのかな?
でもこれって実行側で環境をインストールせやなあかんみたい。
これやと逆にユーザ対象が狭まれ過ぎて、配付する意味がなくなるわ…。
それに少し古いみたいで、惜しい。
0164nobodyさん02/11/04 22:59ID:???
質問させていただきます〜bbsなスクリプトを作ってます。

./foo.php  (メインファイル)
./subject.txt  (現在存在するログファイル名が書いてある。 一行に一個。)
./dat/xxxxxxxx.dat  (subject.txtに書いてあるログファイル)

subjectのarray[i]を読んで、そこに書かれてるxxxxx.datてゆーのをdatディレクトリから探して表示、
を繰り返すわけなのですが、、、、

Warning: file("./dat/1036411589.dat ") - Invalid argument in 〜
とゆーような感じでdatのあとに半角スペースが入ってしまうんです。 よって読めないと。

ereg_replace()してもダメでした・・・
配列の仕様ってヤツなのでしょうか? そして回避法はあるんでしょうか?
お願いします。
0165nobodyさん02/11/05 10:20ID:iexiejZJ
subject.txtの内容をfile()で配列にしているのなら、
もう一度、マニュアルを読んでみよう。
file()は、\nを除去しないと書いてあるよ。
よって、trim()でもつかうのがよろし。
016616502/11/05 10:24ID:iexiejZJ
>>164
あと、subject.txtに「表示させたいログファイル名」ではなくて、
「現在存在するログファイル名」だけがかいてあるのなら
./dat/を直接readdir()した方が楽でない?
0167名無しさん02/11/05 16:04ID:???
>>163
CVSから最新版とってこれたような。
0168nobodyさん02/11/05 16:50ID:???
>>167
pear/PECL/APCに最新版があるヨ

pear/PECL/APC Cache機能
pear/PECL/APD Debug機能というかプロファイラ
pear/PECL/OPC Optimizer機能(今日レポジトリが出来たみたい-まだ枠組みだけだけど)

これからが楽しみ :)
0169nobodyさん02/11/05 16:59ID:???
>>165-166
ありがとうございます!

> 改行記号はついたままと なります。
て書いてましたね・・汗
ついでにtrim()の存在も知らなかったので大変勉強になりました〜! ありがとうございました!
017016402/11/05 17:03ID:???
レス漏れ
readdir()ってディレクトリの見えないディレクトリで使えるかどうか分からなかったので頭に入れてなかったっす。
あとでちょっち試してみます。
0171nobodyさん02/11/05 18:02ID:WIPa8/Vj
文字列をPOSTで別のPHPスクリプトに送るとき
半角スペースや「"」などの文字が含まれているとそれ以降が消えてしまいます
addslashesを使って「\"」にエスケープしても「\\」と文字化けします
どうやってデータを渡せばよいのでしょうか?
0172nobodyさん02/11/05 20:25ID:Dn6gflHK
>>171
php.iniでmagic_quotes_gpcがonになっていると、
COOKIE,POST,GETで渡された値の中の
これらの文はは勝手にエスケープされる。

ので、
php.ini でmagic_quotes_gpc = off
にするか、
.htaccessで
php_flag magic_quotes_gpc off
にする。

あと、stripslashes() という函数もあったような;
0173nobodyさん02/11/05 20:55ID:WIPa8/Vj
>172
すみませんちょっと説明不足だったようですが
勝手にエスケープされたものをstripslashes()で取り除いても
正常に受け渡しができなくなります。
「aaa"bbb"」→POST→「aaa」
「aaa\"bbb\"」→POST→「aaa\\」
フォームからは正常にエスケープされた文字列が受信できます
環境がおかしいのでしょうか?
対策としては正常に受け渡しできる文字に置換して
受信側で元の文字に戻すということですけど・・・
0174nobodyさん02/11/05 21:28ID:???
PHPのVerが4.2.3の場合はバグ
0175nobodyさん02/11/06 01:26ID:EhYZ0bVt
PHPを1から始めたいのですが、何から始めればよいですか?
サーバースペースはまだ探していないので、local環境で始めてみたいです。

OSはWindows2000かLinux(Red Hat)です。

とりあえずwin2kでやってみようと思って、
phpdevやphpのインストーラ(win用)は落としてみたのですが、
使い方がいまいちわかりません。

初心者は何から始めればよいのでしょうか?
0176nobodyさん02/11/06 01:31ID:???
>>175
ApacheかIISかAnHTTPD
017717302/11/06 07:19ID:yWgDH7Dp
>174
4.2.2に戻してみましたがかわりませんでした・・・
0178PHP ◆DQN/AO/IPw 02/11/06 09:25ID:???
>>175
PHPは1から始めるよりも4から始めた方がいい。
017917302/11/06 17:19ID:???
やっと自己解決
htmlspecialcharsで変換してPOSTすれば
消えずに送信できました
0180nobodyさん02/11/07 11:41ID:QEt0uw4x
PHPでPerlのHTML::Templateみたいなライブラリってないでしょうか
単純な置き換えだけでなくてIFとかLOOPとかあるような・・・
0181nobodyさん02/11/07 11:59ID:Go7yQUbZ
>>180
while (hoge) {
?>
aaaa
<?php
}
0182nobodyさん02/11/07 12:29ID:???
>>180
Smarty
0183nobodyさん02/11/08 01:14ID:Veqht0/Q
>>175
PHPを始めたいとのことですが、やはり「なぜPHPを始めるの?」
という質問に答えられるかどうかがポイントではないでしょうか?
その答えがご自分の中にあるのであれば、それに必要な処理や道筋を
立てて、そのプロセスに必要な関数や仕組みを試行錯誤でやることです。
そうすれば、徐々に覚えることができます。
0184nobodyさん02/11/09 07:47ID:???
Webサイト制作初心者スレで質問したところ、こちらで聞いてみろと
促されたので質問させて下さい。↓は初心者スレからのコピペです。

現在、XHTMLで表示部分を記述しているCGIスクリプトが少ないので
自分でスクリプトを作ってみようと思っています。しかし、色々と
検索しているとPerlよりもPHPの方が動作も軽くていいようなので
PHPでスクリプトを作ろうかと思ったのですが、HTML(XHTML)以外
知らない人間がいきなりPerlではなくPHPを覚えようというのは
無謀なのでしょうか?下らない質問ですみませんが教えて下さい。

#Jsは多少知っています。
0185nobodyさん02/11/09 10:59ID:X+rmQU/4
>>184
こういう本で勉強
http://www.gihyo.co.jp/books/syoseki.php/4-7741-1321-2

そのあとはPHPのオンラインマニュアルを見れば簡単に書ける

何事も基礎が大事
0186nobodyさん02/11/09 11:14ID:E2/H+5gT
>>184
PHPとても簡単
0187nobodyさん02/11/09 11:24ID:???
>>185
>何事も基礎が大事
言われて納得。確かにそうですよね。ありがとう御座います。
PHPやPerlの前に基礎の基礎をしっかり固めたいと思います。
0188連続ですみません02/11/09 11:26ID:???
>>187
そう言えるように頑張ります。
0189nobodyさん02/11/09 11:39ID:rznkVAE5
どこで訊いて良いのか判らないので取り敢えずここに来ました。
サイトを見るのにパスワードとユーザ名を要求されるようになってしまいました。
知らないうちに会員制に移行してたらしいのです。
こうなった以上、もう見るのは不可能なんでしょうか?
0190nobodyさん02/11/09 12:14ID:???
会員になれば閲覧できるでせう。
0191nobodyさん02/11/10 11:26ID:QiAM6QEO
if(eregi("(サポート)", $name)){
echo '管理人の名前は使用できません。';
}

サポートと言う文字を入れると
Warning: REG_EBRACK: in C:\test.php on line 296
みたいなエラーが出るのですがなんででしょうか?
管理人やWebmasterではちゃんと表示されるんですが。
0192nobodyさん02/11/10 11:29ID:???
Shift_JISだと「ー」でひっかかったりするけど
019319102/11/10 12:27ID:???
>>192
どうやら長音記号「ー」のせいみたいですね。
メーリングリストに同じような話題が出ていました。
http://ns1.php.gr.jp/pipermail/php-users/2001-December/004497.html
019419102/11/11 05:10ID:???
stristr関数を使えばとりあえずOKだって事にさっき気が付きました。
0195nobodyさん02/11/22 03:31ID:klMrTIO/
質問です。例えば
SELECT CODE, NAME FROM TABLE1 ORDER BY CODE
とポスグレに流したら、100件帰ってきます。

PHP3で pg_Result($rtn, 80, name)ってすると、80番目が帰ってきますよね。
この時、ポスグレのカーソルは先頭から80回フェッチしているんですか?
0196nobodyさん02/11/22 11:25ID:???
perlから移行中なんですが、ちょっと疑問があります。
print と echo は、まったく同じものでしょうか?
ちょっと違うのかな? 
どっちでもいい事かもしれませんが気になりまして
0197nobodyさん02/11/22 12:31ID:???
>>196

激しく既出。
0198nobodyさん02/11/22 12:55ID:???
>>197
おい、既出みたけど答えになってないぞ。
気になるな。
0199nobodyさん02/11/22 13:01ID:???
だって、このスレは初心者が答えてるんだもん。
0200nobodyさん02/11/22 14:15ID:???
>>196
echo がいいと思う。
たぶんprintとechoの挙動が違うのは連結の時違うと思います。
0201nobodyさん02/11/22 14:46ID:2PtBJ1DA
>>196
printは関数。echoは文
echoは()がいらないので多用している。
■ このスレッドは過去ログ倉庫に格納されています