トップページ⇒php
1001コメント357KB

【PHP】下らねぇ質問はここに書き込みやがれ 21

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2006/05/23(火) 22:05:17ID:???
PHPに関するくだらねぇ質問用スレです。
ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。

まず読め【PHP マニュアル】
http://www.php.net/manual/ja/

過去スレは>>2
0002nobodyさん2006/05/23(火) 22:05:52ID:???
【PHP】くだらねぇ質問はここに書き込みやがれ
http://pc5.2ch.net/test/read.cgi/php/1099322141/
【PHP】くだらねぇ質問はここに書き込みやがれpart2
http://pc5.2ch.net/test/read.cgi/php/1105218084/
【PHP】くだらねぇ質問はここに書き込みやがれpart3
http://pc5.2ch.net/test/read.cgi/php/1107780435/
【PHP】くだらねぇ質問はここに書き込みやがれpart4
http://pc8.2ch.net/test/read.cgi/php/1110697712/
【PHP】くだらねぇ質問はここに書き込みやがれpart5
http://pc8.2ch.net/test/read.cgi/php/1114787573/
【PHP】くだらねぇ質問はここに書き込みやがれpart6
http://pc8.2ch.net/test/read.cgi/php/1117945031/
【PHP】くだらねぇ質問はここに書き込みやがれpart7
http://pc8.2ch.net/test/read.cgi/php/1121100429/
【PHP】くだらねぇ質問はここに書き込みやがれpart8
http://pc8.2ch.net/test/read.cgi/php/1123431535/
【PHP】くだらねぇ質問はここに書き込みやがれpart9
http://pc8.2ch.net/test/read.cgi/php/1125716012/
【PHP】下らねぇ質問はここに書き込みやがれpart10
http://pc8.2ch.net/test/read.cgi/php/1127581425/
【PHP】下らねぇ質問はここに書き込みやがれpart11
http://pc8.2ch.net/test/read.cgi/php/1129582431/
【PHP】下らねぇ質問はここに書き込みやがれpart12
http://pc8.2ch.net/test/read.cgi/php/1130835396/
【PHP】下らねぇ質問はここに書き込みやがれpart13
http://pc8.2ch.net/test/read.cgi/php/1132921016/
【PHP】下らねぇ質問はここに書き込みやがれpart14
http://pc8.2ch.net/test/read.cgi/php/1134868212/
【PHP】下らねぇ質問はここに書き込みやがれpart15
http://pc8.2ch.net/test/read.cgi/php/1137236771/

0003nobodyさん2006/05/23(火) 22:06:43ID:???
【PHP】下らねぇ質問はここに書き込みやがれpart16
http://pc8.2ch.net/test/read.cgi/php/1139146534/
【PHP】下らねぇ質問はここに書き込みやがれpart18
http://pc8.2ch.net/test/read.cgi/php/1142417901/
【PHP】下らねぇ質問はここに書き込みやがれ Part19
http://pc8.2ch.net/test/read.cgi/php/1144513878/
【PHP】下らねぇ質問はここに書き込みやがれpart20
http://pc8.2ch.net/test/read.cgi/php/1146165153/
0004nobodyさん2006/05/23(火) 22:07:16ID:???
・part17よりテンプレ化

extractは極力使わないほうがいいと思います。
例えば、

hoge.php?_SESSION[user_pw]=hogehoge

って形で送られてきたとします。これを

extract($_GET)

しちゃうと、$_SESSION['user_pw']の値が、
"hogehoge"に変更されてしまいます。

もし事前にユーザのパスワードを、$_SESSION['user_pw']に
保持してたとしたら、勝手に書き換えられてしまうことになります。

それを避けるために

extract($_GET, EXTR_SKIP)

ってやって上書きを避けたとしても、
このままでは変数の初期化を忘れる危険性があります。

extract($_GET, EXTR_PREFIX_ALL, "get")

と、接頭辞をつけるのが一番安全な気はしますが、
それなら最初から
$hoge = $_GET['hoge'];
ってやるのと手間が変わらないと思いますし、可読性も増します。
確かにextractするのは楽だと思いますけど。
0005nobodyさん2006/05/23(火) 22:17:27ID:???
過去ログ
ttp://makimo.to/cgi-bin/search/search.cgi?shw=100&q=PHP%81z%89%BA%82%E7%82%CB%82%A5%8E%BF%96%E2%82%CD&andor=AND&sf=0&H=&all=on&view=table
0006nobodyさん2006/05/23(火) 22:59:39ID:???
>>1乙彼
0007nobodyさん2006/05/24(水) 00:21:31ID:LAJIQlLY
くだらない質問ですみません!



どうしてPHPの質問ってこんなにくだらないものばかりなんですか?
0008nobodyさん2006/05/24(水) 00:40:53ID:pDgg/19c
php勉強中です。functionを書いていて悩んでいます。

function aaa($bbb) {
$ccc = "これは".$bbb."です。";
return $ccc
}
echo aaa("お茶");
echo aaa("水");

とやると、これはお茶です。これは水です。と帰ってくるのですが、


0009nobodyさん2006/05/24(水) 00:41:25ID:pDgg/19c
つづき


function ddd($eee) {
$con = mysql_connect(~~~~~);
〜省略〜
$sql = "select * from hogetable where hoge = $eee";
$rst = mysql_query($sql, $con);
$col = mysql_fetch_array($rst) ;
$fff = $col["hoge"];
return $fff;
}

echo ddd(hogehoge);
echo ddd(fugafuga);

とやると、一行目のechoの$col["hoge"]は帰ってきますが、
二行目は戻ってきません。
一行目と二行目を入れ替えると、fugafugaを渡したものが
戻ってきますが、hogehogeの方は戻りません。

実際はもう少しfunctionの中身は複雑なのですが、
sql文の条件に入る単語を引数にして、mysql_fetch_arrayした結果を
取り出すfunctionにしたいです。
functionの中でmysqlに接続してはいけないのですか?
なぜ中途半端に動く(一行目だけ戻ってくる)のかわかりません。
どなたかよろしくお願いします。
0010nobodyさん2006/05/24(水) 00:52:12ID:???
>>8
ん!ん!ん!
意味がよく分からないんだけど、hogehogeとfugafugaはSQLのwhere条件に使うんだよな?
で、>>9の関数を実行するとddd()という関数が二回実行されるはずなのに上側のddd()関数
しか値を返してくれないって事だよな?
0011nobodyさん2006/05/24(水) 01:00:23ID:pDgg/19c
すいません。レスありがとうございます。
悩み果てて、眠気と戦いながら書いたので、書いたものはあやしいかもしれませんが、
10さんの仰ってる内容で正しいです。
同じsql文の条件の部分にhogehogeとかを渡して、mysql_fetch_arrayしてデータを取り出したいだけです。
ddd()を使えば、違った条件で抽出したデータを取り出せて便利と思い、
試しに動くか2行連続で書いたら、一番上に書いた行の結果しか帰ってこないんです。
何か原因はかんがえられますでしょうか?
0012nobodyさん2006/05/24(水) 01:12:04ID:???
どなたかphpをある程度わかる人で暇な方はいらっしゃいませんか?
エラー?見たいなものががどうしても出てしまうのでメッセで教えていただけませんか?
凄くシンプルな20行程度のプログラムなのですが。
0013nobodyさん2006/05/24(水) 01:13:25ID:???
ちなみに16歳♀です(><)
0014nobodyさん2006/05/24(水) 01:15:32ID:qW6N8luO
↑偽者 ですが。
解決できたら報酬はもちろん差し上げますので。。お願いします。
0015nobodyさん2006/05/24(水) 01:27:11ID:qW6N8luO
諦めます・・・。
001682006/05/24(水) 01:34:50ID:pDgg/19c
phpのマニュアルで、「同じ引数で2回mysql_connect()をコールした場合〜」という
怪しげな一文を見つけたのですが、いまいち難しくてわからないです。
ttp://php.s3.to/man/function.mysql-connect.html
これはなにか関係ありますかね?
functionでmysqlに繋ぐのは普通ですよね?
0017nobodyさん2006/05/24(水) 01:54:25ID:???
>>12
ここにエラーメッセージ書けって。バカが
0018nobodyさん2006/05/24(水) 01:58:20ID:???
>>16
function内でconnectはまぁ普通だが、普通はそのときの戻り値を別途保持して
2回目以降はそれを使いまわすようにする。
selectのたびに毎回connectなんて真似はしない。

ただ、通常はmysql_connectのパラメータが全く一緒の内容なら
何回connectしても同じリソースIDが返るのでちゃんと動きそうなもんではある。
mysql_connectとmysql_queryの直後で
echo mysql_error();
を表示させてみてはどうだろう?
あと、それぞれの戻り値をちゃんとエラー判定しような。
0019nobodyさん2006/05/24(水) 02:00:13ID:???
>>1
本スレってなくなったような…
0020nobodyさん2006/05/24(水) 02:01:03ID:???
>>12
まずメッセID晒せ
0021nobodyさん2006/05/24(水) 02:03:09ID:???
>>16
まぁ、functionでMySQLに繋ぐって言う事自体はまったく問題ないんだけど、その書き方だと
一回接続してるのにもう一回接続しようとしてしまうだろ?
だからさらに別functionに分けてMySQLに接続するのみのfunctionにしてみたらどうだ?
多分それで問題も解決すると思う。

今回のエラーの原因は「一度接続して、通信を切断していないのにもう一度MySQLに接続しようとしている」
体と思う。
002282006/05/24(水) 02:09:47ID:pDgg/19c
>21 ありがとうございます。
気になって眠れずにいました。感謝。
mysqlへの接続用functionはちょっと試したのですが、
その場合は上に僕が書いたddd()の中にconnect()(←mysql接続用function(仮))を
書くのでしょうか?でも、それだと結局同じになってしまいますよね?
いまいちfunctionの使い方自体が分かっていないので、もう少し勉強します。
本当にありがとうございます。
明日また試して報告します。
0023nobodyさん2006/05/24(水) 02:10:11ID:???
む。
オレの出番はないようだ・・・
0024nobodyさん2006/05/24(水) 02:13:22ID:???
>>22
$r=connect(必要なパラメータ);
echo ddd( $r, hogehoge );
disconnect(必要なパラメータ);
exit;

function ddd( $r, $eee )
{
 略
}

マニュアルみてないけどだいたいこんな感じ
0025nobodyさん2006/05/24(水) 02:22:01ID:???
>>22
function connect() {
 if(! $GLOBALS['connect_id']) {
  if(! ($GLOBALS['connect_id'] = mysql_connect(〜))) {
   echo "接続エラー";
   exit;
  }
 }
 return $GLOBALS['connect_id'];
}
function ddd($eee) {
 $con = connect();
  :
}

例えばこんな感じ
0026nobodyさん2006/05/24(水) 02:34:29ID:fsmU1YOR
質問です。

携帯用の掲示板を作っているのですが、
コメントで改行されると、テキストデータに保存したときに
改行されたまま保存されてしまいます。
この改行を取り除いて保存したいのですけど、どうすればよいですか?
0027nobodyさん2006/05/24(水) 02:41:56ID:???
>>26
方法はいっぱいあるよ。
でだ!まず改行コードはもちろん知っているよな?PHPとかで書くなら「\r\n」「\r」「\n」の3種類だ。
これらがそのままテキストに保存されるから改行されちゃうんだ!
さらにヒントだ! str_replace("\n","","文字列");
0028nobodyさん2006/05/24(水) 02:42:11ID:???
日本語大丈夫だったか確証持てないがnl2brあたり
mb_ereg_replaceなんかも見るといいよ
0029nobodyさん2006/05/24(水) 02:45:27ID:???
>>9
そのソースでちゃんと2回目以降も値が取れたぞ。

$sql = "select * from hogetable where hoge = '$eee' ";
echo ddd('hogehoge');
だと思うけどな。
0030nobodyさん2006/05/24(水) 02:49:56ID:???
>>21
マニュアルに書いてある通り、その場合は2重接続を行わずに
接続中のコネクトIDを返すので問題ない(エラーとはならない)。
0031nobodyさん2006/05/24(水) 03:04:46ID:qW6N8luO
12です。自分になりにやってみたのですが、エラーが出ました。素人なので当然といえば当然なのですが。。
エラーというより簡単な要望に近い形になります。
そのソースは某サイトで購入したものでといってもソースは20行程度なのですが。
なので晒したいのですが晒せないといった状態です。ご勘弁ください。
メッセなら晒せます。[email protected] です。お願いします。
0032nobodyさん2006/05/24(水) 03:07:54ID:fsmU1YOR
>>27
文字列置き換えですね。
その方法でできました、ありがとうございます。

>>28
辞書見る限り、まだちょっと理解できませんけど
アドバイスありがとうございます。
0033nobodyさん2006/05/24(水) 03:09:43ID:fsmU1YOR
もうひとつ質問なのですけど、
$data ←この中身が数値の場合、または半角英数字の場合にTRUEを返すと
いった関数はありませんでしょうか?
初歩的な質問ですみません・
0034nobodyさん2006/05/24(水) 03:20:19ID:???
>>33
てめぇ!若いうちから楽をするんじゃない!正規表現でシコシコ作るんだ!!

多分PHPのことだから調べたらあると思う
0035nobodyさん2006/05/24(水) 03:32:58ID:???
>>33
is_XXXX系の関数が色々あるからリファレンスひいてみ
>>34
多分てあんたw
0036nobodyさん2006/05/24(水) 04:00:50ID:???
>>19
久びさに来てみたら本スレ消えてるじゃん。
何が起こったの?
0037nobodyさん2006/05/24(水) 04:08:36ID:???
質問スレはマニュアル権索装置ではない

>>36
天井に達した後、誰も立てていないだけ
立たないって事は需要が無いんだと思うが・・・
0038nobodyさん2006/05/24(水) 04:27:20ID:???
>>36
くだ質と同レベルなんだからもう要らないじゃん

と、スレ終了間際に誰かが言ったら誰も立てなくなった。
0039nobodyさん2006/05/24(水) 07:26:22ID:???
>>33
ctype_alnum($data); // = preg_match('/^[a-z0-9]*$/i', $data)
0040nobodyさん2006/05/24(水) 07:46:13ID:???
前スレの997へ...

Order allow,deny
Deny from all
0041nobodyさん2006/05/24(水) 08:18:47ID:???
前スレ読んだら拡張子がphpの時点でSEO的に不利って書いてあったけど
クエリで何か渡してる場合に限っての話じゃないの?
0042nobodyさん2006/05/24(水) 08:34:29ID:???
クエリが付いてると明らかに不利。クエリのないPHPは若干(htmlに比べて)不利。
〜.php/file.htmlにするとあーら不思議(謎
0043nobodyさん2006/05/24(水) 08:57:13ID:???
>>42
全然同じかと思ってた

例えば
index.php?q=hogehoge
index.php/hogehoge
index.php/hogehoge.html
だったらどう?
やっぱ hogehoge.html > hogehoge ?


ってかスレ違いかな・・
0044nobodyさん2006/05/24(水) 09:12:43ID:???
>>42
最近はあまり関係ないよ
自分のところはクエリ表記だが検索エンジンは問題ない

重要なことは正しい構文 .htmlが良かったのは昔昔昔昔の話

完全にスレ違いだな
004582006/05/24(水) 10:40:10ID:Y9pwRi1O
>23,24,25,29,30
レスありがとうございます。助かりました。8です。
今調べたら、全く別のところに原因がありました。
実はmysql_connect($dbserver,$dbuser,$dbpass);
とかって書いていて、それぞれの値は別のファイルに書いていまして、
それをrequire_once(./hoge.php);で読み込んでいました。
function ddd($eee) {
require_once(./hoge.php);※設定ファイル
mysql_connect($dbserver,$dbuser,$dbpass);
以下略
}
みたいな感じです。
このrequire_onceをただのrequireにしたら大丈夫でした。
自分が買った参考書は外部のファイルを読み込むときは
いつもrequire_onceだったので、気にせずにいました。
require_onceの場合、2回目のddd($hoge)のときは
mysqlに接続できて無かったってことでしょうか?

0046nobodyさん2006/05/24(水) 12:06:02ID:???
>>45
require_onceはその名の通り1回しか読み込まないので
2回目は読み込まれずに未定義のID/Passで接続しようとしたから


最初から全部晒せばすぐに解決したと思われるのだが・・・
004782006/05/24(水) 12:33:53ID:Y9pwRi1O
>45
レスありがとうございます。
ほんとその通りですね。申し訳ないです。

>みなさん
require と includeの使い分けのルールみたいなものはありますか?
また、それぞれ_onceにしないとダメなケースとかでよくあるものとかあったら
教えて欲しいです。
0048nobodyさん2006/05/24(水) 14:37:59ID:???
こういう駄目な奴はレスアンカーを必ずと言って良いほどミスる法則
0049nobodyさん2006/05/24(水) 15:50:46ID:???
現在時刻をミリ秒まで取得出来る関数ってある?
0050nobodyさん2006/05/24(水) 15:59:37ID:???
>>49
ない。
が、もっと細かいのがある。
0051nobodyさん2006/05/24(水) 16:09:30ID:???
下らねぇ質問だと思うんですが
PHPを使ったフォトブログを簡単に設置できるスクリプトってありますよね。
そういうもの(pixelpostやfolderblog)を設置すると必ずindex.phpでページがblankになるんです。
解決策としては
error_reporting(0);の部分をerror_reporting(7);またはerror_reporting(E_ALL);
とすればいいと書いてあるんですが
同じようにblankになり、リロードすることで読みこまれます。
鯖はxreaなんですが
すれ違いですかね。
0052nobodyさん2006/05/24(水) 16:10:12ID:1ttwMHsA
パスワード認証って、どうやるのが一般的なの?
俺はPOSTデータを比較演算子で比較してるけど。

おまいらはどうやってる?
0053nobodyさん2006/05/24(水) 16:16:25ID:???
>>50
どんなのでしょうか?
0054nobodyさん2006/05/24(水) 16:32:35ID:???
>>53
公式マニュアルで現在時刻を取得する関数見れば
関連の関数として書いてあるじゃん。
「ある」ことは教えてもらったんだからそこからは自分で探しなさいよ。
0055nobodyさん2006/05/24(水) 16:39:04ID:???
>>47
関数定義や設定値定義などには普通はonceを使う。
同じものを何度も読み込むなんて無駄だから。
また、特別な理由があるわけじゃなきゃ関数の中でrequireとかはあまりしない。
それが関数の機能的に意味のあることならもちろん構わないが。
requireはそのファイルが読み込めないと致命的な場合に用いる。
includeは無ければ無いで問題が出ないような場合に用いる。
0056nobodyさん2006/05/24(水) 17:25:46ID:???
>>47
結構長いこと仕事でPHP使ってるけど、まだ〜once以外使ったことないよ。
ちゃんと設計してれば出番は少ないと思われる。
ま、ケースバイケースだがね。
0057472006/05/24(水) 18:01:35ID:Y9pwRi1O
>>55,56
レスどうもです。
僕はdbの名前とかパスワードを別ファイルにしたのですが、
これはonecだとダメということは、みなさんは別の方法でやっているのですか?
mysqlにつなぐfunctionを書くことは多いと思うのですが、
どんな風に書いていますか?

また、別の類の質問かもしれないのですが、
例えば、僕が書いたコードは、
mysqlに接続するだけのfunctionがあって、
そのつぎに「条件の違うクエリを打って結果をreturnする」functionがあって、
2個目のfunctionの中で1個目のfunctionを使っています。
つまりfunctionの中にfunctionがあります。
こういうのは問題ないですか?


0058nobodyさん2006/05/24(水) 18:04:52ID:IMQ+SU6Q
可変関数でクラスメソッドを指定する方法はないでしょうか?
メソッド名を指定できるのは分かったのですが

$func = "Hoge::execute";
$func();

みたいな感じに、クラス名から指定したいのです。
0059nobodyさん2006/05/24(水) 18:06:15ID:???
>>57
>>24-25
0060nobodyさん2006/05/24(水) 18:07:55ID:???
同一ページ内でフォームの処理を行うときに
その処理の判別で便利な方法はどんなのですか?

�@
type="hidden" name="action" value="****"
をつけて
switch($_POST['action'])
で判別

�A
type="submit" name="action[****]" value="うんたら"
をつけて
(どうやって判別?)

�B
別ページで処理して元ページに戻す

などなど考えましたが皆さんはどんな手法を使ってますか?
0061nobodyさん2006/05/24(水) 18:09:43ID:???
日本語で(ry
0062nobodyさん2006/05/24(水) 18:10:08ID:???
>>60
処理内容とフォームのデザインによる
Javascript使えるならsubmit時にvalue変えることもできるし。
0063512006/05/24(水) 18:52:16ID:???
すいません。PHP系ブログツールというスレを発見したのでそっちで聞いてみます。
0064nobodyさん2006/05/24(水) 20:05:31ID:Ixcu1EBT
PHPでファイルに書込みをする操作なのですが
file.txtというファイルに
aaa<>111<>222
bbb<>333<>444
ccc<>555<>666
という形で、格納されているデータがあってある文字列を書き込みたい時、
もし、file.txtの中に既に含まれるものがあれば、書き込まない。
無ければ、書き込む。
という操作をさせたいときには、どのように書けば良いでしょうか?

何となく頭では分かっているのですが
どう書けば良いのかが分からなかったので質問しました。
よろしくお願いいたします。
0065nobodyさん2006/05/24(水) 20:20:13ID:???
>>64
分かってるならそのまま書け
宿題は宿題スレで
0066nobodyさん2006/05/24(水) 20:22:09ID:???
そういえば、気になるんだけど、区切り文字 <> にする意味何?

その区切り文字使う人って大抵ユーザ入力のデータをHTMLタグを無効化(htmlspecialchars)しておいて、
出力時にそのまま書き出すようなコード書いていることが多いんだよね。

エスケープ処理は、htmlとしてのprint時にやったほうがセキュアでシンプルなコードになるよ。

例えば、データベースにいれたりファイルを直接編集したりするときには、< が > とかに変換されてたって
まどろっこしくなるだけだし、複数の方式でファイルへの書き込みをやるときとかにエスケープ漏れが生じることがある。
0067nobodyさん2006/05/24(水) 20:29:25ID:Ixcu1EBT
>65
アルゴリズムは分かるのですが
書き方が分かりません。

>66
ありがとうございます。
参考になります。
0068nobodyさん2006/05/24(水) 20:40:44ID:???
>>67
アルゴリズムがわかるなら、それを書いたら?
日本語でもいいから。

それを、文法として間違っていても、動作しなくてもいいから、
適当と思うPHPの関数、構文に置き換えて書いてみたらどうだろう。

0069nobodyさん2006/05/24(水) 20:53:56ID:Ixcu1EBT
書込みたいものを格納した変数A。
ファイルオープン。
ファイルの読み込み、丸ごと配列aに格納。
変数Aが、ファイルの中身と同じかを正規表現で調べる。
ファイルロック。
違っていれば、追加書込み。
ファイルクローズ。

こんな流れですよね?
0070nobodyさん2006/05/24(水) 20:56:47ID:???
>>69
ファイルロックはファイルオープンの直後のがよくね?
処理自体は合ってるから、それをそのままPHPの関数で置きかえれ。
0071nobodyさん2006/05/24(水) 22:03:49ID:???
>>57
> 僕はdbの名前とかパスワードを別ファイルにしたのですが、
> これはonecだとダメということは、みなさんは別の方法でやっているのですか?

普通はonceを使うよ、それ。
ただし関数の中じゃなく、プログラムの先頭で1回だけだが。

> 2個目のfunctionの中で1個目のfunctionを使っています。
> つまりfunctionの中にfunctionがあります。
> こういうのは問題ないですか?

ごく普通。プログラム概論とかソフトウェア工学とかの本を読んでみれば?
0072nobodyさん2006/05/24(水) 22:05:01ID:???
>>69
ファイルの中身と全く同じかどうかを調べるなら
== で文字列比較素すればOK。正規表現要らない。
0073nobodyさん2006/05/24(水) 22:24:37ID:???
>>69
つまずきそうなのは中身の比較あたり?
ファイルの内容を配列に格納したら、
$add = 1; //最初は追加モード
foreach($file as $line) {
  if($line == $data) { //ファイルの各行と今回の追加データを比較
    $add = 0; //一致する内容があれば追加モードOFF
  }
}
if($add) {
  ファイルへ書き込む処理
}
みたいな感じでいける。
0074nobodyさん2006/05/24(水) 22:54:48ID:???
>>62
具体的にどんな処理内容とフォームのデザインによってどう変えますか?
0075nobodyさん2006/05/24(水) 22:59:52ID:???
>>74
60じゃないけど。
大した種類も無くて楽にやるなら1、拡張する可能性があるなら2、
複数のフォームがあってデータを連動させたい場合なんかはJavaScript併用、とか。
特に困ることがないなら1でいいんじゃないの。
0076522006/05/24(水) 23:16:26ID:1ttwMHsA
あの、誰か>>52にご意見を...
0077nobodyさん2006/05/24(水) 23:16:51ID:cMAB9oLf
$obj->$method();
はできるのですが、
$class::$method();
はできませんか?
試してみたら、パースエラーが出ましたが、
なんとか$class部分を変数にして実行したいです。
0078772006/05/24(水) 23:19:26ID:???
自己解決。call_user_func() を使うことにしました。
0079nobodyさん2006/05/24(水) 23:26:20ID:???
>>76
一般的かどうかは定かではないが、
予め設定したパスワードはcrypt等で暗号化した上で保存
フォームから送られたパスワードも同じ暗号化処理をした上で、
保存してあるパスワードと比較。
比較演算子は === とか使っておけば間違いないんじゃないのかな?
0080nobodyさん2006/05/24(水) 23:34:23ID:vQsxJJUN
smartyで質問があります。

親ファイルから子ファイルをincludeするのですが、
子ファイルで
{assign var="test" value="sample"}
と変数を指定して
その変数を親ファイル側で利用したいのですが、
できませんでした。
includeされたファイルで設定された値は
include元では利用できないのでしょうか?

出来ない場合、上記のような機能を実現するには
どうしたら良いでしょうか?

config_loadは使用しない形で実現したいのですが
方法が思い浮かびません。

識者の方ご教授をおねがいします。
0081nobodyさん2006/05/24(水) 23:35:07ID:JcLctTfB
サイトのメニュー部分など共通する部分を
<? include("./p_parts/hoge.php"); ?>
のような形で挿入しています。
このようなパーツが複数あるのですが、特定のファイル(theme.php)を挿入した部分だけ

Warning: main(): open_basedir restriction in effect. File(../p_parts/theme.php) is not within the allowed path(s): (.:/php-tmp) in /〜/index.php on line 76

Warning: main(../p_parts/theme.php): failed to open stream: Operation not permitted in /〜/index.php on line 76

Warning: main(): Failed opening '../p_parts/theme.php' for inclusion (include_path='.:/usr/share/php4:/usr/share/php') in /〜/index.php on line 76

というエラーが返って来ます…。
原因と対策を教えてください。よろしくお願いします。
0082522006/05/24(水) 23:47:05ID:1ttwMHsA
>>79
ありがとん。
参考になったよ(・∀・)md5あたりを使ってみます。
0083nobodyさん2006/05/24(水) 23:59:05ID:???
>>81
> <? include("./p_parts/hoge.php"); ?>
ここでは ./p_parts サブディレクトリなのに

> Warning: main(../p_parts/theme.php):
こっちだと ../p_parts と上位ディレクトリの指定になってるからじゃ?
0084812006/05/25(木) 00:05:46ID:JcLctTfB
>>83
レスありがとうございます。階層はコピペミスで実際は
/p_parts/
└/text/index,php …ここに<? include("../p_parts/theme.php"); ?>と記述
になっています。SSI的にphpを使う知識しかなく、中身はただのhtmlを記述したものです。
他のhoge.php等も同様な感じでちゃんと表示されているのですが…
0085nobodyさん2006/05/25(木) 00:17:33ID:???
>>84
他のファイルも全部同じパスにあるの?
php.iniのopen_basedirの設定ってどうなってる?
0086nobodyさん2006/05/25(木) 00:18:54ID:???
>>81
実はファイル名を間違ってるとか
0087nobodyさん2006/05/25(木) 00:19:08ID:???
>>66
そうするとデリミタは?
DBだとその通りなんだけど、テキストだとどうなんだろ。
カラム区切り、レコード区切り両方意識しなきゃならないし。
0088nobodyさん2006/05/25(木) 00:28:31ID:???
TABでいいんじゃね?
0089812006/05/25(木) 00:35:14ID:???
>>85,86
他のhoge.php等も同じパスです。
open_basedirの設定は鯖がphpinfo() ;を禁止しているのでよく解りません。
ファイル名など禁則文字があるのかと思いリネームしたりもしましたが無駄でした。
あと、theme.phpのアップデート前には表示できていたんですが…

もう少し頑張ってみてダメだったら鯖に聞いたほうが早いでしょうか…orz
0090nobodyさん2006/05/25(木) 00:55:06ID:???
>>89
theme.phpの中でさらに何かやってんのか?
中身みしてみ
0091nobodyさん2006/05/25(木) 00:56:40ID:???
>>89
ファイルのオーナーとパーミッションは前と一緒か?
0092812006/05/25(木) 01:07:41ID:???
theme.phpの中身は
<h2>Theme</h2>
<p>「○○のお題」に挑戦。最低限隔週更新。</p>
<ol class="thumb"><li>ほにゃらら〜</li></ol>
<p class="small t_right"><a href="URL">サイト名</a></p>
これだけです。
オーナーとパーミッションは前と一緒です。
オーナーは自分で属性は604です。
0093nobodyさん2006/05/25(木) 01:22:20ID:???
part20で出た商品管理のやつと結構似てるんだけど、
ソートした時に、10000円より5000円のほうが
高くなるんだよね。カンマ付いてないのに。
なんでYO!
0094nobodyさん2006/05/25(木) 03:28:47ID:???
>>89
file_exists でチェック
0095nobodyさん2006/05/25(木) 03:30:17ID:???
>>93
1, 0, 0, 0, 0, 円の1バイト目, 円の2バイト目
5, 0, 0, 0, 円の1バイト目, 円の2バイト目
0096nobodyさん2006/05/25(木) 04:34:53ID:???
>>93
文字列型同士なので、当然文字列として比較するから、1文字目(1と5)で決まる
数値変換をさせるか、一旦数値型にキャストすれば良い

<?php
$a='5000円';
$b='10000円';
if ($a>$b) echo "$a>$b";
if ($a<$b) echo "$a<$b";
echo "\n";
if ((float)$a>(float)$b) echo "(float)$a>(float)$b";
if ((float)$a<(float)$b) echo "(float)$a<(float)$b";
echo "\n";
if (0+$a>0+$b) echo "0+$a>0+$b";
if (0+$a<0+$b) echo "0+$a<0+$b";

//5000円>10000円
//(float)5000円<(float)10000円
//0+5000円<0+10000円
0097nobodyさん2006/05/25(木) 08:28:10ID:???
>>96
トン
0098nobodyさん2006/05/25(木) 08:49:01ID:T8t5b4Lq
こちらで質問させてください。
session.gc_maxlifetime を10にしているのに10秒たっても
セッションがタイムアウトしません(切れてくれません)。なぜなんでしょうか?
※値10はテスト用に短くしています。意味は無いです。

session.cookie_lifetime を10にすると10秒で切れてくれるのですが、
これだとブラウザ閉じてもまだセッションが生きているので要件上ダメなのです。

環境はIIS5.0 / php5.0.3 です。php.iniの値は下のようになってます。
0099nobodyさん2006/05/25(木) 08:51:27ID:T8t5b4Lq
98のphp.iniの値です。

session.auto_start Off Off
session.bug_compat_42 Off Off
session.bug_compat_warn On On
session.cache_expire 180 180
session.cache_limiter nocache nocache
session.cookie_domain no value no value
session.cookie_lifetime 0 0
session.cookie_path / /
session.cookie_secure Off Off
session.entropy_file no value no value
session.entropy_length 0 0
session.gc_divisor 100 100
session.gc_maxlifetime 10 10
session.gc_probability 1 1
session.hash_bits_per_character 5 5
session.hash_function 0 0
session.name PHPSESSID PHPSESSID
session.referer_check no value no value
session.save_handler files files
session.save_path no value no value
session.serialize_handler php php
session.use_cookies On On
session.use_only_cookies Off Off
session.use_trans_sid 0 0
0100nobodyさん2006/05/25(木) 09:24:01ID:???
>>80
{include file="header.tpl" page_title="タイトル" user="$user"}

とかすればいい。
includeされたファイルでは{$page_title}とかで参照できるはず。
オブジェクトも渡せるんじゃなかったかな。
0101nobodyさん2006/05/25(木) 09:39:26ID:???
大垣セキュリティ本の232ページで「trans sid機能は非常に危険」と
書いてありましたが、ではクッキーを使えない携帯では
どうやって安全なセッション処理を実現したらいいのでしょうか。
■ このスレッドは過去ログ倉庫に格納されています