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

【PHP】初心者コーナー 

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001名無しさん@お腹いっぱい。02/01/21 03:21ID:???
長島も阪神のコーチになった。
仕方ない、人気のないPHPを応援してやる。 

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

 >>2-9 誰か情報かいてくれ。
0850nobodyさん03/03/17 03:56ID:???
>>843
そんなもの防ぐ必要がない。
parseエラーなんか、出たら修正すればいい。
メッセージちゃんと読めばすぐ見つけれるようになる。
エラーメッセージ嫁!
0851nobodyさん03/03/17 10:57ID:???
エラーメッセージを無駄な情報だと思ってる奴は正直プログラマに向いてない。

0852 ◆AngelH/kMI 03/03/17 15:52ID:???
まあ、parse errorに関しては
色分けしてくれるエディタ使うとか
マメにphp -lでエラーチェックするとか
予防は出来るけどそれ以上は無理だね。

ま、書いてる本人のミスなわけだし。

自分もついさっき
$db->query("SELECT * FROM hoge WHERE user = '111');
と最後の"を書き忘れ、かなり長時間悩んじゃったよ(苦笑
0853nobodyさん03/03/17 15:55ID:???
>>851
2chを無駄な情報だと思ってない漏れは、プログラマに向いてますか?
0854nobodyさん03/03/17 16:52ID:eIaELJZp
imap_openを使いたいのですがundefined…というエラーが出てきます。
どうすれば使えるようになるのでしょうか。。
0855nobodyさん03/03/17 17:03ID:???
>>853
最高っす!
0856nobodyさん03/03/17 17:03ID:???
つぅかコンパイルエラーごときで質問しに来てんじゃねぇよぼけ。
0857nobodyさん03/03/17 17:04ID:???
エラーを出すような人は正直プログラマに向いていない。
085885403/03/17 17:04ID:eIaELJZp
環境はWin2kでPHP4.3.1とApache1.3.27です。
085985403/03/17 17:09ID:eIaELJZp
解決しますた。
>http://goinkyo.parfait.ne.jp/script/a_php.shtml#extension
0860nobodyさん03/03/17 18:22ID:???
>>857
んなこたーない。
0861nobodyさん03/03/17 20:02ID:???
外部ファイルから引っ張る時、
<?php
function test(){
?>
aiueo
<?php
}
?>
というのと、
<?php
function test(){
print <<<END
aiueo
END;
}
?>
どっちが便利?
0862nobodyさん03/03/17 21:54ID:???
>>861
上はだめじゃない?
0863nobodyさん03/03/17 22:00ID:???
すまん。だめじゃなかった。でも上はきらい。
0864nobodyさん03/03/17 22:08ID:???
>>861
外部ファイルを引っ張るとき...? ってのが意味不明だが、

秀丸を使っていると、上は色分けをしてくれるのでいいが、
中に変数をそのまま埋め込みできる下を多用してます。
0865nobodyさん03/03/17 22:31ID:???
秀丸いいね
おでは先週くらいから、Emacsにphp-mod.el組みこんで
使ってるんだが、おでがへぼいんでEmacsのパフォーマンスを
引き出せないので悲しい、Emacs使いこなせたらなんでもできそう
な気になりまふでも秀丸のLinux板がでたらそっち使うが
まぁ絶対にありえないだろうけど。
0866nobodyさん03/03/17 22:32ID:???
>>861
ていうかロジックとビューの分離くらいしろよ。と。
0867nobodyさん03/03/17 23:00ID:???
質問します
2チャンネルで字下げするのどうしたらできまふか?
おいらも861みたいになちゃうんだよね。
0868nobodyさん03/03/17 23:12ID:???
        めんどいな。
0869nobodyさん03/03/18 00:12ID:???
ランダムな8桁の英数字(大文字小文字も使いたい)をPHPで発生させたいんだが
どちたらできるの?
マニュアルよんだら数字の乱数の作り方は出てたが英文字はないのでないのかい?
情報キボンヌ
0870nobodyさん03/03/18 00:12ID:???
s/ / /g
0871nobodyさん03/03/18 00:27ID:???
>>869
>英文字はないのでないのかい?

ちょうどASCIIのaやAに当たる文字コードを加算するだけで事足りると思うんだが。

もしくはrandomした数字をMD5にでも渡すとか。
0872nobodyさん03/03/18 00:32ID:???
>>871
MD5だと[0-9a-f]だよ。
俺はsubstr(crypt(uniqid("")),-8)とかやっている。
uniqidに限らず他を使う場合もあるけどな。
0873nobodyさん03/03/18 01:54ID:???
サンクス
マニュアルみたら
$better_token = md5(uniqid(rand(),1));
こんな例がでてまふた、でもこれじゃあ32文字も出るんだ罠
そんなにいらんのだが、最初の8文字とかでもいいのだが
パラミィータ設定してスマートに8文字だせんかの?
マニュアルには prefix を空とした場合、返される文字列の長さは、 13文字となりますと書いてあったがどうしたら8文字にできまふか?
0874nobodyさん03/03/18 02:05ID:???
自分で切れば?てか、切って当然。
0875nobodyさん03/03/18 02:17ID:???
やっぱこれっすか
s/ / /g
切まふ
0876nobodyさん03/03/18 02:18ID:???
文字数を渡して好きなように切れる関数でも作れば?
細かい機能は自分で関数を作れば解決。
0877nobodyさん03/03/18 02:20ID:???
>>875
文字数で切るだけならsubstrでいいでそ。
0878nobodyさん03/03/18 02:23ID:???
>>876
substrすら知らずに偉そうに煽ってる?
0879876=87703/03/18 02:30ID:???
いやいや、$better_token = md5(uniqid(rand(),1))とsubstrをくっつけて、
好きな文字数且つランダムなのが取得できるのを作ったら?
ってつもりだったのだけど…。

873が既存の関数だけでなんとかしようとしてるのが、プログラミングを楽しみ切って
ないようにみえたから。
0880nobodyさん03/03/18 03:12ID:4yQWEX54
>>843
WebStudio
PHPUnit
0881nobodyさん03/03/18 10:46ID:???
>>880
でもエクリプスの最新版は英語ができないときつい罠。

まあ秀丸より便利だしね。
もうもどれね。
0882nobodyさん03/03/18 11:15ID:???
ところでuniqid命令で生成される乱数に英数(大文字、小文字)以外の
文字もでてきちゃうね(^^;)
.とか/とか\とか困ったな、アルファベットの大文字小文字と数字だけ
だせないものなの?
0883nobodyさん03/03/18 11:20ID:???
↑のものですが、ごめんなさい
"\"マークはでないみたいですね、でもやっぱり"."と"/"は出やがるぜ
0884nobodyさん03/03/18 12:02ID:???
MacOSX10.2.4でphp4.1.2です。
自鯖にレッツphpのぁぷろだを入れて使ってるんですが、10MB以上のファイルをupload出来ないです。
post_max_sizeもupload_max_filesizeも30MBとかにしてるんですけど。
他に設定しないといけないところがあるのでしょうか。
0885nobodyさん03/03/18 14:27ID:???
Scriptの実行時間の制限は?
0886nobodyさん03/03/18 14:38ID:???
>>882
range
array_merge
srand
array_rand
0887nobodyさん03/03/18 18:33ID:???
>885
max_execution_timeですかね。
30なんですけど、ローカルでuploadしても10MB以下だと出来るのに、10MB超えるとだめだから、時間ってのは違うっぽいんですよねぇ。
0888nobodyさん03/03/18 18:41ID:???
Apacheの方でも制限なかったか?>サイズ
うろ覚えだけど。

あーあとPHPでも複数制限があったような気がする。
0889nobodyさん03/03/18 18:54ID:???
ログになにか出てないかい?
あとmemory_limitも見たいところだね。
0890nobodyさん03/03/18 20:39ID:???
memory_limitは設定してもphpinfoでは表示されてないです。
Apacheの設定ってのも関係あるかも知れませんね。
調べてみます。
レスありがとうございました。
0891nobodyさん03/03/18 23:04ID:???
>>884
inputのhidden渡ししてる、MAX_FILE_SIZEの値が影響してるってことない?
Apacheの方はLimitRequestBodyディレクティブをデフォルトから変更してると影響するみたいやね
http://cvs.apache.jp/apache-ja/manual/mod/core.html#limitrequestbody
0892nobodyさん03/03/19 00:28ID:???
>891
外野からだが参考になった。
LimitRequestBody ディレクティブは、指定されたコンテキスト (サーバ全体、ディレクトリ、ファイル、ロケーション) 内において HTTP リクエストメッセージボディの許容されるサイズに制限をかけることができます。
089389103/03/19 01:09ID:???
MLのスプール読んでたら同様の指摘が…もはや本家ではFAQだそうな。
なんかシンクロニティ
0894初心者03/03/20 00:35ID:???
あのさ、$_POST['hogehoge']の中身を抹殺するのってどうやるのかな?

<form method=post action='index.php'>
<input type=text name='hogehoge'>
</form>

ってやって index.php が表示されたときに
ブラウザの再描画ボタン押したらもう一度$_POST['hogehoge']送信
されちまうじゃん。

普通こういうのってどうやって処理してる?
0895初心者03/03/20 00:36ID:???
age
0896nobodyさん03/03/20 00:39ID:???
>>894
POST後、refreshしておく。
0897初心者03/03/20 00:48ID:???
>896
refresh関数なんかないけど・・・
もしかして unset($_POST['hogehoge'] ) をいってますか?

やってみて下さい、無駄ですから。
0898nobodyさん03/03/20 00:50ID:???
header('Refresh: 1, URL');
0899初心者03/03/20 01:09ID:???
>898
ぅぉ!出来た!!

さんくすでしたmOm
0900nobodyさん03/03/20 01:26ID:???
>>896,898
偉いねぇ
0901nobodyさん03/03/20 01:37ID:???
何気に邪道な気もしないでもないが。
phpってこういった機能は実装しないのかなぁ
0902nobodyさん03/03/20 02:15ID:???
>>901
HTTPのレスポンスヘッダを全て関数に実装するのもどうかと思うが(w
0903nobodyさん03/03/20 02:18ID:???
>902
違う違う、一度与えた$_変数の有効期間を設けるとかそういう類の
関数って意味。
sessionと併用したスコープなんてのがあれば実現出来そうな気が
するんだけどなぁ。。
0904nobodyさん03/03/20 02:32ID:???
タブと ;; 区切りの文字列をlist()にぶち込みたいのですが、
;; のほうが二文字だからか、上手く機能してくれません。。

いったいどうすればいいんでしょうか?
マニュアル見る限り出来そうなのはわかるんですが・・
0905nobodyさん03/03/20 02:48ID:???
>>904
何を試してみたか書いたほうがいいよ。
preg_split使ってみた。
$array = preg_split("/::|\t/",$str);
0906nobodyさん03/03/20 02:49ID:???
ん、split('(\t|;;)',$str);でいいんでつね・・(´Д⊂ヽ
文字列分割系の関数いっぱいあってようわからん、、(´Д⊂ヽ

板汚し失礼しました
0907nobodyさん03/03/20 02:52ID:???
>>905
あう、時間差ごめんなさい汗
explode()とsplit()で頑張ってたんですが、
preg_split()のマニュアルページ見てるとgoodな例文あったのでそれで何とかなりました・・ありがとうございますっ
0908nobodyさん03/03/20 14:11ID:usTHLNmu
//----------------
// time()
//----------------
$t = time();
$timestamp = mktime('','','',date("j", $t),date("n", $t),date("Y", $t));
$yy = date("Y", $timestamp);
$mm = sprintf("%02d",date("j", $timestamp));
$dd = sprintf("%02d",date("n", $timestamp));

print "time = $yy/$mm/$dd";

と

//----------------
// getdate()
//----------------
$nowtime = getdate();
$year = $nowtime["year"];
$mon = sprintf("%02d",$nowtime["mon"]);
$mday = sprintf("%02d",$nowtime["mday"]);

print "gettime = $year/$mon/$mday";

実行すると

time = 2004/03/08
gettime = 2003/03/20

なんでtime()の方は違うんだ?
0909nobodyさん03/03/20 14:52ID:HiyOtoa6
>>894
>>895
>>897
>>899
とりあえず1回死んでもらえますか?ゴミよ。
0910の03/03/20 15:06ID:VfWWllNI
>>908
date フォーマット指定 "j" と "n" が逆だから。
--
俺的ポータルサイトを作ろう
http://mysite.ddo.jp/
0911nobodyさん03/03/20 15:49ID:???
WebStudioっていうのを使ってみたいんですが、

↓コレ
http://www.xored.com/dl.php?download=xws-core-0.3.3.zip

何故か解凍できません。
誰か解凍できる人います?
解凍ツールはLhaplusです。
0912nobodyさん03/03/20 15:59ID:ZLETgyRF
PHPプログラムを配布するんですが
ソースコードを改造出来ない様にする方法は無いですか?
Zendエンコーダは高くて・・。
0913nobodyさん03/03/20 16:34ID:???
>>911
YahooBBの社員さんですか?

>>912
無理
091491103/03/20 17:06ID:???
>>913
違いますよ。
容量大きくて面倒でしょうが、
解凍できてる方、報告お願いします。
0915nobodyさん03/03/20 17:24ID:???
>>912
「キャッシュされるファイルについて」あたりを参考にしてはどうでしょう?
ttp://itb-tech.itboost.co.jp/php/php_21.php
0916nobodyさん03/03/20 18:14ID:???
>>910
ですか・・・逝ってきます。サンクスです。
0917nobodyさん03/03/20 18:28ID:???
質問さしてね
HTMLでアンカーってあるよね、同じページのなかでジャンプ
するやつ、PHPでこの命令はないの?
0918nobodyさん03/03/20 18:48ID:???
(゚Д゚)ハァ?
0919nobodyさん03/03/20 18:50ID:???
>>911
前にDLしたが解凍できた&動作確認済み。

>>917
goto
なわけはない。
092091003/03/20 19:24ID:???
>>919
ありがとうございます。
不可解ですが、Winzipで試したら解凍できました。

Winzipと日本のzip形式とでは仕様が異なるんでしょうかね?
0921nobodyさん03/03/20 21:03ID:???
日本のzip形式ってなんだよ・・・_| ̄|○
0922nobodyさん03/03/20 21:37ID:???
                 /      ヽ
                 / プラーン   ヽ プラーン
             ∧ /∧       ∧ヽ∧
            (  ⌒ ヽ      (  ⌒ ヽ  俺のはカンコック式zipだった。。
             ∪  ノ ミ  彡  ∪  ノ
              ヽ_),)        し'l_ノ
0923nobodyさん03/03/21 16:56ID:???
カンコック式zipにワラタ。
0924nobodyさん03/03/21 18:01ID:???
>>921
zip7だっけか?日本人が開発した、

「unzip32.dllでエラーを起こすちょっと小さいzipファイル」

を生成するプログラムを書いたバカがいる。
0925nobodyさん03/03/22 04:28ID:???
mbstringを使いたいんで、設定を変更しているのですが、
Windowsなのですが、php.iniを弄るだけではダメなのですか?
ttp://www.geocities.jp/wingdraw/pxml/pxml2.html
を実行したのですが、
Fatal error: Call to undefined function: mb_convert_encoding() in C:\web\test\xml_parse001.php on line 100
と表示されてしまいました。
mbstringの設定は、
ttp://php.s3.to/man/ref.mbstring.html
のEUC-JPユーザのphp.iniを参考にしました。
なにか他に設定が必要でしょうか。 Win98se AN HTTPD PHP4.3.0
0926nobodyさん03/03/22 04:46ID:???
phpinfo()で mbstringが有効になってる?
たまたまうちのphp@windowsも4.3.0だけどmbstringが有効になってなかったよ。
php.iniのextensionの部分をチェックすべし。
EUC-JPユーザ云々の設定は、その後の話だね。
0927nobodyさん03/03/22 04:47ID:???
>>925
Windowsだったら、php.iniでphp_mbstring.dllを
dynamic loadしてないんじゃないの?
extensionsディレクトリに入ってるから
(入ってなければ適切でないパッケージをダウンロードしてる)
extension_dirをきちんと設定してやって、Dynamic Extensionsの項の
該当するDLLのコメントを外す。

もし上が原因だったら、きちんとphp.iniのコメント記述を
読んでないからなので、英語だからと敬遠せずに一度ちゃんと読みなハレ。
092892703/03/22 04:55ID:???
とはいうものの、php.iniのコメントだけだと自動DLのやり方は判るものの、
DLが必要ということは判りづらいかな。
092992503/03/22 06:39ID:???
>926-927
thanxです。
php_mbstring.dllの項目を見つけたのですが、
まだ、ちょこちょこ修正が必要なようですね。
今日はもう眠いので明日また取りかかろうと思います。
ありがとうございました。
093092503/03/22 15:32ID:???
extension_dir = "C:\php\extensions\"
の個所を指定していなかったのが原因のようです。
mbstringに限らず拡張モジュールで検索したところ見つけることが出来ました。
Dynamic Extensionsの項は全く見ていなかったので、本当に助かりました。
たぶん、まだ設定が必要だと思いますので色々調べてから利用しようと思います。
ありがとうございました。
0931nobodyさん03/03/22 19:02ID:UE3IynkO
setcookie("***");

とすると、*** という名前のクッキーが削除されるのは
どの本を見ても書いてありますが、

新しくクッキーを書きこむと、書き込んだものとは別の意図していないクッキーの値が
消えるので、ひょっとしてはと思いお尋ねします。

クッキーって個数制限はありますか?

ただ、制限があったとしても400個くらいだったと記憶しており、
私が使用している数はせいぜい50個くらいです。

どなたかご存知の方、どうぞよろしくお願いします。
0932nobodyさん03/03/22 19:04ID:???
>>931
あなたのバグの予感。
0933nobodyさん03/03/22 20:10ID:???
50個も使うか....普通...
0934nobodyさん03/03/22 20:53ID:???
>931
減らせよ。正直迷惑。
0935nobodyさん03/03/22 21:02ID:???
クラスについて聞きたいのですが、
クラスメンバは全てpublicなのでしょうか。
C++みたいにprivateやpublicは指定できないのですか。

newで作ったインスタンスのスコープはどのくらいなのでしょうか。
delete演算子とかないですよねぇ。

マニュアル見ても詳しくかいてなかったのでよろしくおながいしまう。
0936nobodyさん03/03/22 21:13ID:???
>>935
ええ、できないです。

関数内じゃない?ifブロックとかだと生きてるし。
0937nobodyさん03/03/22 21:13ID:UE3IynkO
931 です。

書き込むクッキーなのですが、

***[01][1]
***[01][2]
***[01][3]

***[02][1]
***[02][2]
***[02][3]

のような形で多次元配列(連想配列の配列)に入れています。

これってクッキーにそのまま書けますかね?

・PHPに多次元配列がある事
・クッキーに配列を書き込める事

それぞれはしばしば解説してあるのを見かけるのですが、
多次元配列がクッキーにそのまま書き込めるのかわかりませんでしたので。
ひょっとしたらそのせいかとも思いまして。

setcookie("***[01][1]","$value",time()+36000);
のような形で書き込んでいます。

どうぞよろしくお願いします。


0938 ◆kaHG.XGS1s 03/03/22 21:18ID:???
>935
そのあたりはPHP5以降に期待やね…。
0939bloom03/03/22 21:18ID:d1IUlECS
http://www.agemasukudasai.com/bloom/
0940nobodyさん03/03/22 21:23ID:???
>>937
もちろん無理でしょう。
094193503/03/22 21:49ID:???
>>936>>938
ありがとん
PHP5に期待します。
0942nobodyさん03/03/22 21:50ID:vD6RRe1J
perlのmyにあたるものは何ですか?
0943nobodyさん03/03/22 21:59ID:???
そんなものはないです
0944nobodyさん03/03/22 22:02ID:???
>>942
そもそもスコープが関数内に限定されるので必要なしです。
0945nobodyさん03/03/22 22:04ID:???
変数のスコープはそれ以上狭くならないの?
0946nobodyさん03/03/22 22:06ID:UE3IynkO
>>940

やはり無理ですか。

だとすると、多次元配列で扱った方がスマートに処理できるデータをクッキーで扱う場合、
みなさんはどうやって処理されてますか?

例えば
$tmp[01][1] = '111';
$tmp[02][2] = '222';

というような値を扱う場合、

デリミタを定めて、一旦下のような形にしてから書きこむしかないのでしょうか?
$tmp = '01#1#111###02#2#222';

だとするとまた後でsplit するしかないですよね・・・






0947nobodyさん03/03/22 22:12ID:???
>>946
と、言うかcookieなんて不安定なストレージに多量のデータを書き込んだりしない。みたいな。
0948nobodyさん03/03/22 22:18ID:UE3IynkO
>>947

なるほど、だとしたらやはりセッションですか?

例えば大きな買い物カゴのシステムを作る場合のデータは
どこに保存するのが望ましいでしょうか?


0949nobodyさん03/03/22 22:19ID:???
>>948
セッションじゃないの?
0950nobodyさん03/03/22 22:21ID:UE3IynkO
>>949
なるほど、例えばperl でユーザ側の挙動を記録する際は
どうすればいいですか? 仕方なくクッキーですか?
レス数が950を超えています。1000を超えると書き込みができなくなります。