【PHP】初心者コーナー
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。
02/01/21 03:21ID:???仕方ない、人気のないPHPを応援してやる。
データベース禁止 MySQL PostgreSQL はどっかいけ。
純粋にPHPプログラミングだけ。
初歩的な事ならWebProg板の誰かが素早く教える。
もちろんPerlプログラマーも手伝ってくれ。
ほんじゃ質問してみ。
>>2-9 誰か情報かいてくれ。
0079nobodyさん
02/09/25 14:16ID:???008078
02/09/25 16:09ID:O6KkuGrZレスありがとうございます。
logの上はもうドキュメントルートなんで755なんですが、マズいでしょうか。
ちなみに同ディレクトリで動いてる別のperlプログラムでは、
mkdirのパーミッション777が通ります。
008281
02/09/25 16:18ID:???0083nobodyさん
02/09/25 16:30ID:9hFjKUSbPHPもファイルロックには気を使うべきです。
008478
02/09/25 16:35ID:O6KkuGrZんが、実はlogの直下にまたすぐにディレクトリを作りたいんですが、
今度はこいつが通りません。
mdkir("log",0777);で通してるんですが、
実際はパーミッション755でディレクトリが出力されてます。
というかFTPで直接パーミッションを修正しても強制的に755に戻ります。
SafeModeで制限されてるだのという内容のエラーが帰ってきました。
008578
02/09/25 16:41ID:???これについてのPHP中での変更は・・・もう一調べしてきます。
0086nobodyさん
02/09/25 20:55ID:???この$arrayをスマートに、かつ自由なデザインで表示することって出来ますか?
<table>
<tr>
<td>
$array[0]
</td>
</tr>
<tr>
<td>
$array[1]
</td>
</tr>
</table>
みたいに、テーブルに限らず、柔軟な展開というのは、、どうすればいいのでしょうか? ご教授お願いします。
0087nobodyさん
02/09/25 21:19ID:???//<? <select 〜 mutiple>で配列処理して変数$arrayを作った場合 ?>
<table>
<tr>
<td>
<? $array[0] ?>
</td>
</tr>
<tr>
<td>
<? $array[1] ?>
</td>
</tr>
</table>
//こういうこと?
0088nobodyさん
02/09/25 21:38ID:???レスありがとうございますっ!
具体的なことを言うとそうなります。
連番なら何とか出来るぽいんですが、$array[0] $array[2],,,,みたいなのが出てきた場合お手上げです。
地道にif系で書き出さないといけないのかな、、、
0089nobodyさん
02/09/25 22:17ID:???取り出す数を求めて、それによって<tr><td>[$a]</td></tr>の数を決めるようなことをすればいいのかな‥‥
0090nobodyさん
02/09/25 23:02ID:???<table>
<?
for($i=0;$i<100;$i++){
print "<tr><td>";
print "$array[$i]";
print "</td></tr>";
}
?>
</table>
//これは?
0091nobodyさん
02/09/26 08:27ID:???//配列"$array"中に一致条件"aaa"が含まれる場合、$linesに値を追記
foreach($array as $value) if(ereg("aaa", $value)) $lines.="${value}\r\n";
//値が空(一致条件が存在しなかった)の場合
if($lines=="") $lines="一致するデータが有りませんでした\r\n";
//"<pre>"要素内に出力(別に"<ul>"や"<dl>"使っても良い訳ですし)
echo "<pre>$lines</pre>\r\n";
?>
0093hmk(元プロ)
02/09/27 00:46ID:QE9TB9SP> $host= @gethostbyaddr(getenv("REMOTE_ADDR"));
@は確かエラー制御演算子という名前で、
エラーメッセージを出力させないようにするためのものだ。
上記の場合は、gethostbyaddr()がエラーを起こした場合のワーニング
を出なくする働きがあると思われ。
でいいんですよね、プロの皆さん?
0094hmk
02/09/27 01:08ID:QE9TB9SP<table>
<?php
for (reset($array); list(, $value) = each($array);) {
?>
<tr><td><?php echo $value; ?></td></tr>
<?php
}
?>
</table>
0095
02/09/27 04:31ID:2RREwo6L<?php
$str = array('1','2','3');
$str2 = array('10','20','30');
$num = count($str);
for($i=0;$i<$num;$i++){
$val = array($str[$i],$str2[$i]);
$val = implode(" ",$val);
echo $val;
}
?>
だと、1 102 203 30
という表示になってしまいます。
110 220 330と表示させるにはどうしたらいいでしょうか?
よろしくお願いします。
0096hmk
02/09/27 04:45ID:???<?php
$str = array('1','2','3');
$str2 = array('10','20','30');
for (reset($str), reset($str2); list($i,) = each($str);) {
echo $str[$i] . $str2[$i] . ' ';
}
?>
0097nobodyさん
02/09/27 12:02ID:???$str = array('1','2','3');
$str2 = array('10','20','30');
$num = count($str);
for($i=0;$i<$num;$i++){
echo $str[$i].$str2[$i].' ';
}
?>
0098hmk
02/09/27 15:33ID:???$str = array('1','2','3');
$str2 = array('10','20','30');
for (reset($str), reset($str2); list($i,) = each($str);) {
$str3[] = $str[$i] . $str2[$i];
}
echo implode(' ', $str3);
?>
0099nobodyさん
02/09/27 21:10ID:???$str = array('1','2','3');
$str2 = array('10','20','30');
$num = count($str);
for($i=0;$i<$num;$i++){
$val .= $str[$i].$str2[$i].' ';
}
echo"$val";
?>
0101nobodyさん
02/09/27 22:13ID:ShlRmfg7http://www.php.net/downloads.php
ここには4.2.3があるけど4.2.2がいいんで、教えて偉い人。
0102101
02/09/27 22:15ID:ShlRmfg70103nobodyさん
02/09/27 23:21ID:???0104101
02/09/28 00:19ID:uj+xgRhi0105nobodyさん
02/10/11 01:12ID:1pjL9YYatest.phpの中で$emailにデータベースから取り出したメールアドレスを
格納し、
<form method="post" action="./mail.php">
<input type="hidden" name="mail" value=$email>
・・・・</form>
というふうに、inputでアドレスをメール関数に渡しているのですが、
これだとソースにメールアドレスが表示されてしまうため、
ソースに表示されない別の渡し方があれば教えてください。
0106nobodyさん
02/10/11 01:26ID:ZQEK3Po2$_SESSION[mail]=データベースから取り出したメールアドレス
mail.php
メール関数に$_SESSION[mail]を渡す
0107nobodyさん
02/10/11 09:33ID:abgKHNAE$ipのIPを(例:211.126.27.101→211.126.27.*に)置換するには
どうやればいいのでしょう?
0108107
02/10/11 09:47ID:abgKHNAE$x = substr($myip,0,12);
$z = ereg_replace("[0-9]{1,3}","*", $y);
$w = $x.$z;
一応、↑でできたのですが、もっといい方法はありますか?
0109107
02/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:???$x = "$ip[0].$ip[1].$ip[2].*";
0112nobodyさん
02/10/11 10:17ID:???$ip = ereg_replace("[[:digit:]]+$", "*", getenv("REMOTE_ADDR"));
0113105
02/10/11 18:19ID:nZwz8aye返答ありがとうございます。
とりあえず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はグローバル変数だと思っていたのですが、違うのでしょうか?
使い方が誤っていたらご指摘お願いします。
0114bloom
02/10/11 18:21ID:zzYfW1z9http://homepage.mac.com/leverage/
0115106
02/10/11 18:40ID:???<?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>
どうやれば天国にいけるでしょう。
0116105
02/10/11 19:44ID:???神よ、有難うございます。
$_SESSIONは大文字でないといけないのですね。
あなたの未来に幸多からんことを…
0117nobodyさん
02/10/12 15:01ID:SMl4F7k6JacaScriptに慣れてる人、ちょっとJavaをかじった人が、そんなに難しく
ないCGIをやる場合、Perlでしょうか?PHPでしょうか?
0118nobodyさん
02/10/12 15:43ID:???JSP&Servletが良いのでは
じゃなくて、使ったことが無い言語を覚えるのが
苦痛でなければ、どっちでも良いと思う。
あとは、コーディングしてみて自分に合ってる方を
選べばいい
0120nobodyさん
02/10/13 00:40ID:LvGYJMzQどうも失敗するのですが。
0121nobodyさん
02/10/13 00:52ID:???コードミスだったです。
お騒がせしてスミマセン
0122nobodyさん
02/10/13 09:03ID:i/uPn3q6<?
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_register("data1");
$data1++;
echo "$data1";
0124nobodyさん
02/10/21 23:06ID:???つーわけでage.
0125nobodyさん
02/10/21 23:33ID:???0126nobodyさん
02/10/22 07:43ID:ZX80GK7sアフォでスマソ
0129nobodyさん
02/10/22 09:40ID:???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:???そのtest.bin削除して、メモ帳で書いてもういっぺんやってみ。
0132nobodyさん
02/10/22 12:06ID:???0133nobodyさん
02/10/22 12:26ID:???<?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データを保存する際、普通のファイルよりもデータベースファイルの方が良いのでしょうか。
またその場合データベースを扱ってみたいんですが、分かり易いサイトなど紹介してもらえないでしょうか。
よろしくお願いします。
0136nobodyさん
02/10/22 22:06ID:???【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以下のを扱うとかいうのは違うすか?
つか、何がしたいのかさっぱりわかりませんずら。詳細キボンヌ
0139hmk
02/10/24 00:38ID:???私なら、配列を使います。例えば、
<?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で最大値を渡してもできる。
用途に応じて、使いやすい方法でいくのがよいでしょうかね。
0140137
02/10/24 10:40ID:???レスどもです。
わたしの意図するところは伝わったようですが
自分なりの常識を押し付けるような書き方になってしまいました。
反省してます。
念のため
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:???<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:???勉強するために本を買おうと思ってるのですがPHP3なんです。
「プロフェッショナルPHPプログラミング」という本なのですが。
しかしサーバーがPHP4なので大丈夫かな?と思い質問させていただきました。
0143nobodyさん
02/10/27 09:48ID:???その本PHP4.0.4で動作確認してるって書いてるよ。おすすめかも。
おれならマンモンス本の赤と青を買うな。
詳しくしりたいなら -> PHP関連の書籍(但しPHP出版系お断り)
http://pc.2ch.net/test/read.cgi/php/985315574/l50
0144nobodyさん
02/10/28 15:24ID:uGqL/qit普通のテキストファイルよりもデータベースファイルに保存した方がいいんでしょか。
管理し易いとか速いとか。。。
0145nobodyさん
02/10/28 18:42ID:b7KIhGgzデータの出し入れはデータベースの方が圧倒的に便利です。
0146144
02/10/28 18:47ID:uGqL/qitデータベースファイルを扱う場合、
やっぱりMySQLとかインストールしないと無理なんですか。
0147nobodyさん
02/10/28 19:02ID:???0148nobodyさん
02/10/28 22:02ID:???0150nobodyさん
02/10/28 22:28ID:???ホワイトベースを扱う場合、
やっぱりブライト艦長とかインストールしないと無理なんですか。
0152○
02/11/02 16:40ID:sGSys/RS0153nobodyさん
02/11/02 18:08ID:KWT88uG8「PHPメール」って、何?
0154名無し募集中。。。
02/11/03 01:13ID:dBGKbheQ「if」をつかって、日ごとに違う文章を表示させたいのです。
もし「11/03」ならば「今日は11月3日なわかけだが」
もし「11/04」ならば「今日もお休みで(・∀・)イイ!!」
もし「11/05」(略
表示させる文章は自分で適当に書くだけです。
ようは、日付を使ってどうやって「if」を使えばいいかを知りたいのです。
よろしくおねがいします☆ミ
0155nobodyさん
02/11/03 02:18ID:pFxZ0WjN0159nobodyさん
02/11/03 03:53ID:???別にすごいから秘密にしたいってわけじゃないよ。
2chに書き込みをするスクリプトなんだけど
いたづらで悪用されたら、こまるから、
秘密にできたらいいなって思ってん。
0162nobodyさん
02/11/03 04:20ID:???ただZend Encoderと違って速くはならないらしいけど
0163nobodyさん
02/11/03 04:53ID:???APC (ALTERNATIVE PHP CACHE) というのかな?
でもこれって実行側で環境をインストールせやなあかんみたい。
これやと逆にユーザ対象が狭まれ過ぎて、配付する意味がなくなるわ…。
それに少し古いみたいで、惜しい。
0164nobodyさん
02/11/04 22:59ID:???./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もう一度、マニュアルを読んでみよう。
file()は、\nを除去しないと書いてあるよ。
よって、trim()でもつかうのがよろし。
0166165
02/11/05 10:24ID:iexiejZJあと、subject.txtに「表示させたいログファイル名」ではなくて、
「現在存在するログファイル名」だけがかいてあるのなら
./dat/を直接readdir()した方が楽でない?
0168nobodyさん
02/11/05 16:50ID:???pear/PECL/APCに最新版があるヨ
pear/PECL/APC Cache機能
pear/PECL/APD Debug機能というかプロファイラ
pear/PECL/OPC Optimizer機能(今日レポジトリが出来たみたい-まだ枠組みだけだけど)
これからが楽しみ :)
0169nobodyさん
02/11/05 16:59ID:???ありがとうございます!
> 改行記号はついたままと なります。
て書いてましたね・・汗
ついでにtrim()の存在も知らなかったので大変勉強になりました〜! ありがとうございました!
0170164
02/11/05 17:03ID:???readdir()ってディレクトリの見えないディレクトリで使えるかどうか分からなかったので頭に入れてなかったっす。
あとでちょっち試してみます。
0171nobodyさん
02/11/05 18:02ID:WIPa8/Vj半角スペースや「"」などの文字が含まれているとそれ以降が消えてしまいます
addslashesを使って「\"」にエスケープしても「\\」と文字化けします
どうやってデータを渡せばよいのでしょうか?
0172nobodyさん
02/11/05 20:25ID:Dn6gflHKphp.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すみませんちょっと説明不足だったようですが
勝手にエスケープされたものをstripslashes()で取り除いても
正常に受け渡しができなくなります。
「aaa"bbb"」→POST→「aaa」
「aaa\"bbb\"」→POST→「aaa\\」
フォームからは正常にエスケープされた文字列が受信できます
環境がおかしいのでしょうか?
対策としては正常に受け渡しできる文字に置換して
受信側で元の文字に戻すということですけど・・・
0174nobodyさん
02/11/05 21:28ID:???0175nobodyさん
02/11/06 01:26ID:EhYZ0bVtサーバースペースはまだ探していないので、local環境で始めてみたいです。
OSはWindows2000かLinux(Red Hat)です。
とりあえずwin2kでやってみようと思って、
phpdevやphpのインストーラ(win用)は落としてみたのですが、
使い方がいまいちわかりません。
初心者は何から始めればよいのでしょうか?
0177173
02/11/06 07:19ID:yWgDH7Dp4.2.2に戻してみましたがかわりませんでした・・・
■ このスレッドは過去ログ倉庫に格納されています