【PHP】下らねぇ質問はここに書き込みやがれ 21
・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するのは楽だと思いますけど。
7 :
nobodyさん :2006/05/24(水) 00:21:31 ID:LAJIQlLY
くだらない質問ですみません! どうしてPHPの質問ってこんなにくだらないものばかりなんですか?
8 :
nobodyさん :2006/05/24(水) 00:40:53 ID:pDgg/19c
php勉強中です。functionを書いていて悩んでいます。 function aaa($bbb) { $ccc = "これは".$bbb."です。"; return $ccc } echo aaa("お茶"); echo aaa("水"); とやると、これはお茶です。これは水です。と帰ってくるのですが、
9 :
nobodyさん :2006/05/24(水) 00:41:25 ID: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に接続してはいけないのですか? なぜ中途半端に動く(一行目だけ戻ってくる)のかわかりません。 どなたかよろしくお願いします。
>>8 ん!ん!ん!
意味がよく分からないんだけど、hogehogeとfugafugaはSQLのwhere条件に使うんだよな?
で、
>>9 の関数を実行するとddd()という関数が二回実行されるはずなのに上側のddd()関数
しか値を返してくれないって事だよな?
11 :
nobodyさん :2006/05/24(水) 01:00:23 ID:pDgg/19c
すいません。レスありがとうございます。 悩み果てて、眠気と戦いながら書いたので、書いたものはあやしいかもしれませんが、 10さんの仰ってる内容で正しいです。 同じsql文の条件の部分にhogehogeとかを渡して、mysql_fetch_arrayしてデータを取り出したいだけです。 ddd()を使えば、違った条件で抽出したデータを取り出せて便利と思い、 試しに動くか2行連続で書いたら、一番上に書いた行の結果しか帰ってこないんです。 何か原因はかんがえられますでしょうか?
どなたかphpをある程度わかる人で暇な方はいらっしゃいませんか? エラー?見たいなものががどうしても出てしまうのでメッセで教えていただけませんか? 凄くシンプルな20行程度のプログラムなのですが。
ちなみに16歳♀です(><)
14 :
nobodyさん :2006/05/24(水) 01:15:32 ID:qW6N8luO
↑偽者 ですが。 解決できたら報酬はもちろん差し上げますので。。お願いします。
15 :
nobodyさん :2006/05/24(水) 01:27:11 ID:qW6N8luO
諦めます・・・。
16 :
8 :2006/05/24(水) 01:34:50 ID:pDgg/19c
>>16 function内でconnectはまぁ普通だが、普通はそのときの戻り値を別途保持して
2回目以降はそれを使いまわすようにする。
selectのたびに毎回connectなんて真似はしない。
ただ、通常はmysql_connectのパラメータが全く一緒の内容なら
何回connectしても同じリソースIDが返るのでちゃんと動きそうなもんではある。
mysql_connectとmysql_queryの直後で
echo mysql_error();
を表示させてみてはどうだろう?
あと、それぞれの戻り値をちゃんとエラー判定しような。
>>16 まぁ、functionでMySQLに繋ぐって言う事自体はまったく問題ないんだけど、その書き方だと
一回接続してるのにもう一回接続しようとしてしまうだろ?
だからさらに別functionに分けてMySQLに接続するのみのfunctionにしてみたらどうだ?
多分それで問題も解決すると思う。
今回のエラーの原因は「一度接続して、通信を切断していないのにもう一度MySQLに接続しようとしている」
体と思う。
22 :
8 :2006/05/24(水) 02:09:47 ID:pDgg/19c
>21 ありがとうございます。 気になって眠れずにいました。感謝。 mysqlへの接続用functionはちょっと試したのですが、 その場合は上に僕が書いたddd()の中にconnect()(←mysql接続用function(仮))を 書くのでしょうか?でも、それだと結局同じになってしまいますよね? いまいちfunctionの使い方自体が分かっていないので、もう少し勉強します。 本当にありがとうございます。 明日また試して報告します。
む。 オレの出番はないようだ・・・
>>22 $r=connect(必要なパラメータ);
echo ddd( $r, hogehoge );
disconnect(必要なパラメータ);
exit;
function ddd( $r, $eee )
{
略
}
マニュアルみてないけどだいたいこんな感じ
>>22 function connect() {
if(! $GLOBALS['connect_id']) {
if(! ($GLOBALS['connect_id'] = mysql_connect(〜))) {
echo "接続エラー";
exit;
}
}
return $GLOBALS['connect_id'];
}
function ddd($eee) {
$con = connect();
:
}
例えばこんな感じ
26 :
nobodyさん :2006/05/24(水) 02:34:29 ID:fsmU1YOR
質問です。 携帯用の掲示板を作っているのですが、 コメントで改行されると、テキストデータに保存したときに 改行されたまま保存されてしまいます。 この改行を取り除いて保存したいのですけど、どうすればよいですか?
>>26 方法はいっぱいあるよ。
でだ!まず改行コードはもちろん知っているよな?PHPとかで書くなら「\r\n」「\r」「\n」の3種類だ。
これらがそのままテキストに保存されるから改行されちゃうんだ!
さらにヒントだ! str_replace("\n","","文字列");
日本語大丈夫だったか確証持てないがnl2brあたり mb_ereg_replaceなんかも見るといいよ
>>9 そのソースでちゃんと2回目以降も値が取れたぞ。
$sql = "select * from hogetable where hoge = '$eee' ";
echo ddd('hogehoge');
だと思うけどな。
>>21 マニュアルに書いてある通り、その場合は2重接続を行わずに
接続中のコネクトIDを返すので問題ない(エラーとはならない)。
31 :
nobodyさん :2006/05/24(水) 03:04:46 ID:qW6N8luO
12です。自分になりにやってみたのですが、エラーが出ました。素人なので当然といえば当然なのですが。。
エラーというより簡単な要望に近い形になります。
そのソースは某サイトで購入したものでといってもソースは20行程度なのですが。
なので晒したいのですが晒せないといった状態です。ご勘弁ください。
メッセなら晒せます。
[email protected] です。お願いします。
32 :
nobodyさん :2006/05/24(水) 03:07:54 ID:fsmU1YOR
>>27 文字列置き換えですね。
その方法でできました、ありがとうございます。
>>28 辞書見る限り、まだちょっと理解できませんけど
アドバイスありがとうございます。
33 :
nobodyさん :2006/05/24(水) 03:09:43 ID:fsmU1YOR
もうひとつ質問なのですけど、 $data ←この中身が数値の場合、または半角英数字の場合にTRUEを返すと いった関数はありませんでしょうか? 初歩的な質問ですみません・
>>33 てめぇ!若いうちから楽をするんじゃない!正規表現でシコシコ作るんだ!!
多分PHPのことだから調べたらあると思う
>>33 is_XXXX系の関数が色々あるからリファレンスひいてみ
>>34 多分てあんたw
>>19 久びさに来てみたら本スレ消えてるじゃん。
何が起こったの?
質問スレはマニュアル権索装置ではない
>>36 天井に達した後、誰も立てていないだけ
立たないって事は需要が無いんだと思うが・・・
>>36 くだ質と同レベルなんだからもう要らないじゃん
と、スレ終了間際に誰かが言ったら誰も立てなくなった。
>>33 ctype_alnum($data); // = preg_match('/^[a-z0-9]*$/i', $data)
前スレの997へ... Order allow,deny Deny from all
前スレ読んだら拡張子がphpの時点でSEO的に不利って書いてあったけど クエリで何か渡してる場合に限っての話じゃないの?
クエリが付いてると明らかに不利。クエリのないPHPは若干(htmlに比べて)不利。 〜.php/file.htmlにするとあーら不思議(謎
>>42 全然同じかと思ってた
例えば
index.php?q=hogehoge
index.php/hogehoge
index.php/hogehoge.html
だったらどう?
やっぱ hogehoge.html > hogehoge ?
ってかスレ違いかな・・
>>42 最近はあまり関係ないよ
自分のところはクエリ表記だが検索エンジンは問題ない
重要なことは正しい構文 .htmlが良かったのは昔昔昔昔の話
完全にスレ違いだな
45 :
8 :2006/05/24(水) 10:40:10 ID: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に接続できて無かったってことでしょうか?
>>45 require_onceはその名の通り1回しか読み込まないので
2回目は読み込まれずに未定義のID/Passで接続しようとしたから
最初から全部晒せばすぐに解決したと思われるのだが・・・
47 :
8 :2006/05/24(水) 12:33:53 ID:Y9pwRi1O
>45 レスありがとうございます。 ほんとその通りですね。申し訳ないです。 >みなさん require と includeの使い分けのルールみたいなものはありますか? また、それぞれ_onceにしないとダメなケースとかでよくあるものとかあったら 教えて欲しいです。
こういう駄目な奴はレスアンカーを必ずと言って良いほどミスる法則
現在時刻をミリ秒まで取得出来る関数ってある?
下らねぇ質問だと思うんですが PHPを使ったフォトブログを簡単に設置できるスクリプトってありますよね。 そういうもの(pixelpostやfolderblog)を設置すると必ずindex.phpでページがblankになるんです。 解決策としては error_reporting(0);の部分をerror_reporting(7);またはerror_reporting(E_ALL); とすればいいと書いてあるんですが 同じようにblankになり、リロードすることで読みこまれます。 鯖はxreaなんですが すれ違いですかね。
52 :
nobodyさん :2006/05/24(水) 16:10:12 ID:1ttwMHsA
パスワード認証って、どうやるのが一般的なの? 俺はPOSTデータを比較演算子で比較してるけど。 おまいらはどうやってる?
>>53 公式マニュアルで現在時刻を取得する関数見れば
関連の関数として書いてあるじゃん。
「ある」ことは教えてもらったんだからそこからは自分で探しなさいよ。
>>47 関数定義や設定値定義などには普通はonceを使う。
同じものを何度も読み込むなんて無駄だから。
また、特別な理由があるわけじゃなきゃ関数の中でrequireとかはあまりしない。
それが関数の機能的に意味のあることならもちろん構わないが。
requireはそのファイルが読み込めないと致命的な場合に用いる。
includeは無ければ無いで問題が出ないような場合に用いる。
>>47 結構長いこと仕事でPHP使ってるけど、まだ〜once以外使ったことないよ。
ちゃんと設計してれば出番は少ないと思われる。
ま、ケースバイケースだがね。
57 :
47 :2006/05/24(水) 18:01:35 ID:Y9pwRi1O
>>55 ,56
レスどうもです。
僕はdbの名前とかパスワードを別ファイルにしたのですが、
これはonecだとダメということは、みなさんは別の方法でやっているのですか?
mysqlにつなぐfunctionを書くことは多いと思うのですが、
どんな風に書いていますか?
また、別の類の質問かもしれないのですが、
例えば、僕が書いたコードは、
mysqlに接続するだけのfunctionがあって、
そのつぎに「条件の違うクエリを打って結果をreturnする」functionがあって、
2個目のfunctionの中で1個目のfunctionを使っています。
つまりfunctionの中にfunctionがあります。
こういうのは問題ないですか?
58 :
nobodyさん :2006/05/24(水) 18:04:52 ID:IMQ+SU6Q
可変関数でクラスメソッドを指定する方法はないでしょうか? メソッド名を指定できるのは分かったのですが $func = "Hoge::execute"; $func(); みたいな感じに、クラス名から指定したいのです。
同一ページ内でフォームの処理を行うときに その処理の判別で便利な方法はどんなのですか? @ type="hidden" name="action" value="****" をつけて switch($_POST['action']) で判別 A type="submit" name="action[****]" value="うんたら" をつけて (どうやって判別?) B 別ページで処理して元ページに戻す などなど考えましたが皆さんはどんな手法を使ってますか?
日本語で(ry
>>60 処理内容とフォームのデザインによる
Javascript使えるならsubmit時にvalue変えることもできるし。
63 :
51 :2006/05/24(水) 18:52:16 ID:???
すいません。PHP系ブログツールというスレを発見したのでそっちで聞いてみます。
64 :
nobodyさん :2006/05/24(水) 20:05:31 ID:Ixcu1EBT
PHPでファイルに書込みをする操作なのですが file.txtというファイルに aaa<>111<>222 bbb<>333<>444 ccc<>555<>666 という形で、格納されているデータがあってある文字列を書き込みたい時、 もし、file.txtの中に既に含まれるものがあれば、書き込まない。 無ければ、書き込む。 という操作をさせたいときには、どのように書けば良いでしょうか? 何となく頭では分かっているのですが どう書けば良いのかが分からなかったので質問しました。 よろしくお願いいたします。
>>64 分かってるならそのまま書け
宿題は宿題スレで
そういえば、気になるんだけど、区切り文字 <> にする意味何? その区切り文字使う人って大抵ユーザ入力のデータをHTMLタグを無効化(htmlspecialchars)しておいて、 出力時にそのまま書き出すようなコード書いていることが多いんだよね。 エスケープ処理は、htmlとしてのprint時にやったほうがセキュアでシンプルなコードになるよ。 例えば、データベースにいれたりファイルを直接編集したりするときには、< が > とかに変換されてたって まどろっこしくなるだけだし、複数の方式でファイルへの書き込みをやるときとかにエスケープ漏れが生じることがある。
67 :
nobodyさん :2006/05/24(水) 20:29:25 ID:Ixcu1EBT
>65 アルゴリズムは分かるのですが 書き方が分かりません。 >66 ありがとうございます。 参考になります。
>>67 アルゴリズムがわかるなら、それを書いたら?
日本語でもいいから。
それを、文法として間違っていても、動作しなくてもいいから、
適当と思うPHPの関数、構文に置き換えて書いてみたらどうだろう。
69 :
nobodyさん :2006/05/24(水) 20:53:56 ID:Ixcu1EBT
書込みたいものを格納した変数A。 ファイルオープン。 ファイルの読み込み、丸ごと配列aに格納。 変数Aが、ファイルの中身と同じかを正規表現で調べる。 ファイルロック。 違っていれば、追加書込み。 ファイルクローズ。 こんな流れですよね?
>>69 ファイルロックはファイルオープンの直後のがよくね?
処理自体は合ってるから、それをそのままPHPの関数で置きかえれ。
>>57 > 僕はdbの名前とかパスワードを別ファイルにしたのですが、
> これはonecだとダメということは、みなさんは別の方法でやっているのですか?
普通はonceを使うよ、それ。
ただし関数の中じゃなく、プログラムの先頭で1回だけだが。
> 2個目のfunctionの中で1個目のfunctionを使っています。
> つまりfunctionの中にfunctionがあります。
> こういうのは問題ないですか?
ごく普通。プログラム概論とかソフトウェア工学とかの本を読んでみれば?
>>69 ファイルの中身と全く同じかどうかを調べるなら
== で文字列比較素すればOK。正規表現要らない。
>>69 つまずきそうなのは中身の比較あたり?
ファイルの内容を配列に格納したら、
$add = 1; //最初は追加モード
foreach($file as $line) {
if($line == $data) { //ファイルの各行と今回の追加データを比較
$add = 0; //一致する内容があれば追加モードOFF
}
}
if($add) {
ファイルへ書き込む処理
}
みたいな感じでいける。
>>62 具体的にどんな処理内容とフォームのデザインによってどう変えますか?
>>74 60じゃないけど。
大した種類も無くて楽にやるなら1、拡張する可能性があるなら2、
複数のフォームがあってデータを連動させたい場合なんかはJavaScript併用、とか。
特に困ることがないなら1でいいんじゃないの。
76 :
52 :2006/05/24(水) 23:16:26 ID:1ttwMHsA
77 :
nobodyさん :2006/05/24(水) 23:16:51 ID:cMAB9oLf
$obj->$method(); はできるのですが、 $class::$method(); はできませんか? 試してみたら、パースエラーが出ましたが、 なんとか$class部分を変数にして実行したいです。
78 :
77 :2006/05/24(水) 23:19:26 ID:???
自己解決。call_user_func() を使うことにしました。
>>76 一般的かどうかは定かではないが、
予め設定したパスワードはcrypt等で暗号化した上で保存
フォームから送られたパスワードも同じ暗号化処理をした上で、
保存してあるパスワードと比較。
比較演算子は === とか使っておけば間違いないんじゃないのかな?
80 :
nobodyさん :2006/05/24(水) 23:34:23 ID:vQsxJJUN
smartyで質問があります。 親ファイルから子ファイルをincludeするのですが、 子ファイルで {assign var="test" value="sample"} と変数を指定して その変数を親ファイル側で利用したいのですが、 できませんでした。 includeされたファイルで設定された値は include元では利用できないのでしょうか? 出来ない場合、上記のような機能を実現するには どうしたら良いでしょうか? config_loadは使用しない形で実現したいのですが 方法が思い浮かびません。 識者の方ご教授をおねがいします。
81 :
nobodyさん :2006/05/24(水) 23:35:07 ID: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 というエラーが返って来ます…。 原因と対策を教えてください。よろしくお願いします。
82 :
52 :2006/05/24(水) 23:47:05 ID:1ttwMHsA
>>79 ありがとん。
参考になったよ(・∀・)md5あたりを使ってみます。
>>81 > <? include("./p_parts/hoge.php"); ?>
ここでは ./p_parts サブディレクトリなのに
> Warning: main(../p_parts/theme.php):
こっちだと ../p_parts と上位ディレクトリの指定になってるからじゃ?
84 :
81 :2006/05/25(木) 00:05:46 ID:JcLctTfB
>>83 レスありがとうございます。階層はコピペミスで実際は
/p_parts/
└/text/index,php …ここに<? include("../p_parts/theme.php"); ?>と記述
になっています。SSI的にphpを使う知識しかなく、中身はただのhtmlを記述したものです。
他のhoge.php等も同様な感じでちゃんと表示されているのですが…
>>84 他のファイルも全部同じパスにあるの?
php.iniのopen_basedirの設定ってどうなってる?
>>66 そうするとデリミタは?
DBだとその通りなんだけど、テキストだとどうなんだろ。
カラム区切り、レコード区切り両方意識しなきゃならないし。
TABでいいんじゃね?
89 :
81 :2006/05/25(木) 00:35:14 ID:???
>>85 ,86
他のhoge.php等も同じパスです。
open_basedirの設定は鯖がphpinfo() ;を禁止しているのでよく解りません。
ファイル名など禁則文字があるのかと思いリネームしたりもしましたが無駄でした。
あと、theme.phpのアップデート前には表示できていたんですが…
もう少し頑張ってみてダメだったら鯖に聞いたほうが早いでしょうか…orz
>>89 theme.phpの中でさらに何かやってんのか?
中身みしてみ
>>89 ファイルのオーナーとパーミッションは前と一緒か?
92 :
81 :2006/05/25(木) 01:07:41 ID:???
theme.phpの中身は <h2>Theme</h2> <p>「○○のお題」に挑戦。最低限隔週更新。</p> <ol class="thumb"><li>ほにゃらら〜</li></ol> <p class="small t_right"><a href="URL">サイト名</a></p> これだけです。 オーナーとパーミッションは前と一緒です。 オーナーは自分で属性は604です。
part20で出た商品管理のやつと結構似てるんだけど、 ソートした時に、10000円より5000円のほうが 高くなるんだよね。カンマ付いてないのに。 なんでYO!
>>93 1, 0, 0, 0, 0, 円の1バイト目, 円の2バイト目
5, 0, 0, 0, 円の1バイト目, 円の2バイト目
>>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円
98 :
nobodyさん :2006/05/25(木) 08:49:01 ID:T8t5b4Lq
こちらで質問させてください。 session.gc_maxlifetime を10にしているのに10秒たっても セッションがタイムアウトしません(切れてくれません)。なぜなんでしょうか? ※値10はテスト用に短くしています。意味は無いです。 session.cookie_lifetime を10にすると10秒で切れてくれるのですが、 これだとブラウザ閉じてもまだセッションが生きているので要件上ダメなのです。 環境はIIS5.0 / php5.0.3 です。php.iniの値は下のようになってます。
99 :
nobodyさん :2006/05/25(木) 08:51:27 ID: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
>>80 {include file="header.tpl" page_title="タイトル" user="$user"}
とかすればいい。
includeされたファイルでは{$page_title}とかで参照できるはず。
オブジェクトも渡せるんじゃなかったかな。
大垣セキュリティ本の232ページで「trans sid機能は非常に危険」と 書いてありましたが、ではクッキーを使えない携帯では どうやって安全なセッション処理を実現したらいいのでしょうか。
>>98 セッションのガーベッジコレクションは、
session.gc_probability / session.gc_divisor
の確率で起こるので、
>>99 の設定だと1%の確率でしか起こらない。
それから、ガーベッジコレクションで自分のセッションが破棄されることはないので、
session.gc_maxlifetimeを過ぎても、他人のアクセスがない限りはセッションは切れない。
>>101 個体識別情報やサブスクライバIDを使う。
104 :
100 :2006/05/25(木) 10:04:35 ID:???
よく読んだら逆だった orz
>>102 えーそうなんですか。
それでは指定した時間で確実にセッションを切る方法はないのでしょうか。
106 :
軟式PHP :2006/05/25(木) 10:11:08 ID:???
php.iniでも凝視しとけ。
>>107 でも一定時間アクセスされていないということを認識できませんよね?
>>103 ありがとうございます。
ということは、あくまでも
session.use_only_cookiesはオン、session.use_trans_sidはオフにしておくのが前提で、
その「個体識別情報やサブスクライバID」を使うべきなのでしょうか。
「個体識別情報やサブスクライバID」というものをよく知らないので、調べてみます。
クッキーの期限が切れれば同じ値のクッキーを得ることは困難。
カビが生えちゃうもんな。
>>110 カビ生えたクッキーを渡されたら普通に動いちゃいますよね?
日付の比較をしたいと思います。文章で説明すると以下のような感じです。 今日は2006年5月25日です。昨日は2006年5月24日です。 2006年5月24日まであと5日です。 今日の日付をdate関数で取得して、昨日なら-1日、目的までのカウントダウンは その間の日数をforで取得すれば良かったと思ったのですが、 日に1を足す方法だと、31日の場合や1日の場合に問題が起きそうです。 何か良い方法はありませんでしょうか?
>>113 time() とか使って、UNIXのタイムスタンプで比較すればいいかと
>>113 これは個人的な意見なんですが、日付で計算するのは無駄に複雑になる気がします。
通算秒とかで持っておいて、必要に応じて(たいていは表示)日付に変換する。
もちろん計算は秒単位とかだから、単純な加減算。
このほうがコードもわかりやすくなると思うのですが。
よくsession使ったほうが安全なんてのを見かけるけどそんなこと書いてる本でもあるの? sessionはセキュリティを落としてでもプログラマが楽をするための道具でしかないのに。
簡単な一言掲示板を作っているのですが、 ↓のようにするとコメントが**以上ないとき<br />だけが繰り返されます。 最後の行を読み込んだらbreakしたいのですが、どうすればいいでしょうか? $comment = file($logfile); for($line = 0;$line < **;$line++){ echo $comment[$line]."<br />"; }
>>117 たとえばだけど
$comment = file($logfile);
$comment_count = count($comment);
for($line = 0;$line < **;$line++){
if($line > $comment_count) break;
echo $comment[$line]."<br />";
}
とか。
119 :
117 :2006/05/25(木) 14:13:24 ID:???
>>118 count()で要素数を取得して現在行と比べるんですね。
やってみます。ありがとうございます。
>>117 $comment = file($logfile);
$comment_count = count($comment);
for ($line = 0; $line < ** and $line < $comment_count; $line++) {
echo $comment[$line]."<br />";
}
後で$commentを使う必要がないのなら、
fgets()使って一行ずつ読み込んだ方が良いと思う。
>>116 強度の低い錠であっても、無施錠に比べりゃセキュリティは高い。
貴方は何と比べてるんだい?
下らない質問で申し訳ないのですが 自分でつくったクラスの名前は MyHogehoge みたいに「My」とか付けてますか? 適当に付けてたらあとで PEARが必要になったときとか重複しそうで。 ただそれだけなんだけど My〜ってのもかっこ悪いし
YourHogehoge Herhogehoge Hishogehoge どれでも好きなのを選びなさい。
>>123 PEARじゃなくともチーム開発すると名前の重複を考慮しなくてはならなくなる。
ちなみにオレは自分のセンスでテキトーに名前付けてる。
>>123 おれは、pearと同じような形式する
ようはパスと一致するような形
>>101 UIDとかが取得できない環境なら
ユニークなセッションIDを発行して、DB上にセッション情報を保存する
パラメータとしてはそのセッションIDを引き渡す
それじゃ101と変わらんだろ
こんにちわ。 2点教えていただきたいことがございまして書き込みさせて頂きます。 1,クラスを使うときはどんな時に使えばよいのか?functionは使うのですが、 class を使う場面がよくわからないので教えていただけると幸いです。 2,smarty は使った方が良いでしょうか。また、phpのプログラマーとして覚えておくのは 必須と言った感じでしょうか。 宜しく、ご教授下さいませ。
132 :
軟式PHP :2006/05/25(木) 18:35:04 ID:???
>>123 俺はcomXXXっていう風にcomを頭につけてるよ。なんとなく。
>>130 まずはオブジェクト指向について勉強。
Smartyは使えた方がいいと思う。
>>133 ありがとうございます。オブジェクト指向を徹底的に勉強してみます。
その後、smartyを使ってみます。
ご親切にありがとうございました。
135 :
123 :2006/05/25(木) 18:53:57 ID:???
>>124-126 みなさん苦労されてそうですね
重複しないようになにか考えます
ありがとうございました
136 :
nobodyさん :2006/05/25(木) 18:55:50 ID:1NG09F7i
質問があります。これは可能ですか?HTMLタグの <title></title>の間に入っている文字、例えば「ハリーポッター」だとします。 この「ハリーポッター」という文字を <?php echo $key>; この$keyに入れることは可能でしょうか? または$key = "" この""の間に入れることはプログラム的にはできますか?
>>129 なるほど仕様ですか。ありがとうございます。
じゃあ上司にそう言ってとっとと帰ります。
138 :
137 :2006/05/25(木) 19:04:20 ID:???
MySQL からDBの中身を全て持ってきて連想配列に入れたいのですが、 どうすればいいのでしょうか? 以下のようにやると思ったようになりません。 $array = array(); while ( $line = mysql_fetch_array($res, MYSQL_ASSOC) ){ foreach($line as $key => $col_value) { array_push($array, array($key => $col_value)); } } これだけだと一行しか取得できません。 $line = mysql_fetch_array($res, MYSQL_ASSOC); よろしくお願いします。
>>136 質問内容が分からない。
「<title>ハリーポッター</title>」
から、
「ハリーポッター」
だけ抜き出したいということか?
>>137 適当にググっただけなんで、今もそうなのかは分からん。
Vodafoneの携帯持ってないんで、テストも出来ないし。
>>139 $arrayをどういうデータ構造にしたいかによるが、
$array = array();
while ( $line = mysql_fetch_array($res, MYSQL_ASSOC) ){
array_push($array, $line);
}
これでいいんじゃないか?
>>136 preg_match ('/<title>[^<>]+<\/title>/i', $data, $matches);
>>141 ほ、本当ですね... orz
何十分もやってました。ありがとうございました。
144 :
nobodyさん :2006/05/25(木) 19:27:55 ID:YQ84qh3g
146 :
nobodyさん :2006/05/25(木) 19:40:56 ID:YQ84qh3g
一応データは取得できてるからSSL使えないなんてことはないのではないかと・・・ --with-openssl=/usr/local/openssl でコンパイルしてるっぽいし うーん・・・
フォームを利用してログファイルに文字列を一行に書き込む際、 文字列に改行が含まれていると、次の行にいってしまいます。 改行を<br />にするにはどうすればいいでしょうか?
>>147 改行を<br />に置き換える関数を使用する
$comment 検索元 $search 検索語句 $comment = str_replace("$search","<span style=\"background-color:#ffff00;\">$search</span>","$comment"); この様な場合において $comment に含まれるhtmlタグ内には上記を適用させないようにする為には具体的にどの様な方法がありますでしょうか
151 :
nobodyさん :2006/05/25(木) 20:06:05 ID:1NG09F7i
>>140 おっしゃる通りです。
>>142 ありがとうございます。
<?php
preg_match ('/<title>[^<>]+<\/title>/i', $data, $matches);
?>
<?php echo ($date); ?>
こんな感じで大丈夫でしょうか?やってみたのですが、表示されませんでした。
>>147 str_replace ("\n", "<br />", $hoge)
>>151 <?php echo $matches ?>
つか正規表現は覚えておいて損は無いと思うので、適当にぐぐって勉強してごらん。
>>151 ひょっとして
<html>
<title>ほげほげ</title>
<body>
<?php echo $key ?>
</html>
みたいな感じで自分自身のタイトルを取得したい、って話?
だとするとちょっと凝った手が必要になると思う。
宿題は宿題スレへ
データが日付になってるww
156 :
nobodyさん :2006/05/25(木) 21:16:48 ID:1NG09F7i
>>153 そうです、タイトルさえ取得できれば私が思っていることができるのです。
>>152 ありがとうございます。以前も同じような質問をしたのですが
何故かスルーされて解決に至らなかったのです。
この件でかなりの時間悩んでいたのでこの機にどうにか解決したいです。
<?php echo $matches ?> これで一応文字は表示されたのですが
タイトル名ではなく Array と表示されます。
>>156 だからマニュアル読んでこい
そこに答えがある
158 :
nobodyさん :2006/05/25(木) 21:42:52 ID:1NG09F7i
本当に教えてクンでうざいと思いますが、この件が解決したらもう質問は当分控えますので お願いします。
マニュアルに書いてるのに なんでマニュアルにあることまで・・・ Arrayって配列だよ
いくら自覚してても駄目。 そういう甘えは許さないよ。 もうレスはいっぱいもらって解決法も分かったでしょ。 はい次。
161 :
nobodyさん :2006/05/25(木) 22:01:36 ID:1NG09F7i
わかりました。後は自分で頑張って見ます。皆さんありがとうございました。
>>161 私もよくここで質問をしていたけれど、本当に初心者な質問に関しては
ノーヒントで「マニュアル嫁」やら「死ね」と言われていたもんだ。
そのとき私は「なんでコイツラこんなに厳しいんだろう…、もし俺が回答者なら、すんなり答えを教えてやるのになあ… もしかして
コイツラはレベル低すぎて答えられないのではないか…? いやいや、そんなハズはない! 数学の授業で少し頭の良い友達に聞いてもなかなか答えを教えてくれない奴と同じか?」なんて思っていたりした。
でも、今考えてみると、当時の回答者の気持が分かったきがする。
質問者のことを考えた " やさしい意地悪 "なんだなって。
悔しくても、成長するんだなって。
で、
$basetext = 'ももも <title>hoge</title> ももも';
preg_match ('/<title>[^<>]+<\/title>/i', $basetext, $matches);
echo $matches[0];
これじゃ<title>hoge</title>しか出力されない訳だが。
正規表現に詳しい人よろ。
163 :
162 :2006/05/25(木) 22:12:15 ID:???
自分で読み返して思った・・・
>>162 日本語でおk
自演乙 まぁ正規表現ならマニュアル書いて無いし別にいいよ。 欲しいトコ(この場合hogeに当たる部分)を丸カッコで囲んでみな
165 :
162 :2006/05/25(木) 22:23:03 ID:???
>>164 自演じゃないあるよ w
まあ質問者はもう帰ってしまったかもしれないがな。
質問者が消えたところで、 $basetext = 'ももも <title>hoge</title> ももも'; preg_match('/<title>([^<>]+)<\/title>/i', $basetext, $matches); $key = $matches[1]; echo $key; ということだな。
何だかんだ言って優しいんじゃないか。 全くもーお前らは。
>>127 それじゃ結局クッキー使えない携帯では意味が無いわけだが・・・
>>162 例えばだ。
弟に「カケ算の7の段を教えてー」と言われたとする。
しかも手には算数の教科書。もちろん中には九九の一覧表がある。
そんな状態でワザワザ弟に付きあってやる必要は感じないだろ?
コッチが教えた事が弟の次に繋がるのであれば話は別だが。
>>168 Cookie使えないケータイってまだ存在するの?
少なくとも、auとtu-kaの全機種はCookie対応だよ。
(ゲートウェイ側で対応しているのでどんなに古い機種でも対応している。)
たぶんDoCoMoやWILLCOMも原則Cookie対応だと思うけど。
171 :
170 :2006/05/25(木) 22:52:57 ID:???
セキュリティ上必要ならCookie未対応の環境を見捨ててもいいと思う。 Flash未対応、JavaScript未対応の環境は数%存在するが、Cookie未対応の環境は殆ど無い。 URIにセッションIDを含めると、履歴に残ったり、URL共有サービスやブラウザツールバー作成元、 アドウェア製作元に送信されたり、Referarで残ったり、IEのバグで関係無いページにRefererとして 送信されたりと色々セキュリティ上の問題がおこる。
>>170 WILLCOMでネットしてる人はCookie対応として良いけど、
DoCoMoやVodafoneはどうなのだろう?>携帯に詳しい方
>>171 > Flash未対応、JavaScript未対応の環境は数%存在するが、Cookie未対応の環境は殆ど無い。
よくこんな大嘘を言えるものだ・・・。逆に感動したw
>>174 自分のサイトのアクセスログでもそんな感じになってるよ
JS有効が94%だけどCookie有効は97%もある
広告やポップアップがうざかったりセキュリティホールが心配だったりで
JS切る人はまだまだいるね
>>170 au以外はまだ全然っすよ。何その思い込み。
178 :
80 :2006/05/25(木) 23:44:35 ID:???
>>100 さん
そうなんです。
逆のことをやりたいのです。。
今日も調べてみたのですが、
やはり無理のようでした。
179 :
170 :2006/05/25(木) 23:50:54 ID:???
>>177 そうなんでしたか。
Cookieが使えないとなると、個体識別番号やBASIC認証で管理するぐらいしか無いですね。
auはEZ番号(サブスクライバID)を全てのサイトに対して出力するので、
かなりのプライバシー上の問題があるのでそっちよりはましかもしれませんが・・・。
(一応、最近になって無効化する設定ができるようになったけど、無効にすると公式サイトや通信機能付きアプリや
EZチャンネルなどがつかえなくなり切り替えも面倒で現実的でない。ドメイン毎の切り替えや公式サイトのみへの送信、
DoCoMoのように毎回確認画面がでるようにできればいいんだけど。)
> たぶんDoCoMoやWILLCOMも原則Cookie対応だと思うけど。
これは違ったみたいですね
すいません
180 :
nobodyさん :2006/05/25(木) 23:56:35 ID:i7rXqHyW
ファイル名,文書の概要 ---------------------------- このようにコンマで区切られたログファイルがあるとします。 fopenで開いてexplodeで配列にすることはできました。 '$filename'には ファイル名 の値が代入されています(例えば 'hoge.html')。 このログファイルからファイル名($filename)を検索して、対になっている「文書の概要」を変数に代入するにはどうしたらできるのでしょうか?
>>170 SoftBankMobileは全然対応してないよ
>>179 EZ番号がサイトに伝わって何かマズイ事でも?
EZ番号からプライバシーに関わる情報取得など、
一般のサイト運営者にはまず無理でしょう。
で、BASIC認証をどうやってセッション管理に利用すると?
>>180 ログファイルのサイズが小さいなら
while($line = fgets($fp)) {
list($filename, $text) = explode(",", rtrim($line));
$file[$filename] = $text;
}
とファイル名をキーにした連想配列に丸ごと格納してしまって
$text = $file[$filename];
とやって概要を取り出すのが手っ取り早い。
185 :
nobodyさん :2006/05/26(金) 00:13:48 ID:ZiAJSuMJ
php4における、sybaseに関する挙動について教えてください。 クエリ実行関数として、sybase_query(), sybase_unbuffered_query()の2つありますが、 (unbufferedの方はsybase-ctライブラリを使用) この2つの違いというのは、 sybase_query() →クエリ発行し結果セット全体をメモリ上に取得する (大きい結果の場合リソースを大きく消費する) sybase_unbuffered_query() →クエリ発行した結果セットに対する最初のローのポインタを取得する という理解であってますでしょうか。 perlのDBIなんかだと元々unbufferedな動作な用ですねん
そういえば今JavaScriptに対応してる携帯ってあるらしいね
フルブラウザ対応でJavaScript使えないやつってあったっけ?
>>182 十分問題がある。
例えば、どっかの懸賞サイトに個人情報を入れたとする
その情報がワンクリ詐欺や架空請求業者に回ると、
Eメール(Cメール)で送られてきたアドレス(?での引数は無し)にアクセスしてサイトを観覧しただけで、
EZ番号と関連付けられたDBから情報を取得し、電話や郵便での請求が来たりするよ。
あと画像広告(img要素での呼び出し)を配信している広告代理店は、ユーザがどういうサイトを観覧しているかとかを全部把握できるしな。
Cookieでさえプライバシーの問題があって、サードパティ製を拒否したりするのが普通になってきているが、
EZ番号は全てのサイトに対して同じIDが利用され、更にユーザが変更することすらできない。(機種変更しても変わらない。一回解約すれば変わるが)
>>188 なんかそれってEZ番号とか関係なしに
入力した個人情報が業者に回った時点で請求来ると思うんだけど
読み間違えてる?
漏れた情報をDBしてる業者があって
そこと提携してる業者のサイトにアクセスしたときそうなるってこと?
業者の運営方法とか詳しく知らないんだけど
提携してるんならDBまんまよこせよって感じだけど。
>>189 この手の業者は互いにメールや個人情報を売買しあってるけど
それ自体が商売だから当然内容に見合った価格設定になる。
提携といっても全情報を丸ごと交換するなんてことは普通はしない。
191 :
188 :2006/05/26(金) 02:35:41 ID:???
>>189 明らかにEZ番号と関連付けられて請求が来ることがある。
例えば、3ヶ月前に懸賞サイトで個人情報を入力。
そして、ケータイのアダルトサイトを観覧(例えば、おまんこ天国というサイトだとする)
おまんこ天国のサイトを観覧しただけで、そこにメールを送ったり電話をかけたりはしてないんだから、
EZ番号以外の識別情報はおまんこ天国には伝わっていないはず。(IPアドレスやUserAgentなどの端末を識別できない情報は伝わっているが)
そして、その翌日ぐらいに、おまんこ天国というサイト名と使用日時などが明記されたメールや請求電話が来る。
つまり、EZ番号と個人情報を関連付けたDBがそういった業界で売買されてたりする。
DBそのまんま貰ってその住所に請求送ったって「身に覚えの無い請求」と扱われて放置される可能性が高いから、
ユーザがアクセスしたサイトと関連付けることは戦略として有効。
ちなみに、固定IPアドレスのプロバイダでも同じことが言える。
例えばどっかの会員サイトから登録時のログが漏洩して、Winnyに流れたとする。
そしたら、掲示板とかで第三者がIPアドレスを取得(ソースに表示される掲示板とかfusianasanとか)すればそこから住所などが特定できちゃうわけよ。
ただし、固定IPアドレスのプロバイダは全体からすれば少ないので、PCではそのDBを使った不当請求はまだ無いに等しいみたい。
サイト閲覧しましたよね?ってゆーのが必要ってことか。 無差別にはやんないもんなのかな。
>>192 無差別にやるとこ(いわゆる架空請求業者)もあるよ。
でもそれは労力に比べて命中率が低いんで、脅し専門の部署持ってる会社じゃなきゃやんない。
多くの裏業者では、
→あらかじめ個人情報を入手
→その個人ごとに一意のURLを記載した広告メールを配信
→アクセスした時点で請求開始
→全然入力した覚えの無い個人情報を使って「うちのサイトであなたが登録されてますから。その証拠に〜」と
個人情報を使ってあたかも法的に根拠があるような物言いで「訴訟も覚悟してください」と脅す
って感じ。
アクセスした証拠とか無いと警察を黙らせることができないんだわ。逆に言うとそれさえあれば警察も不問。
194 :
nobodyさん :2006/05/26(金) 02:58:56 ID:mmVqr71r
if ($fp = @fopen ("access.log", "r") != FALSE) { $line = fgets ($fp, 1024); echo $line; } こうやっても内容が出力されないのですが、何か原因として考えられる点はありますでしょうか? ファイルの内容はごく普通のテキストで一行です。
PCだと串刺したりルータ再起動でIP変えたりできるけど(固定IPじゃなければ) 携帯の個体識別はソレを買ったときからずーっと一緒だからねぇ。
>>194 if(($fp = fopen()) != FALSE)
って感じで()で括らないとこけた気がする
かけねなしの初心者です。 MAC OS X ver 10.3.9 に入ってるPHPを使って、 SQLiteを学ぼうと、SQLite ManagerをDLしてDocuments配下に コピーしたんですが、次のエラーが出てうまく動作しないのです。 ________ Error : The SQLite extension can't be loaded. ________ どうしたら、うまく動作させられるんでしょうか。
199 :
194 :2006/05/26(金) 03:07:22 ID:mmVqr71r
>>196 出ませんでした。が、
>>197 さんのアドバイス通りに()で括ったらできました。
ありがとうございました。
>>198 そりゃお前ソースも見せないで分かるかコンチキショー
それになんでMACなんだ?
>>201 MacOSX持ってたら標準でPHP付属なんだから、勉強したきゃそのまま使うだろう、ふつー。
204 :
nobodyさん :2006/05/26(金) 04:10:16 ID:XdlBZLhP
PHPと全く関係ないんですが、詳しい人が多いと思うのでここで質問します。 ブラウザに「印刷」というボタンをつくって、 それをクリックするとサーバ上のファイルを サーバのあるLAN内のプリンタで印刷を開始する ということは可能ですか? 具体的に今やりたいのはPHPとMySQLを使って 帳簿をTeXで書いて、PHPでプロンプトの命令を送り コンパイルしてDVIをつくり、その印刷をDVIウエアからでなく ブラウザのボタンで印刷を実行したいのです。 DVIファイル作成まではできました。 サーバはwindowsサーバを使っています。
>>204 PHPのスレなんで、PHPの話をすると
COMを使うといける。
>サーバはwindowsサーバを使っています。
なんでしょ。
>>198 SQLite拡張モジュールがないといっている
モジュールを追加すればいい
Fedoracoreとかならrpmでできるんだけど
MACは知らないので追加方法は調べてね
少なくともVodafoneはクッキー対応してない。 でもmixiで携帯からログインできてる。 mixiはどうやって携帯ログイン(セッション)を実現してんだろう? URLにSID付けて引き回してないみたいだしね。。。
hiddenに入れてるとかじゃないの?
個体識別番号でも使ってるんじゃない?
hiddenに入れたら危ないんじゃないか・・・? あ、でも携帯は今のところJavascriptも無効だから、 hiddenの中身が漏れる危険性はないのかな??
212 :
211 :2006/05/26(金) 09:06:34 ID:???
つーかよく考えたらhiddenのワケないな。 だって、携帯mixiでページ移動するとき、いちいちPOSTしてないもん。 普通のハイパーリンクで移動してるからhiddenは持ち越せないよなぁ。
213 :
211 :2006/05/26(金) 09:09:41 ID:???
>>210 個体識別番号でやるにしても、どうやってセッションを管理するの?
最初のログイン時にサーバDB側に個体識別番号をぶち込むにしても、
結局、携帯端末側にセッションIDを渡さないと次の操作から
同一のクライアントかどうかを確認できないよね・・・
あ、それとも携帯って、サーバにアクセスするたびに個体識別番号を
勝手に送る仕様なのかな?? その辺あまり知らないんだけど。。。
というか
>>170 はものスゴイ妄想を語ってるなww 亀レス恐縮だが。
>>208 mixiは常にGETでセッションIDを送っているよ。
ログインから12時間で強制破棄されるので、長いことサーフィンしてると強制ログアウトされる。
逆に、ログインしたあとのURLを保存しとけば、12時間は再接続してもログインしたままだよ。
mixi は暗号化したパラメータと、サイト側で発行した識別IDを渡しているんじゃないの?
217 :
215 :2006/05/26(金) 10:18:19 ID:???
>>216 home.pl?ses=[数字のID]_[ランダムな16進数列]
こんな感じ。
PHSからなんで、携帯からだとまた違うかも知れない。
>>215 、
>>217 えっ、マジで!?
ってことは、たとえばmixi内の誰かが悪意を持ったURLを
日記とかコミュとかに貼って、そこに飛んだらアクセス解析で
リファラからセッションIDが漏れちゃうってことだよね。それヤバくない??
携帯でリファラ?ああ、最近の携帯はそんなもんも返すのか。
>>219 返すのも返さないのもあるよ。
おかげで仕事が増えた。
古いauだけどレファラ返すよ
リファラ返す携帯の場合、GETでSID送ってたら超危険だよな・・・ mixiのセキュリティは大丈夫なのか。。。
ラファラ リファラ ルファラ レファラ ロファラ
224 :
215 :2006/05/26(金) 11:17:39 ID:???
PHS(多分携帯も同じ)からだと、mixiは
http:// 〜がリンクにはならない。
日記を外部に置いている場合は、PCから見てくださいと言われ、アクセスできない。
でも、
http:// 〜という文字列をリンクに変換するbookmarklet使ってる人は危険かも。
あと京ぽんには、bookmarkを読み込んだときにもリファラを送ってしまうというバグがあって、ちょっと怖かった。
225 :
nobodyさん :2006/05/26(金) 11:48:46 ID:UfRxuQYj
質問お願いします PEARのLogクラスを使おうと思うのですが 最初にインスタンスを作ったあとで いろんな関数でログを出力したい場合は そのインスタンスを各関数でglobal宣言するのでしょうか? Logクラス使ってるかたがいらっしゃったらどのように使ってますか? 各関数でインスタンスを生成? よろしくお願いします
>>224 なるほど、携帯でアクセスした場合はmixi外部へは飛べないようにしてあるわけか。
でも、最近の携帯って親切な(おせっかいな)機能があって、
メアドとかURLらしき文字列って勝手にリンクされちゃう場合あるよね。。。
ジャンプページを経由したりしないのか? 普通そういう実装がしてると思うが
あんまり携帯端末に詳しくない奴は妄想でレスするなよ
>>227 やっぱりその方法が一番楽で安全だよね
文中にURLが含まれていたら自動リンク、というのはどうすれば実装できますか?
jp2.php.netまた落ちてんのか!氏ねっ!
>>225 MyLog::hogehoge
で呼べるようにするとか
PHPとMySQLを使っています。 ある商品表に商品データを追加していきたいのですが、 たとえば「syohin_no=1000、syohin_name=ボールペン」を入れるときに、 「すでにsyohin_noに今回の番号(例では1000番)が存在する場合はupdate、 存在しない場合はinsert」 という処理をしたいと思います。 このような場合、任意のsyohin_noが存在するか否かを確かめるだけの関数などはありますでしょうか?
MySQL限定ならsyohin_noにユニークインデックスを張っとけば REPLACEステートメントが使えますよ。 まぁ確かめるだけならフツーにSELECT COUNT(*)を発行するだけ。 PHP関係ないけど。
SELECT → ある場合UPDATE、ない場合INSERT やっぱ流れ的にはこんな感じでしょ。 $sql = "SELECT COUNT(*) FROM syohin_table WHERE syohin_no = 1000"; $result = mysql_query($sql); if ( mysql_num_rows($result) ) { $sql = "UPDATE syohin_table SET syohin_name = 'ボールペン' WHERE syohin_no = 1000"; } else { $sql = "INSERT INTO syohin_table VALUES( syohin_no, syohin_name )"; } $result = mysql_query($sql);
mysql_real_escape_string とか、エスケープ関係は好みの箇所でやって頂戴
238 :
236 :2006/05/26(金) 19:47:57 ID:???
あ、ごめん COUNT(*) だと mysql_num_rows() は常に真になっちゃうな COUNT(*) を syohin_no とかフィールド名に置換してくれ
どうしても分からないので質問させてください。
さっきからこれのせいでかれこれ30分以上作業が進みません。
リモートファイルの有無に応じて結果を返すようにしたいのですが、上手くリモートファイルが取り込めません。
$TEST_READ = @fopen("
http://hoge.com/ ", "r");
if(!$TEST_READ) echo "ng";
と書くと明らかに存在しないリモートファイルでもTRUEが返ってきます。
次に
$TEST_READ = @file("
http://hoge.com/ ");
と書くと逆に存在するファイルも「failed to open stream: No such file or directory in XXX」とお決まりのエラーが返ってきます。
if((include "
http://hoge.com/ ") == "OK") echo "あるある";
と書くと存在する場合勝手に内容を表示します。
どうすればファイルの存在確認のみを行えますでしょうか。
ちなみにリモートファイルの確認を行う作業が前提です。
環境→Linux バージョン:5.1.4
背低→セーフモード:Off、include_path:デフォ、allow_url_fopen:On
存在するかしないかだけなら、 HTTPならHEADリクエストを飛ばして200以外なら存在しないっていうのが 手っ取り早いんじゃないの?
>>239 期待通りbool(false)が返る。
PHP5.1.2(cli)/Win32
存在確認だけなら
>>241 の言うとおり
HEADでチェックするのが普通だと思う。
243 :
239 :2006/05/26(金) 21:00:36 ID:???
レスありがとうございます んーとHEADリクエストを送ると言いますと具体的にどういう感じでしょうか; apache_request_headers() の戻り値を調べるということでしょうか。
>>243 fsockopenを使う
HEADリクエストの意味が分かっていないならそれなりの文献を参照
質問内容からして基本的な知識が欠損している気もするが
>>239 の上は404ページを取り込んでいるんじゃないのか?
下は当然の動作として(つかincludeの動作をよく理解していないでしょ?)
245 :
239 :2006/05/26(金) 21:27:39 ID:???
レスありがとうございます。
なるほどfsockopenですか。
先ほどからphpManualのサイトを読んでまして何度か見た記憶が。。。
>下は当然の動作として(つかincludeの動作をよく理解していないでしょ?)
ttp://php.s3.to/man/function.include.html の例16-9にある感じで動作することを期待して書いてみましたが根本的に間違ってたてことでしょうか。
当方php暦1年≦ 程度なもので的外れな質問スミマセン;
new hogeでアクセスされたクラスはどうやったらfunctionに渡せますか?
>php暦1年≦ なにこの逆ポーランド
forth歴が長いんじゃね?
>>236 ありがとうございます。
やっぱりそうやって律儀に確認するしかないようですね。。。
なんかその作業がすごくムダに思えてきまして^^;
if_exist_mysql_record($sql)みたいな関数があったらいいのになぁ・・・
動作は、ある任意のSQLを投げて、レコードが存在すればTRUE、なければFALSEを返す。
つまり、特定の条件のレコードが存在するかどうかだけを確認する関数。
で、PHP側でその真偽値をifで分岐させて、updateまたはinsertのSQLを投げられたら
スッキリすると思いませんか?
>>250 自分でその関数作れば良いでしょ。
関数の中身は
>>236 だけど。
標準にあったとしても恐らくやることは一緒のはず。
deleteしてからinsertすれば、条件分岐しなくてすむよw
254 :
239 :2006/05/26(金) 23:23:14 ID:???
うはw全然無理スorz もう今日は諦めて寝ようかな・・・ とりあえず自分のスキルが足りてないことだけは把握できました><;
俺は自分でsql_isset()を作った
>>250 そんなもん作っても
if_exist_mysql_record()した後に、そのレコードが
「まだある」ってことを誰が保証できるの?
>>234 のようなパターンの処理は良くある話なので
MySQLに限らず色々なDBMSを使った場合にどうやってるのか良く情報を探してみな。
「LOCK TRANSACTION SELECT-FOR-UPDATE SELECT-TO-INSERT/UPDATE」
258 :
nobodyさん :2006/05/27(土) 00:59:31 ID:XR56v2Et
みません。誰か教えてください。 mktime()関数を使ったら、今日の日付より、2006年6月4日の方が タイムスタンプの戻り値が少ないのはなんでしょう? <?php $year = '2006'; $month = '6'; $day = '4'; $stamp = mktime(0,0,0,$day,$month,$year); $today = getdate(); //今日を取得 $stamp2 = mktime(0,0,0,$today[mday] ,$today[mon],$today[year]); echo $year; echo '-'; echo $month; echo '-'; echo $day; echo '<br>'; echo $stamp; echo '<br>'; echo $today[year]; echo '-'; echo $today[mon]; echo '-'; echo $today[mday]; echo '<br>'; echo $stamp2; 出力結果: 2006-6-4 1144249200 2006-5-27 1204642800 すみません。誰か教えてください…
>>258 マニュアルのmktimeの引数のところをよ〜く見てみよう
260 :
239 :2006/05/27(土) 01:07:53 ID:???
結局よく分かりませんでしたorz サーバへの接続はできてもファイルが存在するかどうかを確認できない感じです。 とりあえずfsockopenで鯖の生存確認はできました。 そろそろ眠いカモ。 こういう時てよくセミコロン忘れたりするから困る。
261 :
nobodyさん :2006/05/27(土) 01:08:07 ID:XR56v2Et
ありがとうございます。 月と日が逆でした。 マニュアルをキチンと見てなかったです。 すみません。
262 :
239 :2006/05/27(土) 01:15:06 ID:???
キタ━━━━(゚∀゚)━━━━!!!!! 一行目をGETじゃなくてHEADにしてパスを付け足せばよかったんですね。 スミマセン。数時間悩んでできたのでつい。。。 ありがとうございました。
263 :
nobodyさん :2006/05/27(土) 01:23:11 ID:XR56v2Et
264 :
198 :2006/05/27(土) 03:48:08 ID:???
原因が分かりました。 MAC OS X 10.3だとPHP5ではなく、PHP4のため SOLiteが入ってなかったのでした。 丁度いい機会なので、あした10.4(Tiger)を購入してきます。
>>264 原因がわかりましたって・・・。思いっきりエラーメッセージに原因が書いてあるのだが。
それよりも、PHP4でもSQLiteは使えます。
266 :
nobodyさん :2006/05/27(土) 06:03:22 ID:krAJ2Rr2
PHPでhttps以外のアクセスを検知できますか?
>>265 5であれば標準添付になってる。って話でしょ。
そのためだけに1.5万出すとは・・・ アップグレードならもうちょっと安いのかな?
>>266 スキーマやプロトコルに関する話題ならこのスレじゃないと思う
>>ホゲさん この部分だけ<font>で色づけしたいのですがどのような方法が効率的でしょうか? 自分で書いてみたんですがうまくいかないとです(;´ω`) mb_ereg_replace("[>>]+[<br />]","<font color=\"red\">\\0</font><br />",$msg);
ドコモ リファラ× クッキー× ボーダ リファラ〇 クッキー〇 あう リファラ〇 クッキー〇
274 :
271 :2006/05/27(土) 09:29:13 ID:???
>>273 朝っぱらから即答していただき感謝です
>>ホゲさん
↑この部分だけを色づけしたいということでした^^;
正規表現ムズイとですね・・・
画像をアップロートするスクリプトを作ったのですが、 アップされた画像の「所有者」が「Apache」になっており、 FFFTPでそのファイルのパーミッションを変更しようとしても出来ません。 (スクリプト内からのchmodやchownも効きません) これはどうしてなのでしょうか? また、どうしたらパーミッションを変更できるのでしょうか。
>>276 Apacheがアップロードしたから
ディレクトリのパーミッションや所有者も調べてみたら?
SELinuxとか使ってる?
>>277 ディレクトリのパーミッションは「707」で、
所有者はFTPアカウントとして設定したユーザです。
SELinuxは使ってるかどうか分かりません。OSはFC2です。
スレ違いの気がするが・・・ シェルでsu apacheとかしてもchownできない? というかなんで所有権の変更がしたいんだ 所有者apacheでなんか不都合とかある?
280 :
276 :2006/05/27(土) 10:26:07 ID:???
最終的には任意の画像ファイルをスクリプトから削除したかったのですが失敗し、 FFFTPで接続してみると所有者が「Apache」になっており、 しかもパーミッション変更は出来ないのに削除は可能だったりして、混乱しました。 ですが、もう一度スクリプト内からunlinkで削除してみたらなぜか出来ました。 お騒がせしてすみませんでした・・・。 (ただ、UNIXの知識があまり無いので、なぜファイルの所有者がApacheになるのか、 なぜApache所有のファイルをFFFTPで属性変更できないのか、なぜ削除は可能なのか…の 仕組みが全く理解できていません)
198はもう10.4を買いにいったのかな。PHPだけが目的じゃ ないなら構わないのだが、それが目的なら悲しい目にあうぞ。
>>280 >なぜファイルの所有者がApacheになるのか、
スクリプトはApacheというユーザがコピーしてきてるから
>なぜApache所有のファイルをFFFTPで属性変更できないのか
キミのファイルを誰かが勝手に消したら困るでしょ?
それと同じで今回はApacheさんのファイルをキミが変更しようとしてたんだよ。
>なぜ削除は可能なのか…
削除はできなかったんでしょ?
FTPでアップロードしたファイルはキミのファイル
キミのファイルはキミが自由に変更・削除できる
WebブラウザからPHP等のスクリプトでアップロードしたファイルはApacheさんのファイル
Apacheさんのファイルはキミが変更することはできない
オレもUNIXのこと知ってる方じゃないが、Webプログラミングするならこれくらいは知っとこう
間違ってたらフォローよろ
apacheさん萌え
284 :
276 :2006/05/27(土) 12:19:08 ID:???
>>282 >削除はできなかったんでしょ?
いえ、FFFTPでパーミッション変更は不可(変更操作しても反映されない)でしたが、
なぜか削除は出来ました。
だからなおさら混乱しております。。。
Webプログラミングするなら権限の問題は常に頭に入れとかないと嵌るからな。
287 :
◆.mm8HzTdfY :2006/05/27(土) 12:55:19 ID:l68IManM
header()関連で質問です。 <br> <br> $_SERVER[
288 :
◆.mm8HzTdfY :2006/05/27(土) 12:57:26 ID:l68IManM
287です。先ほど投稿したのですが、何か表示がおかしいのでもう一度。申し訳ないです。 header()関連で質問です。 PATH_INFOで受け取ったパスにあるデータファイルの更新時刻をgetlastmod()で調べ、 次にUAから送られてきたIf-Modified-Sinceの時刻と比較して、 呼び出すべきファイルが更新されていれば改めてページデータを送信・交信されてなければNot-Modifiedを送って キャッシュから表示させるようにしようとしていますが、躓いています。 データファイルの更新時刻の取得とUAから送られてくるIf-Modified-Sinceの取得は上手く行き、 両方をUNIXタイムスタンプにして比較するところまでは出来たのですが、 データが更新されている場合にもNot-Modifiedを送信してしまいます。 header()関数のマニュアルを読んでみたところ、「HTTPで始まるヘッダは正確な情報を返さなければならない」とあって、 おそらく処理を行うスクリプト本体が更新されていない為に、常にNot-Modifiedが送信されているようです。 何とかして「データ処理のスクリプトは更新されていないがデータファイルが更新されている状態」で Not-Modifiedの送信を行わないようにしたいのですが、可能でしょうか? 解決策を知っている人がいれば教えてください。
289 :
nobodyさん :2006/05/27(土) 12:58:16 ID:Yd7sUiu8
質問させて下さい。 mysqlとの連携なのですが、本を参考にしショッピングカートを作っています。 ソースを丸写ししたのにも関わらず訳の分からないエラーに悩まされています。 よく見ると本のソースにもかなり間違いがあるようで、調べても解決できませんでした。 ----------------------------------------- $sql = "select * from zaiko where serial = {$_POST['s']} and num >= {$_POST['n']}"; $rs = mysql_query($sql); $n = mysql_num_rows($rs); switch($n) { case "0": echo "在庫切れです"; exit; break; case "1": $row = mysql_fetch_array($rs); $basket = $_SESSION['basket']; $basket[$_POST['s']] = "{$_POST['n']}\t{$row['product_name']}\t{$row['price']}"; $_SESSION['basket'] = $basket; break; } ----------------------------------------- このように記述しているのですが、mysql_num_rows に原因があるらしく Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in 〜 というエラーが出ています。 mysql_num_rows に関してはsqlのselect文には有効のようですし、何か別の問題等あるのでしょうか。 データベースには接続できています。 何かアドバイスもらえたらな、と思います。よろしくお願いします。
290 :
◆.mm8HzTdfY :2006/05/27(土) 13:07:44 ID:l68IManM
SQL詳しくないですが、mysql_query()の返り値をダンプしてみてみると良いかもと思います。 クエリーを送った時点でエラーが出てると、当然その後は続かないので。
>>284 パーミッション変更はオーナーとroot以外できないよ
292 :
271 :2006/05/27(土) 13:09:53 ID:???
271です $bbs_log = ereg_replace('>>+([a-z]|[0-9]+)+<br />', "<font color=\"pink\">\\0</font>", $bbs_log); ここまでできたのですが、日本語の場合がどうしてもできないとです・・ $bbs_log = ereg_replace('>>+([a-z]|[0-9]|[\S]+)+<br />', "<font color=\"pink\">\\0</font>", $bbs_log); [\S]入れても無理ですた・・ ご教授お願いします
質問させてください <br> phpinfo(); で表示されるOSやApacheの情報を、隠すことってできませんか? <br> <br>
>>293 多分、phpinfo自体を使えなくするか、
またはちょこちょことCソースをいじれば出来なくもない。
ちょっと見た感じでは、ext/standards/info.c の920行目くらい。
>>284 たぶん、そのディレクトリの実行権限が君のユーザにあったから、
削除できたんだと思うよ。
>>293 古いバージョンだとphpinfoはXSS脆弱性もってるからね。
296 :
nobodyさん :2006/05/27(土) 13:48:57 ID:9//qB9Iw
submitを使用するとサーバーエラーになり、POST先に進めません。 ソースは以下のようにsubmitを1つ用意しているだけです。 <form method="POST" action="hoge.php"> <input type="submit" name="hoge" value="hoge" /> </form> apacheのログでは、 [Sat May 27 00:00:00 2006] [error] [client 127.0.0.1] (OS 2)指定されたファイルが見つかりません。 : Could not open password file: C:/Program Files/xampp/security/htpasswd.webdav, referer: と言われていますが、ファイルは存在しています。 なぜsubmitを使用できないのかわかりません・・・ apacheの問題でしょうか? どなたかご教授をお願いします。
エスパー エスパー お呼びですよー
>>296 C:/Program Files/xampp/security/htpasswd.webdav
にあるはずのパスワードファイルが開けないってエラーですよ。
webdavの設定の問題でしょ
>>289 $sqlをprintして、正しいかどうか調べてみた?
あとは、2種類のDBに対しsql_connectしてて、違う方にクエリー送ってるとか。
>>292 eregは使ったことないんだけど、これでどうだ?
'>>([^<>]+)<br />'
正規表現ちょーべんり \(\*\^\_\^\*)
>>292 '>>+([\S+?])+<br />'
>>288 スクリプトが更新されてないからといって、勝手にNot-Modifiedが送信されることはない。
ただ、送るデータに変化がない場合には、通信データを減らすために、勝手にNot-Modifiedを送るサーバがある。
(何を基準に判断してるのかは分からないけど、ETagか何かかな?)
>>302 eregって最短マッチの"?"使えるの?
マニュアルやmanみても、あんまり詳しく書いてないもんで。
304 :
nobodyさん :2006/05/27(土) 14:41:28 ID:9//qB9Iw
レスありがとうございます。 別のPCに同じ設定でインストールしているapacheでは 問題なく動作するのですが、 一方ではエラーになっています。 httpd.confの設定は変更していません。
305 :
289 :2006/05/27(土) 14:54:49 ID:Yd7sUiu8
>>290 >>299 ありがとうございます。dbは3つありリレーションさせています。
二つのdbにコネクトしている場合クエリーも両方に送らなくてはいけないんでしょうか。
とりあえず、教えていただいた方法で確かめてみようと思います。
306 :
271 :2006/05/27(土) 15:08:30 ID:???
>>300 ,
>>302 さん
ありがとうごさいました(><)
もしよろしければ参考にしたサイトや書籍など教えていただけますか?
>>302 さんのはできなかったとです
php-5.1.4 って、Apache 2.2 系で使えますか?
そもそも2.2系て2.1とどう違うの?
2.1はデベロッパ向け
310 :
296 :2006/05/27(土) 17:16:51 ID:9//qB9Iw
デフォルトの状態で、submitは使えないんですか? 何か特別な設定が必要? 初めてsubmitを使ったとき、 ユーザー名とパスワードを求められたのですが・・・
SimpleXML関数でXMLの変更を行おうと思っています。 simplexml_read_file関数で読み込んだSimpleXMLElementオブジェクトのユニークでない特定の要素の先頭にSimpleXMLElementオブジェクトを追加するにはどうしたらいいのでしょうか。 通常の配列みたくarray_unshift関数で追加しようとしたのですが配列じゃないと怒られてしまいました。
312 :
nobodyさん :2006/05/27(土) 18:04:39 ID:Bnrg0iLL
ブラウザから、オンラインのphpを呼び出したところ PHP本体の上に Warning: Missing argument 3 for chrdat() in /home/sites/lolipop.jp/users/○○○ on line 308 と表示されています。 どうすればこの表示を消すこと、この文はなにを意味しているのでしょうか? どなたかよろしくおねがいします。
>>312 エラーメッセージのまんま
/home/sites/lolipop.jp/users/○○○ on line 308行目で
chrdatを呼んでいるとこで引数が関数の引数とあっていない
>>311 SimpleXMLとか使ったこと無いけど、詰まるならDOMでやったら?
>>313 お陰様で解決しました。
ありがとです。
>>303 レス有り難うございます。
どうにも上手く行かないので、躓いている所を短いスクリプトにしてみました。
http://www.uploda.org/uporg401728.zip.html これです。
やろうとしていることは
1.PHPからデータファイルを読む
2.HTTPリクエストにIf-Modified-Sinceがあれば
データファイルのタイムスタンプと比較して・・・
2-1.データファイルの方が新しければ内容を送信
2-2.そうでなければNot-Modifiedを送信
です。
上のスクリプトは、何故かスクリプト本体が更新されていない場合にNot-Modifiedを送信していて、
データファイルが更新されていてもUAにデータをおくれない状態です。
どなたか解決方法やヒントがあれば教えてください。
>>316 サーバ側ってキャッシュ情報持ってなかった?
>>316 レス有り難うございます。
レンタルサーバなのですが、どの辺を見れば分かるでしょうか?
320 :
303 :2006/05/27(土) 20:11:26 ID:???
>>316 すまん。的外れな303は的外れだった。
getlastmod()は現在のページの更新時刻を得るもので、
違うファイルのを知りたいときはfilemtime()を使う。
321 :
271 :2006/05/27(土) 20:11:38 ID:???
教えろやコラ!!
>>303 有り難うございます!!
いまマニュアル見てみたらint getlastmod (void)と書いてあり、この半日の苦労はなんだったんだとか思いました・・・。
助かりましたー。
テンパると視野が狭くなってダメですねー。
>>321 <?php
$str = ">>hoge hoge >> hage >>ホゲさん";
header("Content-Type:text/html; charset=".mb_detect_encoding("京"));
exit(preg_replace('/>>([^< >]+)/e','"<em style=\"color:red; background:transparent;\">".htmlspecialchars("$0")."</em>"',$str));
?>
class test { function &getInstance() { static $obj; if (!isset($obj)) $obj = new test; return $obj; } function add($val) { $this->var[] = $val; } } $o1 = call_user_func(array('test','getInstance')); $o1->add('a'); $o1->add('b'); $o2 = call_user_func(array('test','getInstance')); $o2->add('c'); print_r($o1); > [0] => c ほんとうはこうなって欲しい↓ > [0] => a > [1] => b > [2] => c クラス名が動的なためcall_user_funcを使っているんですが、参照になてくれません。 PHP5のような動作をさせるにはどうしたらいいのでしょうか。
PHP5.0.3から最新のPHP5.1.4にバージョンアップさせるにはどうしたらいいですか? 最新バージョンをダウンロードしてきてphp.iniを今までと同じ値に編集ですか?
class test { function test() { $this->count=0; } function &getInstance() { static $obj; if (!isset($obj)) $obj = new test; return $obj; } function add($val) { $this->var[$this->count++] = $val; } } $o1 = call_user_func(array('test','getInstance')); $o1->add('a'); $o1->add('b'); $o2 = call_user_func(array('test','getInstance')); $o2->add('c'); print_r($o1); 取りあえずこうしたら出来ましたよ。 これで良いのか分からないですが。
>>327 設定ファイルが大きな影響があるほど変わった記憶がないので
上書きで大丈夫だと思うけど、念のためdiffぐらい取ったら?手間でもないし。
332 :
266 :2006/05/27(土) 22:53:42 ID:krAJ2Rr2
333 :
327 :2006/05/27(土) 22:54:17 ID:???
>>329-331 OSはWin2000sp4です。ちなみにPHPはXAMPP1.4.13でインストールしました。
Apacheは2.0.53のようです。
とりあえず設定ファイルのdiffとって様子見てから上書きしてみます。
>>327 WIndows+Apache2+PHP5+MySQLの環境は、別個にインストールして設定ファイルを弄るのでも
そんなに手間じゃないですよ。
設定ファイルを触るのが勉強になったりもするから、手作業でやるのもお勧めです。
>>332 SSLでアクセスしたときは、$_SERVER[HTTPS]が定義されるから、
これの有無で判断すれば。
headerについての質問です
/index.php
で
header("Location:
http://www.google.com/ ");
とした場合
/
でアクセスした場合に "HTTP/1.1 200 OK" が返されて
リダイレクトされません。
/index.php にアクセスした場合の動作は問題ありません。
両方でリダイレクトできる良い方法ないでしょうか?
>>339 単にindex.phpにアクセスできてないだけじゃないの?
DirectoryIndexの設定はどーなってんのよ
>>339 スレ違い
というか、
http:// 〜/ にアクセスした場合にindex.phpが処理されてるか見れ
処理されてればこのスレでOK
処理されてなければWebサーバ(Apache)の管轄
342 :
nobodyさん :2006/05/28(日) 03:44:34 ID:zxjIhcD+
PHPでメールが送れません。 <?php mail(
343 :
↑ちゃんと書いたのに途中で途切れましたね。 :2006/05/28(日) 03:45:19 ID:zxjIhcD+
名前:
E-mail:
内容:
PHPでメールが送れません。
<?php
mail ("******@hotmail.co.jp","test","てすと");
?>
という文を実行させると
Warning: mail(): "sendmail_from" not set in php.ini or custom "From:" header missing in
というエラーが返ってきます。
php.iniの設定は
[mail function]
; For Win32 only.
SMTP = localhost
smtp_port = 25
; For Win32 only.
;sendmail_from =
[email protected] ; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
;sendmail_path =
です。
Apacheで実行しているのですけど、どうすればよいのでしょうか?
344 :
339 :2006/05/28(日) 03:46:11 ID:???
/ で index.php にアクセスはできてます。 書き忘れましたがサーバーはxrea(apache1.3.34 php4.4.2)です。
345 :
339 :2006/05/28(日) 04:02:35 ID:???
失礼しました。 xreaの広告関係の mod_rewrite が原因のようでした。 LayoutIgnoreURI /index.php としてやると、"/" でも "/index.php" でも期待通りの動作をしました。
>>343 1.マニュアルの下のほう「additional_headers(オプション)」の部分をよく読む
2.設定ファイルでは「;」があるとコメントとみなされる
>>343 匿名でメールなんてすんなよ、ってことさ
348 :
nobodyさん :2006/05/28(日) 11:13:54 ID:zxjIhcD+
349 :
nobodyさん :2006/05/28(日) 11:14:42 ID:zxjIhcD+
>>346-347 mail ("
[email protected] ", "the subject", "内容","From:");
にして、
; For Win32 only.
sendmail_from =
[email protected] のように、;をはずしました。
すると、
Warning: mail (): Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in
とエラーが返ってきました。
もうダメポです。
教えてください。
350 :
349 :2006/05/28(日) 11:34:05 ID:zxjIhcD+
phpinfoでsendmail_fromの部分を見たところ no valueとなっているのですけど、これは何か関係ありますか?
>>349 メールの送信自体はSMTPサーバが行い、PHPはSMTPサーバに送ってと命令を送るだけ。
SMTP=localhostになっているので、そのコンピュータにSMTPサーバを入れないと送信できないよ。
もしどこかのプロバイダに契約してるなら、そこのSMTPサーバ指定して送れると思う。
ただ最近はセキュリティが厳しいので、sendmail_fromをプロバイダから渡されたメールアドレスにする、
直前に受信するとかしないと送れないことが多いよ。
>>349 >>343 によるとキミんちの設定では
SMTP = localhost
smtp_port = 25
自分のパソコンにSMTPサーバーがインストールされていることになってが
実際にはそんなものはないので送信できないよ、と文句言われてる。
掲示板上で手順を1から説明するのは厳しいので「Windows PHP メール送信」辺りでググるといいかと。
>>350 「
[email protected] 」なんて設定にしたことないのでよく分からん。
一目見りゃわかると思うんだがこれはサンプルのメアドであって、そんなの設定しちゃいかんよ。
$_GET[url] に格納される くだらねぇ質問 %E3%81%8F%E3%81%A0%E3%82%89%E3%81%AD%E3%81%87%E8%B3%AA%E5%95%8F %A4%AF%A4%C0%A4%E9%A4%CD%A4%A7%BC%C1%CC%E4 エンコードされていない物 エンコードされていても文字コードが違うもの これらを内部で一定にして扱う為にはどのようにしたら良いのでしょうか?
おまいら親切だな エラーメッセージ読め、で済みそうなもんなのに (実際エラーメッセージに書いてあるし) 英語とはいえ中卒レベルで読めると思うんだが
直接PHPに関わることじゃないんですが、 配布してるPHPで書かれたプログラムを、改造して利用するのはまずいですか? 利用と言うのは個人で利用するだけで、再配布するって意味じゃありません。 配布元にはその辺に関して何も書いてませんでした。 一般的にどうなのか教えてもらえると嬉しいです。
>>354 mb_convert_encoding()
rawurlencode()
>>355 あ、英語が義務教育になったのはいつからじゃ?
you is a big fool man.
こう?
>>354 入ってくる文字、出力する文字それぞれの文字エンコーディングを常に意識してスクリプトを書いていれば悩む必要は無いんでは?
全部mbstring.internal_encoding更にはmbstring.script_encodingに合わせておけばいいっしょ。
>>356 その人に聞くしかあるめえ
>>357 知っていてしかるべき(と世間一般では思われている)
知識レベルって意味だろ。
義務で教育されても出来ないやつは出来ないんだし。
ただ「英語だと類推して英語の辞書を引く」のは
そうだな。無料で辞書はたくさんあるわけだし。
レンタルサーバー(共有Linux鯖)で、セッションで認証を維持するページを作ろうと思います。 session.save_pathをデフォルトの./tmpから、/home/hogehoge.com/public_html/ses_dir に変更したのですが、このディレクトリでは自動でガベージコレクションってされないですよね? ログアウト処理せずにブラウザ閉じるとセッション情報のファイルが値を保持したまま残りっぱなし… ガベージコレクションに類似したスクリプトを自動実行するような対策をするしかないですか?
コールバック関数を登録してデータベース使うのが一番楽なんじゃない?
363 :
361 :2006/05/28(日) 19:03:38 ID:???
申し訳ない自己レスです。GCちゃんとされるみたいですね。
セッション保持を短く・GC確率を100パーセントにするよう.htaccessに
php_value session.gc_maxlifetime "60" と php_value session.gc_probability "100"
として別々のブラウザでアクセス繰り返したら、
60秒なにもしなかったセッションのファイルが消えるの確認できました。
http://php.morva.net/manual/ja/ref.session.php には
「session.save_pathのパスの深さが2より大きい場合、ガーベッジコレクションは行われません」
ってあったのでできないと思いこんでましたが…これはどういう意味なんだろう…
板汚し失礼しました。もう少し試験を繰り返してみます。
MAC OS X 10.4で、PHPをPHP5.1.4にアップしたところ、 コードが正常に記述されていればちゃんと動くものの、 エラーがある場合にエラーメッセージを返さず、白紙状態に なってしまいました。 いくつかのソースを書いてみたものの、結果は同じでした。 この状況について御存知の方、いらしたらお知恵を貸してくださいませんか。 なお、PHP5はentropy-phpのインストーラでインストールしました。
>>356 一般的な基準、だと再配布なしなら、
軽度改造は特に問題なし、
かなり派手に改造を加える場合は著作権表示の横に改造した旨を併記、
ってくらいじゃないかと思う。
(大幅に改造したのが他所で動いてるとたまに本家に質問が飛んできて困るのよね)
全然気にしない人も多いから聞いてみた方がいいと思うけどね。
367 :
364 :2006/05/28(日) 20:36:00 ID:???
>>365 ありがとう。おかげで解決したです。
では、勉強に戻りますノシ
「一般」つうのは適用される場所や捉える人によって変わってくるからな。 他人の著作物を許諾を得ずにうpる人は、 一般的に良い人と見なされ神。
ていうかそういう質問は安易に答えない方が良いぞ。
>>356 みたいにスレ違いなことを平気でしてくるんだから
あとで問題が起こったら
>>366 のせいだとか言われるかもしれないぞ。
まぁ俺なら間違いなく配布元に聞けとしか言わないけど。
他人のファイルをどうして俺たちが判断できようか。
フリーソフトとして配布してるなら作者本人に聞いても
多くは
>>366 みたいな回答が返ってくることが多いな。
神経質な人ならちゃんと明記するかライセンス形態を書いてるだろうし。
ただ
>>356 が根本的に無知で空気も読めないバカなだけに
そういうやつに安易に答えるもんじゃない、って意見も分かる。
そういうやつだと作者が暗に要求してるような事柄も
「明記されてないから分かりません」とか言って無視しそう。
著作物の権利についての議論は板違い
改造して使うのが普通だと思ってた・・・
375 :
nobodyさん :2006/05/29(月) 00:16:07 ID:VLMle6lT
教えてください。 DOSプロンプトからphpを実行して、そこで日本語を表示しようとすると文字化けします。 <?php print('2ch'); ?> どっかでキャッシュ→自動変換されているんだろうと思ってmb_convert_encodingやら、 ob_start();を筆頭に書いてキャッシュしないようにやってみましたが変化がありません。 なぜ化けるのか教えてください。 PHP 5.0.3、winxp、文字コードはsjisで書いてます。
>>375 php.inの設定でoutputの文字コードがUTF-8かEUC-JPになってるんじゃない?
377 :
375 :2006/05/29(月) 01:07:44 ID:???
mbstring.http_outputのことでいいですか? eucになってたんで = SJISに変更しましたが一切変化なし…。
internal_encodingはどうなってるんだよ
379 :
375 :2006/05/29(月) 01:39:26 ID:???
internal_encodingもSJISにしたらうまくいきますた! んが、今度はeucで書いたapache通して使うほうが文字化けしたんで、 両方コメントアウトしたら成功しますた。 …今後どこに影響でるんだかやや心配ですがありがとうございますた!
>>375 ・プロンプトで「type そのスクリプト」してSJISなのを確認する。
・そのPHPがenable-zend-multibyteでコンパイルされていることを確認。
(Windowsなら廣川さんがビルドしてるのを使うのが手っ取り早い)
・output_handlerに出力ハンドラは何も指定せずに、output_buffering = Off
・mbstring.language = Japanese、mbstring.encoding_translation = Off
・mbstring.internal_encoding = SJIS、mbstring.script_encoding = SJIS
(全てSJISなんだから、余計な自動変換の設定はいらない。)
>>381 他に
・UTF-8で格納してあるSQLite
・バイナリをアップロードするform
・EUC-KRなRSS
とかありそうなんで、ざっくり割愛。
PDO 使ってんだけど、SQLの文法は正しいのに prepareすると、エラーを返さずページリダイレクトされるのは なんで?
>>383 とりあえずコードを晒しなさいな。それだけじゃわかんないよ。
こんにちゎ。 PHPは4の初期頃までしかやっていなく、今は5になってかなりかわったみたいですね。 フォームからの投稿データは、 $name = $_POST["name"]; とかってやってていいんでしょうヵ?
キモイので答えることができません。お帰り下さい
あなたのほうがキモいです。
function speed_return( $res387 ) { return ">>" .$res387. "<br>\nそれはありえません。鏡を見てから言ってください。"; }
$res387 とはセンスないよね。 $res[387]とかのほうがいいよ。 配列は覚えた方がいいからね。
しかも関数内の暫定的な変数に $res387だって頭わるそー そういうときには番号つけずに、 $res とだけやるのが普通だよ。ばっかじゃないの?
391 :
nobodyさん :2006/05/29(月) 17:05:18 ID:8hg7YXeL
2chで最近評判が悪いレッツPHPにあるスクリプトに ファイルの書き込み処理として $fp = fopen($logfile,"a"); set_file_buffer($fp, 0); flock($fp, LOCK_EX); fputs($fp, $data); fclose($fp); とあるのですが、これは一般的に見て安全な書き込み方法なのでしょうか? ちなみにこれはアクセス解析のlog.phpの最後の部分です。 読み込み処理は file("〜") とするだけでロックなどしなくても大丈夫でしょうか? 宜しくお願いします。
>>391 単にログを追加していくだけのスクリプトなら安全。
レンタルサーバ(エックスサーバー)でPHP(4.4.1)を使ってるんですけど、 テキストエリアのテキストをフォームでPHPモジュールに送信して それをプレビューとしてHTMLとして出力すると10%くらいの確率で文字化けしてしまいます。 文字化けしてる時はSJISで出力されてしまってるみたいです。 プログラムは全てEUC−JPで作成してます。 本を参考にして 送信先のプログラムの先頭でmb_http_output('EUC-JP');としてみましたがダメでした。 そのすぐ後にob_start('mb_output_handler');も追加してみましたが文字化けが酷くなりました・・ ・。 たぶん、レンタルサーバを使ってる他の人がSJISを使うように設定を変更してその影響を受けると推 測したんですが、 対処の仕方がわかりません。 原因とか対策が分かる方、よろしくお願いします。
394 :
390 :2006/05/29(月) 17:37:10 ID:8hg7YXeL
>>392 逆に聞きますと、どういうスクリプトで使用すると危険なのでしょうか?
このファイルの入出力の部分を流用とかはあまりしない方がいいのでしょうか・・。
>>393 METAタグの文字コード指定か、出力前に
header("Content-Type: text/html charset=euc-jp");
としてみてはどうでしょうか
>>394 ログファイルを一旦全部クリアして書き直すような
(特定のレコードの削除や、行頭へのレコード追加等)
処理の場合には、きちんとしたロック制御をしないとまずいです。
具体的には、処理全体を関係ないロック専用のファイルに flockして囲うか、 ログ読み込み時は fopen を r+ で開き次の行で flock をLOCK_EXでかけて、その後データを読み込み、 その読み込んだデータなどに基づき、書き込みデータを作成して、 ftruncateでファイルサイズを0にし、rewindで先頭に戻し、 fputsで書き込む。 このように、(読み込み→書き込み)までの一連が排他制御されてないといけません。
>>395 レスありがとうございます。
メタタグの指定はやってるんですけど、ブラウザの文字コード解釈ではなくて、
PHPが生成して返してくるHTML自体の文字コードが
全く同じリクエストを投げてもEUCだったりSJISだったりするんです。
なのでSJISで出力されると文字化けするんです。
たぶんPHPの方で勝手にEUCの文字列をSJISに変換して返してるんだと思うんですけど、
これを必ずEUCで出力するようにしたいんです。
これはレンタルサーバの仕様でしょうがないんでしょうか?
>>398 昔の古いテクニックで、
フォーム投稿データに hiddenで特定の漢字を入れるのと、
出力するhtml文に、コメントで特定の漢字を入れる、ってのがあったけどそれはどうかな?
>>399 それを調べて試してみます。
ありがとうございました。
401 :
軟式PHP :2006/05/29(月) 18:07:44 ID:???
>>391 >2chで最近評判が悪いレッツPHPにあるスクリプトに
ウケタ。そんな噂があるのか。
まぁ、あそこに置いてあったスクリプトで、ファイル処理で
$fp = fopen("aaa.txt","w");
flock( $fp, LOCK_EX );
っていうのがあったのがウケた。意味ないじゃーん。
>>401 CGI-Perl or PHP初心者にありがちな罠だよね^^;
404 :
390 :2006/05/29(月) 18:40:04 ID:???
>>396-397 ありがとうございます!
例えば掲示板などのスクリプトでログの一部を変更して書き込むなどの時は
$data = "";
$fp = fopen($logfile,"r+");
if ($fp) {
flock($fp, LOCK_EX);
while (!feof($fp)) {
$buffer = fgets($fp, 4096);
$data .= $buffer; // 書き込みデータを作成
}
ftruncate($fp, '0'); // ファイルサイズを0
rewind($fp); // 先頭に戻す
fputs($fp, $data);
fclose($fp);
flock($fp, LOCK_UN); // ロックを解放する
}
書き込みデータ作成処理は何もしていませんが、こんな感じでしょうか?
ログを表示するだけの時にも file(〜) よりも fopen +共有ロックを使用した方が
安全という認識で良いでしょうか?
マニュアル見ると色々とファイルの入出力の方法があるのですが、「これこそが王道」みたいな
ものを見定めるだけの能力がないので・・・('A`)
405 :
390 :2006/05/29(月) 18:41:21 ID:???
あっ flock($fp, LOCK_UN); // ロックを解放する fclose($fp); でした。閉じた後に$fp使っても意味が無いですよね
>>404 私的にはそれでばっちり。
念を入れるなら flockの返り値などもチェックするにこしたことはないけど、
それで充分だとおもいまふ。
file()関数も便利だけど、
flock()がかかっている最中のファイルに対する挙動とかっていまいち不明なので、全体処理ロックの中でしか使わない。
関連質問。 flockで排他されている方は、処理が終わるまでジッと待っていてくれるもんでしょうか。
>>405 その前に名前390ってのは合ってるのか?
専ブラ使ってるとポップアップでレス抽出できるから、その辺も気を付けてくれ
>>407 flock中にsleepで10〜20秒眠って、
その間に別ブラウザでアクセスしてみたらどうだ?
410 :
nobodyさん :2006/05/29(月) 20:33:08 ID:Bdw+FLsC
Web上でPHPのエラーが出てしまうのを防ぐようにするには どのような設定が必要ですか? Apacheの設定でしょうか?
>>410 error_reporting(0)でエラー出力をなくせるが、
これに頼らずエラーの出ないスクリプトを書いてくれ。
>>410 display_errorsをOffにして、log_errorsをOnにする。
でもってerror_logにエラーログを記録するファイルを絶対パスで記述するのがオススメ。
まかり間違ってもerror_reportingを0にしてエラー自体を出さないようにすることは止めた方がいい。
>>410 <?php
error_reporting(0);
function manual_yomeyo($str) { return 'manual yomeyo '.$str; }
echo manual_yomeya('boke');
?>
もしくは
<?php
function manual_yomeyo($str) { return 'manual yomeyo '.$str; }
echo @manual_yomeya('boke');
?>
というわけで
>>411 が最も正論だな。
頼むからWarningレベルの警告が出るようなスクリプトは書かんでくれ
415 :
nobodyさん :2006/05/29(月) 21:48:04 ID:IjgGbccK
メール送信のフォーム作って テストメール送信したんだが、 受信メールが文字化け↓ ?\?????C?x???g???o?^???????????B ------------------------------------------------- ?J?????F2006/06/23 ------------------------------------------------- test2?e?X?g ------------------------------------------------- ?Q???E?s?Q?????o?^?????L?t?q?k?????¨???¢???????B ソースの一部↓ function _mailSend($_mode,$_date,$_name,$_detail,$_email,$_keitai){ // ヘッダ作成 $headers =
416 :
415 :2006/05/29(月) 21:50:05 ID:IjgGbccK
// ヘッダ作成 $headers = ""; $headers .= "Content-Type: text/plain; charset=ISO-2022-JP\n"; $headers .= "Content-Transfer-Encoding: 7bit"; サーバApacheのデフォルトcharsetはnone、shift_jisどちらも試したが× どこかの設定で文字コードが合わないのかもしれない。 わかる人いませんか?
>>416 none っておいおい。
AddDefaultCharset none は完全に間違っている。
AddDefaultCharset off が正しい。
文字列を指定すると、特定のフォルダ以下に含まれる全てのファイルの内容を走査し その文字列が含まれるファイル名をリストアップする、 という感じの検索システムを作ろうと思っています。 そこで質問なのですが、 ディレクトリ関数やファイル関数を使ってひとつひとつ内容を調べていこうと思ってるんですけど これはサーバーに対してかなり負荷をかけてしまうものなのでしょうか? レンタルサーバーを借りて使っているので気になります。
419 :
415 :2006/05/29(月) 21:55:03 ID:IjgGbccK
>>417 返答どもです。
offで文字化け回避できますか?
今試してみます。
>>354 です
いろいろ試しましたがうまくいきませんでした
formからのリクエストに対してはある程度対応できますが ブラウザからの直接のGET参照がうまくいきません
ブラウザによってアクセス方法がまちまちで
?u=くだらねぇ質問
?u=%E3%81%8F%E3%81%A0%E3%82%89%E3%81%AD%E3%81%87%E8%B3%AA%E5%95%8F
?u=%A4%AF%A4%C0%A4%E9%A4%CD%A4%A7%BC%C1%CC%E4
とアクセスしたきた場合の処理でつまづいています。
421 :
415 :2006/05/29(月) 21:59:42 ID:IjgGbccK
>>417 ダメでした。
ほかに文字化け原因箇所ってありますか?
ぐぐって見ましたが、書いてませんでした。
422 :
415 :2006/05/29(月) 22:03:37 ID:IjgGbccK
受信メール文字化けでこまってます。 function _mailSend($_mode,$_date,$_name,$_detail,$_email,$_keitai){ // ヘッダ作成 $headers = ""; $headers .= "Content-Type: text/plain; charset=ISO-2022-JP\n"; $headers .= "Content-Transfer-Encoding: 7bit"; 文字化けでこのソースが間違っているわけではないと思うの ですが。どこかの設定(confファイル)が原因でなっている と推測ですが。。考えられる原因箇所お願いします。
>>415 <?php
function mail_encode($str, $mime_encode = false) {
$str = mb_convert_encoding($str, 'ISO-2022-JP', 'auto');
if ($mime_encode)
$str = mb_encode_mimeheader($str, 'ISO-2022-JP', 'auto');
return $str;
}
function mail_send($to_name, $to_addr, $from_name, $from_addr, $subject, $message) {
$to_name = mail_encode($to_name, true);
$from_name = mail_encode($from_name, true);
$subject = mail_encode($subject, true);
$message = mail_encode($message);
$headers = "MIME-Version: 1.0\r\n"
."Content-type: text/plain; charset=ISO-2022-JP\r\n"
."Content-Transfer-Encoding: 7bit\r\n"
."From: {$to_name} <{$to_addr}>\r\n"
."Reply-To: {$from_name} <{$from_addr}>\r\n";
return mail($to_addr, $subject, $message, $headers);
}
mail_send('ボケ', '
[email protected] ', '俺', '
[email protected] ', 'ボケへ', 'マニュアル・RFCくらい嫁やボケ');
?>
>>420 >>357 がほとんど正解を教えてくれてるのに、お前はほんとに試したのか?
マニュアル読まない、ヒントもらっても試さず動かないと言う。
どうしようもない奴だな。
$a = array(
'くだらねぇ質問',
'%E3%81%8F%E3%81%A0%E3%82%89%E3%81%AD%E3%81%87%E8%B3%AA%E5%95%8F',
'%A4%AF%A4%C0%A4%E9%A4%CD%A4%A7%BC%C1%CC%E4',
);
foreach ($a as $u) {
echo mb_convert_encoding(urldecode($u), 'utf-8', 'auto').'<br />';
}
>>406 前々から思っているんだが、fcloseの前にflockで明示的にロックを解除してんのに
その前でfflushを使っているスクリプトを(あるかも知れんが)見たことが無い。
実際、fcloseの前にflock/fflushは不要で、単にfcloseのみをすれば暗黙的に
fflush→flock→fcloseの順で処理してくれるハズなのでうまく行くハズなんだが、
先に明示的にロックを解除すると、flock→fflush→fcloseの順で処理されて
まずいような気がするんだが。
>>422 mailSend()の中の処理を推測して回答しろ、と?
>>422 まずinternal_encodingとhttp_inputの値ぐらい出せんか。
そして素直にmb_send_mail関数使え。
>>424 説明が足りませんでした
?u= に入った値に fopen で接続を試みます。
428 :
nobodyさん :2006/05/29(月) 23:39:45 ID:vMvjotbL
質問があります。 とあるキーワードを変数$keyに入れたいのです。 私が$keyに入れたいキーワードは 「パソコン 激安 販売」の「パソコン」部分だけです。 「メガネ 高値 販売」の「メガネ」部分だけです。 「パソコン 激安 販売」には 計2つの半角スペースが入っているのですが 1つめの半角スペースから左の部分を$keyに入れる 見たいな事をコード化することは可能なのでしょうか?
可能です。strpos substr
list($key) = expload(' ', 対象文字列);
display_errorsがonなのに、エラーが画面に表示されず、真っ白のままです。 でもログにはエラーがきちんと記録されています。 どうして画面にエラーが出力されないのでしょうか・・・? display_errors以外にチェックすべきポイントはありますでしょうか。
432 :
391 :2006/05/30(火) 00:12:56 ID:???
>>401 extract を利用したスクリプトが多いのが原因だと思います。
たしか前スレあたりでその話が出てたと思います。
>>408 ま、間違えていました・・・
>>391 でした(汗
>>406 ありがとうございました。とても勉強になりました。
>>425 という事は
>>391 を
$data =
>>418 find & grepか。
ディスクアクセスが必要な処理だから、相応に負荷はあるけど
そういったベタなやり方は禁じ手という訳でもない。
常用するならもちっと工夫するなりDB活用するなりしろといった感じ。
ファイルが多くて容量も大きければ、(Web経由なら)ブラウザのタイムアウトへの工夫とか、
PHPのタイムアウト、無限ループのプロセスと見なされないよう管理者との相談や
別サービスへの移行勧告とか出てくるかもね。
>>427 説明が足りない、お前の頭と同じくらい足りない。
質問するなら、何をどうしたいのか的確に書けよ、ボケナス。
で、allow_url_fopenはOnになってるんだろうな?
>>427 Path Traversal作るなよ
どうでもいいが多バイト文字でfopenかますという設計に疑問を抱かざるを得ない
436 :
nobodyさん :2006/05/30(火) 00:28:34 ID:pEJEKC/o
なるほど、えと もう既に $keyに文字列が入っている場合 それから 1つめの半角スペースから左の部分を削った上で再度$keyに入れるみたいな感じでやってみたのですが今一わかりません。 <?php 〜略 $key = $afafa[1]; //既にここで$keyにキーワードが入っている $key = expload(' ',"$key"); //ここで1つめの半角スペースから左の部分を削った上で再度$keyに入れる echo $key; //ここで削ったキーワードを表示 ?> こんな感じでやりたいのです。
>>436 $keyには1つの値しか入らん。
従って$keyに削った後の文字列とキーワードを同時に入れることは不可能。
あと変数だけをダブルクォーテーションで括るのは気持ち悪いから止めた方がいい
$key = expload(' ', $key);
echo array_shift($key);
$key = join(' ', $key);
438 :
437 :2006/05/30(火) 00:42:23 ID:???
上のコードは$keyを配列にして先頭要素を除去、再び文字列に〜というあまり気持ちよくないコード(見れば分かるか) expload→explode joinよりimplodeの方がいいな、どう考えても
439 :
nobodyさん :2006/05/30(火) 00:46:29 ID:pEJEKC/o
ご丁寧に有難う御座います、早速やってみます。
440 :
nobodyさん :2006/05/30(火) 00:48:16 ID:pEJEKC/o
1つめの半角スペースから左の部分を削った上で再度$keyに入れる 訂正です。。 右の部分でした。すいません。やってみます。
>>425 そういえばどっかでみたような気がする。
>flock解除を明言するなら、フラッシュしてから。
Perlの青らくだだったかな
hogehoge
443 :
nobodyさん :2006/05/30(火) 01:20:25 ID:pEJEKC/o
>>437 できました〜!えとarray_shiftでやはり最初以外の右部分が挿入されていました。
類似関数を調べたところ
array_pop辺りしかないようですね。削る関数は。
一応これで満足です!ご丁寧にありがとうございました。色々関数があって面白いですね。
確かにPHPって関数多いよな〜
うん 1000個もある
446 :
nobodyさん :2006/05/30(火) 02:18:09 ID:KRBUwnPN
質問です。
どこで質問すればいいか全くわからないので、スレ違いなら誘導願います。
HTMLのIFRAMEを使ったプログラムを書いているのですが、
IE6でのみクッキーが取れなくて困っています(FirefoxとOperaでは取れました)。
以下がそのソースコードです。
http://a.com/cookie_get.php ---------------
<?php
setcookie('t',$_SERVER['HTTP_HOST'],time()+1000);
echo 'cookie:'.$_COOKIE['t'];
?>
---------------
http://b.com/test.html ---------------
<iframe src=
447 :
nobodyさん :2006/05/30(火) 02:18:49 ID:KRBUwnPN
>>447 IEのインターネットオプション>セキュリティ>信頼済みサイト>サイト>次のwebサイトを・・・
にa.comを追加してみる
>>448 レスありがとう。
その方法でうまく行くだろうことはわかりますが、
サイトを見てくれる第三者にそれを要求することは出来ないので、
別の解決策をどうかよろしくお願いします。
まずそんなフィッシングサイトみたいな構成を見直すところからかな?
>>446 > HTMLのIFRAMEを使ったプログラムを書いているのですが、
iframeだけなら問題ないと思うが、iframeの中で別ドメインのページを呼ぶのは
セキュリティ的に問題があるので正常な動作を期待しない方がいい
PHPでGDライブラリを導入したいのですがやりかたがわかりません 手助けしていただけるとありがたいです 今、GD2.0.33をダウンロードしたところですがここからどうすればいいのでしょうか??
453 :
452 :2006/05/30(火) 07:18:30 ID:???
PHPのヴァージョンは5.1.4です お願いします
>>452 ぐぐったらいくらでもでてくるけど
何やって何がだめなのさ?
455 :
452 :2006/05/30(火) 07:34:32 ID:???
>>454 様
PHP グラフィック ライブラ
PHP GD
PHPGD 導入
等でググってみたのですが、古い情報ばかりで…
今、GDライブラをダウンロードしたところでこれをどうすればいいのかさっぱりな状況です
456 :
nobodyさん :2006/05/30(火) 07:39:56 ID:t5k6Siqf
>>436 お前
>>430 見たのか
list($key) = explode(' ', $key);
expload('A`)
459 :
452 :2006/05/30(火) 07:48:23 ID:???
>>457 様
WinXPです
>>458 様
それをどこに追加すればいいのかがわからないです
もう少しググってみます(TдT)
>>451 > iframeだけなら問題ないと思うが、iframeの中で別ドメインのページを呼ぶのは
> セキュリティ的に問題があるので正常な動作を期待しない方がいい
はい、同じドメインでは問題ありませんでした。
とりあえず現状ではIEのみ非対応ということにせざるを得ないですね。
すみません、質問させてください。 php4.3.10でセッションを使ったログイン処理をやっています。 「session.cookie_lifetime」がデフォルトの「0」のままなのですが、 「ブラウザを閉じるまで」セッションが有効になりません。 だいたい1時間くらいで勝手にセッションが切れてログアウトしてしまいます。 どうしてなのでしょうか??
strlen("漢字"); は4と返ってきますが、これで2と返るようなのはありませんか?
mb_strlen
少し気になったことがあるので聞かせてください。 表示するまでにかなり時間のかかるphpファイルがあるのですが、 (内部でサーバローカルの特殊な処理をしていて、10秒ほどかかります) そのページに複数アクセスが集中したときにコネクションが貼れるのかどうか心配です。 現状では同時に3〜4クライアント程度しかアクセスしてこないため大丈夫ですが、 例えば10秒の間に100〜1000クライアントが同時にアクセスしてきた場合、 Webサーバのコネクションは維持できるのでしょうか? 環境はLinux上でApache1.3.27とPHP4.4.2です。 コネクションの最大数の制限が、カーネルなのかWebサーバなのかPHPなのかわからないので ご存知の方はそちらも教えていただけると助かります。 よろしくお願いします。
>>459 Windowsの場合、ディフォルトでPHPにGDが同封されているので、
php.iniのGDの項目をコメントアウトすれば使えるよ。
>>462 session.cookie_lifetimeのディフォルトは1440だと思うが、、、
共有のレンタルサーバで、session.save_pathをディフォのままにしておくと、
他の人に消されることがあるよ。
>>467 1440がデフォルトなのは「session.gc_maxlifetime」ですよね?
「session.cookie_lifetime」は「0」がデフォルトです。
ちなみにVPSなので他の人に消されるということはありません。
Getメソッドで"蟲"の字が取れないんだけどなんで?
471 :
452 :2006/05/30(火) 13:25:41 ID:???
>>466 様
コメントアウトしてアッパッチの再起動
phpinfo()見てみたのですが、やっぱりできてないみたいでデス
(TдT)ウウ〜
神様光臨を待ちます。。。
>>470 むし(虫)の古い字かなにか分かんないけど難しい字
>>469 エンティティしても取れない?
473 :
nobodyさん :2006/05/30(火) 13:54:26 ID:D/hvuKGf
>>471 コメントアウトはコメントにしちゃうことなのでコメントを外すとか言う
アッパッチな
まぁ落ち着いてな。焦ると見えるものも見えなくなるもんだ。
phpinfo()で表示されるphp.iniの位置は修正した場所のphp.iniになっている?
Apacheのエラーログを参照して.dllがロードエラーになっていないか確認
エラーがあれば.dllのパスとファイルの存在を確認
一つずつ確認
$date1と$date10の変数があったとして、出力した時に$date10の表示が $date1の表示になります。 おそらく数字の部分が被っているからだと思うのですが、 それぞれ別物だと判断させる関数・方法はないでしょうか?
${data10}
>>311 AM 4:30
| ̄/|ワー (^ω^) サッカー楽しいお
|□ | ワー σ ノ)
| ̄ ̄ ̄ ̄ ̄|
>>474 ていうかこうやてるんだろ?
echo "hogehoge$data10hogehoge";
こうしろ。
echo "hogehoge".$data10."hogehoge";
479 :
474 :2006/05/30(火) 14:50:19 ID:???
みなさん、ありがとうございます。 教えていただいたのを試してみます
>>433 ありがとうございます。
禁じ手ではないんですね。
検討してみます。
正規表現がハローワールド級なんですが、駄目だしをお願い致します。 $table = $_POST['MySQL_Table_Name']; $pattern = '/[A-Za-z]+/'; if ( !preg_match($pattern,$table) ) { die("error : not is_alpha"); }
482 :
軟式PHP :2006/05/30(火) 17:14:39 ID:???
>>481 /^[A-Za-z]+$/
じゃないと、$tableに"aaaテスト";とかでもTRUEになってしまうんじゃ?
483 :
481 :2006/05/30(火) 17:20:11 ID:???
>>482 即レスありがとうございます。修正しました。
$pattern = '/[A-Za-z]+/';
それと if ( !preg_match ) とするより、
正規表現で「英字以外を含む時」にしておいて if ( preg_match ) の方がいいでしょうか?
484 :
481 :2006/05/30(火) 17:22:36 ID:???
$pattern = '/^[A-Za-z]+$/'; // しまった、ちゃんとこれに修正しました。
>>481 PHPでは正規表現使わない方法を探したら結構見つかるぜ
しかも正規表現使わない方が普通は速い
ctype_alpha($table)
486 :
481 :2006/05/30(火) 17:52:51 ID:???
うおお!ctype_alpha() 凄いっす。ありがとうございます
ctypeとか大垣リファレンス本の旧版に載ってないから、 ついつい存在を忘れちゃうんだよなぁ・・・。 そろそろ最新のリファレンス買わないとダメかな。
色々調べてみたのですが解決方法が見つからないので質問させて下さい。 DebianLinux+Apache2+PHP4という構成なのですが、Permission deniedになってphpの実行が出来ません。 Apacheのログを見ると >(13)Permission denied: exec of '/home/www/html/info.php' failed >Premature end of script headers: info.php といった感じになっています。 info.phpは <?php phpinfo()?> な内容です。 php自体の起動は出来ているようなのですが、権限が無いというのが分かりません。 なお、perlスクリプトは問題なく動作します。 (apache2やphp4周りの設定は特におかしな所は無いようです)
489 :
nobodyさん :2006/05/30(火) 21:08:53 ID:pEJEKC/o
urlencode(
490 :
nobodyさん :2006/05/30(火) 21:21:20 ID:pEJEKC/o
urlencode ("オフコース"); ↓ %83I%83t%83R%81%5B%83X こんな風に表示したい ↓ %E3%82%AA%E3%83%95%E3%82%B3%E3%83%BC%E3%82%B9 オフコースという文字列を ↓のようにするにはどうすれば良いでしょうか? %E3%82%AA%E3%83%95%E3%82%B3%E3%83%BC%E3%82%B9
>>488 phpがCGIとして動いてたりしない?
>>490 urlencode(mb_convert_encoding('オフコース', 'utf-8', 'sjis'))
>>491 phpがcgiとして動く、というのがよく分かりませんが
shell上から、# php info.phpを実行する分には正常に動作します。
#./info.phpの場合は
>bash: ./info.php: 許可がありません
と返ってきます。(sudo suにて)
$ ls -l info.php の結果を、ぽん。
>>494 755 644 646 の3パターンでやってみましたが、全部同じ結果になります。
-rwxr-xr-x 1 www-data www-data 18 2006-05-30 20:32 info.php
-rw-r--r-- 1 www-data www-data 18 2006-05-30 20:32 info.php
-rw-r--rw- 1 www-data www-data 18 2006-05-30 20:32 info.php
解決しました。 AddHandler cgi-scriptから.phpを外してok。 これのせいでDSOではなくCGI動作しようとしていたって事なんでしょうか。
>>496 そうだね。
CGIの場合は、1行目に#!/path/to/php、パーミッションを0755で動くよ。
498 :
nobodyさん :2006/05/30(火) 22:10:12 ID:pEJEKC/o
>>492 出来ました。ありがとうございます。最後にお聞きしたいたいことが一つ、、
既に$haefという変数にオフコースという文字列が入っている場合、
urlencode(mb_convert_encoding($haef), 'utf-8', 'sjis')
こんな感じでやりたいのですが。
でやってみたのですがやはりエラーがでました。よろしければ教えていただけませんか?
499 :
nobodyさん :2006/05/30(火) 22:13:46 ID:19Dhj3ir
/home/www/hoge 配下はPHPのエラーがWEB画面に表示されないように 一方、 /home/www/hogetest 配下はPHPのエラーを画面表示するようにするには どのような設定が必要でしょうか?
お問い合わせフォームで受け付けたメールアドレスが、実際に 存在するかどうか確認するにはどうすればよろしいでしょうか。
>>498 何のエラーか知らんが、その行だけを見てもparse errorが出るはずだな。
>>501 蓋を開けるまで猫が生きてるかどうか分からんよ
504 :
nobodyさん :2006/05/30(火) 22:40:35 ID:pEJEKC/o
>>502 そうです、そのエラーが返ってきます。難しいです。
>>501 SMTPのVRFYコマンドで問い合わせたら 解るカモ知れない
あくまで「かも」レベルな。
>>504 その行だけをよ〜く見てみて
スッゴイパラレルワールドだから
508 :
nobodyさん :2006/05/30(火) 23:28:43 ID:pEJEKC/o
パラレルですか? 一応マニュアル見たりして調べたんですが載ってないんですよね。 ”;”が無いとかですか? ($haef), 'utf-8', 'sjis') →($haef, 'utf-8', 'sjis') ; にしてもエラーです。おかしいです。
>>508 ・urlencode() に渡すべき引数を調べる
・mb_convert_encoding() に渡すべき引数を調べる
> 一応マニュアル見たりして調べたんですが載ってないんですよね。
どっちも載ってますってば。
510 :
nobodyさん :2006/05/30(火) 23:36:43 ID:pEJEKC/o
512 :
nobodyさん :2006/05/30(火) 23:46:51 ID:pEJEKC/o
>>512 ところで、$haefってhrefのtypoじゃないだろうな?
<? include("date.php");?> で外部ファイルを読み込むのですが、外部ファイルの指定箇所を読み込む と言うことは出来るのでしょうか? 例えばdata.phpの中身が //テストデータの読み込み $test="テスト"; //hogeデータの読み込み $hoge="hoge"; みたいな内容だとして、「$test」の方だけ読み込むとか。 (実際には複雑なソースがあるとします)
516 :
nobodyさん :2006/05/31(水) 03:01:23 ID:6RpSrScb
Testというクラスを作り、そのクラス内で関数と変数も以下のように作り private $_test; public function set_iti($test) { $this->_test=$test; } (同様にクラス内にて、set_niとset_sanのset用の関数と変数も作りました) set_iti($test)やset_ni($test)の関数に値をsetしたいのですが、 $aarray = array(
517 :
516 :2006/05/31(水) 03:07:28 ID:6RpSrScb
すみません516ですが途中で切れてしまいましたので続きから書きます $aarray = array("iti","ni","san"); //配列を作り $db_count = (count($aarray)) - 1; //配列の数をカウントし、 $test = new Test(); for ($i = 0 ; $i <= $db_count; $i++) { // for文の中にて $set_name = "set_" . ($aarray[$i]); $test->$set_name(3); このようにしてsetしようとすると $test->$set_name(3);この行にてエラーとなってしまいます。 以下のようにすればエラーにならないのですが、 $set_name = "set_" . "iti"; $set_name = "set_ni"; 配列をくっつけようとしている所に問題があるのでしょうか? すみませんが、皆様よろしくお願い致します。
>>514 ・変数で分岐する
--- a.php ---
$a = true;
include('b.php');
--- b.php ---
if ($a) {
echo 'a = true';
} else {
echo 'a = false';
}
・関数化する
--- a.php ---
include('b.php');
b_1();
//こういうのでもいい
// $b = 1;
// call_user_func("b_{$b}");
--- b.php ---
function b_1() { echo 'b_1 called'; }
function b_2() { echo 'b_2 called'; }
>>516 エラーメッセージくらい書けよ?
それとphp5なんだろうから、__setや__callを使えばいい
要するにだマニュアル嫁タコ
メソッドが存在しないと先読み予想
521 :
516 :2006/05/31(水) 04:24:52 ID:6RpSrScb
>>516 さん
以後気をつけます。
ご回答ありがとうございます。
__set __get次回試してみようと思います。
>>520 さん
すいません。
それはありえないと思いつつ
519さんの「エラーメッセージくらい書けよ? 」で
エラー内容を見直していたらメソッド無いのエラー内容でした。
set_idで試していると思い込んでいたのですが、
新しく結合用に作っていた変数d_idのセッターを作っておりませんでした。
問題解決致しました。
ご回答ありがとうございました。
初歩的な間違いの質問してしまい皆様申し訳ありません。
以前はPHPは関数を先書きしなければならなかったんですが、 PHP5で、後書きにしても普通に動作しました。 完全サポートされてるとしてこのままでいいんですかね?
クラスを配列にしたいと思います。 $a = array(); $a[0] = new MyClass(); $a[1] = new MyClass(); このように要素ごとにクラスの宣言をせずに、 $aにこれから追加される要素もすべて MyClassとして扱えるような簡単な方法はないでしょうか?
>>522 クラスならともかく、関数はPHP4でも後ろで定義できるだろ
525 :
523 :2006/05/31(水) 10:38:16 ID:???
$a = array(new MyClass()); でできました。
>>514 file()で取り出して、指定行をPHPコードとして扱うとか。そんな関数なかったっけか?
>>526 ねーよ。
そういうのをやるなら適当だがこんな感じだな。
こんな関数使う意味ねーけどなwww
function exec_file_lines($path, $start = 0, $end = -1) {
$result = false;
if (($file = file($path)) !== false) {
$total = count($file);
if ($end == -1 || $end >= $total)
$end = $total;
$file = array_slice($file, $start, $end - $start);
$result = eval(implode('', $file));
}
return $result;
}
>>514 そもそもどういう基準で読む場所を切り替えようとしてるんだろ。
例えば
[data.php]
if($testmode) {
include("data_test.php");
return;
}
$hoge = "hoge";
[data_test.php]
$test = "テスト";
とかいう感じは?
すべてのリクエストパラメータをセッションに格納したいのですが簡単な方法はありませんか? パラメータの名前は不定で毎回変わります
$_SESSION['request'] = $_REQUEST;
「JACK THREE FIVE」のさ 「IntroGraphic [ Visible / Hide ] >1>2>3>4>5>6>7>8>9>10>11>12>13」 てなってるじゃんHide押したら消えてVisible押したら表示される あれってphpの仕組みどうなってんの?
>>530 説明不足ですいません、パラメータの名前は毎回変わるんですが
過去のリクエストでのパラメータも全て残しておきたいんです
>>532 同じ名前のが上書きされても良いなら、
$_SESSION['request'] = array_merge($_SESSION['request'], $_REQUEST);
なるほど!ありがとうございました
2次元配列の2次元目の項目でソートしたいときなどはどうやればいいんでしょうか? $ar[name][addr] $ar[name][age] たとえば上記のような形で、$arをageでソートしたいときです。
例がよくなかったです。 $ar[fred][age] = 18; $ar[nancy][age] = 19; のような感じで、ageでソートしたいです。
ageがfredやnancyの最初の配列要素なら $ar = array( 'nancy' => array('age' => 19, 'sex' => 'female'), 'fred' => array('age' => 18, 'sex' => 'male'), 'jane' => array('age' => 25, 'sex' => 'female'), ); asort($ar); 最初の配列要素であることが保証出来ない場合 function cmp($a, $b) { if ($a['age'] == $b['age']) return 0; return $a['age'] < $b['age'] ? -1 : 1; } $ar = array( 'nancy' => array('sex' => 'female', 'age' => 19), 'fred' => array('sex' => 'male', 'age' => 18), 'jane' => array('sex' => 'female', 'age' => 25), ); uasort($ar, 'cmp'); しかしマニュアル読んでれば、すぐに分かりそうな質問ばっかだな だから下らねぇ質問なんだろうけど・・・
沢山のfunctionが一つのclassに入ってきて見通しが悪くなってきたので、 機能別に2つに分けようとしています。 class Original -> class A + class B しかし、元のclass で$this->function()をしているため2つに分けると、AとBに別れて しまい動作しなくなってしまいます。 かと言って、class A のfunction内で $obj = new B(); するのもどうかと思うのですが、 こういう場合どうすればいいのでしょうか。
はじめまして。PHPの勉強を始めたばかりの素人です。 現在、参考書を見ながらメールフォームを作成していますが、受信したメールが文字化けしています。 if(mb_send_mail($to, $title, $naiyou, "From : $from")) これだとメールは届きますが、タイトル、送信者、メッセージともにすべて文字化けします if(mail($to,$title,$naiyou)) だと、タイトルが文字化けするだけで、送信者とメッセージの部分は文字化けしていませんでした。 参考書には、php.ini の[mail function]の各項目の設定を確認してください。と書かれていますが、レンタルサーバーのためどこをどう修正すれば良いのかわかりません。 レンタルサーバーはさくらインターネットです。 コントロールパネルからphp.ini に、書き込むことが出来るようなのですが、何を書けば良いのでしょうか。 どなたか回答をよろしくお願いします。
>>539 mbstring.internal_encordingとスクリプト自体の文字コードが違うんだろどうせ
mbstring.internal_encoding 吊ってくる
>538 それだけでは本当に分けるべきクラスかどうか判断できん。 無理矢理分けてますます見通しが悪くなるオチが付くなら メソッドが固まっている状態の方がいい。 元のクラス設計、或いはメソッドの作りがマヌケだと 分離させるには骨が折れる。 このへんはデザインパターンのソースコードの作りを理解する事で学習できるぞ。
>>538 単に見通しが悪いだけで、別クラスに分ける必要が無いなら
コード自体を書きやすくしろ。無意味に別クラスに分けることは、余計な混乱を招くだけだ。
機能的に別クラスに分けるべきクラスの場合(この辺の判断は経験が必要になるが
オブジェクト指向・抽象化あたりでぐぐるなりして勉強しろ)、継承を使え。
でも、Aの中で$this->obj = new B();のようにするのも別に悪い設計ではないぞ。
継承と内包を状況に応じて使い分けるのが、正しいオブジェクト指向設計だ。
php5の場合は、interfaceも活用しろ。
以上!
>>543 修正
×コード自体を書きやすくしろ
○コード自体を見通しよくしろ(構造化、コメントを工夫するなど)
<a> あ </a> <a> い </a> <a> う </a> <a> え </a> <a> お </a> という文字列を あ い う え お と置換したい場合PHPではどうすればよいのでしょうか。 mb_ereg_replace等で試してみてもうまくいきませんでした。 よろしくお願いします。
>>545 $str = str_replace('</a>', '', str_replace('<a>', '', $str));
>>545 str_replace("<a>\nあ\n</a>\n<a>\nい\n</a>\n<a>\nう\n</a>\n<a>\nえ\n</a>\n<a>\nお\n</a>\n", "あ\nい\nう\nえ\nお\n", $string);
>>545 詳しい条件が無いので、質問内容を適当に解釈するならば、
strip_tags()
>>539 php.iniが変更できない(仕方が分からない)場合は、
スクリプト内でmb_language()とmb_internal_encoding()を適切に設定
まさかレン鯖でテストしてんの?
((( ;゚Д゚)))ガクガクブルブル
551 :
nobodyさん :2006/05/31(水) 23:56:11 ID:LuayvLyS
RSSをパースするのに、PHP5のSimpleXMLとPEARのXML_RSS、 どっちの方がおすすめですか? SimpleXMLの方が速そうですが、 取り扱いやすさは、どちらの方がいいでしょう?
PHP5.1で、今まで文字コードとかそれ系のことはまったく考えなく、 ソース上も何も考慮せずに作った掲示板を問題なく運用しているんですが、 これはたまたま問題が発生するケースに当たってないだけなんでしょうか? それとも、考慮しなくても自動的に適切な処理をしてくれているんでしょうか?
>>551 自分で判断出来ないレベルならXML_RSS使っとけ
>>552 内部文字コードと、出力HTMLの文字コードが偶然一致しているだけ
php.iniで透過的な文字コード変換も指定出来るが、mbstring関数くらいは使えるようになろうな
554 :
552 :2006/06/01(木) 02:02:00 ID:???
>>553 そうなんですか?
実はソースがEUCなスクリプトと、
ソースがSHIFT-JISなスクリプトが、同じ環境でどちらも問題なく稼動してるんですが、
ソース自体の文字コードはあまり関係ないんですか?
>>554 あ?関係なかったらmbstring関数なんていらねーだろが。
糞みたいな質問繰り返す前に、php.iniくらいは確認したんだろーな?
PHPとMySQLの出力について質問です。 例えば、aaaテーブルとbbbテーブル二つに適合するデータを出力する というようなことは出来るのでしょうか?どうしても2つ参照しなくては いけないのですが、方法が想像出来なくて・・・。
>>556 JOIN使えばと思うけどSQLの話なら板違い
ノイズが多く聞き取れない! 落ち着いて再度コンタクトせよオーバー!
>>554 ソース自体の文字コードは大いに関係するが、
これはたまたま問題が発生するケースに当たってないだけ。
狙って不具合を起こそうと思えば、簡単に問題を発生させられる。
かなり注意深く書かれたコードもあるけどね。
>>554 ソースをShiftJISで書いててカタカナの"ソ"を書き込めなかったオレがきましたよ
>>554 はいエラー
<?php
$a = "スケジュール表";//shift jis
echo $a;
?>
562 :
554 :2006/06/01(木) 10:22:43 ID:???
>>561 それは、"スケジュール表\";
で回避できますね。
で、ソース中にそうケースがないとし、
ユーザーからのpostデータで ソや表などを入れ込んだデータを処理、
テキスト保存、読み出し、html表示してもまったくエラーが発生しないんです。
563 :
554 :2006/06/01(木) 10:27:41 ID:???
で、
>>553 で、
>mbstring関数くらいは使えるようになろうな
とありますが、
mbstring.func_overload を有効にしていれば特に気にしなくてももうばっちりですか?
564 :
nobodyさん :2006/06/01(木) 12:21:12 ID:FSYfFeV9
IE6で クッキー保存時にダイアログで確認する設定にして、 <?php session_start(); ?> 上記のスクリプトを3回続けて実行。 1回目と2回目は「Cookieを許可」を選択すると 3回目でブラウザの応答がなくなります。 これはIE6のバグでしょうか? PHP側での回避策などありましたら教えてください。
>>563 1つのスクリプト内で1つの文字エンコーディングしか扱っていないのであれば、
内部文字エンコーディングの設定がどうなっていようとほとんど関係が無い
(勿論mb関連の関数は別)。そもそもどんな文字エンコーディングであろうと、
内部的にはバイト文字の羅列に過ぎない。
文字エンコーディングを判別して、文字化けしないように処理するのはUAの仕事。
例えばperlそのものには文字エンコーディングの概念なんて無いんだし、
PHPでもmb関連関数は拡張モジュール(オプション)。
それと、mbstring.func_overloadを有効にするなら、尚更文字エンコーディングを
意識しなければならない。暗黙的にmb_internal_encodingの設定値を参照されるので、
使用している文字エンコーディングと違っていれば当然文字化けを引き起こす。
あと、PHPには入出力時に自動的に文字エンコーディングを変換する手段があるが、
これは弊害があるため専用鯖でない限り通常はオフになっていると思われる。
ある値が配列の何番目の要素にあるかを返すarray_index($arr, $value) みたいな関数はありますか。 function array_index($arr, $value) { $i = 0; foreach ($arr as $item) { if ($item == $value) return $i; $i++; } return NULL; } こんな感じの関数です。定義するのはできるんですが、標準であるんならそっちを使おうと思って探したけど見つかりませんでした。
>>563 =554=552
あんた、とにかく文字コードを気にしたくなくて、でもちゃんと動くよと誰かに言って欲しいだけでしょ。
日本語処理する以上、設定もソースもデータも文字コードを考慮しないとだめだよ。
その上でちゃんと動くという確信を持たないとね。
>>568 さんくす。探し方が足りなかったようです。
570 :
nobodyさん :2006/06/01(木) 14:04:19 ID:b4/QNcGS
$day_dateの値が昨日の値より大きければMySQLのテーブルから読み込んで 表示するというのを作っています。 while($row=mysql_fetch_array($rst)){ $day_date2=$row[day_date"]; //日付をタイムスタンプに変更 $day_date3=strtotime("$day_date2"); $yesterday= date("Y-m-d",strtotime("-1 day")); $yesterday2=strtotime("$yesterday"); if($yesterday2<$day_date3){ echo $row["title"]; } 最初の$row[day_date"]に2006-06-01が入っていたとして それを比較するので6月1日以降のデータが表示されるはずなのですが、 なぜか、6月1日のデータしか表示されません。どこかおかしいでしょうか?
>>564 俺も昔それで悩んだことあった。
昔のことでよく覚えてないんだけど、サーバにより起きたり起きなかったりした気がする。
php.iniを別のサーバにコピーしても変化なかったんで、PHPの設定の問題でもなさそうだった。
今再実験しようと思ったんだけど、そもそもどうやったら、セッションのCookieを受け取りながら、
「Cookieを受け入れるか」のダイアログを再表示できるんだっけ?
>>570 >$yesterday2=strtotime("$yesterday");
$yesterdayはタイムスタンプだしな。
>>564 確かに再現した・・・
>>571 IEはインターネットオプションで
「プライバシー」タブ
「詳細設定」ボタン
「ダイアログを表示する」を2つとも選択
でできるよ
574 :
nobodyさん :2006/06/01(木) 15:45:22 ID:GEVTcprQ
smartyのテンプレート変数で、可変変数ってできますか? {$abc.{$def.0}} これはもちろんエラーですが、実現できる方法があれば教えて下さい。。
${}
576 :
574 :2006/06/01(木) 16:01:04 ID:GEVTcprQ
smartyのスレをのぞいて同様の質問がありました。 どうやらできないみたいですね。 単純に $abc.$def だとできるようですが、後ろの変数が配列だったりすると無理っぽいです。 テンプレートの前に戻って処理するしかないかな。
美しくはないけど{capture} 使えばいいんでね?
テンプレートでは、あんまり複雑な構造の配列とかは使わない方が良いんじゃないかね。 ロジックの方で出来るだけ処理して、出来る限りテンプレートの方は簡潔に書けるようにした方がいい。
579 :
574 :2006/06/01(木) 16:53:12 ID:GEVTcprQ
>>577 name属性に変数入れることになるので、結局は一緒かな。
>>578 もう、自分でも「これはまずいなぁ〜」って分かっているんだけど、
やっぱり楽したい…って感じで、ついついと。
教えてください PHPで自分のスクリプト名を取得して使用する際に $_SERVER["PHP_SELF"] は xxx.php/hogehoge/ としてhogehogeの部分にjavaScriptが書けるので セキュリティ上まずいというのは分かったのですが $_SERVER["SCRIPT_NAME"] のほうはなにか危険があるのでしょうか? そのままformのactionに使っても問題ないのでしょうか? 見た目は問題なさそうなのですが
>>580 action属性には「?」以降の文字列だけを入れろ
sort()関数は配列を整列しますが、引数で渡した配列を変更してしまいます。 そうではなく、引数で渡した配列は変更せず、整列された新しい配列を返すような関数はありますか。 または、配列をコピーしてくれるような関数。
配列をコピーしてくれる代入式を使えばいいような気がする
584 :
580 :2006/06/01(木) 20:26:25 ID:???
>>581 すみません
省略して書いてしまいましたが
実際には他のページを経由するので
一時的にスクリプト名を取得したいのです。
$_SERVER["SCRIPT_NAME"]
には純粋にパスとスクリプト名だけが
格納されるのでしょうか?
よろしくお願いします
すみません、/httpdocs/配下に置いたPHPスクリプトから /private/配下に置いた.phpファイルをincludeしたいと思っています。 でも、ためしにやってみたら読み込めませんでした。エラーメッセージなども出ません。 privateのファイルをincludeするにはどの設定をいじれば良いのでしょうか? ちなみに環境はVPSで、root権限があります。
>>580 $_SERVER["PHP_SELF"] ってセキュリティ的にどうまずいの?
>>586 あなたの書いたincludeの部分をココに貼ってみよう。
>>580 htmlspecialcharsかければいいだろ。
>>582 > 整列された新しい配列を返すような関数はありますか。
ない
> または、配列をコピーしてくれるような関数。
代入で一発
>>588 お前よぉ、そういうことやってると捕まるぞ。
面白半分だとしてもそういったフザけた真似は止めとけ。
素人だとうっかりパスワード入ってるinclude用ファイルの内容とか貼りそうだからな。
592 :
588 :2006/06/02(金) 00:09:18 ID:???
>>591 ハァ?
誰がincludeするファイルの中身を貼れって言いました?
そういう風に読めましたか?そりゃ失敬。
改めて言い直すわ。
あなたの書いた「includeの部分」をココに貼ってみよう。
画像をアップするだけのスクリプトを教えていただけないでしょうか? 普通の掲示板に画像アップの機能を持たせたいんです。 一番単純なスクリプトでお願いします。。。
595 :
593 :2006/06/02(金) 01:57:54 ID:???
>>594 レスありがとうございます。
そこはすでに見ていたんですが、良く分からなくて…。
もっと単純なものもあるんじゃないかと思ったんです。
もうちょっと格闘してみたいと思います。。。
597 :
596 :2006/06/02(金) 02:03:07 ID:???
598 :
596 :2006/06/02(金) 02:37:13 ID:???
>>593 ちょっそソースが長いからどっかにうpしてくる
599 :
596 :2006/06/02(金) 02:41:26 ID:???
600 :
nobodyさん :2006/06/02(金) 04:47:11 ID:ers3awbH
素人です。見よう見真似で勉強中なんですが、よく分からないので教えてください。 A.php と B.php で、 C.php をincludeで読みこんでます。 さらにCはincludeで別のファイルを読みこんでいるのですが、 そのさい、 CがAにincludeされたなら、CはDを読みこみ、 CがBにincludeされたなら、CはEを読みこむ。 という風にしたいのですが、どのような条件分岐させたら良いのでしょうか。
なんか色々と基礎から間違ってるお方がおりますね
defineで定数を設定して、それをチェックすればよくね?
>>600 そこまでファイルを分割する必要がほんとうにあるのか
そのくらい、ふつーにやんねーか?
つまんねー質問だな。 釣りじゃないなら、まずはもっとシンプルな作りで勉強しろ。 コピペで何かが身につくと思ったら、大間違いだぞ。
ヒアドキュメントのなかで $foo とかすると、変数とみなされて展開されてしまいます。 これを抑制するには ¥$foo とすればいいのですが、すごく面倒で困ってます。 テストデータをヒアドキュメントで書いてて、$foo やら $bar やらがたくさんあるので、 これをいちいちエスケープするのがうっとうしいです。 そんなわけで、ヒアドキュメントで $foo をエスケープせずに済む方法または テストデータを簡単に埋め込む方法ありましたら教えてください。
607 :
nobodyさん :2006/06/02(金) 09:34:13 ID:I1GUzSSn
{$foo}
607は違った
クラスに対して、実行時にインスタンスメソッドを追加することはできますか。 リフレクションあたりのマニュアルを読んでみたのですが、既存のクラスやメソッドを調べる機能はあっても 新しいインスタンスメソッドを追加するような機能はなさそうでした。
動的にメソッドを作る理由がわからん
質問者がsageでID隠す理由もわからんな
PHPとMySQLの連携について質問です。 自宅サーバで動作テストをしているのですが、 MySQL内の複数テーブルを指定して表示することは出来るのでしょうか? 1つずつ選択する場合はselect form dbname で表示出来ますが、 複数というのがよくわかりません。。 同様に複数テーブルの指定フィールドを一括で表示するなども出来ましたら コマンドか関数を教えていただければと思います。
>>610 フレームワークを自作してみようと思って、それで設定ファイルから情報を読み取って
メソッドを動的に定義することを考えています。
あと、テスト用のメソッドもテストスクリプトの中で動的に追加したいと考えています。
複数のテーブルを1つのテーブルとして扱えば良さそうだから結合してやれば良いんじゃねーかなー それはさておき、PHP関係ないんじゃないの?
616 :
613 :2006/06/02(金) 11:07:25 ID:???
>>615 すみません、、書き間違いました。。
複数のデータベースです。
・サーバ内のMySQLで作成されているデータベースのすべて表示、
・及びそれらのテーブルから指定フィールドの値を表示
がやりたいと思っています。
>>616 >サーバ内のMySQLで作成されているデータベースのすべて表示
SHOW DATABASES or mysql_list_dbs()
>それらのテーブルから指定フィールドの値を表示
データベースをまたいでの和や結合は出来ないと思う。
配列にでも保存し、PHPで処理するしかないんじゃないかな。
618 :
613 :2006/06/02(金) 11:21:08 ID:???
>>617 ありがとうございます。アイディアが浮かんできました。試してみます。
>>612 sageなかったらsageないでまた叩かれる
マニュアルを読まないからこそ下らねぇ質問になると推測。
しょせん「くだ質」なんだから、スレ違いとかなんとかつまらねぇことをガタガタ言うなよ。 「PHPでシステム組んでるうちに浮かんできた疑問」なら 俺は全て回答するぞ。
625 :
593 :2006/06/02(金) 12:43:20 ID:???
>>599 レスが遅れてしまってすみません。
本当にありがとうございます!今からまた作業に入りたいと思います。
>>624 PHPでシステム組んでたらだんだんと悶々してきてヤりたくなったんだが、
近場で安くて質のいいとこどこかありませんか?
・・・ていう質問がきたらどーすんだよ!とか思ったが、
それはソレで楽しそうでいいかもしれないなw
いや、これはアリだろアリ
>>609 「インスタンス」にメンバ関数追加か。
そういうことをする設計もどうかと思うが、こんな感じにすれば出来る。
class TestClass {
var $methods = array();
function TestClass() {}
function __call($name, $args) {
echo '__call('.var_export($name, true).', '.var_export($args, true).')<br />';
if (!empty($this->methods[$name])) {
call_user_func_array($this->methods[$name], $args);
return true;
}
}
}
if (version_compare(PHP_VERSION, 5.0, '<'))
overload('TestClass');
function add_instance_method(&$obj, $name, $args, $code) {
$obj->methods[$name] = create_function($args, $code);
}
$c =& new TestClass();
add_instance_method($c, 'sum', '$a, $b', 'return $a + $b;');
echo $c->sum(1, 2);
>>623 同意。スクリプト書くときだけにみるんじゃなく、
暇なときにたまにどんな関数があるか見ておくのもオモシロイ。
そこで、ああ、こんな関数があったのか。これは便利。次はつかってみよう。とかなる。
630 :
629 :2006/06/02(金) 13:56:24 ID:???
というわけで早速しつもんだが、 クラスの関数の定義のときに、引数の数を不定にして、たとえば、 MyClass->MyFunc($a, $b); とか、 MyClass->MyFunc($a) とか、って呼び出せるの? Perlであれば、引数自体が自動的に配列扱いになるから、 呼び出す時の引数がいくつあっても、関数内で $_[0], $_[1]と自動的にできるのはわかるけど、 PHPではどうやればいいかよくわからんちんちのとっちみちん
まあここは2chだしな。答えたきゃ答えれ。誘導したけりゃ誘導しれ うんこAA貼り付けたければいやそれは許さん
>>628 どうもありがとうです。
でも「インスタンスにメンバ関数を追加する」んじゃなくて、クラスにインスタンスメソッドを追加するだけです。
この例だと、Javascriptのような感じですよね。あるいはRubyの特異メソッド。
そうじゃなくて、ふつうのメソッドです。
evalだとなんかエラーになっちゃうみたいなんですけど、PHPではあとからメソッドを追加するのはできないんでしょうか。
PHPのメタプログラミングまわりはよくわからないので、すみません。
>>630 最後から固定数の引数のみ省略可能にするなら
function add_values($a, $b, $c = 0, $d = 0) {
return $a + $b + $c + $d;
}
echo add_values(1, 2);
echo add_values(1, 2, 5);
echo add_values(1, 2, 5, 10);
完全な可変個引数の関数にするなら
function myprintf() {
$args = func_get_args();
$format = array_shift($args);
vprintf($format, $args);
}
myprintf('%s is %d years old', 'jane', 22);
634 :
629 :2006/06/02(金) 14:40:15 ID:???
>>633 なるほど、関数宣言の引数に固定値を宣言すればいいんですね。
っていうかけっこう基本的な知識っぽい気がする0TL
下のはどっかでみたような式だ。
635 :
586 :2006/06/02(金) 15:00:35 ID:???
>>588 遅レスすみません。
include ("/home/httpd/vhosts/*****.jp/private/include_inc.php");
こんな感じでprivateに置いたファイルをインクルードしたいのですが出来ません。
ちなみにインクルード元の位置は /home/httpd/vhosts/*****.jp/httpdocs/index.php です。
>>632 ファイルに出力してrequireではだめなの?
Mojaviなんかはそうしてたり。
>>626 隣に座ってる女の子とか、斜め向かいに座ってる女の子を食ったらいいだろうが。
俺はそうして解消してた。
>>636 なんと!そんな方法がありましたか。
・・・と思ったけど、それってクラス定義ごとファイルに出力して読み込むってことですよね。
それならファイルに出力するまでもなく、evalで済んじゃうような。
既存のクラスに対してメソッドを追加しようとして、その定義をファイルに出力して読み込んだ場合、
同じ名前のクラスを再定義することになり、エラーになります。
やっぱり追加はあきらめて、新しいクラスを生成する方向で考えてみます。
>>637 なんと!そんな方法がありましたか。
・・・と思ったけど、隣はおばさん、斜め向はデブスなので食いたくありません
はじめまして。さっそくですが質問です。 配列の添え字に"02"などという文字列を指定した場合、配列の要素が表示されません。 この場合、C言語であれば"02"という文字列を2という数字に直してから、使用しますが、PHPの場合にはそのように文字列の数字を数列に直す関数などはないのでしょうか? 解答をよろしくお願いします。
>>640 $a = "02";
$a += 0;
echo $a;
>>641 おお!!
素晴らしいです!!さっそく試しましたが完璧でした。なんか裏技っぽくて少し感動しました。
ほんとうにありがとうございました。
>>640 C言語がわかるなら、 sprintf があるぞい。
644 :
641 :2006/06/02(金) 16:21:23 ID:???
>>642 実際使うときは、 $MyArray[$a + 0] って感じ。
>>640 $a["02"] = 10;
print_r( $a );
>>638 >>628 をインスタンスごとじゃない物にしてみたよ。
やってて気づいたんだが、PHP4の__callは戻り値返そうとしても
何も返してくれないので、戻り値ありの関数は追加出来ない。
(追加は出来るが、意図しない動作になる)
class TestClass {
function TestClass() {}
function __call($name, $args) {
$method = add_class_method(get_class($this), $name);
if (is_callable($method))
return call_user_func_array($method, $args);
}
}
if (version_compare(PHP_VERSION, 5.0, '<'))
overload('TestClass');
function add_class_method($class, $name, $args = null, $code = null) {
static $__classes = array();
$class = strtolower($class);
if (empty($args))
return $__classes[$class][$name];
$__classes[$class][$name] = create_function($args, $code);
}
add_class_method('TestClass', 'hello', '$name', 'echo "Hello {$name}!";');
$a =& new TestClass();
echo $a->hello('jane');
先ほどはありがとうございました。さらに質問です。 C言語の二次配列のような感じで、 $myArr = ・・・ $$myArr[0] = ・・・ ・ ・ と設定して $$myArr[x][y] というように値を参照しようとしましたが上手くいきませんでした。PHPの場合はこのような使い方は出来ないのでしょうか? 二次配列のような、配列の配列を参照する場合にはどうすればよいのでしょうか?
>>647 普通に、
$myAr[x][y]
と二次元配列が使える
普通に使えたんですか……。 となると、データーを最初から打ち直しに…… $myArr = array(...); $$myArr[0] = array(...); $$myArr[1] = array(...); $$myArr[2] = array(...); ・ ・ ・ と設定してあって、これを二つの添え字を使って参照するのは不可能なんでしょうか? $$myArr[x][y]みたいな感じで。
うーん。おとなしく二次元配列の勉強をしたほうが良さそうですね。 自分の買った参考書には二次元配列のことが一言も書いてありませんでした・・・4000円もしたのに・・・orz
>>653 ありがとうございます。さっそくそこを参考にしながら二次元配列に取り組んでいます。
arrayの中でarrayを呼ぶとは意外でした。
参考書もいいところあるんですけどね。トイレの中で読めるとか・・・。
トイレにノートPCで問題なかろう
>>642 $a = "02";
$a += 0;
でも int にキャスト変換されるけど、もっと正当な方法で、
intval($a) か (int) $a
がいいと思う。
トイレで参考書を読む時間があるとは、
>>654 さん、痔でしょうか。お大事に。
>>656 そんなことしたら、普通の型あり言語みたい…って嫌がる人も多いのでは?
おかげさまで二次元配列が一応出来ました。
動作も一応自分の想定どおりに動いています。
ありがとうございます。
ただ
http://www.php.net/manual/ja/language.types.array.php の下のほうに書いてあるとおり、連想配列(?)の形式で二次元配列を作成したところ、第一項の添え字が文字列でしか応答してくれませんでした。
そのため別に第一項だけの配列を作成して、それを使って呼び出すようにしたのですが、
$fruits = array ( "fruits" => array ( "a" => "orange",
"b" => "banana",
"c" => "apple"
),
"numbers" => array ( 1,
2,
3,
4,
5,
6
),
"holes" => array ( "first",
5 => "second",
"third"
)
);
と設定した配列を、
echo $fruits["holes"][5];
ではなくて、数字で直接に
echo $fruits[0][5];
というふうに呼び出せないのでしょうか?
>>659 意味がわかんね。
$fruits[0][5] にデータ入れればいいだけと違うん?
>>658 $a = "02";
$a += 0;
だと、「$a += 0;」の部分を不要なものとして他人に消される可能性がある。
分かってる人間ならともかく、ぱっと見じゃ不要な処理にしか見えない。
>>656 氏の方が処理の意味が簡潔に分かりやすくて良いと思われる。
>>660 第一項目が数字だとやはり反応しないみたいです。
文字列だと想定どおりに出力してくれるのですが。
>>662 は、VBとかCを少しかじった人なんじゃないかな?
中途半端な知識のせいか、思い込みで凝り固まってしまってる気がする。
まず、PHPの配列は添字が数値だろうと、文字列だろうと全て連想配列になる。
$arr = array();
$arr[0] = 'a';
$arr[5] = 'b';
var_export($arr);
これは↑のようにすれば、簡単に確認出来る。
で、第一項目とか言ってるのは
$arr = array(
'hoge' => 'a', // 最初の要素だから第一項目
'fuga' => 'b', // 2番目だから第二項目
);
のような勘違いをしてるんだろうけど、
PHPの配列は全て連想配列なので、これらを$arr[0]や$arr[1]のように
数値を添字にして表示することは出来ない。
どうしてもやりたいなら、
$ar2 = array_values($arr);
$ar2[0];
のようにするべし。
http://www.php.net/manual/ja/ref.array.php http://www.php.net/manual/ja/function.array-values.php
>>662 こんな感じでもいけそうかな。
$k = array_keys($fruits);
echo $fruits[$k[0]]["a"];
$fruits[$k[0]]["a"] = 'Qoo';
1次元目の添字を$k[0],$k[1]のようにする。
>>663 ありがとうございます。なんとなく分かったような気がします。
phpは数字と文字列がごっちゃになってるので、その辺が混乱してしまいます。
Cよりは便利なのは確かなのですが・・・。
Mac OS X 10.3.9 PHP 4.4.1 mail()関数をリプレイスする、外部サーバを使う関数って無いどすか。 セキュリティ的に、プロバイダのsmtpサーバを使った方がいいと思いまして。
$debug_str に入っている複数行にわたる <html>から</html>を削除したい のですが、以下の正規表現だと全く削除されません。 正しくはどうすればいいのでしょうか? $debug_str = preg_replace("/<html>.*<\/html>/mi", '', $debug_str);
670 :
669 :2006/06/02(金) 20:03:46 ID:???
う、かぶったスマ
>>668 $debug_str = preg_replace("/<html>(?:(?!<\/?html>).)*<\/html>/gi", '', $debug_str);
というのはどうだろう。
>>667 >>669 =670
ありがとう。
$mail_object =& Mail::factory('smtp', $params);
みたいにバックエンドにsmtp指定すればいいのね。多分。
>>668 "."が改行にマッチするのは、オプションsだよ
/<html>.*<\/html>/si
PHPではインスタンス変数にアクセスするのに$this-> をつけないといけないですが、 これが面倒なので、 $a =& $this->array1; のように、ローカル変数に代入してから使うといいのかなと思いつきました。 これってPHP的によいプログラミングといえるでしょうか。
>>675 プログラミング的に最悪
$aを分かりやすい変数名に変えるなら普通
質問です PHPとImageMagickを使って画像をリサイズしたいのですが passthru("$convert -geometry 10 x 10 $image $dst"); これでやってもリサイズできません。 以前はできていたのですが、突然できなくなってしまいました。 よろしくおねがいします。
20060601_ABCDE.log 20060602_ABCDE.log 20060603_ABCDE.log $nowdate = date("Ymd"); $lines = file("$datalog"); 該当ファイル1個をマッチングさせて開きたいんだけど $datalog はどうやって指定すればいいの?
eval は<?php や ?> を取り除いたコードを実行しますが、<?php や ?> があるままのコードを実行する関数はありますか。 一時ファイルに書き出してincludeするしか思いつかないのですが、文字列のまま実行する方法があれば教えて下さい。
あと、tmpfile()で作成したファイルのファイル名を調べることはできますか? それができると、tmpfile()で書き出し→include()で読み込み というのが簡単にできるんですが。
682 :
nobodyさん :2006/06/03(土) 08:03:33 ID:psho47Yz
mySQLとの連携がうまくできないよ。ぽすけて。
具体的には、apache2 php4 mysql4.1 phpmyadmin2.8.1 をwinXPproSP2の環境にインストールして
ローカルでカウンタをまずはmySQLとの連携で作ってみようとしています。
phpは具体的にいじったことはないのですが、basicやC等は少しできる程度です。(計算用途)
参考サイトは
ttp://www.futurism.ws/server/phpMyAdmin/sample001.html これをコピペして設定し、IEで開くとカウンターを更新できませんと出ます。
最初は接続できてないのかと思い、passを無効にしてやると、サーバに接続できませんのエラー。
そこでcounticに書き込みの行を無効にすると、1と表示されるので、この行の書式が間違っているのかと思い
他のサイトや試行錯誤するも変わらず。
次にphpmyadminから数値0を3に書き換えてみたけど、表示されるのは1。
つまり、読み込み自体もたぶんできてないのだと思います。
phpmyadminの使い方や設定方法、mySQLの設定に問題があるのかと思うのですが、全くわかりません。
ちなみにインストールのために参照したサイトは、
ttp://tsuttayo.sytes.net/ です。
と思ったらSELECTも失敗してる? mysql_fetch_arrayの前にmysql_closeしてるけど大丈夫なの? オレはデータ取得するまでDB閉じたことないからわかんね というかこのソース、いちいちDB接続してんのな。効率悪い whileの中で$rowの値をprint_rしたらどうなる?
685 :
nobodyさん :2006/06/03(土) 08:30:18 ID:psho47Yz
>>683 phpmyadminから同じrootで入っていて、データベースの作成&編集が可能だから問題ないと思います。
念のためphpmyadminから特権の確認をしたところ、グローバル特権がすべて設定されており、リソースも0(0で制限がなくなると書いています)
ので大丈夫だと思います。
686 :
nobodyさん :2006/06/03(土) 08:39:45 ID:psho47Yz
Array ( [0] => 3 [countic] => 3 ) カウンターを更新できません となります。 3となっているのはデータベースのcounticを3にしてみたからで、0にしてやり直すと0になっていました。 という事は、はやりアップデートができないということですね・・・。 DBを閉じることは疑問に思ったのですが、とりあえずやってみようということで、やってみてます。
687 :
nobodyさん :2006/06/03(土) 08:47:05 ID:psho47Yz
<?php mysql_connect("localhost","root","**"); mysql_select_db("counter"); $result = mysql_query("select * from counter"); $array = mysql_fetch_array($result); $counter = $array['countic']; $counter++; print $counter; $result = mysql_query("update counter set counter=$counter") or die("update missing"); ?> このような形でやってみましたが、結果は 1update missing やはりupdateができないようです。
>>679 _ABCDE が不変なら、
$datalog = date("Ymd")."_ABCDE.log";
>>687 $array = mysql_fetch_array($result);
で$arrayにはまともな値が入ってきてるの?
>>688 679です。
ごめんなさい、_ABCDEは時間分秒が入るみたいなので不変ではないです。
スカラーに性器表現とかは使えませんか?
>>690 その日付のファイルは一個(時間は不定で)なの?
であれば、正規表現を使うより、
$date = date("Ymd");
strpos か、 (substr($filename[0], 0, len($data) == $data)
の判断を使うといいよ
693 :
692 :2006/06/03(土) 11:59:15 ID:???
なんかめちゃくちゃになったけど、 strposで$dateと同じ文字列が含まれているか調べるか、 substrで先頭から同じ文字数抜き出したのと一致しているかを調べる という方法が、正規表現より早いとおもふ
694 :
679 :2006/06/03(土) 12:13:50 ID:???
>>692 サジェスチョンありがとうございます。
ご教示の関数を勉強してみまっす。
>>687 よく見たらcounterってvarcharじゃん
↓でどうよ?
mysql_query( "update counter set counter=\"$counter\"" );
あと、phpmyadmin使ってるならそこでSQL文打てるから、そっちでテストしてみそ
データベースへの接続パスワードなどを config.inc.php ファイルに まとめて書いてrequireしています。 このconfig.inc.phpを、ネットからアクセスできるところに置いておくのは セキュリティ的に危ないと思うのですが、みなさんはどのように対策しているのでしょうか?
>>696 DocumentRootよりも上におく
698 :
nobodyさん :2006/06/03(土) 15:11:08 ID:psho47Yz
>>689 中身の数字を変えれば変わるという事は、入ってるのでしょうか?
>>695 変えてもだめでした。
SQL文ちょっとわかんないんで調べてテストしたらまた報告します。
>>697 「/」に置いてみたら、読み込めませんでした・・・
>>699 ダレがサーバルートに置けっつった
「ドキュメントルートより"上"」DAYO!!
701 :
nobodyさん :2006/06/03(土) 15:16:51 ID:psho47Yz
UPDATE `counter` SET `countic` = '0' WHERE CONVERT( `countic` USING utf8 ) = '53' LIMIT 1 53→0へphpmyadminから変更しましたが、これはSQL文とはまた違うのでしょうか?
>>701 それSQL文だよ
それ見るとDBはUTF-8みたいだね
今までの流れブッタ切るようで悪いけど、counticをintegerとかにした方がいいと思う
こんにちわ。
http://www.hoge.com に、PHPファイルからアクセスした時、返されるステータスコードを
PHPで取得させたいのですが、どのようにすればよいか教えてください。
宜しくお願いします。
>>701 とりあえずエラーでも表示してみたらどうかね
$result = mysql_query("update counter set counter='$counter'") or die(mysql_error());
>>705 そんなことどうでもいいから回答を答えよう
708 :
nobodyさん :2006/06/03(土) 16:59:45 ID:AI0NcZr1
コマンドラインで実行中に セグメンテーション違反です ってエラーが出るんですが、これはなんでしょうか?
>>708 メモリの読み書きしちゃいけない場所に読み書きしちゃったよってことです。
実行しているスクリプトで無限再帰呼出しとかしてませんか?
713 :
nobodyさん :2006/06/03(土) 17:08:42 ID:psho47Yz
>>704 そういう事できてたんですね・・・。
Unknown column 'counter' in 'field list'
とのエラーです。ちょっと調べてみます。
714 :
707 :2006/06/03(土) 17:11:09 ID:AI0NcZr1
>>709 >>711 なるほど。確かに心当たりあります。
無限ループはしてないですが、数値ですが30000レコード位の配列扱ってました。
プログラム修正します。
どうもありがとうございました。
>>700 すいません。
っていうか、根本的なミスに気づきました。
open_basedirの設定がダメだったようです。
しかもこれを修正するのに難儀しました・・・(VPS環境のため)。
「回答を答えよう」って部分に何かを感じる
自身のスクリプトを表す変数ってなんだったでしょうか?
質問 safe_mode = on にするとimagemagickが使えません。 offにすると使えるのですが、セキュリティ上onにしたいのです。 onにしてimagemagickを使うにはどうしたらいいでしょうか?
721 :
nobodyさん :2006/06/03(土) 19:00:09 ID:psho47Yz
>>713 解決できました。
13行目の代入するフィールドが違っていたようです。
くだらない質問にお付き合いいただいてありがとーです。
>>721 なぁに。下らない質問を書き込むスレだから気にするな
723 :
nobodyさん :2006/06/03(土) 20:56:05 ID:pcQiHytU
さくらインターネットを利用しています。 さくらには、php.ini編集画面というのがあり、 そこは空欄で、なにも書かれていません。 写真画像の投稿ファイルの上限を2MBから5MBへ上げたいのですが、 upload_max_filesize = 5M // の一行だけをその空欄に記入すれば変更出来ますかね?
>>723 ここで聞くのはお門違い。変更できるんだけどさ。
725 :
nobodyさん :2006/06/03(土) 21:18:33 ID:pcQiHytU
さくら板でも板違いと言われて来ました。 このタグイの質問板はないのですかね?
727 :
724 :2006/06/03(土) 21:34:07 ID:???
おれが借りてる桜は5Mだった 3Mにしてみてphpinfo()で確認したから変更されると思う。 (鯖によるかもしれないが) てか、最初にさくらに聞くべきと思う。
728 :
nobodyさん :2006/06/03(土) 23:22:45 ID:ZQdIlxtX
PHPの内部でコマンドを実行した時のエラー出力を取得することはできますか?
>>728 $output = `ls -al`;
こんな感じかなあ。
取りあえず出力は持ってこれるよ。
多次元連想配列で先頭のkeyが保持するvalueの数順に並べ替える関数てありましたでしょうか? 例) $hoge['a'][] = "1"; $hoge['a'][] = "2"; $hoge['a'][] = "3"; $hoge['b'][] = "1"; $hoge['b'][] = "2"; この場合$hogeで[b]の配列を先頭に来るように並び替えたい。
731 :
nobodyさん :2006/06/03(土) 23:59:13 ID:ZQdIlxtX
open_basedir = /home/*/public_html と設定したいのですができません。 /home/にするしかないのでしょうか?
>>731 標準エラーを標準出力にリダイレクトしてみたら?
proc_open()ならデスクリプタを区別して取得できるよ。
734 :
nobodyさん :2006/06/04(日) 00:11:15 ID:GKXODwlN
>>728 あ、エラー出力かー。
じゃぁpopen()も駄目かなあ。
力になれなくてスマン。
736 :
728 :2006/06/04(日) 00:21:52 ID:???
質問です。 phpinfo();で出力される 1.System 2.Build Date 3.Configure Command この3つ、もしくはこれら一覧がのってる関連の項目を表示させないことってできますか?
タブ文字を展開してくれる関数はありませんか。
740 :
nobodyさん :2006/06/04(日) 01:18:18 ID:GKXODwlN
下らない質問スレなんだから、
>>596 みたいな教える気のないやつはこなくていいよなw
説教してストレス発散したいだけなら、よそにいけっつーの。
>>730 asortでできるくさい。
うまくいかないようならuasortで比較部分を自作かな。
>>738 str_replaceで置き換えるしかなさそう。
744 :
728 :2006/06/04(日) 02:37:25 ID:aEL54rVy
>>736 はなんか別の人です
proc_open()で標準エラー出力とれました。
popen()のリダイレクトでもさっきはなぜかできなかったのですが、
できるようになりました。
>>740 >>741 が言っている「フォルダとディレクトリは基本的に同じ意味」ていうの、
あくまで"基本的に"だからな。
実際は似て非なるものだが、ほぼ同義として扱われているだけ。
GUI上でのディレクトリアイコン名=フォルダ
>>737 何がしたいのかいまいち分からんが。
ob_start();
phpinfo();
$info = ob_get_contents();
ob_end_clean();
// $infoの内容を編集
echo $info;
/home/user/public_html/ レンタルサーバーです。 いつもこのpublic_htmlの中で色々やってるのですが、 /home/user/log/ にPHPでアクセスすることは可能ですか? 直接ブラウザでlogにアクセスするんじゃなくて、 内部的にPHPを通じてデータを引き出すのは可能か、ということです。
可能です
アクセス権限があれば可能、なければ不可能
>>743 どうもありがとう。タブ文字を空白に展開する関数はないということなので、
自分で作ってみました。PHPならこんな関数あってもよさそうですけどね。
function expand_tabchars($str, $width=8) {
$splitted = preg_split('/¥t/', $str);
$last = array_pop($splitted);
$buf = array();
foreach ($splitted as $s) {
$buf[] = $s;
if (($rindex = strrpos($s, "¥n")) !== false)
$column = strlen($s) - $rindex - 1;
else
$column = strlen($s);
$n = $width - ($column % $width);
$buf[] = str_repeat(' ', $n);
}
$buf[] = $last;
return join($buf);
}
ひまな人がいたら添削おねがいします。
>>752 添削してもらうより先に自分で実行してみりゃいいじゃん
これじゃいかんの? "\t"でexplodeできるか知らんけど
$space = str_repeat( ' ', $width );
implode( $space, explode( "\t", $string ) );
>>752 return join($buf);
はエラーになると思うんだけど、動かしてみた?
755 :
nobodyさん :2006/06/04(日) 13:30:58 ID:UMSweBV1
// エラーチェック if (条件式) { $err_msg[0] = "パスワードが正しくありません"; } elseif (条件式) { $err_msg[1] = "ファイルがありません"; } else { // 何にもエラーが無いなら処理をする } if ($err_msg) { $int = count ($err_msg); for ($i=0;$i<$int;$i++) { echo "エラー:" . $err_msg[$i] . "<br />\n"; } } これだと、エラーが二個あった場合、最初の$err_msg[0]に文字列が代入されると 次の$err_msg[1]に文字列が代入されません。 ですから配列の中身はいつも1個しかないのです・・・。 何か良い方法はありませんでしょうか? 宜しくお願いします。
$err_msg = array(); if (条件式) { ? ? ? $err_msg[0] = "パスワードが正しくありません"; } if (条件式) { ? ? ? $err_msg[1] = "ファイルがありません"; } if ( count( $err_msg ) ) { ? ? ? $int = count ($err_msg); ? ? ? for ($i=0;$i<$int;$i++) { ? ? ? ? ?echo "エラー:" . $err_msg[$i] . "<br />\n"; ? ? ? } } else { //何にもエラーが無いなら処理をする }
む。 まんまコピペしたら?になったorz ?は空白(タブ)ね。
その前に、何故 elseif を使っているのか教えてくれない?
760 :
nobodyさん :2006/06/04(日) 14:08:29 ID:GTou7SdE
鯖を入れ替えるついでにPHP4で書いたスクリプトもPHP5用に書き換えようと 思ってるんだけど、PHP5って将来主流になるの? スクリプトの機能的にはPHP5である必要は全くないんだけど、PHP4が かつてのPHP3みたいに順調にフェードアウトしていくことが確定してるんなら 今のうちにPHP5に移行しようかなと
>>755 ついでだけど、そういうやり方するなら
$err_msg[] = "パスワードが正しくありません";
とか
$err_msg[] = "ファイルがありません";
の方がいいぞ。エラーコードとかも合った方がいいけど。
762 :
730 :2006/06/04(日) 14:17:27 ID:???
レスdクス。 てことはやっぱり多次元配列の並び替えを想定した関数は無いってことですね。 もしかしたらphpならと思いましたがそこまでは無いようですね。 では自分で比較用のルーチンでも組んでみます。
>>760 気にしなくていいよ。
君の書くレベルならPHP4でも5でも内容変わらないだろうし
変数が数値か文字列か判別する方法を教えてください
is_numeric is_string
is_Baka
function fool( $bar ) { if( is_Baka( $bar ) ) { echo "わたしゃ神様だよ"; } else { echo "それは私のおいなりさんだ"; } }
なんか凄くわかりやすい煽り方してる奴がいるな。
is_null($atama)
>>762 多次元配列の並び替えだけならarray_multisortで色々できるけど、
ソートって普通「格納されている値を元に並び替え」なので、
そういう「項目数の大小で並び替え」っていう構造解析的なのは
想定外の発想だと思うよ。
なので、手順的には
1.各キーの保持する項目数を新しい要素に格納する
2.その要素をソートキーにしてarray_multisort
ってすれば可能じゃないかと思う。
772 :
755 :2006/06/04(日) 16:47:47 ID:UMSweBV1
>>756 ,758
なるほど。
elseifを使っていました...orz。勉強になります!V
>>759 コーディングの勉強をしていたのですが、「10日で覚える PHP5入門教室」(山田よしひろ著)という本を参考にしました。
やっぱりマズイでしたかね?
他人のスクリプトのソースでも見て勉強してみます。
>>772 別にその本を見るのは悪いことじゃないよ
その本の内容を理解せずにそのままコピペするのは悪いことだが。
他人のスクリプト見ても理解しなかったら同じ事
774 :
755 :2006/06/04(日) 17:13:40 ID:UMSweBV1
どうやらうまくいったようです。
>>773 いや、コピペしたのではなく、エラーチェックの部分だけを参考にしたんです。
そしたらelseifだったんですね。
まあその本に書いてあったスクリプトは、二つエラーがあっても一つしか表示されない。
そこで私はforで回して表示させようとチャレンジしたわけです。
と、そこで間違ってしまったので…。
最後までアドバイスありがとうございました。
>>752 動作もアルゴリズムもいい感じ。
どこかで使わせていただくかもです。
UTF-8の全角文字が絡むと狂うけど、それは仕方ないかな。
こうしてみよう。と思うのはいい心がけだと思う。
>>753 それだと、
a[TAB]e
ab[TAB]e
abc[TAB]e
abcd[TAB]e
がダメだと思う。単なるインデントとしてTABを使うなら問題ないけど
前からずっと気になっていた質問なんですけど 画像を表示させたいんですけど、複数の画像を合わせて 表示というのはできますか?(下手な質問ですみません) たとえば、アバターのように、服装に合わせてアバターを表示させたり 9x9のマスがあって、変数の状態によってそのマスの色を変えるとか。 どなたかよければ教えてください。
779 :
778 :2006/06/04(日) 19:06:37 ID:???
続きです。 携帯用のサイトで表示させたいです。
>>778 画像が用意されているんならやろうと思えばやれるんじゃない?
服の指定をPHPが受けて、画像ファイルを取ってきてCSSとかで表示。
こういう感じじゃないか?
phpのgd関数でも頑張ればできるし、ImagaMagickのような外部プログラムを使ってもできる。 さらに言うと透過を扱える画像形式を使えばhtmlのレベルで重ね合わせる事もできるし、 全ての組み合わせパターンのものを作っておけば悩む必要すらないよ。
あ、携帯はCSS使い得ないか。 まぁ、デザインははPHP関係ないだろうからそれなりの手段を使うって事で。
783 :
778 :2006/06/04(日) 19:12:46 ID:???
>>780 というと、
全てのパターンの画像を用意ということでしょうか?
784 :
778 :2006/06/04(日) 19:17:54 ID:???
何百とパターンがあるとさすがに大変ですね。 ほかのスレで聞いてみます。
>>752 >添削してもらうより先に自分で実行してみりゃいいじゃん
実行してうまく動くことを確認してますよ。実行してないなんてひとことも書いてないんだけど。
>$space = str_repeat( ' ', $width );
>implode( $space, explode( "¥t", $string ) );
これだと、タブ文字をすべて同じ数の空白に置き換えますよね。でもここでやろうとしているのは、置き換える空白の数をカラム位置によって変えて8桁揃えにすることなので、これだとだめですね。
でもタブ文字でsplitするならpreg_replace()よりexplode()のほうがよさそうですね。どうもありがとう。
>>754 >return join($buf);
>はエラーになると思うんだけど、動かしてみた?
手元では問題なく動いてるんだけど。当方PHP5.1.2。もしかしてPHP4だと動かないとか?
>>763 >きったねーソース
そうだね。できれば改善案を教えてくれると助かる。
>>785 注意: PHP 4.3.0 以降、implode() の glue パラメータはオプションとなり、デフォルトは空文字 ('') です。
これは implode() の好ましい使用法ではありません。
下位互換性のため、常に 2 つのパラメータを使用することが推奨されいます。
implode は join な
>>786 正確にはjoinがimplodeのエイリアスなんだがな。
PHP5.0.3です。 $temp="$foo=$bar;"; といったようにコードが入った変数があるとして、 このコード($foo=$bar)を実行するには何か方法がありますか?
ありゃ?今LinuxにPHPインストールしたんだけど、 viでソース書いても関数とかの色が変わらないや(´・ω・`)
mysqlにバイナリで保存した画像をphpから出力するhtml上でファイルではなくそのまま表示することはできませんか? httpの原理的に普通のhtmlだけだと無理な気がしますが。 DB+phpで画像を扱う場合一般的にはファイルパスだけをDBに入れてファイルは普通の方法で保存するのでしょうか?
<img src="〜.php">
あ、 img src="./image.php?img_id=100"という方法はわかります。 でも、これだとリクエストでphpが毎回動くので表示数が多いとキツイかと思いまして。
mysqlに格納したバイナリをphpを介さずに取り出したいってか
>>796 そんなことができるのでしょうか?
できるならそれが一番いいんですが。
逆立ちしながら匍匐前進
>>797 cronjobで一定時間ごとか、DBへの書き込みをトリガーにして更新された画像を
ファイルシステムに書き出すとかすればいいけど、だったらなんでDBに画像を入れるのって
話になるわなぁ。
>>799 やはり色々回りくどい処理になってしまいますか・・。
DBには画像の情報を保存しておいて画像自体は普通に置いておくのが一番効率が良さそうですね。
それでやってみます。
ありがとうございました。
801 :
nobodyさん :2006/06/05(月) 00:06:27 ID:gDfHus2z
Windows XP SP2、Apache/1.3.34、PHP/4.4.2なのですが、fopenでURLが開けません。
以下のスクリプトだけでも、何の応答もありませし、@をとっても、何のエラーも表示されません。
allow_url_fopenはOnになっていますし、アクセス先(例ならwww.example.com)のアクセスログには記録されています。
Firewallは切ってあります。
どのような理由が考えられるか、教えていただけませんか?
<?php
$fp = @fopen('
http://www.example.com/ ', 'r');//URLは変更してあります。
echo 'a';
>>801 俺はXPでコマンドプロンプト上で動かしたんだけど上手く言ったぞ
何をもってURLがオープンできてないと思ったんだ?
そもそもそのecho ('a')はなんだ?
803 :
nobodyさん :2006/06/05(月) 00:20:20 ID:9HSZ1/yM
ここだから書き込める。 一行掲示板を自作したいんだけど、 テキストBOXに書き込ませる。 ↓ ボタンを押す ↓(ここがわからん) 変数としてテキストを取り込む ↓ それをデータベースなりテキストなりにインサート ここまでを取り合えず理解したい。 一行掲示板に限らずこの辺の事詳しく書いてるサイトねーかな? (一行掲示板 PHP mySQL)でぐぐってみたけどいいとこないんだわ。
804 :
801 :2006/06/05(月) 00:26:58 ID:???
>>802 ありがとうございます。
echo 'a'は、とりあえず何か表示させるためです。
でも何も表示されず、503とかのエラーすら返ってきません。
Apacheのエラーログにも残ってません。
以前はfopen出来たのですが、OS再インストールして環境作り直したら駄目になりました(T-T)
>>805 さっそくありまとう。
なんかおいらの疑問が解消されそう。
でも最後の1行の意味がよくわかんないんだけど。
807 :
801 :2006/06/05(月) 00:47:51 ID:???
>>805 はい、表示されます。
echo 'a';flush();
$fp = fopen('
http://www.example.com/ ', 'r');
echo 'b';
のようにすると、
HTTP/1.1 200 OK
Date: Sun, 04 Jun 2006 15:46:41 GMT
Server: Apache/1.3.34 (Win32) PHP/4.4.2
X-Powered-By: PHP/4.4.2
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html
1
a
となり、最後の0が来ないまま終了します。
基本的には、フォームのタイプで使うphpを指定して、そのフォームからアクションが実行されれば、 指定したphpが実行されると。そういう事でぃすか? 最初に見た掲示板のソースでinput使ってて、よくわかんなかったけど、こっちならわかりそう。
すんごいごめん。
>>804 へのレスを俺のだと勘違いしてたYO!
>>806 最後の一行って?
>>807 おかしいなぁ〜。俺も今ちゃんとローカル上(Apache)で試したんだけど
ちゃんと取れたぞ?
ちょっと取得先のURL変えてみたら?
811 :
801 :2006/06/05(月) 01:03:43 ID:???
>>810 別のURLでも駄目です。
fsockopen使う方法ではうまくいきました。
しかしXOOPSのテスト環境なので、スクリプトを修正するのは骨が折れるので
PHPのバージョンを変えて試してみます。
812 :
801 :2006/06/05(月) 01:14:40 ID:???
まさにくだ質なんですが、iTunesなどで 音楽情報をデータベースから読み込んで表示しますよね? あれと同じようにPHPでもデータベースにアクセスして 検索キーか何かから音楽情報を出力する事って出来るのでしょうか? PHPでamazonの商品を検索して表示出来るので、その仕組みと同じではないか と思っているのですが、いかがでしょうか?
>>813 できる。
そういった情報を提供するサービスも存在する。
816 :
813 :2006/06/05(月) 01:54:18 ID:???
>>814-815 おお!なんか凄いですよ。しかもpearにあるとは。。
どこか日本語で説明しているサイトってないですかね?
PHPで16進法数字を10進法に変える関数もしくはテクってありますでしょうか??
追記 その4 (3月9日).
「別ドメインのファイルを読めない」をなんとか解決することが、今回の課題ク
リアの最大のポイントかもしれない。
JavaScriptでは到底ムリのようで、もしかしたらPHPなら可能かもとPHPの本を見
てみると……。HTTPで読み込み可能らしい。簡単なサンプルを作ってみたら、あ
っさり読み込んでくれた。それじゃこれを組み込めばと考えてみるが、Ajaxを使
う必要がなくなってしまうことに気がつく。
いやいや、ここはどうしてもAjaxでなんとかしたい。
PHPなら他のサーバのファイルが読めるでしょ……………
あっ、なーんだそういうことか。
ということで作ったのがこれです。
http://sakipapa.sakura.ne.jp/rss-sample0p.html
動かなかった「rss-sample0.html」との違いはここです。
<button onclick="rssReader('./rss-sample0.php?u=
http://rss.rssad.jp/rss/ nifty/manabe')">眞鍋かをりのココだけの話</button>
「rss-sample0.php」と「rss-sample0p.html」は同一のサーバにあるので「rss-
sample0p.html」から「rss-sample0.php」をファイルとして読み込むことは可能。
「rss-sample0.php」はスクリプトだからその実行結果が「rss -sample0p.html」
へ受け渡されることになる。
このような“力技”は「別のサーバのファイルの中身を表示したい!」と同じです
ね。もう少し早く気がつけば良かった。
821 :
nobodyさん :2006/06/05(月) 04:41:27 ID:b18GC8fy
最先端の技術を使っているエンジニアは、その技術をドコから習得するんでしょうか? まさか書店の解説本なんて訳ないですよね?
822 :
803 :2006/06/05(月) 05:06:03 ID:???
>>805 フォームから、データベースに残すのはできた。
サンクス
次は、これをそのままのページに表示させたいんだけど、どういう構造にしていいかがいまいちわからん。
一番新しいのを上にどんどん乗せてくにはどうしたらいいか教えてくり。
>>821 産地直入。
作ってる所(組織)、作ってる人、作ってる人が屯ってる所、
むしろ自分も生産者のひとりになるとか。
# 自分の見込んだ生産物を消費者に供給する人も重要
824 :
803 :2006/06/05(月) 05:09:01 ID:???
今んとこ、フォームページからサブミット押すと、phpファイルに飛んじゃうから、こっからまたフォームページをリロードさせて、 そのフォームページの下に表示させるようphpを組めばおk?
>>821 Web及び書店
仕事で使ってんならPHPならPHPでカンファレンスがある(米国だったりするけど)
Googleのカンファレンスにも行ったしMicrosoftのカンファレンスにも行ったことがあるよ
ただ、カンファレンスと銘打った単なる商品の宣伝もあるので注意だな
「rss-sample0.php」は次のようになります。(たったこれだけです) <?php $filename = $_GET['u']; $array = file($filename); $filenaiyou = join("",$array); echo $filenaiyou; ?> 「Ajax + PHP」でRSSリーダーを作る はこれにて完了
ファイルの中から、特定の文字列を含む最初の行を調べる高速な方法を教えてください
>>828 strpos(), mb_strpos()
マニュアル
ttp://www.php.net/manual/ja/ いかにもそういう関数が書かれていそうな「Strings(文字列関数)」ってのがある。
実際に中を見てみるとファイルから直接探すのは無さそう。
ってことは、ファイルの中身(全部あるいは一部分ずつ)を一度読み出してから検索すればよさそうだ。
あらためて見てみると「ファイルシステム関数」ってのがある
fgetsで読み込む際に、改行を読み込まないようにするにはどうしたらよいのでしょうか?
>>832 無理
普通は読み込んでからrtrimかchopする
834 :
nobodyさん :2006/06/05(月) 15:09:00 ID:ovUjrMmN
is_callable() の syntax_only はどういう意味ですか? trueの時とfalseの時の動作の違いがよくわかりません。
syntax_only が TRUE の場合、この関数は 単に var が関数またはメソッドであるかどうか だけを調べます。
837 :
nobodyさん :2006/06/05(月) 16:02:12 ID:ovUjrMmN
>>835 , 836
どもども、いやその意味と違いがよくわからず・・・
あ、呼び出し可能かどうかは調べないということですかね。
primary key でインデックスつけたのを大きい順にデータを取得するにはどうやればいいですか?
>>839 すみません。
mySQLでインデックスつけたデータです。
全権取得後ソートするしかないですか?
web用途なんですけど。 ダメですか。
>>842 オレは構わないけど、適切な回答が得られるかどうかしらない。
MySQLは知らないけど、DESCじゃダメなの?
ファイルのx行目から読み込みってできますか?
>>845 改行の位置がわからんからいきなり行の指定はできない
fileとかで読み込んでするしかないね
DBがいいと思う
>>846 なるほど。分かりやすかったです。
ありがと
>847
バラバラっす
SQL挑戦してみよっかな
849 :
nobodyさん :2006/06/05(月) 20:07:37 ID:qfd9QG5u
質問させてください。 認証というか、いわゆるログイン/ログアウトの仕組みをつくりたいのですが、 1.ID/PASS2項目のログインフォームを作る 2.submitしたら、ユーザーテーブルにつないで、POSTされたID/PASSが存在するかチェックする 3.合致するレコードがあったら、ようこそhogehogeさん!とかやる 4.その後はsession_start()をやる 5.セッションクローズしたらログアウト こんな流れでいいんでしょうか? ユーザーテーブルの管理は管理者が手動で行うものとします。 とりあえずセキュリティ的なものは最低限にとどめるものとします。 なにか足りないものとかありますか?
とりあえづ作ってみたらいいじゃん 注意することは↓くらい? ・session_startは始めにやっとけ ・POSTされたデータをそのままDBに渡すな
なんで人に聞く前に自分で試さないかな? そっちの方が早くね?
852 :
849 :2006/06/05(月) 20:22:29 ID:qfd9QG5u
>850 れすありがとうございます。 POSTされたデータをそのままDBに渡さないというのはどういうことを指すのでしょうか? いまとりあえず考えたのは usernameとpasswordをPOSTして、 その値でwhere username = $_POST['username'] and password = $=POST['password'] みたいなクエリをつくってごにょごにょしようと思ったのですが、 これはまずいですかね?
853 :
849 :2006/06/05(月) 20:26:11 ID:qfd9QG5u
>851 そうですよね。 認証の仕組みについて、なにも資料を持っていないので、 想像でこんな感じなのかなと思ったのですが、 そもそもそんなプロセスじゃダメだ!と言われるかなと思い、 聞いてみました。 とりあえず書き始めます。 ありがとうございます。
854 :
nobodyさん :2006/06/05(月) 20:38:28 ID:ycACK6dg
初心者です、すみません。 MySQLにnam、age、hed、bst、wst、hip、fotというレコードがあります。 これをfputs()でnam[0],age[0],bst[0],wst[0],hip[0]\n nam[1],age[1],bst[1],wst[1],〜[EOF] というcsvファイルに落としたいです。 hedとfotはいりません。 よろしくお願いします。
>>854 丸投げは専用のスレにて承ります。
宜しくお願い致します。
ここはクダ質
>>854 うわ、ひでぇ文章だな。何となく理解できるが、それ読んでも意味わからない奴たくさんいると思うぞ。
国語勉強しないと駄目だな。
860 :
nobodyさん :2006/06/05(月) 21:20:32 ID:/Q4wZYeJ
trim()について、PHPマニュアルを読んだのですが… > charlistパラメータにより、削除する 文字を指定することも可能です。 > 削除したい全ての文字をリストに してください。 > ..を文字の範囲を指定する際に 使用可能です。 "\n" と "\r" を削除したいのですが、具体的にはどうリストにすればよいのでしょうか? 区切り文字は必要なく、普通に: trim ($var, "\n\r") と書いてしまえばよいのでしょうか?
861 :
849 :2006/06/05(月) 21:36:40 ID:qfd9QG5u
>858,859 レスどうもです。いまスクリプト書いています。 XSS脆弱性については勉強が追いついてないです。POSTのデータは サニタイズ(でいいのかな?)して、タグの除去等は行うつもりです。 passwordの値もmd5()の文字列にしようと思っています。 他になにかありますか? 実はPEARのAuthはカンタンでイイ!みたいな話を小耳に挟み、 サンプルコードなど書いてみたのですが、 なんとなく時期尚早というか、オーソドックスなやり方を知っといたほうが いいと思ってやめときました。 やはりPEAR::Authはオススメなのでしょうか?
>>860 それでやってみたところ、何か問題が起こったのか?
864 :
849 :2006/06/05(月) 22:51:24 ID:qfd9QG5u
>863 どうもです。SQLインジェクションですか。対応しないとまずいですね。 以下のスクリプトはセキュリティ的なものは無視するとして、基本はコレでいいですかね? //dbに接続したとして $name = $_POST['username']; $pass = md5($_POST['password']); $sql = "select * from usertbl where username = '$name' and password = '$pass'"; $rst = mysql_query($sql, $con); $col = mysql_fetch_array($rst); $name = $col['username']; if (strlen($name)) { echo "ようこそ".$name."さん"; } else { echo "そんな人いません"; } 添削お願いいたします。
>>864 動かして見ればいいだろ。
セキュリティ的には確かに0点どころかマイナスだな。
866 :
849 :2006/06/05(月) 23:00:27 ID:qfd9QG5u
>865 早速レスありがとうございます。 一応意図した通りに、登録されてる場合は名前が出るし、登録されてない人は、 いないといわれます。 セキュリティ的なものはあとでhtmlspecialcharとかしようと思ったのですが、それでもマイナスでしょうか....。 どのへんが致命的にイクナイ!ですかね?
>>886 アドスラに気を配るのと、
シングルクォートもどうにかする。
username = '' or username is not null and password = '$pass';
みたいになる。
is not null じゃあれなので、 username = '' or username != '' $nameに、 ' or username != ' みたいな感じで入れられるのを想定する
pear.php.net -- 落ちてないか? つながんねーYo!
MySQLに入っているデーターを配列に入れる関数ってありますか? 小5なんで分かりやすく教えてくれると嬉しいデス
うまく検索出来なかったので、質問します。 正規表現をしたい箇所で[0-9A-Za-z]に記載して半角英数字は表示されるのですが、 - を表示させたい場合、どのように書けばいいのでしょうか?
\
©
>>873 ブランケット内の最後に書けばよろし。
[0-9A-Za-z-]
879 :
849 :2006/06/06(火) 00:32:55 ID:KDLdvTgn
>867,868 ありがとうございます。 確かに危険ですね。 セキュリティ対策も同時進行で勉強するようにします。 phpセキュリティのオライリー本なども出てたので。
880 :
873 :2006/06/06(火) 00:37:28 ID:???
881 :
nobodyさん :2006/06/06(火) 01:25:50 ID:P9qxVQD6
ある掲示板スクリプトを使用中で、そのスクリプトは投稿者のIPを記録しない。 記事とその記事の投稿者IPが対で分かるには、どう書けばいいですか。 下のものでは不可能でした。 <?php $logfile = "./.abc"; $u1 = date("Y/n/j D H:i:s",time()) . "," . $HTTP_SERVER_VARS["HTTP_USER_AGENT"] . "," . $HTTP_SERVER_VARS["SERVER_NAME"] . "," . $HTTP_SERVER_VARS["GATEWAY_INTERFACE"] . "," . $HTTP_SERVER_VARS["QUERY_STRING"] . "," . $HTTP_SERVER_VARS["REMOTE_ADDR"] . "," . $HTTP_SERVER_VARS["REMOTE_HOST"] . "," . $HTTP_SERVER_VARS["CONTENT_LENGTH"] . "," . $times = time(); $postip = $_SERVER['REMOTE_ADDR']; $new_msg = "$name\t$wburl\t$com\t$times\t\t\t$postip\n"; $HTTP_SERVER_VARS["HTTP_REFERER"] . "\n"; $fp = fopen($logfile, "a"); flock($fp,2); fwrite($fp,$u1); flock($fp,3); fclose($fp); ?> をrequire。
getenv("REMOTE_ADDR");
require
.abcのパーミッション
(´-`).。oO($new_msgとかその直下の行って何のためにあるんだろう・・・)
本と他所のPHPプログラムを見ながらオリジナルの物を組んでいるのですが if(!$name||ereg("^( | )*$",$name)) error("名前が書き込まれていません"); これの意味が分かりません $nameが記入されているかどうかを調べる処理というのは分かるんですが それぞれの文字列にどういう意味があるのか分かりません 検索しようにも記号ばかりなのでぜんぜん引っかかりません・・・ どうかご教授お願いします
>>881 ,886
そんな腐ったプログラムは窓から投げ捨てろ
>>886 オマエはifも分からないと言うのか
マニュアル嫁
ご教授ではなく「ご教示」 見よう見まね?
PHP5では例外がサポートされてるけどfinallyがサポートされてません。 例えば次のようなtry-catchがあったとして try { ...throwする可能性のある処理... } catch (MyException $ex) { ...catch処理... } finallyと同じことをしようとすると、今は次のようにしています。 try { ...throwする可能性のある処理... ...後始末... } catch (Exception $ex) { ...後始末... if ($ex instanceof MyException) { ...catch処理... } else { throw $ex; } } いくらなんでもこれはださいので、もっとスマートに書けないかと考えているのですがいい考えがありません。 みなさん、finally処理はどうやってますか?
892 :
nobodyさん :2006/06/06(火) 14:55:13 ID:19d/3eWN
PHPというか数学的な質問なんですが、 変数$aの数値が2の何乗かどうか調べたいのですが、そのような関数も見つからなかったので、自作しようかと思うんですが、どうすればスマートですかね? 例えば $a=2の時は1 $a=8の時は3 $a=5の時は2余り1 としたいです。 考えたのは2*$iを繰り返しながら比較していくものですが、他に手はありませんかね?
893 :
nobodyさん :2006/06/06(火) 14:59:32 ID:ZfYvkt9o
log(底が2)をとった結果が整数ならいいのでは?
894 :
nobodyさん :2006/06/06(火) 15:01:53 ID:ZfYvkt9o
勘違い。読み間違えた。 log(底が2)をとればいいのでは?余りの表現も簡単にできそう。
>892 intval(log($num, 2))
ファイル名(文字列)から拡張子を取り除く関数ってありませんでしたっけ?
>>896 だからマニュアルを・・・
拡張子分かってるならbasename
分かってないならpathinfoも参照
>>897 ありがとうございます。
マニュアルは検索かけたんですけど、うまくひっかからなかったもので。
どっかに05/27/2006のphp_manual_ja.chmの文字化け解消されたヤツ落ちてませんか?
901 :
892 :2006/06/06(火) 16:16:26 ID:19d/3eWN
>>893-895 うほ、レス早いですね。ありがとうございます、期待通りできましたしコードがすっきりしました!
精進いたします。
902 :
nobodyさん :2006/06/06(火) 19:04:40 ID:W8TvM/A+
mysql が入ってるレンタル鯖で <? $dbh = mysql_connect('localhost', 'ユーザ名', 'パスワード') or die("Unable to connect to MySQL"); print("Connected to MySQL<br>");; mysql_close($dbh); ?> ってやったんですけど、HTTP200しか返ってきません(中身のまったくないtext/htmlだけ)。 db接続失敗したなら "Unable to connect to MySQL" って出てほしいんですが。。。 ログを見る権限もないのでどうすればいいのかわかりません。 どなたか教えてください。
903 :
902 :2006/06/06(火) 19:05:58 ID:???
もちろん 'ユーザ名', 'パスワード' は実際のもので動かしています。
テキストログ(log.txt)に一行ずつデータが入っているとします。 どのくらいの行が入っているか調べる方法ってありますでしょうか? (もしくは現在○行目など) リファレンス等見たのですが、適当な関数が無く、どうしたらいいかと思ってます
改行コードでも探してみてはいかがでしょう。
>>902 1行目に無意味にechoでも追加してみて,
それが表示されないようならデータベース以外に問題がある。
という切り分けはやったかい?
>>904 $lines = @file('log.txt');
echo count($lines);
909 :
nobodyさん :2006/06/06(火) 20:38:54 ID:Jdx8zpwk
オークションなどで指定の時間に達したら管理者にメールを送信する 仕組みがありますが、あれってPHP側と言うより、サーバ側ですよね? Cronで処理しているような。 PHPで同様の仕組みって可能なのでしょうか?
>>909 CLI版のPHPで作られたcronのクローンがあるぞ。
912 :
nobodyさん :2006/06/06(火) 21:47:47 ID:q0hn4TST
$var = "ふんにゃかふんにゃか らんらんらん♪ どーでもいいでーすよ..."; 正規表現についての質問になってしまうと思うのですが、これを: <p>ふんにゃかふんにゃからんらんらん♪</p> <p>どーでもいいーですよ...</p> のようにpタグで括りたいと思っています。 私の考えた正規表現では、普通に改行しただけでpタグに括られてしまいます... これを *空行* がある行をマッチさせるにはどういう表現を使えばよいのでしょうか? よろしくです。
^$
DoCoMo携帯の、端末番号で投稿OK、NGを判定したいんですがどのような方法があるでしょうか? また皆さんはどんな方法でやったますか?
端末番号ゲッチュ ↓ 自分の好きな番号と照らし合わせる ↓ 投稿出来るか否か判断。
>>891 レスありがとうございます
eregの意味は分かっていましたが
色々と調べていったところ「メタ文字」について分かっていなかったようです
分かりづらい質問ですんませんでした
>>915 質問下手でしたわ
端末IDが送られているか、いないかをはんていしたいということです
918 :
nobodyさん :2006/06/07(水) 00:02:26 ID:5StxHtuD
OS等に左右されにくいPHPの勉強をしてみようと思っているのですが PHPにもやはりできることとできないことがあると思うのですが 下記のようなプログラムをPHPで書くことは可能でしょうか? 碁盤の目を表示させ キーボードの↑↓等で 碁盤の中の升目をカーソルが移動する 移動している際、今どこの位置にいる(縦x、横y)か常に画面上に表示する □□□縦2 □■□横2 □□□ 下を押すと □□□縦3 □□□横2 □■□ このようなプログラムを書いてみたいと思っております もし可能であってもやはり移動するごとに画面のロードのためサーバと通信しないといけないようになってしまうのでしょうか?
>>917 if(isset($_REQUEST['utn']))
>>918 それはPHPじゃ無理だろうな
Javaとかじゃないと無理だと思う。
しかもサーバ通信をその都度したくないのならJavaScript(ajax)
まぁ、ajaxでもその都度サーバとアクセスするんだけどね。ただ、ページ全体のリロードはかからない。
メモ帳じゃ文字化けするようなのでPHPエディタを使おうと思い、 PHPファイルを開くときはこのエディタを使うよう指定したんですが、 PHPファイルをダブルクリックしてPHPエディタが起動しても 何も書かれてない白紙状態なんですが・・・。どうしたもんだろ・・・
>>918 クライアント側はFlashに任せるしかないんでないの。
phpで書かれたうpろだのスクリプト集とかありますかね? 今のところレッツPHPくらいしか見つからない・・・
>>918 その程度なら、JavaScriptでやるのが簡単だ
>>923 HotScripts行って探して来い。
あとスクリプト探すスレもあったんじゃねぇか
あったか?
>>927 $_SERVER["PATH_INFO"]
>>928 有難う御座います。<(_ _)>
もう少し勉強してきます。
>>927 Apacheモジュールのmod_rewriteを使って、
PHP側は特に工夫しない手もある。
>>919 それってAUにも有効ですか?
AUも拒否しちゃうんじゃないですか?
932 :
nobodyさん :2006/06/07(水) 06:49:03 ID:JStUUvxx
>>927 availability.php
はディレクトリ名だったりするのかも。
>>931 auはサブスクライバIDだからまた別だろ。Vodaはシリアルナンバー。
少しは携帯会社のホムペ読んで勉強しろ。
>>932 それは盲点だった。拡張子が付いてると先入観が。
936 :
nobodyさん :2006/06/07(水) 10:22:39 ID:AURV4K35
くだらない質問します。 僕はPEARとSmartyをレンタルサーバのドキュメントルートに置いて、 ファイルにはrequire("PEAR/DB.php")とか require("Smarty/libs/Smarty.class.php")とか書いているのですが、 これは間違った使い方ですか? どこかで、ini_setでinclude_pathを〜というのを読み、やったのですが、 実際あってもなくても変わりません。 requireで直接クラスファイルを指定しても問題ないのでしょうか?
今オブジェクトル志向とゆうものを覚えようかと思っているんですが、くだらない質問させてください オブジェクトル志向でなければできないものってありますか? またある場合はどんなものですか?
938 :
nobodyさん :2006/06/07(水) 10:45:21 ID:WC4qWOrZ
オブジェクトル志向あげ
>オブジェクトル の検索結果 約 8 件中 1 - 3 件目 (0.39 秒) 意外と引っかかって笑える
オブジェクトル志向に該当するページが見つかりませんでした。
>>939 でもよく見たらただのタイプミスっぽいな。全部同じページの同じ箇所で
他の箇所はオブジェクトになっているし。
>>937 勝手に「オブジェクト指向」と読み替えてみるがよろしいか。
オブジェクト指向でなければできないというような事はない。
943 :
452 :2006/06/07(水) 13:13:28 ID:???
おっさんたちはやく教えてくれよ!いきずまっててぜんぜん先進めないじゃん!
>>943 みたいなクズ人間には何も教えたくないね。
しかも質問の内容がまたクズ過ぎる。
回答を待ってる間に自分でGoogle検索すら出来ないのだろうか。
946 :
nobodyさん :2006/06/07(水) 13:33:49 ID:AURV4K35
>936 Pearはini_setしないと動かなくね?
947 :
452 :2006/06/07(水) 13:34:19 ID:???
>>945 はぁ教えろよ!わざわざ学校休んだ漏れがかわいそうじゃないのか??(´;ω:`)口わるいのはあやまるからさ…(´;ω:`)
948 :
452 :2006/06/07(水) 13:37:37 ID:???
>>870 ちなみに質問これだぞ間違えないでくれよな(´;ω:`)
おまえの名前がなぜ452なのか、まずそこから教えろ
950 :
452 :2006/06/07(水) 13:51:57 ID:???
生年月日を入れてみた(`.ω.´)b
こいつぁ何やってもダメだな
953 :
452 :2006/06/07(水) 14:01:43 ID:???
955 :
452 :2006/06/07(水) 14:05:56 ID:???
>>871 サンキュー
>>954 おっさんより将来明るいよてかもう1個質問してもいい?(`.ω.´)?カラム(?一列のことだよね?)だけ指定して配列に入れたいときはどうすればいいの?
いつからここは「マニュアルを代わりに調べるスレ」になったんだ…
>>955 単に将来がまだ未定なのを「明るい」とは言わない。
>>955 将来もクソもお前来年氏ぬかもしれんしな
960 :
nobodyさん :2006/06/07(水) 14:30:31 ID:guJlw/CS
PHPを途中で中断するやり方教えてください。 if (携帯からのアクセスではない){ echo "携帯からアクセスしてください"; 処理を中断する。←これ } <HTML> 〜〜〜 </HTML> つまり、中断したらその下は表示されなくしたいです。
年齢を逆手に取った気で何も調べないガキの未来が明るいわけないだろ。 学校までさぼりやがってお先真っ暗だろ。ばーか
マニュアル読まない人、本当に多いね… PHPはドキュメント頑張ってるし、日本語訳もすぐに出てくるし、恵まれた環境なのに。 2chで聞いて返事待つより、マニュアルあたったほうが遥かに早い。
964 :
452 :2006/06/07(水) 14:42:16 ID:???
>>961 学校の勉強は簡単だから問題ないお(`.ω.´)休んだって満点とれるし死ぬとかいうなお(`;ω;´)
>>452 まあでも人はいつか氏ぬよ。これは'現代医学'では変わりない
966 :
452 :2006/06/07(水) 14:45:20 ID:???
漏れは死なないお(`;ω;´)特別だお
うわ、頭悪すぎww
まあ教えてもらって嬉しかったら、今度は教える側に回ってやってくれ。 そうやってこの世は続いていくんだ。
死なないのにずっと教えて貰う立場だったらすっげー哀れだな・・・
970 :
452 :2006/06/07(水) 15:14:50 ID:???
調べるより調べさせるほうが手間いらずでイイ!(○`.ω.´)bバッチグー!漏れは死ぬわけないお
いじめで登校拒否か・・・同情してあげよう。
入力された日付が正当性のある日付か調べるいい方法はないでしょうか? 具体的には、 2000/10/1 2005年01月3日 2003-3-1 平成8年1月2日 など不定形で得られた日付を、 20050105 等、定型にフォーマットしたいです。
質問させてください。 (スレ違いだったらごめんなさい。どこで質問していいのかわかりませんでした。) PHPでsafe_mode = on にすると、phpMyAdminが開けません。 エラーは「#1045 - Access denied for user: 'xxx@localhost' (Using password: NO) 」と出ています。 safe_mode = off にすると開けますが、セキュリティのため、onにしたいので困っています。 よろしくお願いします。
>>973 正規表現でもつかってフォーマットで分岐して値とったらいいじゃないすか?
質問、 配列をstrlenしたら要素を合計した値が帰ってきますか?
そのくらい試そうよ
>>973 マニュアル(日付関数)を読むと良いと思うよ。
その上で、そこにある機能で不足するなら再度訊きにおいで。
# UNIXタイムスタンプの範囲だとダメだとか。
配列ソートについての質問なのですが、 ローマ字、カナ、漢字など関係なく50音順に配列させる方法を教えてください。 表示する文字とは別に、「よみがな」のような項目を作るのでしょうか?
phpって最初からEUCでプログラムしたほうが良いのですか? なんか秀丸の自動選択でプログラムしてて、動作確認すると「ソ」や「十」の文字がエスケープされていたので、 EUCに保存しなおしたら、すべての日本語が文字化けして困ったのですが・・・ しかもSJISに再設定しても化けた文字が直らなかったし・・・
下質すいません! if ($hoge) $hoge1 = 1; $hoge2 = 2; は文法的に正しいでしょうか? {}で括った方がベターでしょうか?
>>984 どういう結果を求めてるのか分からんが
それだと最初の $hoge1 = 1; しか対象にならん。 $hoge2 = 2; は常に実行される。
987 :
984 :2006/06/07(水) 18:11:42 ID:???
if ($hoge){ $hoge1 = 1; $hoge2 = 2; } と同様の結果が得られているようなんですが環境によるんでしょうか。
988 :
nobodyさん :2006/06/07(水) 18:25:39 ID:LinrwTZ1
質問です。 田中 出席番号14番 80点 佐野 出席番号17番 44点 岡田 出席番号21番 31点 吉永 出席番号28番 75点 山田 出席番号30番 98点 これを、点数の高い準に並べて 山田 出席番号30番 98点 田中 出席番号14番 80点 吉永 出席番号28番 75点 佐野 出席番号17番 44点 岡田 出席番号21番 31点 としたいのですけど、 どのようにすればよいですか? $array[0] = array("田中","80","14"); $array[1] = array("佐野","44","17"); $array[2] = array("岡田","31","21"); $array[3] = array("吉永","75","28"); $array[4] = array("山田","98","30"); arsort ($array); のようにしてもうまくいかなくて困っています。
もしくはusort()
991 :
nobodyさん :2006/06/07(水) 18:34:54 ID:LinrwTZ1
>>989-990 すみません、どんなのかはわかったのですけど、
どのように書けばよいかわかりません。
良ければもう少し詳しく教えていただけませんか?
お手数おかけして申し訳ないです。
>>987 >>986 が全て。
$hogeをtrueにしてもfalseにしても同じ結果何なるんだったら
藻前はスーパーハカー
array_multisort($array, 2); 見たいな感じででソートできればうれしいんだけどね
function my_cmp($a, $b){ if ($a[2]) == $b[2])){ return 0; } return ($a[2] < $b[2]) ? -1 : 1; } usort($arrayr, 'my_cmp);
>>963 逆引きリファレンスみたいなのがないからじゃね?
こうしたい → 関数がわからん… → はあマニュアルを最初から読むんですか...('A`)
>>998 公式にあるじゃん
こうしたい→関数わからん→公式リファレンス→○○関連→それらしい名前の関数発見→キター(゚∀゚)--!!
1000
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。