【PHP】下らねぇ質問はここに書き込みやがれ 61 at PHP
[2ch|▼Menu]
[1からを表示]
50:45
07/12/20 09:26:29 8BakDrsf
>>46
どうもです あれこれサイト見て勉強します
>>48
どうもです まずい というのは上記の程度のセッションの利用でも、それをきっかけに
のっとりとかされてしまうのかなぁと、、
「修正シーン」に記入値をセッション引用して入れるのも、「ログインしたときだけ値を持たせる」の
ルールからすればダメなのかな、など気になります(別のやり方が思いつかない)

>>49さんの言うとおりhiddenでまわす方法があるのも調べてわかりましたが、
そしたら全部のリンクがpostになる?わけで、デザイン的にいやだしと、、

気が向いたときに回答いただけたら十分なのでよろしくお願いします
自分でも引き続き調べてみますので

51:nobodyさん
07/12/20 12:01:24
だれがログインしてるかって言う情報はサーバが管理すべきものだから、
セッションで管理すべきもの。

今画面に何を表示しているかについては、議論なり判断があって良いと思うけど、
これについては、個人的には hidden 推奨。


52:nobodyさん
07/12/20 12:04:00
同意。formタグ内で統一できて分かりやすいし、楽。

53:nobodyさん
07/12/20 12:11:34
こういう時はsessionだろ

54:nobodyさん
07/12/20 12:53:32
さあまた盛り上がってまいりました

55:45
07/12/20 14:09:16 8BakDrsf
>>51-52
え? つまりフォームの記入(修正)ページに入れる値は、hiddenですか?
てことは確認ページで
<input type="hidden" name="namae" />などしてキープして、
戻るボタンにjavascriptかなんかで修正ページに向けてsubmitするの?
ちょっと本屋で見てこよう、、

56:nobodyさん
07/12/20 14:12:30
ポカーン・・・

57:51
07/12/20 14:43:41
>>55
JavaScript使用可の前提で書くけど、どっちにするかといえば、Hiddenにする。

自分が作るなら、確認用ページはJavascriptで生成するようにする。
確認ページ表示に、サーバに問い合わせる情報が必要であればAjax的な方法で取得する。

携帯みたいな通信コストが無視できない場合は、セッションでの管理も考えるけど。


58:nobodyさん
07/12/20 14:49:48
会員の情報をサーバーに問い合わせるのにAjaxて怖くない?
サーバーサイドで完結してたほうがいいような気がするが。

59:nobodyさん
07/12/20 14:54:08
>>58
何で?
Ajaxでもセッション管理は出来るし、不要な情報はブラウザに返さなければ良いし。

60:45
07/12/20 21:21:17
>>57
なるほど 携帯とPCで使い分けするんですね、考えたこともありませんでした
あの、最後にひとつだけ聞きたいんですが
<input type=text name=namae>ってのが記入ページにあったとき、
確認ページは
<form action=kanryou.php>
<input type="hidden" name="namae" value="<? echo $_POST['namae']; ?>">
<input type="submit" value="完了ページへ">
</form>
ていう完了ページに飛ぶ用のフォームと
<form action="kinyu.php">
<input type="hidden" name="namae" value="<? echo $_POST['namae']; ?>">
<input type="submit" value="戻って修正">
</form>
という修正ページに飛ぶ用のフォーム2つを用意するんでしょうか?
フォームは一個で、クリックされたサブミットボタンに応じてactionの値を切り替えるの?
いい加減しつこいとは思うので、本当に暇な人、答えてくれれば結構です。sageます

61:nobodyさん
07/12/20 21:39:52
いくらなんでもスレ違い過ぎ…

62:nobodyさん
07/12/21 00:43:35
>>60
<input type="submit" name="action" value="確認">
<input type="submit" name="action" value="修正">
っていう風にすれば、$_POST["action"]を取得することでどの画面をだせば
いいかは分かるんで、確認画面にフォーム二つもいらない。
書き込みも確認も書き込み完了も、どの画面も全部同じひとつのPHPで扱うけどね。
わざわざ三つとかに分けたりしない。

フォーム入力値の受け渡しはセッションでやった方が楽だけど、既出の
通りブラウザ複製などの場合値が書き換わっちゃうのでやらない。
携帯ならこの問題がないけど、セッション使えないのもあるのでやっぱ
hidden使うかなあ。
セッション使うって言ってる人はこの問題にどう対応してるのか不思議。

63:nobodyさん
07/12/21 00:59:28 9upg4HjC
セッションというのは諸刃の刃だよ。
セッションを使うことによってセキュリティーは向上するけど、
多用しすぎることで、パフォーマンスが劣化し、結果的にセキュリティーが劣化するというジレンマ。

例えて言えば、医学が進歩して寿命が延びることで、不労人口が増えて、
結果的に人類が滅びるというジレンマだよ。

つまり、目先の良さにばかりいくと、長期的には全く逆の結果になるということ。

64:nobodyさん
07/12/21 01:03:49
セッション多用でセキュリティが低下ってのはわからんなー
セッション多用してメモリがいっぱいいっぱいになる可能性があるってーなら解るが

65:nobodyさん
07/12/21 01:04:23
>>63
意味不明
医学が発展することが人類が滅びることとどう結びつくんだよw

66:nobodyさん
07/12/21 01:12:13 9upg4HjC
>>65
想像力働かせろよ。
プログラマー脳の典型だよ、まぁ設計には一生なれないな、お前は。

200歳まで生きられる医術・薬品が開発される

生殖機能を持たない、エネルギーだけを消費する不労生体が増える

1人の若者が100人の老体を面倒見る。仕事している暇がない。

国家財政破綻、国力ゼロ、防衛能力ゼロ

発展途上国の台頭、テロリストの台頭

国際経済破綻、無政府状態

67:nobodyさん
07/12/21 01:15:58
>パフォーマンスが劣化し、結果的にセキュリティーが劣化する
何故に?

68:nobodyさん
07/12/21 01:17:05
>>66
君は朝鮮人並の誇大妄想脳だねww

69:nobodyさん
07/12/21 01:17:13
>>66 は無視して良い話だろうけど、メモリを消費しすぎて落ちやすくなれば ISMSで言うところの
可用性が低下するので、広義のセキュリティが低下したと言えなくも無い。


70:nobodyさん
07/12/21 01:19:51
>>66
65では無いがお前の方が想像力なく見えるぞ


71:nobodyさん
07/12/21 01:26:24 9upg4HjC
お前らw
人を批判する前に、原因と結果の繋がりを細かく検証しろよ。

セッション多用

メモリー消費、オーバーフロー

HDDへのスワップが多発

システムが不安定

HDDの中身が画面に表示される

セキュリティー劣化

72:nobodyさん
07/12/21 01:28:42 1HbS1x3e
PHPって配列を関数に渡すと、内容がコピーされるけど、このコストって意識すべき?
参照渡しすると、値が書き換えられて帰ってくることを期待してるようなソースに見えるのが嫌。

例えば、実は値を変更するまではマジックコピー的に処理してるとかだと気がラクになるんだけど。

73:nobodyさん
07/12/21 01:30:19
それはどちらかというとメモリの使用量とかをしてないのが問題なんだろ
多用してるのが解ってるならだいたいピーク時にどれぐらい消費してるとか
そういうのをチェックしてない時点でダメなんだろ

74:nobodyさん
07/12/21 01:31:37
>>72
基本的に参照渡しもそのまま渡すのも
関数内で変更しない限り内部的に一緒

75:nobodyさん
07/12/21 01:35:41 1HbS1x3e
>>74
ありがとう。気がラクになった。
面倒でなければ、情報ソースかヒントだけでも教えてくれるとありがたい。

76:nobodyさん
07/12/21 01:51:45
>>75
記事自体は凄く古いが
URLリンク(www.sound-uz.jp)
ここだったと思う

まぁphpのサイトにもパフォーマンスのためだけに使うなって書いてるし
URLリンク(www.php.net)

それでも気になるならmemory_get_usageとか使って
メモリの消費量をチェックしてみるといいかもね

77:45
07/12/21 02:41:08
>>62
本当にありがとうございます、感動しました
頑張ります

78:nobodyさん
07/12/21 04:34:35
>>62
>既出の通りブラウザ複製などの場合値が書き換わっちゃうのでやらない。
これなんか問題あんの?



79:nobodyさん
07/12/21 05:02:52 k3WWlkOg
質問です。
指定した数の乱数順列を生成する関数とかってありますか?
例えば10を指定した場合、
4,3,2,9,8,7,10,1,6,5
3,6,4,2,1,9,7,10,8,5
のような並びで配列とかに格納してくれるような感じで。
もし知っている方いましたら教えてください。
お願いします。

80:nobodyさん
07/12/21 06:01:09
>>79
shuffle()

81:nobodyさん
07/12/21 06:18:03
>>80
ありがとうございました。

82:nobodyさん
07/12/21 10:14:56 O7QmdYOi
質問です。
ローカルテストのためWindowsXPにApache/2.0.61(Win32) PHP/5.25をインストーラーでインストールしたのですが、
パスを指定してアクセスすると.phpのファイルだけHTTP500内部サーバーエラーが出て表示してくれません。
.htmlは表示されますし、.pqpとか適当な拡張子をつけたファイルも表示はしてくれました。

Apache MonitorではPHPのバージョン表記もされていて、
インストールは完了しているようなのですが、何か原因が分かればお願いします。

83:nobodyさん
07/12/21 11:07:39
>>76
なるほど。PHPよく出来てるな。
どうもありがとう。

84:nobodyさん
07/12/21 11:18:19
phpの開発に携わるには、どうしたらいいのかな?
こんな中で開発に携わっている人いる?

いや、一つのメソッドでもいいので実装したら、
それだけで経歴書に「phpの開発メンバー」とかって書けるかなぁ、って。
出来たら、自分が作ったメソッドに自分の名前の一部で使えたら最高なんだけど。

85:nobodyさん
07/12/21 11:19:19
>>82
自分は詳しくないけど、まずはApacheのエラーログ見たら?

86:nobodyさん
07/12/21 11:54:40
phpで500エラーってcgiとして動かそうとしてるのか?

87:nobodyさん
07/12/21 11:55:36
って、5.2.4以降はエラーをブラウザに返さないで500出すようになったのか

88:nobodyさん
07/12/21 11:59:36
マッピングされてないだけだったりして

89:nobodyさん
07/12/21 12:04:23
>>84
単にPHP自体の開発が出来るということを示したいだけなら、
野良モジュールをpeclにでも登録すれば?

あるいはメインストリームなモジュールのバグ一覧を見て、
未解決のバグのパッチを辛抱強く投げつづけるか。

そうでなければ、本家MLに参加して議論とパッチの応酬を繰り返すとか。


しかし経験からいわせてもらうと、PHPの開発がホイホイ出来る奴は
PHP言語を使う仕事にはなかなかつかせてもらえない罠


90:nobodyさん
07/12/21 12:10:20
ちと質問なんですが、
『排他ロック中には他のプロセスが割り込めないので
ロックは1つかければ十分』…と聞いたんですが
例えば…


$lock_fp = fopen("lock.txt","w");
flock($lock_fp,LOCK_EX);

$fl = fopen("data.dat","w");
if($fl){
 fwrite($fl,$write_data);
 fclose($fl);
}

fclose($lock_fp);


こうしておけば、data.datの方もlock.textがロック解除されるまでは
書き込んだりできないんでしょうか?

91:nobodyさん
07/12/21 12:29:26
>>89
なるほど、参考になるわ。ありがとう。もしかして、開発メンバー?
>しかし経験からいわせてもらうと、PHPの開発がホイホイ出来る奴は
>PHP言語を使う仕事にはなかなかつかせてもらえない罠
これは、どうして?
PHPを開発した人は守秘義務とかに縛られて、
PHPを使った開発はできないとか?

>>90
これ、ちょうど俺が実装したかったロジックだ。なんというタイミング。
俺が実装したいメソッドは、一つのメソッドで面倒なロックをやってくれるもの。

boolean write_data_with_safety_lock($file_name, $data)
ファイル名と書き込みデータを引数で渡せば、
ロック機構を実装したこのメソッドが安全に書き込めるというメソッド。

このメソッド作ったら、絶対php6.0とかに採用されると思っているんけど。ニーズも絶対あるし。

92:nobodyさん
07/12/21 12:47:28
phpはオープンソースです

93:nobodyさん
07/12/21 13:02:05 S3fUHMf0
pearだったかのコーディング規約で、PHPだけのファイルの場合、
<?php だけで、最後の ?> は付けないってのがあったと思うんだけど
これって個人的にはすごく気持ち悪いんですが、こんなもんなんでしょうか?

94:93
07/12/21 13:03:54
>>93
ああ、ZendFrameworkのコーディング規約でした。

95:nobodyさん
07/12/21 13:10:57
最後に?>を付ける事によって?>以降に書かれた文字列が表示される
表示される事による見つけにくーいバグを回避する事ができる

と俺は勝手に解釈
まぁ画像をphpで出力されてたりとか
携帯向けにHTML出力する時にこういうので苦労した事あったから
俺はつけないけど

96:nobodyさん
07/12/21 13:13:40
>>91
>>PHP言語を使う仕事にはなかなかつかせてもらえない罠
>これは、どうして?

単なる元野良モジュール作者だけど、
単純にCでマルチプラットフォームな開発が出来る奴ぁそれを仕事にした方がぶっちゃけ収入が良いのです。


97:93
07/12/21 13:52:16
>>95
ああ、なるほど。
改行コードとか目に見えにくい文字列もありますね。
ありがとでした、納得しました。

98:nobodyさん
07/12/21 14:35:20 J4pqu08c
童貞先輩が新人女子OLにアタックしてるwww何とかしてくれwww

99:nobodyさん
07/12/21 15:20:15
くだらねえwww

100:nobodyさん
07/12/21 15:46:33
おい上原ぁ!!お前が何とかしろ!

101:nobodyさん
07/12/21 15:53:53
""を含むhtmlタグ入り文章をechoやprintで表示、
変数に格納するにはどうしたらいいんでしょうか。
初心者質問スマソ。

102:nobodyさん
07/12/21 16:01:46
> ◆質問する時の注意
> ・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
> ・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
> ・ 己の行った操作、変更などを詳しく明記すること。
> ・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
> ・ 質問者として、態度をわきまえること。
> ・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。

103:nobodyさん
07/12/21 16:03:59
>>101
URLリンク(www.php.net)

104:101
07/12/21 16:04:34
自己解決しました

<a href="index.html">2ちゃんねる</a>だったら

echo "<a href=\"index.html\">2ちゃんねる</a>";とするか
echo '<a href="index.html">2ちゃんねる</a>';とすることで解決しました。

君たちみたいなバカに聞いたのが間違いでした、ニートどもは黙って職安いきなさいクズ

105:nobodyさん
07/12/21 16:11:34 Bll92Vnt
Ethnaでのトランザクション処理について、
DB更新を処理ごとに複数の関数で作成する場合は
エラー時にロールバックするためにそれぞれの関数の頭に
 $db = $this->backend->getDB();
 $db->db->autocommit(false);
 $db->begin();
これを書く必要がありますか?
それとも
 $db = $this->backend->getDB();
だけでOKですか?

106:nobodyさん
07/12/21 16:13:00
最近>>1読まないやつ多いな

>・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ

107:nobodyさん
07/12/21 16:23:19
$db = $this->backend->getDB();
$db->begin();
のみでOK

108:101
07/12/21 16:40:25
>>103-104
ありがとう。専ブラなんでsageチェック外すの忘れてました。
>>104さん、他人を騙ってる割にはいい人ですね感謝。

109:90
07/12/21 16:57:32 mXpbsFrG
あれま、レスが無いと思いきや、同じくsageてました。失敬。

あらかじめロックファイルの方で排他ロックを制御できれば
処理が簡単でいいなぁ、と思ったんですが、>>90のやり方で
data.datに対しての同時書き込みは防げますでしょうか?

110:nobodyさん
07/12/21 17:00:05 mCAqxYSI
音楽(asxファイル)の再生数をカウントするスクリプトを作りたいのですが
PHPをどこにはさんでよいのかがわかりません。

一覧ページで再生する曲をチェックし、フォームで取得しています。

form actionで指定したページに

<OBJECT ID='Player' width='300' height='48'
CLASSID='CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6'>
<PARAM name='autoStart' value='true'>
<PARAM name='URL' value='file_name.asx'>
<embed src='file_name.asx' autostart='true' width=300 height=48></embed>
</OBJECT>
を記述しています。

PHP5.2.4 APACHE2

よろしくお願いいたします。

111:nobodyさん
07/12/21 17:00:17 bUxsI4En
ログイン画面から入る会員領域のトップページを作ってるんですが、
入力されたID・パスが違うときはエラー画面に飛ばす処理が上手くいきません

session_start();
/* ログイン情報問い合わせ-----------------------------------------*/
require_once 'config.inc.php';//DB接続関連の設定ファイルの読み込み
require_once 'adodb/adodb.inc.php';//ADOdbモジュール読み込み
$DB = NewADOConnection(_DB_TYPE);//接続の設定
$DB -> pconnect(_DB_HOST, _DB_USER, _DB_PASS, _DB_NAME);
if(!$DB){//接続エラー時
  header("Location: /system/index.html?ec=1");?//エラーページへ
  exit;
}
php部分は上記の記述だけですが、表示すらされません。リダイレクトもされません
//if文の中のheader;とexit;をコメントアウトすれば、省略されてる
<html>タグ以下のページデザイン部分が表示されます
headerはすべての出力よりも先に書くというルールは知ってるんですが
何も出力してないはずでわけがわかりません
低レベルですみません、教えてください

112:nobodyさん
07/12/21 17:01:30 bUxsI4En
すみません、間違えました
×入力されたID・パスが違うとき
○接続エラーのとき

113:nobodyさん
07/12/21 17:01:36
>>106
テンプレのスレなんてねーぞコラ

114:nobodyさん
07/12/21 17:02:43
自分で立てろカス

115:nobodyさん
07/12/21 17:15:35
>>113
あるだろボケ
スレリンク(php板)

116:105
07/12/21 17:35:04 Bll92Vnt
>>107
ありがとうございます。助かりました。

>>106
すいませんでした。Ethna固有の機能ではなかったので「Ethnaの環境でやってます」という意識でした。

117:nobodyさん
07/12/21 18:01:23
>>110
音楽ファイルを読み込む前か後ろにカウント処理

118:nobodyさん
07/12/21 18:02:09
>>111
headerの使い方をもう一度確認

119:110
07/12/21 18:42:10 mCAqxYSI
>>117
やってみたのですが、やっぱりページカウンターになってしまいました。
if(isset($_POST['maker'])) {
$db = new mysqli("*","*","*","*");
$stt = $db->prepare("select * from music_lank where url=?");
$stt->bind_param("s",$_POST['maker']);
$stt->execute();
if($stt->fetch()!==TRUE) {
$sql="insert into music_lank(url,count) values(?,1)";
}
else {
$sql="update music_lank set count=count+1 where url=?";
}
$stt->close();
$stt2 = $db->prepare($sql);
$stt2->bind_param("s",$_POST['maker']);
$stt2->execute();
$db->close();
print("
<OBJECT ID='Player' width='300' height='48'
CLASSID='CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6'>
<PARAM name='autoStart' value='true'>
<PARAM name='URL' value='ASX/{$_POST['maker']}.asx'>
<embed src='ASX/{$_POST['maker']}.asx' autostart='true' width=300 height=48></embed>
</OBJECT>
<br>
");
}
冒頭の「isset」が原因なのはわかるんですが
埋め込みのメディアプレーヤーの再生ボタンを
押した瞬間にPHPを発動できれば解決なんですが・・・。

120:nobodyさん
07/12/21 19:39:49
そりゃそんなところに仕込めばページカウンターになるw

121:110
07/12/21 19:49:36 mCAqxYSI
どこに仕込めばよいのかがわからないです・・。

122:nobodyさん
07/12/21 19:55:42
>>119
>埋め込みのメディアプレーヤーの再生ボタンを
>押した瞬間にPHPを発動できれば解決なんですが・・・。

むり。どうしてもやりたいならAjaxとかFlashつかえ

123:nobodyさん
07/12/21 19:57:20
1.再生ボタンを素材で用意して、そこを押すと再生ページに移動
2.FlashでActionScriptで組み込む

124:110
07/12/21 20:00:51 mCAqxYSI
>>122
無理でしたか。それが分かっただけで一歩進めました。

ありがとうございました。

>>123
ありがとうございます。

125:nobodyさん
07/12/22 00:11:25
windows, xammp な環境で
URLリンク(localhost)(UTF8なファイル名).html
のようにアクセスすると、ローカル上の
UTF8なファイル名.html
ではなく
SJISなファイル名.html
にアクセスしにいくんですが、これってどういう理屈かご存知の方いませんか?
firefox, ie7 共になります。
これって windows じゃなくて linux サーバ上だと
EUCなファイル名.html
を見にいったりすることになるんですかね?厄介。

126:nobodyさん
07/12/22 00:13:29
>>1
◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。

127:nobodyさん
07/12/22 00:15:38 YFLFW+ip
echo <<<EOF
〜〜
EOF
ってのがよくあるけど、この〜〜の部分で関数を実行できないの?
echo <<<EOF
<td>$hoge->gethoge(1);</td>
EOF
って感じ。関数でなく、変数を書いてその値を表示ならできたんだけど。。

128:nobodyさん
07/12/22 00:26:48
>>127
>>1
◆質問する時の注意 
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ) 
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。 
・ 己の行った操作、変更などを詳しく明記すること。 
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。 
・ 質問者として、態度をわきまえること。 
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。 

129:nobodyさん
07/12/22 00:45:03 VmEGw74T
教えて下さい。
よく、以下の表示を見るのですが、これはどのように制御しているのでしょうか?
セッション数を取得して閾値を越えたら、この表示を出すといった処理なのでしょうか?
私も作りたいとは考えているのですが、何を基準にしていいいのか分かりません。宜しくお願いします。

現在アクセスが集中しています。
現在アクセスが集中しており表示しにくい状態となっております。
申し訳ございませんが、しばらく時間を置いてからアクセスするようお願いいたします。

130:nobodyさん
07/12/22 00:49:58
>>129
httpのステータスコード見て判別すれ

131:nobodyさん
07/12/22 01:39:24
>>127
できるよ。ある関数を使うけどね

132:nobodyさん
07/12/22 01:40:47
>>129
考えられる方法
1.apacheの設定


セッション使うのはもったいないからapacheの設定だな

133:133
07/12/22 03:51:34 PQDDH9MU
レン鯖やヤフーメイルで仮登録
→メールが送られてきて、リンクをクリックすると本登録
→サーバスペースやメールboxが作られる

この一連の動作を自分のサイトで実現しようと思ったら何を勉強すればいいだろうか。
phpとDB系を組み合わせればできる?

134:nobodyさん
07/12/22 04:03:34
>>129
DB関連でエラー出たらそれ出してるんだと思ってた。。
セッションやApacheへの接続数より、DBがボトルネックになることが
多い気がするし、「現在アクセスが集中しています。」の表示が出るまで
ちょっと時間かかるサイトが多いし。

ただしDB接続エラーでこれ出すだけでもDBに負荷かかるんで、132の言う
通りApacheでやるのが一番いいかなあ。
Apacheの設定、PHPでセッション数、DBの接続エラー全部でそういう処理
入れといて、DBの接続エラー出る前にApacheの接続数の上限に達する
ようにうまく調整するのが一番よさそう。

135:nobodyさん
07/12/22 04:21:23
>>133
メールサーバとサーバOSもかな。Webサーバもね。

・仮登録メールを受信してPHPを実行する仕組みが必要。これはメールサーバ。
 本登録用のメールはPHPがメーラーの役割を果たして、メールサーバ利用して
 返信する。
・サーバスペースは物理的にHDDにフォルダ作ることになるから、PHPからシェル
 コマンド叩くとかの処理がいる。手動であらかじめ作っといて、空きがないなら
 登録拒否とかでもいいかもだけど。。
・メールボックス作成はやったことないんでよくわからん。
 コマンドラインでそういう処理ができるメールサーバはありそうだから、やっぱり
 PHPから実行することになるかな。これも手動であらかじめ、ってできるかもだけど。
・Webサーバの知識はWebアプリ作る以上当たり前。


その機能を実装するだけなら通り一遍の知識でも動くと思うけど、
サーバスペース貸与サービスってレンタルサーバでできるのかな?
できないなら自分でサーバたてて運用することになるんで結構大変。
特にメールサーバは下手に立てるとWebサーバ以上に迷惑をかけることになるので。

知り合いがそういうサービス個人でやってたけど、自宅にサーバ
置いてたしなあ。

136:127
07/12/22 05:00:56
自己解決しました
一旦外で実行してから読み込めばいいんですね どうもお騒がせしました

137:nobodyさん
07/12/22 05:57:17
>>133
分かりにくい質問だけどメールサーバ関係ないんだろ?
セッションやmd5でユニークな値を持つチケットを発行すれば済む話

138:133
07/12/22 06:35:51
>>135 レスありがとうございます。
実は趣味で自宅鯖立てて、最近スペース貸出を考えているのですよ。
それでそんなプログラムできればいいかな、と。

PHPって結構いろんなことできるんですね。PHPを習得するとともに、まずメル鯖立てるために固定IPゲットせねばw
135さんのレスをもとに勉強の方針立てて頑張りたいと思います。

ところでこんな時間にレス、て何者?w

139:nobodyさん
07/12/22 09:36:10
今日は休日だからな。
自鯖立てるのは結構だが、質問内容からするとかなり不安なので、
最初は審査はさんで手動登録にするとして、鯖管としての勉強をするのが第一。
踏み台になって周りに迷惑かけないようにね。

140:133
07/12/22 11:10:17
>>139
余計なお世話です。

141:nobodyさん
07/12/22 11:21:56 JyLvDbSd
classが存在するか調べる方法はありませんか?

PEARでDB.phpが読み込まれているかチェックするために
クラスチェック("DB")のようにしたいのです

142:nobodyさん
07/12/22 11:24:26 JyLvDbSd
class_existsで解決しました

143:nobodyさん
07/12/22 13:21:02 iV97cpSO
$str = "1+2+3"; というようになっているstring があったとして、
これを数式だと解釈して 1+2+3 (= 6) を返すような関数て
ありましたかね?

144:nobodyさん
07/12/22 13:21:36
>>143
eval

145:nobodyさん
07/12/22 13:36:39 iV97cpSO
>>144 ありがとう。

$str = "1+2";
echo $str. "\n";
eval("\$str2 = $str ;");
echo $str2. "\n";

解決した。

146:138
07/12/22 13:46:19
>>133
まあ鯖管やるといろいろと勉強になるし、がんばってくれ。
ただ139と同意見でもあるので、いっぺんにいろいろやろうとせずに
PHPならPHPだけって感じでやっていったほうがいいと思う。
メールサーバは半日放置すればすぐ踏み台にされるし、他のメール
サーバの管理者から文句が来たり、ISPその他から警告来ることがあるよ。

147:nobodyさん
07/12/22 15:17:14 JyLvDbSd
PEARのmimeDecodeで
$structure = Mail_mimeDecode::decode($params);
をしたときに、メールの件名・本文の文字コードを取得したいのですが、
本文はcontent-typeにありますけど、件名がありません。
どこで取得すればよいのでしょうか?

148:nobodyさん
07/12/22 15:29:17 XDbomIjm
本でもWebでもいいんですが、PHPの長い良質なソースコードないですか?

勉強したいので。。独学ですが、普通の本のソースじゃものたりなくなりました。。

よろしくお願いします。

149:nobodyさん
07/12/22 15:35:26
>>148
pear
zend framework
あたりかな

150:148
07/12/22 15:40:37 XDbomIjm
>>149
どうもありがとうございます。その2つをとりあえず見てみます。あと、思いついたんですが
洋書でいいのないですかね?あっちの方が本格的な気がして。。洋書でいいのを知っている方
教えてください。よろしくお願いします。

151:nobodyさん
07/12/22 15:49:04
シェル形式(perl形式)のコメント#って廃止予定とかあったりする?
あまり使われてないようだけど、#がスクリプトに混ざってたりしたら気持ちわるかったりするのかな

#昔書いたスクリプトで、いたるところにコメントで/* */を使ってあるのをメンテしてて、
#/* */使って問題箇所を切り分けようとしたら酷い目にあった

152:nobodyさん
07/12/22 15:50:38
>>150
「気がする」程度なら必要ない
それよりまず日本語ドキュメントを完全マスターすべし

153:nobodyさん
07/12/22 15:54:32
>>148
PHP5でクラス使ってるのが所望なら、mediaWIKIおすすめ
俺はめまいがして静かにエディタを閉じたけどw


154:nobodyさん
07/12/22 15:54:49
ユーザーが入力した式を
evalで実行してます。
(計算機のようなものです)

でもこうすると、ユーザーがたとえばファイル読み書きなんかの
命令を入れたら実行されてしまいます。

なんかいい方法はありますか?
ちなみに単純な計算機ではなく、関数など複雑な
式を入力することが出来きることが条件です。

155:nobodyさん
07/12/22 15:55:21
pearなんてあんま良質とは思えないのも多々ある訳だが
動物本でも読んだら?

156:nobodyさん
07/12/22 16:00:36
pearといえばNET_IP_V4←うろおぼえ
で、どんなIPアドレスでもネットワーク内ある(trueになる)という、
物凄いバグありバージョンがあったな
設置だけして使ってはいなかったけど

157:nobodyさん
07/12/22 16:13:35
>>154
なんのためにそんなの作ってんの?

158:nobodyさん
07/12/22 16:23:32
>>154
自分も式を扱うプログラム書いてるけど、色々処理が必要なので真面目にパースしてる。

簡単に済ませるなら、正規表現で計算式以外の要素が無い事を確認するのが良いんじゃないかと思う。
正規表現では対応しにくいようなら、Tokenizer使って分解してチェックじゃないかな。
URLリンク(jp2.php.net)

159:nobodyさん
07/12/22 17:20:10
>>157
複雑な検索条件入力 ですが?

160:nobodyさん
07/12/22 18:52:20
>>154
>>1
◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。

161:148
07/12/22 19:01:21
>>152 日本語ドキュメントもしっかり読んでみます。ありがとうございました。
しかし、ソースを打ちたい。。

>>153 MediaWikiをググって見てみました。今のところどういうものかわかりませんが
時間ができたらよく調べてみようとおもいます。どうも有用な情報ありがとうございました。

お二方、お礼が遅くなりすみませんでした。ありがとうございました。

162:nobodyさん
07/12/22 20:40:17
>>150
Advanced PHP Programming
がいいよ(洋書)。

163:nobodyさん
07/12/22 23:19:52
>>162
すごい、きになる。
やっぱ洋書がいいのかなあ

164:nobodyさん
07/12/23 01:20:47
別に変わらんと思うが

165:nobodyさん
07/12/23 01:28:41
そりゃまぁ、書いてある事は同じだろ。
というか違う事が書いてあったら困る。

166:nobodyさん
07/12/23 02:11:39
>>163
もう少しで新しいバージョンのが出るらしい。
今気付いたけど、Amazon見ても目次もないから買おうか迷ってる人が判断できないな。
もったいない。

この本には、中括弧の置き方くらいの事に関しても、BSD style, GNU style,
K&R style のそれぞれの説明とかがある。

あと、Extensionの説明だけでなく、「Writing SAPIs and Extending the Zend Engine」
なんて章があって、SAPIで使ってる構造体から説明してる。

データベースマッピングの複数のデザインパターンの説明もあって、
The Active Record Pattern とかいろいろ書いてある。

もちろんその他には、エラーハンドリング、テンプレートシステム、テスト、
キャッシング、セッション、認証、RPC、プロファイリングとかの説明もある。

なんて言うか、本格的。
なんで日本語訳されてないんだろう。

167:nobodyさん
07/12/23 03:32:32 KIQSv7/M
[a.php]
<?
$hoge = 'a';
〜インクルードここまで
$hoge = 'b';
?>

[include.php]
<?
include 'a.php';
echo $hoge;
?>

$hoge = a にしたい場合、ifで制御する方法はありませんか?
include_break();みたいな

168:167
07/12/23 03:33:34 KIQSv7/M
ifで制御 → if以外で制御

169:nobodyさん
07/12/23 04:06:10
ファイル分ければ?

170:nobodyさん
07/12/23 04:16:30
>>167
わざわざ難しく考えないで、今できる知識で組めよ。
コードを今の10倍の量を書いたとき、新しい技法を覚えるってことよ

171:nobodyさん
07/12/23 04:57:03
phpに関する初歩的な質問です。書いたコードは下に示します。
htmlquickformでメールフォームを作りたいのですが、その過程でprocess関数を使うところでつまづいてしまいました。
process('test',false)としてfunction test($values)と受け取るのですが、
具体的にvaluesが何の値を受け取っているのかがよく分からないのです。

下のコードでいうと
function mail($values)
{
mb_send_mail(??????????????);
}
のところで、「valuesって一体何?」と思うわけです。
直感的にmb_send_mail(:::@:::,$subject,$body);としてもダメなようですし、、、混乱してます。(C→phpとやってきたからかな、、、

172:nobodyさん
07/12/23 04:57:57
ryaku
$form->addElement('header',NULL,'お問い合わせ');
$form->addElement('text','name','名前');
$form->addElement('text','mail','メールアドレス');
$form->addElement('text','subject','件名');
$form->addElement('text','body','本文');
$form->addElement('submit','sbm','送信');

$form->addRule('name','名前を入力してください。','required','client');
$form->addRule('mail','メールアドレスを入力してください。','required','client');
$form->addRule('mail','メールアドレスを正しく入力してください。','email','client');
$form->addRule('body','本文を入力してください。','required','client');

$form->setRequiredNote('<font color="Red">*</font> 必須項目です。');
$form->setJsWarnings('入力ミスによりエラーが発生しました。','エラーをご確認の上、再度[送信]ボタンをクリックしてください。');

if($form->validate())
{
$form->process('mail',FALSE);
}
else
{
$form->display();
}

function mail($values)
{
mb_send_mail(??????????????);
}

?>

173:nobodyさん
07/12/23 05:00:50
◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。


174:nobodyさん
07/12/23 06:07:25
SimpleXMLElementで、

<data>
aaa
<p>bbb</p>
ddd
</data>

てなXMLの"aaa"とか"ddd"のようなTextノードにはどうやって
アクセスしたらいいでしょう??
asXML()すると復元できるんだよなぁ

175:nobodyさん
07/12/23 06:23:36 /N04QiDA
sageてしまった……すいませんorz

SimpleXMLElementで、

<data>
aaa
<p>bbb</p>
ddd
</data>

てなXMLの"aaa"とか"ddd"のようなTextノードにはどうやって
アクセスしたらいいでしょう??
asXML()すると復元できるんだよなぁ


1つ思いついたのは、
$dom = dom_import_simplexml($xml);
$dom->firstChild->nodeValue = 'zzz';
$sXml = simplexml_import_dom($dom);
とやる。
ってこれじゃーSimpleXMLの意味がない

176:nobodyさん
07/12/23 07:02:39
XMLはあまり得意じゃないんで補足を待ちたいが、"aaa"とか"ddd"ってそれぞれ
単独のテキストノードなの?
aaa〜dddまでひとつのノードじゃないかって気がするんだけど。
<data></data>しかないじゃん。

さらにそのサンプルは<data>zzz</data>にしてる気がするんだけど、
"aaa"や"ddd"へのアクセスってのとの関連がよくわからん。

177:nobodyさん
07/12/23 07:13:23
んでいちお意図を汲み取ると
<?xml version='1.0' standalone='yes'?>
<data>
<content>aaa</content>
<content><p>bbb</p></content>
<content>ddd</content>
</data>
ってことになるのかな。
$dom->content[0]で"aaa"、$dom->content[2]で"ddd"が取得できる。

後半意味が分からんのは変わらんので、
URLリンク(jp2.php.net)
ここの例の部分よく読んで意図がちゃんと分かるように書き込みやがれこのキャベツ野郎。

あ、書いたXMLが正しいかどうかはとりあえずメモ帳当たりにコピペしてXMLで
保存してIEあたりで開けば分かるよ。

178:nobodyさん
07/12/23 07:19:03
>$dom->content[0]で"aaa"、$dom->content[2]で"ddd"が取得できる。

ここ紛らわしいかな。
$xml = new SimpleXMLElement($xmlstr); //$xmlstrには177のXML文字列が入る
$content0 = $xml->content[0]; // aaa
$content2 = $xml->content[2]; // ddd
ってことね。

179:175
07/12/23 07:45:21 /N04QiDA
<data>
aaa
<p>bbb</p>
ddd
</data>

この状態でXMLとして正しくてDOMで厳密にいうと、
Elementノードdataの最初の子はTextノードで、"\naaa\n"となる。
2番目の子は、Elementノードpで最後の子がTextノードの"\nddd\n"。

んで、SimpleXMLElementから、"\naaa"などのTextノードにアクセスしたい。

$sXML = new SimpleXMLElement($xml);
$dom = dom_import_simplexml($sXml);
$dom->firstChild->nodeValue = 'zzz';
$sXml = simplexml_import_dom($dom);
ってやると、結果は
<data>zzz<p>bbb</p>
ddd
</data>
となる。

'zzz'の部分を"\nzzz\n"とすれば、
<data>
zzz
<p>bbb</p>
ddd
</data>
こうなる。




180:175
07/12/23 07:49:19 /N04QiDA
あっしまった。s/sXML/sXml/です。

ちゃんと書くとこう。
<?
$xml = <<<XML
<data>
aaa
<p>bbb</p>
ddd
</data>
XML;

$sXml = new SimpleXMLElement($xml);

$dom = dom_import_simplexml($sXml);
$dom->firstChild->nodeValue = 'zzz';
$sXml = simplexml_import_dom($dom);

echo $sXml->asXML();
?>

181:nobodyさん
07/12/23 10:36:41
すみません質問です。 ヒアドキュメントの中で、プルダウンを動的に生成できません
というか、ヒアドキュメント外で実行した関数の値(プルダウン表示)を中に
持ち込めない状況です
$address1_PD = $callData->makeKenPd("address1",$address1,1);
(↑の関数は、<option val=n>nName</option>を40回ほどループしてprintします)
echo <<<DOC
<select name="address1">
$address1_PD;
</select>
DOC;
とやってもうまくいきません $address1_PD = print($callData〜 なども
試したんですがダメでした
お手数をおかけしますが、回答お願いします php5 apache2 winxpです

182:nobodyさん
07/12/23 10:37:51 6DPIzhWO
すみません 上の181書き込みe-mail欄を消去しそこねました
アドバイスよろしくお願いします

183:nobodyさん
07/12/23 11:22:06
おっぱいカッコ

184:nobodyさん
07/12/23 11:42:34 MvcJEZMN
fgetcsvについて質問です。
A,B,C,D,E
F,G,H,I,J
K,L,M,N,O
という内容のテキストファイルcount.txtから

$handle = fopen("count.txt", "r");
$data = fgetcsv($handle);
for ($c=0; $c < 5; $c++) {
echo $data[$c];
}
fclose($handle);

というコードを用いてファイル内容を表示させようとしてるのですが
一行目までのABCDEまでしか値を取得出来ません。
二行目を抜き出すにはどんな条件を設定すればいいのでしょうか。
PHPManualを見ても、どの条件が該当するのか分からなかったので
よろしくお願いします。

185:nobodyさん
07/12/23 11:53:45
>>184
URLリンク(jp2.php.net)
例をよく見ろ

186:nobodyさん
07/12/23 12:12:21 MvcJEZMN
>>185
すみません、質問が悪かったですね。

Manualでは表示のためにwhileでfor文を繰り返してることは分かるのですが
!== FALSEがファイルの終端での全処理終了条件であることを除けば
単純にfor文を繰り返してるだけに見えるんです。
ABCDEABCDE...とループを繰り返さないための条件が何処に該当するのか、
ご教授お願いします。

187:nobodyさん
07/12/23 12:41:31
>>186
fgetcsv()すればファイルポインタが1行進む。
しまくればいずれEOFに到達して終わる。

188:nobodyさん
07/12/23 13:01:34 MvcJEZMN
>>187
whileの継続条件で用いられているfgetcsvが、
同時にポインタを進める役割も果たしてたということですか。
ポインタについてあまり学んでいないので気づきませんでした。
回答ありがとうございました。

189:nobodyさん
07/12/23 13:06:40 Dd+txFZ/
質問です。
変換するコマンド、をexecさせたいのですが、
どうしても引数を受け取る関数が必要なのでしょうか?
例えば、
exec("convert $hoge $huga);
$hogeが引数のファイル
$hugaがconvertした後のファイル
としたいのですが、失敗してしまいます。

190:nobodyさん
07/12/23 13:25:53
上の文を訳しなさい。【30点】

191:nobodyさん
07/12/23 13:37:38
質問です。
FATをNTFSに変換するコマンドconvertをPHPのexec関数で実行させたいのですが
どうしても出力を受け取る第二引数が必要なのでしょうか?
例えば、
exec("convert $hoge $huga);
$hogeが変換するファイル名
$hugaが変換後のファイル名
としたいのですが、失敗してしまいます。

192:nobodyさん
07/12/23 13:39:07 j7tEfXX4
質問があります。
PHP+PostgresqlまたはPHP+mysqlでシステム
を作ろうと思うのですが、PHP5が認識をしてくれません。
PHP info();でその部分がでてきません。
なんのパッケージをインストールしたらいいのでしょうか?
OSはFedora core4です。
板違いかもしれませんが、よろしくお願いします。


193:nobodyさん
07/12/23 13:42:43
>>192
何をしたけど認識をしてくれないの?

194:nobodyさん
07/12/23 13:48:06
SQLを、じゃない?

195:194
07/12/23 13:48:45
誤爆

196:nobodyさん
07/12/23 14:46:06
>>192
板違いです
「fedora core4 php mysql インストール」とかでググレカス

197:nobodyさん
07/12/23 14:55:33
板違いだが教えよう。
普通はyumでいれればパッケージ全部はいるはずだが、あとはphp-mysqlを入れればよいはず。php関連に限っていえばね

198:176
07/12/23 15:49:32
>>175
そのXMLであってるのか。。
DOM的には確かにノードの扱いはそうなると思うけど、XML的には
\naaa\n<p>bbb</p>\nddd\n がひとつのノードになるのは確かだと思う。
なので、
・DOM使ってXML的にもノードがばらけるように変換する。
・XML文字列を適当に文字列変換する。

くらいしかやっぱりないような気がするけどなあ。

199:nobodyさん
07/12/23 16:13:53
>>175>>176
\naaa\nはTextNode
<data></data>、<p></p>はElementNode
firstChildNode、SiblingNodeとNodeTypeとかでとれる気もするけどXMLってそういう使い方はしない気がする。
そしてSimpleXMLElementにそれがあるかどうかは知らない。

200:nobodyさん
07/12/23 17:04:49 4Xlz9Mde
複数の変数をいっきにチェックしたいのですが効率的な書き方ありませんか?

if (empty($var1) && empty($var2) && empty($var3))

今こんな風になってます。

201:nobodyさん
07/12/23 17:13:25
自分で関数を作る

202:nobodyさん
07/12/23 17:52:07
emptyて !$hoge と同義じゃなかたけ?


203:nobodyさん
07/12/23 17:56:22
>>200
別にその書き方でいいと思うんだけど。

204:175
07/12/23 18:08:04 /N04QiDA
>>175
XPathでもXQueryでもSAXとかも全部別々にあつかうし
XMLでも、それぞれ別にあつかうよ

>>198
それについては、>>179-180に

結論としては、やっぱ無理っぽい
SimpleXMLElementって名前な時点で、Elementノードしか
無理じゃないかな〜て気はしてたんだ

それでもやるなら、SimpleXMLElement派生させるなりHelper関数用意するしかないっぽい


205:175
07/12/23 18:11:12 /N04QiDA
どんべえ食いながらレスしてたら、レス番号ずれまくり……orz
>>204において

>>175>>198
>>198>>199

です。

206:nobodyさん
07/12/23 18:11:19
>>202
変数限定(返り値や即値は使えない)ってことと
UndefinedVariableエラーにならないってとこらが違うかな。

207:nobodyさん
07/12/23 19:35:35
>>200
in_array

208:nobodyさん
07/12/23 19:56:37 Lt3D3rib
PHP4 から PHP5に移行して
サンプル集を買ってきたんですが

$select = "select * from hoge where name = $hage";
$query = mysql_query($select);
$result = mysql_result($query,0,0);

などと書いてた事が

$db = new mysqli(-------);
$aa = $db->prepare("select * from hoge where name = ?");
$aa->bind_param("s",$jakld);

みたいな文に変わってるのですが、結局どっちでもいいのでしょうか?
かなり戸惑ってまして一から勉強しないと全く分からない状態で・・。


209:nobodyさん
07/12/23 19:57:23
>>200
1つのメソッドにする。
by 「リファクタリング」

210:nobodyさん
07/12/23 20:04:09
>>208
mysql関数を使うスタイルとmysqliを使うのは
好き好きでいい(でもPHP5以降ならmysqli使った方がスタイルが入り混じらないので良い)
けど、後者のサンプルにあるプリペアードクエリの発行の仕方は反映した方が良いよ。


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4060日前に更新/264 KB
担当:undef