【PHP】下らねぇ質問はここに書き込みやがれ 21
レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん
2006/05/23(火) 22:05:17ID:???ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
まず読め【PHP マニュアル】
http://www.php.net/manual/ja/
過去スレは>>2
0002nobodyさん
2006/05/23(火) 22:05:52ID:???http://pc5.2ch.net/test/read.cgi/php/1099322141/
【PHP】くだらねぇ質問はここに書き込みやがれpart2
http://pc5.2ch.net/test/read.cgi/php/1105218084/
【PHP】くだらねぇ質問はここに書き込みやがれpart3
http://pc5.2ch.net/test/read.cgi/php/1107780435/
【PHP】くだらねぇ質問はここに書き込みやがれpart4
http://pc8.2ch.net/test/read.cgi/php/1110697712/
【PHP】くだらねぇ質問はここに書き込みやがれpart5
http://pc8.2ch.net/test/read.cgi/php/1114787573/
【PHP】くだらねぇ質問はここに書き込みやがれpart6
http://pc8.2ch.net/test/read.cgi/php/1117945031/
【PHP】くだらねぇ質問はここに書き込みやがれpart7
http://pc8.2ch.net/test/read.cgi/php/1121100429/
【PHP】くだらねぇ質問はここに書き込みやがれpart8
http://pc8.2ch.net/test/read.cgi/php/1123431535/
【PHP】くだらねぇ質問はここに書き込みやがれpart9
http://pc8.2ch.net/test/read.cgi/php/1125716012/
【PHP】下らねぇ質問はここに書き込みやがれpart10
http://pc8.2ch.net/test/read.cgi/php/1127581425/
【PHP】下らねぇ質問はここに書き込みやがれpart11
http://pc8.2ch.net/test/read.cgi/php/1129582431/
【PHP】下らねぇ質問はここに書き込みやがれpart12
http://pc8.2ch.net/test/read.cgi/php/1130835396/
【PHP】下らねぇ質問はここに書き込みやがれpart13
http://pc8.2ch.net/test/read.cgi/php/1132921016/
【PHP】下らねぇ質問はここに書き込みやがれpart14
http://pc8.2ch.net/test/read.cgi/php/1134868212/
【PHP】下らねぇ質問はここに書き込みやがれpart15
http://pc8.2ch.net/test/read.cgi/php/1137236771/
0003nobodyさん
2006/05/23(火) 22:06:43ID:???http://pc8.2ch.net/test/read.cgi/php/1139146534/
【PHP】下らねぇ質問はここに書き込みやがれpart18
http://pc8.2ch.net/test/read.cgi/php/1142417901/
【PHP】下らねぇ質問はここに書き込みやがれ Part19
http://pc8.2ch.net/test/read.cgi/php/1144513878/
【PHP】下らねぇ質問はここに書き込みやがれpart20
http://pc8.2ch.net/test/read.cgi/php/1146165153/
0004nobodyさん
2006/05/23(火) 22:07:16ID:???extractは極力使わないほうがいいと思います。
例えば、
hoge.php?_SESSION[user_pw]=hogehoge
って形で送られてきたとします。これを
extract($_GET)
しちゃうと、$_SESSION['user_pw']の値が、
"hogehoge"に変更されてしまいます。
もし事前にユーザのパスワードを、$_SESSION['user_pw']に
保持してたとしたら、勝手に書き換えられてしまうことになります。
それを避けるために
extract($_GET, EXTR_SKIP)
ってやって上書きを避けたとしても、
このままでは変数の初期化を忘れる危険性があります。
extract($_GET, EXTR_PREFIX_ALL, "get")
と、接頭辞をつけるのが一番安全な気はしますが、
それなら最初から
$hoge = $_GET['hoge'];
ってやるのと手間が変わらないと思いますし、可読性も増します。
確かにextractするのは楽だと思いますけど。
0005nobodyさん
2006/05/23(火) 22:17:27ID:???ttp://makimo.to/cgi-bin/search/search.cgi?shw=100&q=PHP%81z%89%BA%82%E7%82%CB%82%A5%8E%BF%96%E2%82%CD&andor=AND&sf=0&H=&all=on&view=table
0007nobodyさん
2006/05/24(水) 00:21:31ID:LAJIQlLYどうしてPHPの質問ってこんなにくだらないものばかりなんですか?
0008nobodyさん
2006/05/24(水) 00:40:53ID:pDgg/19cfunction aaa($bbb) {
$ccc = "これは".$bbb."です。";
return $ccc
}
echo aaa("お茶");
echo aaa("水");
とやると、これはお茶です。これは水です。と帰ってくるのですが、
0009nobodyさん
2006/05/24(水) 00:41:25ID:pDgg/19cfunction ddd($eee) {
$con = mysql_connect(~~~~~);
〜省略〜
$sql = "select * from hogetable where hoge = $eee";
$rst = mysql_query($sql, $con);
$col = mysql_fetch_array($rst) ;
$fff = $col["hoge"];
return $fff;
}
echo ddd(hogehoge);
echo ddd(fugafuga);
とやると、一行目のechoの$col["hoge"]は帰ってきますが、
二行目は戻ってきません。
一行目と二行目を入れ替えると、fugafugaを渡したものが
戻ってきますが、hogehogeの方は戻りません。
実際はもう少しfunctionの中身は複雑なのですが、
sql文の条件に入る単語を引数にして、mysql_fetch_arrayした結果を
取り出すfunctionにしたいです。
functionの中でmysqlに接続してはいけないのですか?
なぜ中途半端に動く(一行目だけ戻ってくる)のかわかりません。
どなたかよろしくお願いします。
0010nobodyさん
2006/05/24(水) 00:52:12ID:???ん!ん!ん!
意味がよく分からないんだけど、hogehogeとfugafugaはSQLのwhere条件に使うんだよな?
で、>>9の関数を実行するとddd()という関数が二回実行されるはずなのに上側のddd()関数
しか値を返してくれないって事だよな?
0011nobodyさん
2006/05/24(水) 01:00:23ID:pDgg/19c悩み果てて、眠気と戦いながら書いたので、書いたものはあやしいかもしれませんが、
10さんの仰ってる内容で正しいです。
同じsql文の条件の部分にhogehogeとかを渡して、mysql_fetch_arrayしてデータを取り出したいだけです。
ddd()を使えば、違った条件で抽出したデータを取り出せて便利と思い、
試しに動くか2行連続で書いたら、一番上に書いた行の結果しか帰ってこないんです。
何か原因はかんがえられますでしょうか?
0012nobodyさん
2006/05/24(水) 01:12:04ID:???エラー?見たいなものががどうしても出てしまうのでメッセで教えていただけませんか?
凄くシンプルな20行程度のプログラムなのですが。
0013nobodyさん
2006/05/24(水) 01:13:25ID:???0014nobodyさん
2006/05/24(水) 01:15:32ID:qW6N8luO解決できたら報酬はもちろん差し上げますので。。お願いします。
0015nobodyさん
2006/05/24(水) 01:27:11ID:qW6N8luO00168
2006/05/24(水) 01:34:50ID:pDgg/19c怪しげな一文を見つけたのですが、いまいち難しくてわからないです。
ttp://php.s3.to/man/function.mysql-connect.html
これはなにか関係ありますかね?
functionでmysqlに繋ぐのは普通ですよね?
0018nobodyさん
2006/05/24(水) 01:58:20ID:???function内でconnectはまぁ普通だが、普通はそのときの戻り値を別途保持して
2回目以降はそれを使いまわすようにする。
selectのたびに毎回connectなんて真似はしない。
ただ、通常はmysql_connectのパラメータが全く一緒の内容なら
何回connectしても同じリソースIDが返るのでちゃんと動きそうなもんではある。
mysql_connectとmysql_queryの直後で
echo mysql_error();
を表示させてみてはどうだろう?
あと、それぞれの戻り値をちゃんとエラー判定しような。
0021nobodyさん
2006/05/24(水) 02:03:09ID:???まぁ、functionでMySQLに繋ぐって言う事自体はまったく問題ないんだけど、その書き方だと
一回接続してるのにもう一回接続しようとしてしまうだろ?
だからさらに別functionに分けてMySQLに接続するのみのfunctionにしてみたらどうだ?
多分それで問題も解決すると思う。
今回のエラーの原因は「一度接続して、通信を切断していないのにもう一度MySQLに接続しようとしている」
体と思う。
00228
2006/05/24(水) 02:09:47ID:pDgg/19c気になって眠れずにいました。感謝。
mysqlへの接続用functionはちょっと試したのですが、
その場合は上に僕が書いたddd()の中にconnect()(←mysql接続用function(仮))を
書くのでしょうか?でも、それだと結局同じになってしまいますよね?
いまいちfunctionの使い方自体が分かっていないので、もう少し勉強します。
本当にありがとうございます。
明日また試して報告します。
0023nobodyさん
2006/05/24(水) 02:10:11ID:???オレの出番はないようだ・・・
0024nobodyさん
2006/05/24(水) 02:13:22ID:???$r=connect(必要なパラメータ);
echo ddd( $r, hogehoge );
disconnect(必要なパラメータ);
exit;
function ddd( $r, $eee )
{
略
}
マニュアルみてないけどだいたいこんな感じ
0025nobodyさん
2006/05/24(水) 02:22:01ID:???function connect() {
if(! $GLOBALS['connect_id']) {
if(! ($GLOBALS['connect_id'] = mysql_connect(〜))) {
echo "接続エラー";
exit;
}
}
return $GLOBALS['connect_id'];
}
function ddd($eee) {
$con = connect();
:
}
例えばこんな感じ
0026nobodyさん
2006/05/24(水) 02:34:29ID:fsmU1YOR携帯用の掲示板を作っているのですが、
コメントで改行されると、テキストデータに保存したときに
改行されたまま保存されてしまいます。
この改行を取り除いて保存したいのですけど、どうすればよいですか?
0027nobodyさん
2006/05/24(水) 02:41:56ID:???方法はいっぱいあるよ。
でだ!まず改行コードはもちろん知っているよな?PHPとかで書くなら「\r\n」「\r」「\n」の3種類だ。
これらがそのままテキストに保存されるから改行されちゃうんだ!
さらにヒントだ! str_replace("\n","","文字列");
0028nobodyさん
2006/05/24(水) 02:42:11ID:???mb_ereg_replaceなんかも見るといいよ
0029nobodyさん
2006/05/24(水) 02:45:27ID:???そのソースでちゃんと2回目以降も値が取れたぞ。
$sql = "select * from hogetable where hoge = '$eee' ";
echo ddd('hogehoge');
だと思うけどな。
0030nobodyさん
2006/05/24(水) 02:49:56ID:???マニュアルに書いてある通り、その場合は2重接続を行わずに
接続中のコネクトIDを返すので問題ない(エラーとはならない)。
0031nobodyさん
2006/05/24(水) 03:04:46ID:qW6N8luOエラーというより簡単な要望に近い形になります。
そのソースは某サイトで購入したものでといってもソースは20行程度なのですが。
なので晒したいのですが晒せないといった状態です。ご勘弁ください。
メッセなら晒せます。[email protected] です。お願いします。
0032nobodyさん
2006/05/24(水) 03:07:54ID:fsmU1YOR文字列置き換えですね。
その方法でできました、ありがとうございます。
>>28
辞書見る限り、まだちょっと理解できませんけど
アドバイスありがとうございます。
0033nobodyさん
2006/05/24(水) 03:09:43ID:fsmU1YOR$data ←この中身が数値の場合、または半角英数字の場合にTRUEを返すと
いった関数はありませんでしょうか?
初歩的な質問ですみません・
0034nobodyさん
2006/05/24(水) 03:20:19ID:???てめぇ!若いうちから楽をするんじゃない!正規表現でシコシコ作るんだ!!
多分PHPのことだから調べたらあると思う
0037nobodyさん
2006/05/24(水) 04:08:36ID:???>>36
天井に達した後、誰も立てていないだけ
立たないって事は需要が無いんだと思うが・・・
0039nobodyさん
2006/05/24(水) 07:26:22ID:???ctype_alnum($data); // = preg_match('/^[a-z0-9]*$/i', $data)
0040nobodyさん
2006/05/24(水) 07:46:13ID:???Order allow,deny
Deny from all
0041nobodyさん
2006/05/24(水) 08:18:47ID:???クエリで何か渡してる場合に限っての話じゃないの?
0042nobodyさん
2006/05/24(水) 08:34:29ID:???〜.php/file.htmlにするとあーら不思議(謎
0043nobodyさん
2006/05/24(水) 08:57:13ID:???全然同じかと思ってた
例えば
index.php?q=hogehoge
index.php/hogehoge
index.php/hogehoge.html
だったらどう?
やっぱ hogehoge.html > hogehoge ?
ってかスレ違いかな・・
0044nobodyさん
2006/05/24(水) 09:12:43ID:???最近はあまり関係ないよ
自分のところはクエリ表記だが検索エンジンは問題ない
重要なことは正しい構文 .htmlが良かったのは昔昔昔昔の話
完全にスレ違いだな
00458
2006/05/24(水) 10:40:10ID:Y9pwRi1Oレスありがとうございます。助かりました。8です。
今調べたら、全く別のところに原因がありました。
実はmysql_connect($dbserver,$dbuser,$dbpass);
とかって書いていて、それぞれの値は別のファイルに書いていまして、
それをrequire_once(./hoge.php);で読み込んでいました。
function ddd($eee) {
require_once(./hoge.php);※設定ファイル
mysql_connect($dbserver,$dbuser,$dbpass);
以下略
}
みたいな感じです。
このrequire_onceをただのrequireにしたら大丈夫でした。
自分が買った参考書は外部のファイルを読み込むときは
いつもrequire_onceだったので、気にせずにいました。
require_onceの場合、2回目のddd($hoge)のときは
mysqlに接続できて無かったってことでしょうか?
0046nobodyさん
2006/05/24(水) 12:06:02ID:???require_onceはその名の通り1回しか読み込まないので
2回目は読み込まれずに未定義のID/Passで接続しようとしたから
最初から全部晒せばすぐに解決したと思われるのだが・・・
00478
2006/05/24(水) 12:33:53ID:Y9pwRi1Oレスありがとうございます。
ほんとその通りですね。申し訳ないです。
>みなさん
require と includeの使い分けのルールみたいなものはありますか?
また、それぞれ_onceにしないとダメなケースとかでよくあるものとかあったら
教えて欲しいです。
0048nobodyさん
2006/05/24(水) 14:37:59ID:???0049nobodyさん
2006/05/24(水) 15:50:46ID:???0051nobodyさん
2006/05/24(水) 16:09:30ID:???PHPを使ったフォトブログを簡単に設置できるスクリプトってありますよね。
そういうもの(pixelpostやfolderblog)を設置すると必ずindex.phpでページがblankになるんです。
解決策としては
error_reporting(0);の部分をerror_reporting(7);またはerror_reporting(E_ALL);
とすればいいと書いてあるんですが
同じようにblankになり、リロードすることで読みこまれます。
鯖はxreaなんですが
すれ違いですかね。
0052nobodyさん
2006/05/24(水) 16:10:12ID:1ttwMHsA俺はPOSTデータを比較演算子で比較してるけど。
おまいらはどうやってる?
0054nobodyさん
2006/05/24(水) 16:32:35ID:???公式マニュアルで現在時刻を取得する関数見れば
関連の関数として書いてあるじゃん。
「ある」ことは教えてもらったんだからそこからは自分で探しなさいよ。
0055nobodyさん
2006/05/24(水) 16:39:04ID:???関数定義や設定値定義などには普通はonceを使う。
同じものを何度も読み込むなんて無駄だから。
また、特別な理由があるわけじゃなきゃ関数の中でrequireとかはあまりしない。
それが関数の機能的に意味のあることならもちろん構わないが。
requireはそのファイルが読み込めないと致命的な場合に用いる。
includeは無ければ無いで問題が出ないような場合に用いる。
0056nobodyさん
2006/05/24(水) 17:25:46ID:???結構長いこと仕事でPHP使ってるけど、まだ〜once以外使ったことないよ。
ちゃんと設計してれば出番は少ないと思われる。
ま、ケースバイケースだがね。
005747
2006/05/24(水) 18:01:35ID:Y9pwRi1Oレスどうもです。
僕はdbの名前とかパスワードを別ファイルにしたのですが、
これはonecだとダメということは、みなさんは別の方法でやっているのですか?
mysqlにつなぐfunctionを書くことは多いと思うのですが、
どんな風に書いていますか?
また、別の類の質問かもしれないのですが、
例えば、僕が書いたコードは、
mysqlに接続するだけのfunctionがあって、
そのつぎに「条件の違うクエリを打って結果をreturnする」functionがあって、
2個目のfunctionの中で1個目のfunctionを使っています。
つまりfunctionの中にfunctionがあります。
こういうのは問題ないですか?
0058nobodyさん
2006/05/24(水) 18:04:52ID:IMQ+SU6Qメソッド名を指定できるのは分かったのですが
$func = "Hoge::execute";
$func();
みたいな感じに、クラス名から指定したいのです。
0060nobodyさん
2006/05/24(水) 18:07:55ID:???その処理の判別で便利な方法はどんなのですか?
�@
type="hidden" name="action" value="****"
をつけて
switch($_POST['action'])
で判別
�A
type="submit" name="action[****]" value="うんたら"
をつけて
(どうやって判別?)
�B
別ページで処理して元ページに戻す
などなど考えましたが皆さんはどんな手法を使ってますか?
0061nobodyさん
2006/05/24(水) 18:09:43ID:???0062nobodyさん
2006/05/24(水) 18:10:08ID:???処理内容とフォームのデザインによる
Javascript使えるならsubmit時にvalue変えることもできるし。
006351
2006/05/24(水) 18:52:16ID:???0064nobodyさん
2006/05/24(水) 20:05:31ID:Ixcu1EBTfile.txtというファイルに
aaa<>111<>222
bbb<>333<>444
ccc<>555<>666
という形で、格納されているデータがあってある文字列を書き込みたい時、
もし、file.txtの中に既に含まれるものがあれば、書き込まない。
無ければ、書き込む。
という操作をさせたいときには、どのように書けば良いでしょうか?
何となく頭では分かっているのですが
どう書けば良いのかが分からなかったので質問しました。
よろしくお願いいたします。
0066nobodyさん
2006/05/24(水) 20:22:09ID:???その区切り文字使う人って大抵ユーザ入力のデータをHTMLタグを無効化(htmlspecialchars)しておいて、
出力時にそのまま書き出すようなコード書いていることが多いんだよね。
エスケープ処理は、htmlとしてのprint時にやったほうがセキュアでシンプルなコードになるよ。
例えば、データベースにいれたりファイルを直接編集したりするときには、< が > とかに変換されてたって
まどろっこしくなるだけだし、複数の方式でファイルへの書き込みをやるときとかにエスケープ漏れが生じることがある。
0067nobodyさん
2006/05/24(水) 20:29:25ID:Ixcu1EBTアルゴリズムは分かるのですが
書き方が分かりません。
>66
ありがとうございます。
参考になります。
0068nobodyさん
2006/05/24(水) 20:40:44ID:???アルゴリズムがわかるなら、それを書いたら?
日本語でもいいから。
それを、文法として間違っていても、動作しなくてもいいから、
適当と思うPHPの関数、構文に置き換えて書いてみたらどうだろう。
0069nobodyさん
2006/05/24(水) 20:53:56ID:Ixcu1EBTファイルオープン。
ファイルの読み込み、丸ごと配列aに格納。
変数Aが、ファイルの中身と同じかを正規表現で調べる。
ファイルロック。
違っていれば、追加書込み。
ファイルクローズ。
こんな流れですよね?
0070nobodyさん
2006/05/24(水) 20:56:47ID:???ファイルロックはファイルオープンの直後のがよくね?
処理自体は合ってるから、それをそのままPHPの関数で置きかえれ。
0071nobodyさん
2006/05/24(水) 22:03:49ID:???> 僕はdbの名前とかパスワードを別ファイルにしたのですが、
> これはonecだとダメということは、みなさんは別の方法でやっているのですか?
普通はonceを使うよ、それ。
ただし関数の中じゃなく、プログラムの先頭で1回だけだが。
> 2個目のfunctionの中で1個目のfunctionを使っています。
> つまりfunctionの中にfunctionがあります。
> こういうのは問題ないですか?
ごく普通。プログラム概論とかソフトウェア工学とかの本を読んでみれば?
0073nobodyさん
2006/05/24(水) 22:24:37ID:???つまずきそうなのは中身の比較あたり?
ファイルの内容を配列に格納したら、
$add = 1; //最初は追加モード
foreach($file as $line) {
if($line == $data) { //ファイルの各行と今回の追加データを比較
$add = 0; //一致する内容があれば追加モードOFF
}
}
if($add) {
ファイルへ書き込む処理
}
みたいな感じでいける。
0075nobodyさん
2006/05/24(水) 22:59:52ID:???60じゃないけど。
大した種類も無くて楽にやるなら1、拡張する可能性があるなら2、
複数のフォームがあってデータを連動させたい場合なんかはJavaScript併用、とか。
特に困ることがないなら1でいいんじゃないの。
007652
2006/05/24(水) 23:16:26ID:1ttwMHsA0077nobodyさん
2006/05/24(水) 23:16:51ID:cMAB9oLfはできるのですが、
$class::$method();
はできませんか?
試してみたら、パースエラーが出ましたが、
なんとか$class部分を変数にして実行したいです。
007877
2006/05/24(水) 23:19:26ID:???0079nobodyさん
2006/05/24(水) 23:26:20ID:???一般的かどうかは定かではないが、
予め設定したパスワードはcrypt等で暗号化した上で保存
フォームから送られたパスワードも同じ暗号化処理をした上で、
保存してあるパスワードと比較。
比較演算子は === とか使っておけば間違いないんじゃないのかな?
0080nobodyさん
2006/05/24(水) 23:34:23ID:vQsxJJUN親ファイルから子ファイルをincludeするのですが、
子ファイルで
{assign var="test" value="sample"}
と変数を指定して
その変数を親ファイル側で利用したいのですが、
できませんでした。
includeされたファイルで設定された値は
include元では利用できないのでしょうか?
出来ない場合、上記のような機能を実現するには
どうしたら良いでしょうか?
config_loadは使用しない形で実現したいのですが
方法が思い浮かびません。
識者の方ご教授をおねがいします。
0081nobodyさん
2006/05/24(水) 23:35:07ID:JcLctTfB<? include("./p_parts/hoge.php"); ?>
のような形で挿入しています。
このようなパーツが複数あるのですが、特定のファイル(theme.php)を挿入した部分だけ
Warning: main(): open_basedir restriction in effect. File(../p_parts/theme.php) is not within the allowed path(s): (.:/php-tmp) in /〜/index.php on line 76
Warning: main(../p_parts/theme.php): failed to open stream: Operation not permitted in /〜/index.php on line 76
Warning: main(): Failed opening '../p_parts/theme.php' for inclusion (include_path='.:/usr/share/php4:/usr/share/php') in /〜/index.php on line 76
というエラーが返って来ます…。
原因と対策を教えてください。よろしくお願いします。
008252
2006/05/24(水) 23:47:05ID:1ttwMHsAありがとん。
参考になったよ(・∀・)md5あたりを使ってみます。
0083nobodyさん
2006/05/24(水) 23:59:05ID:???> <? include("./p_parts/hoge.php"); ?>
ここでは ./p_parts サブディレクトリなのに
> Warning: main(../p_parts/theme.php):
こっちだと ../p_parts と上位ディレクトリの指定になってるからじゃ?
008481
2006/05/25(木) 00:05:46ID:JcLctTfBレスありがとうございます。階層はコピペミスで実際は
/p_parts/
└/text/index,php …ここに<? include("../p_parts/theme.php"); ?>と記述
になっています。SSI的にphpを使う知識しかなく、中身はただのhtmlを記述したものです。
他のhoge.php等も同様な感じでちゃんと表示されているのですが…
0087nobodyさん
2006/05/25(木) 00:19:08ID:???そうするとデリミタは?
DBだとその通りなんだけど、テキストだとどうなんだろ。
カラム区切り、レコード区切り両方意識しなきゃならないし。
0088nobodyさん
2006/05/25(木) 00:28:31ID:???008981
2006/05/25(木) 00:35:14ID:???他のhoge.php等も同じパスです。
open_basedirの設定は鯖がphpinfo() ;を禁止しているのでよく解りません。
ファイル名など禁則文字があるのかと思いリネームしたりもしましたが無駄でした。
あと、theme.phpのアップデート前には表示できていたんですが…
もう少し頑張ってみてダメだったら鯖に聞いたほうが早いでしょうか…orz
009281
2006/05/25(木) 01:07:41ID:???<h2>Theme</h2>
<p>「○○のお題」に挑戦。最低限隔週更新。</p>
<ol class="thumb"><li>ほにゃらら〜</li></ol>
<p class="small t_right"><a href="URL">サイト名</a></p>
これだけです。
オーナーとパーミッションは前と一緒です。
オーナーは自分で属性は604です。
0093nobodyさん
2006/05/25(木) 01:22:20ID:???ソートした時に、10000円より5000円のほうが
高くなるんだよね。カンマ付いてないのに。
なんでYO!
0095nobodyさん
2006/05/25(木) 03:30:17ID:???1, 0, 0, 0, 0, 円の1バイト目, 円の2バイト目
5, 0, 0, 0, 円の1バイト目, 円の2バイト目
0096nobodyさん
2006/05/25(木) 04:34:53ID:???文字列型同士なので、当然文字列として比較するから、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円
0098nobodyさん
2006/05/25(木) 08:49:01ID:T8t5b4Lqsession.gc_maxlifetime を10にしているのに10秒たっても
セッションがタイムアウトしません(切れてくれません)。なぜなんでしょうか?
※値10はテスト用に短くしています。意味は無いです。
session.cookie_lifetime を10にすると10秒で切れてくれるのですが、
これだとブラウザ閉じてもまだセッションが生きているので要件上ダメなのです。
環境はIIS5.0 / php5.0.3 です。php.iniの値は下のようになってます。
0099nobodyさん
2006/05/25(木) 08:51:27ID:T8t5b4Lqsession.auto_start Off Off
session.bug_compat_42 Off Off
session.bug_compat_warn On On
session.cache_expire 180 180
session.cache_limiter nocache nocache
session.cookie_domain no value no value
session.cookie_lifetime 0 0
session.cookie_path / /
session.cookie_secure Off Off
session.entropy_file no value no value
session.entropy_length 0 0
session.gc_divisor 100 100
session.gc_maxlifetime 10 10
session.gc_probability 1 1
session.hash_bits_per_character 5 5
session.hash_function 0 0
session.name PHPSESSID PHPSESSID
session.referer_check no value no value
session.save_handler files files
session.save_path no value no value
session.serialize_handler php php
session.use_cookies On On
session.use_only_cookies Off Off
session.use_trans_sid 0 0
0100nobodyさん
2006/05/25(木) 09:24:01ID:???{include file="header.tpl" page_title="タイトル" user="$user"}
とかすればいい。
includeされたファイルでは{$page_title}とかで参照できるはず。
オブジェクトも渡せるんじゃなかったかな。
0101nobodyさん
2006/05/25(木) 09:39:26ID:???書いてありましたが、ではクッキーを使えない携帯では
どうやって安全なセッション処理を実現したらいいのでしょうか。
0102nobodyさん
2006/05/25(木) 09:39:34ID:???セッションのガーベッジコレクションは、
session.gc_probability / session.gc_divisor
の確率で起こるので、>>99の設定だと1%の確率でしか起こらない。
それから、ガーベッジコレクションで自分のセッションが破棄されることはないので、
session.gc_maxlifetimeを過ぎても、他人のアクセスがない限りはセッションは切れない。
0104100
2006/05/25(木) 10:04:35ID:???0106軟式PHP
2006/05/25(木) 10:11:08ID:???0109nobodyさん
2006/05/25(木) 10:38:01ID:???ありがとうございます。
ということは、あくまでも
session.use_only_cookiesはオン、session.use_trans_sidはオフにしておくのが前提で、
その「個体識別情報やサブスクライバID」を使うべきなのでしょうか。
「個体識別情報やサブスクライバID」というものをよく知らないので、調べてみます。
0110nobodyさん
2006/05/25(木) 10:38:03ID:???0111nobodyさん
2006/05/25(木) 10:56:08ID:???0113nobodyさん
2006/05/25(木) 12:29:04ID:???今日は2006年5月25日です。昨日は2006年5月24日です。
2006年5月24日まであと5日です。
今日の日付をdate関数で取得して、昨日なら-1日、目的までのカウントダウンは
その間の日数をforで取得すれば良かったと思ったのですが、
日に1を足す方法だと、31日の場合や1日の場合に問題が起きそうです。
何か良い方法はありませんでしょうか?
0115nobodyさん
2006/05/25(木) 12:45:42ID:???これは個人的な意見なんですが、日付で計算するのは無駄に複雑になる気がします。
通算秒とかで持っておいて、必要に応じて(たいていは表示)日付に変換する。
もちろん計算は秒単位とかだから、単純な加減算。
このほうがコードもわかりやすくなると思うのですが。
0116nobodyさん
2006/05/25(木) 13:54:24ID:???sessionはセキュリティを落としてでもプログラマが楽をするための道具でしかないのに。
0117nobodyさん
2006/05/25(木) 13:57:53ID:???↓のようにするとコメントが**以上ないとき<br />だけが繰り返されます。
最後の行を読み込んだらbreakしたいのですが、どうすればいいでしょうか?
$comment = file($logfile);
for($line = 0;$line < **;$line++){
echo $comment[$line]."<br />";
}
0118nobodyさん
2006/05/25(木) 14:03:13ID:???たとえばだけど
$comment = file($logfile);
$comment_count = count($comment);
for($line = 0;$line < **;$line++){
if($line > $comment_count) break;
echo $comment[$line]."<br />";
}
とか。
0121nobodyさん
2006/05/25(木) 14:20:40ID:???$comment = file($logfile);
$comment_count = count($comment);
for ($line = 0; $line < ** and $line < $comment_count; $line++) {
echo $comment[$line]."<br />";
}
後で$commentを使う必要がないのなら、
fgets()使って一行ずつ読み込んだ方が良いと思う。
0123nobodyさん
2006/05/25(木) 16:08:56ID:???自分でつくったクラスの名前は
MyHogehoge
みたいに「My」とか付けてますか?
適当に付けてたらあとで
PEARが必要になったときとか重複しそうで。
ただそれだけなんだけど
My〜ってのもかっこ悪いし
0124nobodyさん
2006/05/25(木) 16:12:15ID:???Herhogehoge
Hishogehoge
どれでも好きなのを選びなさい。
0125nobodyさん
2006/05/25(木) 16:38:58ID:???PEARじゃなくともチーム開発すると名前の重複を考慮しなくてはならなくなる。
ちなみにオレは自分のセンスでテキトーに名前付けてる。
0127nobodyさん
2006/05/25(木) 16:42:35ID:???UIDとかが取得できない環境なら
ユニークなセッションIDを発行して、DB上にセッション情報を保存する
パラメータとしてはそのセッションIDを引き渡す
0128nobodyさん
2006/05/25(木) 16:50:09ID:???0129nobodyさん
2006/05/25(木) 17:48:50ID:???3G端末に送ると絵文字だけが削除されてしまう。
3G端末以外ならうまくいってんだけど、これってやっぱVodafoneの仕様ですかね?
ここは出来てるから不可能ではないと思うんですが・・・
http://www.triworks.com/japan/wj2003/001.html
0130nobodyさん
2006/05/25(木) 18:17:21ID:???2点教えていただきたいことがございまして書き込みさせて頂きます。
1,クラスを使うときはどんな時に使えばよいのか?functionは使うのですが、
class を使う場面がよくわからないので教えていただけると幸いです。
2,smarty は使った方が良いでしょうか。また、phpのプログラマーとして覚えておくのは
必須と言った感じでしょうか。
宜しく、ご教授下さいませ。
0131nobodyさん
2006/05/25(木) 18:27:25ID:???仕様。
ttp://www.web-ware.org/cgi/npindex/62/open_view.html?s=m31
これの下の方、「文字コード体系 - Vodafone の場合」
0134nobodyさん
2006/05/25(木) 18:49:37ID:???ありがとうございます。オブジェクト指向を徹底的に勉強してみます。
その後、smartyを使ってみます。
ご親切にありがとうございました。
0136nobodyさん
2006/05/25(木) 18:55:50ID:1NG09F7i<title></title>の間に入っている文字、例えば「ハリーポッター」だとします。
この「ハリーポッター」という文字を
<?php echo $key>; この$keyに入れることは可能でしょうか?
または$key = "" この""の間に入れることはプログラム的にはできますか?
0139nobodyさん
2006/05/25(木) 19:05:57ID:???どうすればいいのでしょうか?
以下のようにやると思ったようになりません。
$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);
よろしくお願いします。
0140nobodyさん
2006/05/25(木) 19:06:06ID:???質問内容が分からない。
「<title>ハリーポッター</title>」
から、
「ハリーポッター」
だけ抜き出したいということか?
>>137
適当にググっただけなんで、今もそうなのかは分からん。
Vodafoneの携帯持ってないんで、テストも出来ないし。
0141nobodyさん
2006/05/25(木) 19:13:21ID:???$arrayをどういうデータ構造にしたいかによるが、
$array = array();
while ( $line = mysql_fetch_array($res, MYSQL_ASSOC) ){
array_push($array, $line);
}
これでいいんじゃないか?
0142nobodyさん
2006/05/25(木) 19:15:36ID:???preg_match ('/<title>[^<>]+<\/title>/i', $data, $matches);
0144nobodyさん
2006/05/25(木) 19:27:55ID:YQ84qh3gってやったら
Warning: file() [function.file]: SSL: fatal protocol error
となっちまいました
一応データは無事取得したのですが、なんかまずいのでせうか?
悪あがきで
fopen("https://www.hoge.com/index.html", "r");
を先にやってみてもおなじWARNINGがでます
PHPのバージョンは5.1.2、OSはLinuxらしいでやんす
0146nobodyさん
2006/05/25(木) 19:40:56ID:YQ84qh3g--with-openssl=/usr/local/openssl
でコンパイルしてるっぽいし
うーん・・・
0147nobodyさん
2006/05/25(木) 19:41:03ID:???文字列に改行が含まれていると、次の行にいってしまいます。
改行を<br />にするにはどうすればいいでしょうか?
0150nobodyさん
2006/05/25(木) 19:56:17ID:???$search 検索語句
$comment = str_replace("$search","<span style=\"background-color:#ffff00;\">$search</span>","$comment");
この様な場合において
$comment に含まれるhtmlタグ内には上記を適用させないようにする為には具体的にどの様な方法がありますでしょうか
0151nobodyさん
2006/05/25(木) 20:06:05ID:1NG09F7iおっしゃる通りです。
>>142
ありがとうございます。
<?php
preg_match ('/<title>[^<>]+<\/title>/i', $data, $matches);
?>
<?php echo ($date); ?>
こんな感じで大丈夫でしょうか?やってみたのですが、表示されませんでした。
0152nobodyさん
2006/05/25(木) 20:18:16ID:???str_replace ("\n", "<br />", $hoge)
>>151
<?php echo $matches ?>
つか正規表現は覚えておいて損は無いと思うので、適当にぐぐって勉強してごらん。
0153nobodyさん
2006/05/25(木) 20:33:12ID:???ひょっとして
<html>
<title>ほげほげ</title>
<body>
<?php echo $key ?>
</html>
みたいな感じで自分自身のタイトルを取得したい、って話?
だとするとちょっと凝った手が必要になると思う。
0154nobodyさん
2006/05/25(木) 21:00:33ID:???0155nobodyさん
2006/05/25(木) 21:01:33ID:???0156nobodyさん
2006/05/25(木) 21:16:48ID:1NG09F7iそうです、タイトルさえ取得できれば私が思っていることができるのです。
>>152
ありがとうございます。以前も同じような質問をしたのですが
何故かスルーされて解決に至らなかったのです。
この件でかなりの時間悩んでいたのでこの機にどうにか解決したいです。
<?php echo $matches ?> これで一応文字は表示されたのですが
タイトル名ではなく Array と表示されます。
0158nobodyさん
2006/05/25(木) 21:42:52ID:1NG09F7iお願いします。
0159nobodyさん
2006/05/25(木) 21:47:59ID:???なんでマニュアルにあることまで・・・
Arrayって配列だよ
0160nobodyさん
2006/05/25(木) 21:49:04ID:???そういう甘えは許さないよ。
もうレスはいっぱいもらって解決法も分かったでしょ。
はい次。
0161nobodyさん
2006/05/25(木) 22:01:36ID:1NG09F7i0162nobodyさん
2006/05/25(木) 22:08:57ID:???私もよくここで質問をしていたけれど、本当に初心者な質問に関しては
ノーヒントで「マニュアル嫁」やら「死ね」と言われていたもんだ。
そのとき私は「なんでコイツラこんなに厳しいんだろう…、もし俺が回答者なら、すんなり答えを教えてやるのになあ… もしかして
コイツラはレベル低すぎて答えられないのではないか…? いやいや、そんなハズはない! 数学の授業で少し頭の良い友達に聞いてもなかなか答えを教えてくれない奴と同じか?」なんて思っていたりした。
でも、今考えてみると、当時の回答者の気持が分かったきがする。
質問者のことを考えた " やさしい意地悪 "なんだなって。
悔しくても、成長するんだなって。
で、
$basetext = 'ももも <title>hoge</title> ももも';
preg_match ('/<title>[^<>]+<\/title>/i', $basetext, $matches);
echo $matches[0];
これじゃ<title>hoge</title>しか出力されない訳だが。
正規表現に詳しい人よろ。
0164nobodyさん
2006/05/25(木) 22:14:07ID:???まぁ正規表現ならマニュアル書いて無いし別にいいよ。
欲しいトコ(この場合hogeに当たる部分)を丸カッコで囲んでみな
0166nobodyさん
2006/05/25(木) 22:31:27ID:???$basetext = 'ももも <title>hoge</title> ももも';
preg_match('/<title>([^<>]+)<\/title>/i', $basetext, $matches);
$key = $matches[1];
echo $key;
ということだな。
0167nobodyさん
2006/05/25(木) 22:40:53ID:???全くもーお前らは。
0169nobodyさん
2006/05/25(木) 22:46:57ID:???例えばだ。
弟に「カケ算の7の段を教えてー」と言われたとする。
しかも手には算数の教科書。もちろん中には九九の一覧表がある。
そんな状態でワザワザ弟に付きあってやる必要は感じないだろ?
コッチが教えた事が弟の次に繋がるのであれば話は別だが。
0170nobodyさん
2006/05/25(木) 22:50:44ID:???Cookie使えないケータイってまだ存在するの?
少なくとも、auとtu-kaの全機種はCookie対応だよ。
(ゲートウェイ側で対応しているのでどんなに古い機種でも対応している。)
たぶんDoCoMoやWILLCOMも原則Cookie対応だと思うけど。
0171170
2006/05/25(木) 22:52:57ID:???Flash未対応、JavaScript未対応の環境は数%存在するが、Cookie未対応の環境は殆ど無い。
URIにセッションIDを含めると、履歴に残ったり、URL共有サービスやブラウザツールバー作成元、
アドウェア製作元に送信されたり、Referarで残ったり、IEのバグで関係無いページにRefererとして
送信されたりと色々セキュリティ上の問題がおこる。
0173nobodyさん
2006/05/25(木) 23:04:46ID:???WILLCOMでネットしてる人はCookie対応として良いけど、
DoCoMoやVodafoneはどうなのだろう?>携帯に詳しい方
0174nobodyさん
2006/05/25(木) 23:21:18ID:???> Flash未対応、JavaScript未対応の環境は数%存在するが、Cookie未対応の環境は殆ど無い。
よくこんな大嘘を言えるものだ・・・。逆に感動したw
0175nobodyさん
2006/05/25(木) 23:29:43ID:???自分のサイトのアクセスログでもそんな感じになってるよ
JS有効が94%だけどCookie有効は97%もある
広告やポップアップがうざかったりセキュリティホールが心配だったりで
JS切る人はまだまだいるね
0179170
2006/05/25(木) 23:50:54ID:???そうなんでしたか。
Cookieが使えないとなると、個体識別番号やBASIC認証で管理するぐらいしか無いですね。
auはEZ番号(サブスクライバID)を全てのサイトに対して出力するので、
かなりのプライバシー上の問題があるのでそっちよりはましかもしれませんが・・・。
(一応、最近になって無効化する設定ができるようになったけど、無効にすると公式サイトや通信機能付きアプリや
EZチャンネルなどがつかえなくなり切り替えも面倒で現実的でない。ドメイン毎の切り替えや公式サイトのみへの送信、
DoCoMoのように毎回確認画面がでるようにできればいいんだけど。)
> たぶんDoCoMoやWILLCOMも原則Cookie対応だと思うけど。
これは違ったみたいですね
すいません
0180nobodyさん
2006/05/25(木) 23:56:35ID:i7rXqHyW----------------------------
このようにコンマで区切られたログファイルがあるとします。
fopenで開いてexplodeで配列にすることはできました。
'$filename'には ファイル名 の値が代入されています(例えば 'hoge.html')。
このログファイルからファイル名($filename)を検索して、対になっている「文書の概要」を変数に代入するにはどうしたらできるのでしょうか?
0182nobodyさん
2006/05/26(金) 00:00:00ID:???EZ番号がサイトに伝わって何かマズイ事でも?
EZ番号からプライバシーに関わる情報取得など、
一般のサイト運営者にはまず無理でしょう。
で、BASIC認証をどうやってセッション管理に利用すると?
0184nobodyさん
2006/05/26(金) 00:05:15ID:???ログファイルのサイズが小さいなら
while($line = fgets($fp)) {
list($filename, $text) = explode(",", rtrim($line));
$file[$filename] = $text;
}
とファイル名をキーにした連想配列に丸ごと格納してしまって
$text = $file[$filename];
とやって概要を取り出すのが手っ取り早い。
0185nobodyさん
2006/05/26(金) 00:13:48ID:ZiAJSuMJクエリ実行関数として、sybase_query(), sybase_unbuffered_query()の2つありますが、
(unbufferedの方はsybase-ctライブラリを使用)
この2つの違いというのは、
sybase_query()
→クエリ発行し結果セット全体をメモリ上に取得する
(大きい結果の場合リソースを大きく消費する)
sybase_unbuffered_query()
→クエリ発行した結果セットに対する最初のローのポインタを取得する
という理解であってますでしょうか。
perlのDBIなんかだと元々unbufferedな動作な用ですねん
0186nobodyさん
2006/05/26(金) 00:23:12ID:???0187nobodyさん
2006/05/26(金) 00:34:14ID:???0188nobodyさん
2006/05/26(金) 00:49:58ID:???十分問題がある。
例えば、どっかの懸賞サイトに個人情報を入れたとする
その情報がワンクリ詐欺や架空請求業者に回ると、
Eメール(Cメール)で送られてきたアドレス(?での引数は無し)にアクセスしてサイトを観覧しただけで、
EZ番号と関連付けられたDBから情報を取得し、電話や郵便での請求が来たりするよ。
あと画像広告(img要素での呼び出し)を配信している広告代理店は、ユーザがどういうサイトを観覧しているかとかを全部把握できるしな。
Cookieでさえプライバシーの問題があって、サードパティ製を拒否したりするのが普通になってきているが、
EZ番号は全てのサイトに対して同じIDが利用され、更にユーザが変更することすらできない。(機種変更しても変わらない。一回解約すれば変わるが)
0189nobodyさん
2006/05/26(金) 02:24:31ID:???なんかそれってEZ番号とか関係なしに
入力した個人情報が業者に回った時点で請求来ると思うんだけど
読み間違えてる?
漏れた情報をDBしてる業者があって
そこと提携してる業者のサイトにアクセスしたときそうなるってこと?
業者の運営方法とか詳しく知らないんだけど
提携してるんならDBまんまよこせよって感じだけど。
0190nobodyさん
2006/05/26(金) 02:35:31ID:???この手の業者は互いにメールや個人情報を売買しあってるけど
それ自体が商売だから当然内容に見合った価格設定になる。
提携といっても全情報を丸ごと交換するなんてことは普通はしない。
0191188
2006/05/26(金) 02:35:41ID:???明らかにEZ番号と関連付けられて請求が来ることがある。
例えば、3ヶ月前に懸賞サイトで個人情報を入力。
そして、ケータイのアダルトサイトを観覧(例えば、おまんこ天国というサイトだとする)
おまんこ天国のサイトを観覧しただけで、そこにメールを送ったり電話をかけたりはしてないんだから、
EZ番号以外の識別情報はおまんこ天国には伝わっていないはず。(IPアドレスやUserAgentなどの端末を識別できない情報は伝わっているが)
そして、その翌日ぐらいに、おまんこ天国というサイト名と使用日時などが明記されたメールや請求電話が来る。
つまり、EZ番号と個人情報を関連付けたDBがそういった業界で売買されてたりする。
DBそのまんま貰ってその住所に請求送ったって「身に覚えの無い請求」と扱われて放置される可能性が高いから、
ユーザがアクセスしたサイトと関連付けることは戦略として有効。
ちなみに、固定IPアドレスのプロバイダでも同じことが言える。
例えばどっかの会員サイトから登録時のログが漏洩して、Winnyに流れたとする。
そしたら、掲示板とかで第三者がIPアドレスを取得(ソースに表示される掲示板とかfusianasanとか)すればそこから住所などが特定できちゃうわけよ。
ただし、固定IPアドレスのプロバイダは全体からすれば少ないので、PCではそのDBを使った不当請求はまだ無いに等しいみたい。
0192nobodyさん
2006/05/26(金) 02:36:46ID:???無差別にはやんないもんなのかな。
0193nobodyさん
2006/05/26(金) 02:54:07ID:???無差別にやるとこ(いわゆる架空請求業者)もあるよ。
でもそれは労力に比べて命中率が低いんで、脅し専門の部署持ってる会社じゃなきゃやんない。
多くの裏業者では、
→あらかじめ個人情報を入手
→その個人ごとに一意のURLを記載した広告メールを配信
→アクセスした時点で請求開始
→全然入力した覚えの無い個人情報を使って「うちのサイトであなたが登録されてますから。その証拠に〜」と
個人情報を使ってあたかも法的に根拠があるような物言いで「訴訟も覚悟してください」と脅す
って感じ。
アクセスした証拠とか無いと警察を黙らせることができないんだわ。逆に言うとそれさえあれば警察も不問。
0194nobodyさん
2006/05/26(金) 02:58:56ID:mmVqr71r$line = fgets ($fp, 1024);
echo $line;
}
こうやっても内容が出力されないのですが、何か原因として考えられる点はありますでしょうか?
ファイルの内容はごく普通のテキストで一行です。
0195nobodyさん
2006/05/26(金) 02:59:45ID:???携帯の個体識別はソレを買ったときからずーっと一緒だからねぇ。
0198nobodyさん
2006/05/26(金) 03:02:22ID:???MAC OS X ver 10.3.9 に入ってるPHPを使って、
SQLiteを学ぼうと、SQLite ManagerをDLしてDocuments配下に
コピーしたんですが、次のエラーが出てうまく動作しないのです。
________
Error :
The SQLite extension can't be loaded.
________
どうしたら、うまく動作させられるんでしょうか。
0200nobodyさん
2006/05/26(金) 03:12:53ID:???0202nobodyさん
2006/05/26(金) 03:15:17ID:???SQLiteってコピーしただけじゃ動かんのじゃないかな。
http://www.php.net/manual/ja/ref.sqlite.php
> PEARインストーラで pear install sqlite を実行して下さい。
0204nobodyさん
2006/05/26(金) 04:10:16ID:XdlBZLhPブラウザに「印刷」というボタンをつくって、
それをクリックするとサーバ上のファイルを
サーバのあるLAN内のプリンタで印刷を開始する
ということは可能ですか?
具体的に今やりたいのはPHPとMySQLを使って
帳簿をTeXで書いて、PHPでプロンプトの命令を送り
コンパイルしてDVIをつくり、その印刷をDVIウエアからでなく
ブラウザのボタンで印刷を実行したいのです。
DVIファイル作成まではできました。
サーバはwindowsサーバを使っています。
0205nobodyさん
2006/05/26(金) 04:24:13ID:???サーバー側で印刷するだけなら、submitクリックで呼び出されるPHPなりのプログラムから
system()などのコマンド実行関数を使って印刷用プログラム(コマンドラインプログラムが望ましい)を実行するだけだよ。
WindowsでのDVI印刷なら ttp://akagi.ms.u-tokyo.ac.jp/dvitest.html この辺のを利用すればできんじゃない?
0206nobodyさん
2006/05/26(金) 04:33:19ID:???PHPのスレなんで、PHPの話をすると
COMを使うといける。
>サーバはwindowsサーバを使っています。
なんでしょ。
0207nobodyさん
2006/05/26(金) 08:30:12ID:???SQLite拡張モジュールがないといっている
モジュールを追加すればいい
Fedoracoreとかならrpmでできるんだけど
MACは知らないので追加方法は調べてね
0208nobodyさん
2006/05/26(金) 08:35:03ID:???でもmixiで携帯からログインできてる。
mixiはどうやって携帯ログイン(セッション)を実現してんだろう?
URLにSID付けて引き回してないみたいだしね。。。
0209nobodyさん
2006/05/26(金) 08:37:18ID:???0210nobodyさん
2006/05/26(金) 09:04:37ID:???0211nobodyさん
2006/05/26(金) 09:04:43ID:???あ、でも携帯は今のところJavascriptも無効だから、
hiddenの中身が漏れる危険性はないのかな??
0212211
2006/05/26(金) 09:06:34ID:???だって、携帯mixiでページ移動するとき、いちいちPOSTしてないもん。
普通のハイパーリンクで移動してるからhiddenは持ち越せないよなぁ。
0213211
2006/05/26(金) 09:09:41ID:???個体識別番号でやるにしても、どうやってセッションを管理するの?
最初のログイン時にサーバDB側に個体識別番号をぶち込むにしても、
結局、携帯端末側にセッションIDを渡さないと次の操作から
同一のクライアントかどうかを確認できないよね・・・
あ、それとも携帯って、サーバにアクセスするたびに個体識別番号を
勝手に送る仕様なのかな?? その辺あまり知らないんだけど。。。
0215nobodyさん
2006/05/26(金) 09:55:42ID:???mixiは常にGETでセッションIDを送っているよ。
ログインから12時間で強制破棄されるので、長いことサーフィンしてると強制ログアウトされる。
逆に、ログインしたあとのURLを保存しとけば、12時間は再接続してもログインしたままだよ。
0216nobodyさん
2006/05/26(金) 10:01:39ID:???0217215
2006/05/26(金) 10:18:19ID:???home.pl?ses=[数字のID]_[ランダムな16進数列]
こんな感じ。
PHSからなんで、携帯からだとまた違うかも知れない。
0218nobodyさん
2006/05/26(金) 10:46:36ID:???えっ、マジで!?
ってことは、たとえばmixi内の誰かが悪意を持ったURLを
日記とかコミュとかに貼って、そこに飛んだらアクセス解析で
リファラからセッションIDが漏れちゃうってことだよね。それヤバくない??
0219nobodyさん
2006/05/26(金) 10:52:00ID:???0221nobodyさん
2006/05/26(金) 11:01:46ID:???0222nobodyさん
2006/05/26(金) 11:04:37ID:???mixiのセキュリティは大丈夫なのか。。。
0223nobodyさん
2006/05/26(金) 11:09:36ID:???リファラ
ルファラ
レファラ
ロファラ
0224215
2006/05/26(金) 11:17:39ID:???日記を外部に置いている場合は、PCから見てくださいと言われ、アクセスできない。
でも、http://〜という文字列をリンクに変換するbookmarklet使ってる人は危険かも。
あと京ぽんには、bookmarkを読み込んだときにもリファラを送ってしまうというバグがあって、ちょっと怖かった。
0225nobodyさん
2006/05/26(金) 11:48:46ID:UfRxuQYjPEARのLogクラスを使おうと思うのですが
最初にインスタンスを作ったあとで
いろんな関数でログを出力したい場合は
そのインスタンスを各関数でglobal宣言するのでしょうか?
Logクラス使ってるかたがいらっしゃったらどのように使ってますか?
各関数でインスタンスを生成?
よろしくお願いします
0226nobodyさん
2006/05/26(金) 12:42:47ID:???なるほど、携帯でアクセスした場合はmixi外部へは飛べないようにしてあるわけか。
でも、最近の携帯って親切な(おせっかいな)機能があって、
メアドとかURLらしき文字列って勝手にリンクされちゃう場合あるよね。。。
0227nobodyさん
2006/05/26(金) 12:56:56ID:???普通そういう実装がしてると思うが
0229nobodyさん
2006/05/26(金) 15:23:51ID:???0231nobodyさん
2006/05/26(金) 17:36:54ID:???0234nobodyさん
2006/05/26(金) 19:13:34ID:???ある商品表に商品データを追加していきたいのですが、
たとえば「syohin_no=1000、syohin_name=ボールペン」を入れるときに、
「すでにsyohin_noに今回の番号(例では1000番)が存在する場合はupdate、
存在しない場合はinsert」
という処理をしたいと思います。
このような場合、任意のsyohin_noが存在するか否かを確かめるだけの関数などはありますでしょうか?
0235nobodyさん
2006/05/26(金) 19:17:43ID:???REPLACEステートメントが使えますよ。
まぁ確かめるだけならフツーにSELECT COUNT(*)を発行するだけ。
PHP関係ないけど。
0236nobodyさん
2006/05/26(金) 19:29:25ID:???やっぱ流れ的にはこんな感じでしょ。
$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);
0237nobodyさん
2006/05/26(金) 19:36:02ID:???0238236
2006/05/26(金) 19:47:57ID:???COUNT(*) を syohin_no とかフィールド名に置換してくれ
0239nobodyさん
2006/05/26(金) 20:29:46ID:???さっきからこれのせいでかれこれ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
0240nobodyさん
2006/05/26(金) 20:31:43ID:???誤:$TEST_READ = @file("http://hoge.com/");
正:$TEST_READ = file("http://hoge.com/");
後、背低は設定のタイプミスです。スマソ。
0241nobodyさん
2006/05/26(金) 20:39:26ID:???HTTPならHEADリクエストを飛ばして200以外なら存在しないっていうのが
手っ取り早いんじゃないの?
0242nobodyさん
2006/05/26(金) 20:54:09ID:???期待通りbool(false)が返る。
PHP5.1.2(cli)/Win32
存在確認だけなら>>241の言うとおり
HEADでチェックするのが普通だと思う。
0243239
2006/05/26(金) 21:00:36ID:???んーとHEADリクエストを送ると言いますと具体的にどういう感じでしょうか;
apache_request_headers() の戻り値を調べるということでしょうか。
0244nobodyさん
2006/05/26(金) 21:18:14ID:???fsockopenを使う
HEADリクエストの意味が分かっていないならそれなりの文献を参照
質問内容からして基本的な知識が欠損している気もするが
>>239の上は404ページを取り込んでいるんじゃないのか?
下は当然の動作として(つかincludeの動作をよく理解していないでしょ?)
0245239
2006/05/26(金) 21:27:39ID:???なるほどfsockopenですか。
先ほどからphpManualのサイトを読んでまして何度か見た記憶が。。。
>下は当然の動作として(つかincludeの動作をよく理解していないでしょ?)
ttp://php.s3.to/man/function.include.html
の例16-9にある感じで動作することを期待して書いてみましたが根本的に間違ってたてことでしょうか。
当方php暦1年≦ 程度なもので的外れな質問スミマセン;
0246nobodyさん
2006/05/26(金) 21:41:16ID:???0247nobodyさん
2006/05/26(金) 22:29:25ID:???なにこの逆ポーランド
0248nobodyさん
2006/05/26(金) 22:41:02ID:???0249nobodyさん
2006/05/26(金) 22:52:37ID:???マニュアル読んで出直して
PHP4
http://www.php.net/manual/ja/language.oop.php
PHP5
http://www.php.net/manual/ja/language.oop5.php
0250nobodyさん
2006/05/26(金) 22:55:46ID:???ありがとうございます。
やっぱりそうやって律儀に確認するしかないようですね。。。
なんかその作業がすごくムダに思えてきまして^^;
if_exist_mysql_record($sql)みたいな関数があったらいいのになぁ・・・
動作は、ある任意のSQLを投げて、レコードが存在すればTRUE、なければFALSEを返す。
つまり、特定の条件のレコードが存在するかどうかだけを確認する関数。
で、PHP側でその真偽値をifで分岐させて、updateまたはinsertのSQLを投げられたら
スッキリすると思いませんか?
0251nobodyさん
2006/05/26(金) 22:58:52ID:???自分でその関数作れば良いでしょ。
関数の中身は>>236だけど。
標準にあったとしても恐らくやることは一緒のはず。
0253nobodyさん
2006/05/26(金) 23:19:21ID:???0254239
2006/05/26(金) 23:23:14ID:???もう今日は諦めて寝ようかな・・・
とりあえず自分のスキルが足りてないことだけは把握できました><;
0255nobodyさん
2006/05/26(金) 23:25:24ID:???0256nobodyさん
2006/05/26(金) 23:33:04ID:???マニュアルのfsockopenのページを探してきてやったぞ。
ttp://jp.php.net/manual/ja/function.fsockopen.php
このページも参考になるかも。
ttp://www.arielworks.net/articles/2003/1220a
あと、curlを使うのも良いかもしれない。
0257nobodyさん
2006/05/26(金) 23:48:35ID:???そんなもん作っても
if_exist_mysql_record()した後に、そのレコードが
「まだある」ってことを誰が保証できるの?
>>234のようなパターンの処理は良くある話なので
MySQLに限らず色々なDBMSを使った場合にどうやってるのか良く情報を探してみな。
「LOCK TRANSACTION SELECT-FOR-UPDATE SELECT-TO-INSERT/UPDATE」
0258nobodyさん
2006/05/27(土) 00:59:31ID:XR56v2Etmktime()関数を使ったら、今日の日付より、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
すみません。誰か教えてください…
0260239
2006/05/27(土) 01:07:53ID:???サーバへの接続はできてもファイルが存在するかどうかを確認できない感じです。
とりあえずfsockopenで鯖の生存確認はできました。
そろそろ眠いカモ。
こういう時てよくセミコロン忘れたりするから困る。
0261nobodyさん
2006/05/27(土) 01:08:07ID:XR56v2Et月と日が逆でした。
マニュアルをキチンと見てなかったです。
すみません。
0262239
2006/05/27(土) 01:15:06ID:???一行目をGETじゃなくてHEADにしてパスを付け足せばよかったんですね。
スミマセン。数時間悩んでできたのでつい。。。
ありがとうございました。
0263nobodyさん
2006/05/27(土) 01:23:11ID:XR56v2Etありがとうございました。
0264198
2006/05/27(土) 03:48:08ID:???MAC OS X 10.3だとPHP5ではなく、PHP4のため
SOLiteが入ってなかったのでした。
丁度いい機会なので、あした10.4(Tiger)を購入してきます。
0265nobodyさん
2006/05/27(土) 04:25:14ID:???原因がわかりましたって・・・。思いっきりエラーメッセージに原因が書いてあるのだが。
それよりも、PHP4でもSQLiteは使えます。
0266nobodyさん
2006/05/27(土) 06:03:22ID:krAJ2Rr20269nobodyさん
2006/05/27(土) 08:54:13ID:???アップグレードならもうちょっと安いのかな?
0271nobodyさん
2006/05/27(土) 09:12:05ID:???この部分だけ<font>で色づけしたいのですがどのような方法が効率的でしょうか?
自分で書いてみたんですがうまくいかないとです(;´ω`)
mb_ereg_replace("[>>]+[<br />]","<font color=\"red\">\\0</font><br />",$msg);
0272nobodyさん
2006/05/27(土) 09:20:45ID:???ボーダ リファラ〇 クッキー〇
あう リファラ〇 クッキー〇
0273nobodyさん
2006/05/27(土) 09:21:57ID:???ホゲさんてだれだ?
とりあえず↓を見ることをオススメする
ttp://www.kt.rim.or.jp/~kbk/regex/regex.html#PHP
あと、こういう場合、文字列を囲むのは " より ' の方が見やすいべよ
0274271
2006/05/27(土) 09:29:13ID:???朝っぱらから即答していただき感謝です
>>ホゲさん
↑この部分だけを色づけしたいということでした^^;
正規表現ムズイとですね・・・
0275nobodyさん
2006/05/27(土) 09:50:04ID:???http://pc8.2ch.net/test/read.cgi/tech/1131028296/
0276nobodyさん
2006/05/27(土) 09:59:00ID:???アップされた画像の「所有者」が「Apache」になっており、
FFFTPでそのファイルのパーミッションを変更しようとしても出来ません。
(スクリプト内からのchmodやchownも効きません)
これはどうしてなのでしょうか? また、どうしたらパーミッションを変更できるのでしょうか。
0277nobodyさん
2006/05/27(土) 10:02:01ID:???Apacheがアップロードしたから
ディレクトリのパーミッションや所有者も調べてみたら?
SELinuxとか使ってる?
0278nobodyさん
2006/05/27(土) 10:07:47ID:???ディレクトリのパーミッションは「707」で、
所有者はFTPアカウントとして設定したユーザです。
SELinuxは使ってるかどうか分かりません。OSはFC2です。
0279nobodyさん
2006/05/27(土) 10:20:44ID:???シェルでsu apacheとかしてもchownできない?
というかなんで所有権の変更がしたいんだ
所有者apacheでなんか不都合とかある?
0280276
2006/05/27(土) 10:26:07ID:???FFFTPで接続してみると所有者が「Apache」になっており、
しかもパーミッション変更は出来ないのに削除は可能だったりして、混乱しました。
ですが、もう一度スクリプト内からunlinkで削除してみたらなぜか出来ました。
お騒がせしてすみませんでした・・・。
(ただ、UNIXの知識があまり無いので、なぜファイルの所有者がApacheになるのか、
なぜApache所有のファイルをFFFTPで属性変更できないのか、なぜ削除は可能なのか…の
仕組みが全く理解できていません)
0281nobodyさん
2006/05/27(土) 10:30:52ID:???ないなら構わないのだが、それが目的なら悲しい目にあうぞ。
0282nobodyさん
2006/05/27(土) 11:32:29ID:???>なぜファイルの所有者がApacheになるのか、
スクリプトはApacheというユーザがコピーしてきてるから
>なぜApache所有のファイルをFFFTPで属性変更できないのか
キミのファイルを誰かが勝手に消したら困るでしょ?
それと同じで今回はApacheさんのファイルをキミが変更しようとしてたんだよ。
>なぜ削除は可能なのか…
削除はできなかったんでしょ?
FTPでアップロードしたファイルはキミのファイル
キミのファイルはキミが自由に変更・削除できる
WebブラウザからPHP等のスクリプトでアップロードしたファイルはApacheさんのファイル
Apacheさんのファイルはキミが変更することはできない
オレもUNIXのこと知ってる方じゃないが、Webプログラミングするならこれくらいは知っとこう
間違ってたらフォローよろ
0283nobodyさん
2006/05/27(土) 12:14:54ID:???0284276
2006/05/27(土) 12:19:08ID:???>削除はできなかったんでしょ?
いえ、FFFTPでパーミッション変更は不可(変更操作しても反映されない)でしたが、
なぜか削除は出来ました。
だからなおさら混乱しております。。。
0285nobodyさん
2006/05/27(土) 12:20:13ID:???0287 ◆.mm8HzTdfY
2006/05/27(土) 12:55:19ID:l68IManM0288 ◆.mm8HzTdfY
2006/05/27(土) 12:57:26ID:l68IManMheader()関連で質問です。
PATH_INFOで受け取ったパスにあるデータファイルの更新時刻をgetlastmod()で調べ、
次にUAから送られてきたIf-Modified-Sinceの時刻と比較して、
呼び出すべきファイルが更新されていれば改めてページデータを送信・交信されてなければNot-Modifiedを送って
キャッシュから表示させるようにしようとしていますが、躓いています。
データファイルの更新時刻の取得とUAから送られてくるIf-Modified-Sinceの取得は上手く行き、
両方をUNIXタイムスタンプにして比較するところまでは出来たのですが、
データが更新されている場合にもNot-Modifiedを送信してしまいます。
header()関数のマニュアルを読んでみたところ、「HTTPで始まるヘッダは正確な情報を返さなければならない」とあって、
おそらく処理を行うスクリプト本体が更新されていない為に、常にNot-Modifiedが送信されているようです。
何とかして「データ処理のスクリプトは更新されていないがデータファイルが更新されている状態」で
Not-Modifiedの送信を行わないようにしたいのですが、可能でしょうか?
解決策を知っている人がいれば教えてください。
0289nobodyさん
2006/05/27(土) 12:58:16ID:Yd7sUiu8mysqlとの連携なのですが、本を参考にしショッピングカートを作っています。
ソースを丸写ししたのにも関わらず訳の分からないエラーに悩まされています。
よく見ると本のソースにもかなり間違いがあるようで、調べても解決できませんでした。
-----------------------------------------
$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文には有効のようですし、何か別の問題等あるのでしょうか。
データベースには接続できています。
何かアドバイスもらえたらな、と思います。よろしくお願いします。
0290 ◆.mm8HzTdfY
2006/05/27(土) 13:07:44ID:l68IManMクエリーを送った時点でエラーが出てると、当然その後は続かないので。
0292271
2006/05/27(土) 13:09:53ID:???$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]入れても無理ですた・・
ご教授お願いします
0293nobodyさん
2006/05/27(土) 13:11:43ID:???0294nobodyさん
2006/05/27(土) 13:28:53ID:???多分、phpinfo自体を使えなくするか、
またはちょこちょことCソースをいじれば出来なくもない。
ちょっと見た感じでは、ext/standards/info.c の920行目くらい。
>>284
たぶん、そのディレクトリの実行権限が君のユーザにあったから、
削除できたんだと思うよ。
0296nobodyさん
2006/05/27(土) 13:48:57ID:9//qB9Iwソースは以下のように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の問題でしょうか?
どなたかご教授をお願いします。
0297nobodyさん
2006/05/27(土) 13:56:48ID:???0298nobodyさん
2006/05/27(土) 13:59:22ID:???C:/Program Files/xampp/security/htpasswd.webdav
にあるはずのパスワードファイルが開けないってエラーですよ。
webdavの設定の問題でしょ
0299nobodyさん
2006/05/27(土) 14:03:30ID:???$sqlをprintして、正しいかどうか調べてみた?
あとは、2種類のDBに対しsql_connectしてて、違う方にクエリー送ってるとか。
0301nobodyさん
2006/05/27(土) 14:12:08ID:???\(\*\^\_\^\*)
0303nobodyさん
2006/05/27(土) 14:32:11ID:???スクリプトが更新されてないからといって、勝手にNot-Modifiedが送信されることはない。
ただ、送るデータに変化がない場合には、通信データを減らすために、勝手にNot-Modifiedを送るサーバがある。
(何を基準に判断してるのかは分からないけど、ETagか何かかな?)
>>302
eregって最短マッチの"?"使えるの?
マニュアルやmanみても、あんまり詳しく書いてないもんで。
0304nobodyさん
2006/05/27(土) 14:41:28ID:9//qB9Iw別のPCに同じ設定でインストールしているapacheでは
問題なく動作するのですが、
一方ではエラーになっています。
httpd.confの設定は変更していません。
0305289
2006/05/27(土) 14:54:49ID:Yd7sUiu8ありがとうございます。dbは3つありリレーションさせています。
二つのdbにコネクトしている場合クエリーも両方に送らなくてはいけないんでしょうか。
とりあえず、教えていただいた方法で確かめてみようと思います。
0306271
2006/05/27(土) 15:08:30ID:???ありがとうごさいました(><)
もしよろしければ参考にしたサイトや書籍など教えていただけますか?
>>302さんのはできなかったとです
0307nobodyさん
2006/05/27(土) 15:35:40ID:???0308nobodyさん
2006/05/27(土) 15:59:45ID:???0309nobodyさん
2006/05/27(土) 16:28:50ID:???0310296
2006/05/27(土) 17:16:51ID:9//qB9Iw何か特別な設定が必要?
初めてsubmitを使ったとき、
ユーザー名とパスワードを求められたのですが・・・
0311nobodyさん
2006/05/27(土) 17:44:01ID:???simplexml_read_file関数で読み込んだSimpleXMLElementオブジェクトのユニークでない特定の要素の先頭にSimpleXMLElementオブジェクトを追加するにはどうしたらいいのでしょうか。
通常の配列みたくarray_unshift関数で追加しようとしたのですが配列じゃないと怒られてしまいました。
0312nobodyさん
2006/05/27(土) 18:04:39ID:Bnrg0iLLPHP本体の上に
Warning: Missing argument 3 for chrdat() in /home/sites/lolipop.jp/users/○○○ on line 308
と表示されています。
どうすればこの表示を消すこと、この文はなにを意味しているのでしょうか?
どなたかよろしくおねがいします。
0313nobodyさん
2006/05/27(土) 18:12:20ID:???エラーメッセージのまんま
/home/sites/lolipop.jp/users/○○○ on line 308行目で
chrdatを呼んでいるとこで引数が関数の引数とあっていない
レス有り難うございます。
どうにも上手く行かないので、躓いている所を短いスクリプトにしてみました。
http://www.uploda.org/uporg401728.zip.html
これです。
やろうとしていることは
1.PHPからデータファイルを読む
2.HTTPリクエストにIf-Modified-Sinceがあれば
データファイルのタイムスタンプと比較して・・・
2-1.データファイルの方が新しければ内容を送信
2-2.そうでなければNot-Modifiedを送信
です。
上のスクリプトは、何故かスクリプト本体が更新されていない場合にNot-Modifiedを送信していて、
データファイルが更新されていてもUAにデータをおくれない状態です。
どなたか解決方法やヒントがあれば教えてください。
レス有り難うございます。
レンタルサーバなのですが、どの辺を見れば分かるでしょうか?
0320303
2006/05/27(土) 20:11:26ID:???すまん。的外れな303は的外れだった。
getlastmod()は現在のページの更新時刻を得るもので、
違うファイルのを知りたいときはfilemtime()を使う。
0321271
2006/05/27(土) 20:11:38ID:???有り難うございます!!
いまマニュアル見てみたらint getlastmod (void)と書いてあり、この半日の苦労はなんだったんだとか思いました・・・。
助かりましたー。
テンパると視野が狭くなってダメですねー。
0325nobodyさん
2006/05/27(土) 20:48:38ID:???<?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));
?>
0326nobodyさん
2006/05/27(土) 20:53:29ID:???{
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のような動作をさせるにはどうしたらいいのでしょうか。
0327nobodyさん
2006/05/27(土) 20:57:59ID:???最新バージョンをダウンロードしてきてphp.iniを今までと同じ値に編集ですか?
{
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);
取りあえずこうしたら出来ましたよ。
これで良いのか分からないですが。
0331nobodyさん
2006/05/27(土) 22:33:03ID:???設定ファイルが大きな影響があるほど変わった記憶がないので
上書きで大丈夫だと思うけど、念のためdiffぐらい取ったら?手間でもないし。
0332266
2006/05/27(土) 22:53:42ID:krAJ2Rr2すみません、書き方が悪かったみたいです。
仮にadminというフォルダにindex.phpというファイルを置いたとして
ブラウザからアクセスする時に
https://example.com/admin/ → ○
http://example.com/admin/ → ×
としたいのです。
0333327
2006/05/27(土) 22:54:17ID:???OSはWin2000sp4です。ちなみにPHPはXAMPP1.4.13でインストールしました。
Apacheは2.0.53のようです。
とりあえず設定ファイルのdiffとって様子見てから上書きしてみます。
WIndows+Apache2+PHP5+MySQLの環境は、別個にインストールして設定ファイルを弄るのでも
そんなに手間じゃないですよ。
設定ファイルを触るのが勉強になったりもするから、手作業でやるのもお勧めです。
0339nobodyさん
2006/05/28(日) 03:26:32ID:???/index.php
で
header("Location: http://www.google.com/");
とした場合
/
でアクセスした場合に "HTTP/1.1 200 OK" が返されて
リダイレクトされません。
/index.php にアクセスした場合の動作は問題ありません。
両方でリダイレクトできる良い方法ないでしょうか?
0340nobodyさん
2006/05/28(日) 03:30:30ID:???単にindex.phpにアクセスできてないだけじゃないの?
DirectoryIndexの設定はどーなってんのよ
0341nobodyさん
2006/05/28(日) 03:34:34ID:???スレ違い
というか、 http://〜/ にアクセスした場合にindex.phpが処理されてるか見れ
処理されてればこのスレでOK
処理されてなければWebサーバ(Apache)の管轄
0342nobodyさん
2006/05/28(日) 03:44:34ID:zxjIhcD+<?php
mail(
0343↑ちゃんと書いたのに途中で途切れましたね。
2006/05/28(日) 03:45:19ID: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で実行しているのですけど、どうすればよいのでしょうか?
0344339
2006/05/28(日) 03:46:11ID:???書き忘れましたがサーバーはxrea(apache1.3.34 php4.4.2)です。
0345339
2006/05/28(日) 04:02:35ID:???xreaの広告関係の mod_rewrite が原因のようでした。
LayoutIgnoreURI /index.php
としてやると、"/" でも "/index.php" でも期待通りの動作をしました。
0346nobodyさん
2006/05/28(日) 04:02:53ID:???1.マニュアルの下のほう「additional_headers(オプション)」の部分をよく読む
2.設定ファイルでは「;」があるとコメントとみなされる
0348nobodyさん
2006/05/28(日) 11:13:54ID:zxjIhcD+mail(
0349nobodyさん
2006/05/28(日) 11:14:42ID:zxjIhcD+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
とエラーが返ってきました。
もうダメポです。
教えてください。
0350349
2006/05/28(日) 11:34:05ID:zxjIhcD+no valueとなっているのですけど、これは何か関係ありますか?
0351nobodyさん
2006/05/28(日) 11:38:04ID:???メールの送信自体はSMTPサーバが行い、PHPはSMTPサーバに送ってと命令を送るだけ。
SMTP=localhostになっているので、そのコンピュータにSMTPサーバを入れないと送信できないよ。
もしどこかのプロバイダに契約してるなら、そこのSMTPサーバ指定して送れると思う。
ただ最近はセキュリティが厳しいので、sendmail_fromをプロバイダから渡されたメールアドレスにする、
直前に受信するとかしないと送れないことが多いよ。
0352nobodyさん
2006/05/28(日) 11:40:01ID:???>>343によるとキミんちの設定では
SMTP = localhost
smtp_port = 25
自分のパソコンにSMTPサーバーがインストールされていることになってが
実際にはそんなものはないので送信できないよ、と文句言われてる。
掲示板上で手順を1から説明するのは厳しいので「Windows PHP メール送信」辺りでググるといいかと。
>>350
「[email protected]」なんて設定にしたことないのでよく分からん。
一目見りゃわかると思うんだがこれはサンプルのメアドであって、そんなの設定しちゃいかんよ。
0353nobodyさん
2006/05/28(日) 12:59:33ID:???0354nobodyさん
2006/05/28(日) 17:54:01ID:???くだらねぇ質問
%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
エンコードされていない物 エンコードされていても文字コードが違うもの
これらを内部で一定にして扱う為にはどのようにしたら良いのでしょうか?
0355nobodyさん
2006/05/28(日) 17:56:25ID:???エラーメッセージ読め、で済みそうなもんなのに
(実際エラーメッセージに書いてあるし)
英語とはいえ中卒レベルで読めると思うんだが
0356nobodyさん
2006/05/28(日) 18:00:51ID:???配布してるPHPで書かれたプログラムを、改造して利用するのはまずいですか?
利用と言うのは個人で利用するだけで、再配布するって意味じゃありません。
配布元にはその辺に関して何も書いてませんでした。
一般的にどうなのか教えてもらえると嬉しいです。
0357nobodyさん
2006/05/28(日) 18:08:00ID:???mb_convert_encoding()
rawurlencode()
>>355
あ、英語が義務教育になったのはいつからじゃ?
you is a big fool man.
こう?
0358nobodyさん
2006/05/28(日) 18:21:30ID:???入ってくる文字、出力する文字それぞれの文字エンコーディングを常に意識してスクリプトを書いていれば悩む必要は無いんでは?
全部mbstring.internal_encoding更にはmbstring.script_encodingに合わせておけばいいっしょ。
>>356
その人に聞くしかあるめえ
0359nobodyさん
2006/05/28(日) 18:28:47ID:???知っていてしかるべき(と世間一般では思われている)
知識レベルって意味だろ。
義務で教育されても出来ないやつは出来ないんだし。
ただ「英語だと類推して英語の辞書を引く」のは
0360nobodyさん
2006/05/28(日) 18:38:52ID:???0361nobodyさん
2006/05/28(日) 18:41:21ID:???session.save_pathをデフォルトの./tmpから、/home/hogehoge.com/public_html/ses_dir
に変更したのですが、このディレクトリでは自動でガベージコレクションってされないですよね?
ログアウト処理せずにブラウザ閉じるとセッション情報のファイルが値を保持したまま残りっぱなし…
ガベージコレクションに類似したスクリプトを自動実行するような対策をするしかないですか?
0362nobodyさん
2006/05/28(日) 18:58:06ID:???0363361
2006/05/28(日) 19:03:38ID:???セッション保持を短く・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より大きい場合、ガーベッジコレクションは行われません」
ってあったのでできないと思いこんでましたが…これはどういう意味なんだろう…
板汚し失礼しました。もう少し試験を繰り返してみます。
0364nobodyさん
2006/05/28(日) 19:25:56ID:???コードが正常に記述されていればちゃんと動くものの、
エラーがある場合にエラーメッセージを返さず、白紙状態に
なってしまいました。
いくつかのソースを書いてみたものの、結果は同じでした。
この状況について御存知の方、いらしたらお知恵を貸してくださいませんか。
なお、PHP5はentropy-phpのインストーラでインストールしました。
0365nobodyさん
2006/05/28(日) 19:27:54ID:???日本語の方にはあるけど
ttp://www.php.net/manual/ja/ref.session.php
英語の方には書いてないね。
ttp://www.php.net/manual/en/ref.session.php
CVSで見ると英語の方はRevision 1.13 (Wed May 14 14:19:03 2003 UTC (3 years ago))で修正されてるから、
ずっと翻訳されないままなんだろうね。
>>364
この辺りを自分の希望通りに設定しておいで。
ttp://www.php.net/manual/ja/ref.errorfunc.php
0366nobodyさん
2006/05/28(日) 19:43:53ID:???一般的な基準、だと再配布なしなら、
軽度改造は特に問題なし、
かなり派手に改造を加える場合は著作権表示の横に改造した旨を併記、
ってくらいじゃないかと思う。
(大幅に改造したのが他所で動いてるとたまに本家に質問が飛んできて困るのよね)
全然気にしない人も多いから聞いてみた方がいいと思うけどね。
0370nobodyさん
2006/05/28(日) 22:11:08ID:???他人の著作物を許諾を得ずにうpる人は、
一般的に良い人と見なされ神。
0371nobodyさん
2006/05/28(日) 22:24:13ID:???>>356みたいにスレ違いなことを平気でしてくるんだから
あとで問題が起こったら>>366のせいだとか言われるかもしれないぞ。
まぁ俺なら間違いなく配布元に聞けとしか言わないけど。
他人のファイルをどうして俺たちが判断できようか。
0372nobodyさん
2006/05/28(日) 22:41:29ID:???多くは>>366みたいな回答が返ってくることが多いな。
神経質な人ならちゃんと明記するかライセンス形態を書いてるだろうし。
ただ>>356が根本的に無知で空気も読めないバカなだけに
そういうやつに安易に答えるもんじゃない、って意見も分かる。
そういうやつだと作者が暗に要求してるような事柄も
「明記されてないから分かりません」とか言って無視しそう。
0373nobodyさん
2006/05/28(日) 22:46:50ID:???0374nobodyさん
2006/05/29(月) 00:12:39ID:???0375nobodyさん
2006/05/29(月) 00:16:07ID:VLMle6lTDOSプロンプトからphpを実行して、そこで日本語を表示しようとすると文字化けします。
<?php print('2ch'); ?>
どっかでキャッシュ→自動変換されているんだろうと思ってmb_convert_encodingやら、
ob_start();を筆頭に書いてキャッシュしないようにやってみましたが変化がありません。
なぜ化けるのか教えてください。
PHP 5.0.3、winxp、文字コードはsjisで書いてます。
0377375
2006/05/29(月) 01:07:44ID:???eucになってたんで = SJISに変更しましたが一切変化なし…。
0378nobodyさん
2006/05/29(月) 01:24:31ID:???0379375
2006/05/29(月) 01:39:26ID:???んが、今度はeucで書いたapache通して使うほうが文字化けしたんで、
両方コメントアウトしたら成功しますた。
…今後どこに影響でるんだかやや心配ですがありがとうございますた!
0380nobodyさん
2006/05/29(月) 02:32:02ID:???・プロンプトで「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なんだから、余計な自動変換の設定はいらない。)
0382nobodyさん
2006/05/29(月) 03:48:31ID:???他に
・UTF-8で格納してあるSQLite
・バイナリをアップロードするform
・EUC-KRなRSS
とかありそうなんで、ざっくり割愛。
0383nobodyさん
2006/05/29(月) 09:25:36ID:???prepareすると、エラーを返さずページリダイレクトされるのは
なんで?
0385nobodyさん
2006/05/29(月) 14:28:37ID:???PHPは4の初期頃までしかやっていなく、今は5になってかなりかわったみたいですね。
フォームからの投稿データは、
$name = $_POST["name"];
とかってやってていいんでしょうヵ?
0386nobodyさん
2006/05/29(月) 15:28:00ID:???0387nobodyさん
2006/05/29(月) 15:32:38ID:???0388nobodyさん
2006/05/29(月) 16:08:29ID:???{
return ">>" .$res387. "<br>\nそれはありえません。鏡を見てから言ってください。";
}
0389nobodyさん
2006/05/29(月) 16:31:20ID:???$res[387]とかのほうがいいよ。
配列は覚えた方がいいからね。
0390nobodyさん
2006/05/29(月) 17:03:53ID:???そういうときには番号つけずに、
$res とだけやるのが普通だよ。ばっかじゃないの?
0391nobodyさん
2006/05/29(月) 17:05:18ID:8hg7YXeLファイルの書き込み処理として
$fp = fopen($logfile,"a");
set_file_buffer($fp, 0);
flock($fp, LOCK_EX);
fputs($fp, $data);
fclose($fp);
とあるのですが、これは一般的に見て安全な書き込み方法なのでしょうか?
ちなみにこれはアクセス解析のlog.phpの最後の部分です。
読み込み処理は file("〜") とするだけでロックなどしなくても大丈夫でしょうか?
宜しくお願いします。
0393nobodyさん
2006/05/29(月) 17:32:05ID:???テキストエリアのテキストをフォームでPHPモジュールに送信して
それをプレビューとしてHTMLとして出力すると10%くらいの確率で文字化けしてしまいます。
文字化けしてる時はSJISで出力されてしまってるみたいです。
プログラムは全てEUC−JPで作成してます。
本を参考にして
送信先のプログラムの先頭でmb_http_output('EUC-JP');としてみましたがダメでした。
そのすぐ後にob_start('mb_output_handler');も追加してみましたが文字化けが酷くなりました・・
・。
たぶん、レンタルサーバを使ってる他の人がSJISを使うように設定を変更してその影響を受けると推
測したんですが、 対処の仕方がわかりません。
原因とか対策が分かる方、よろしくお願いします。
0394390
2006/05/29(月) 17:37:10ID:8hg7YXeL逆に聞きますと、どういうスクリプトで使用すると危険なのでしょうか?
このファイルの入出力の部分を流用とかはあまりしない方がいいのでしょうか・・。
0395nobodyさん
2006/05/29(月) 17:40:38ID:???METAタグの文字コード指定か、出力前に
header("Content-Type: text/html charset=euc-jp");
としてみてはどうでしょうか
0396nobodyさん
2006/05/29(月) 17:41:37ID:???ログファイルを一旦全部クリアして書き直すような
(特定のレコードの削除や、行頭へのレコード追加等)
処理の場合には、きちんとしたロック制御をしないとまずいです。
0397nobodyさん
2006/05/29(月) 17:45:47ID:???ログ読み込み時は fopen を r+ で開き次の行で flock をLOCK_EXでかけて、その後データを読み込み、
その読み込んだデータなどに基づき、書き込みデータを作成して、
ftruncateでファイルサイズを0にし、rewindで先頭に戻し、
fputsで書き込む。
このように、(読み込み→書き込み)までの一連が排他制御されてないといけません。
0398nobodyさん
2006/05/29(月) 17:50:51ID:???レスありがとうございます。
メタタグの指定はやってるんですけど、ブラウザの文字コード解釈ではなくて、
PHPが生成して返してくるHTML自体の文字コードが
全く同じリクエストを投げてもEUCだったりSJISだったりするんです。
なのでSJISで出力されると文字化けするんです。
たぶんPHPの方で勝手にEUCの文字列をSJISに変換して返してるんだと思うんですけど、
これを必ずEUCで出力するようにしたいんです。
これはレンタルサーバの仕様でしょうがないんでしょうか?
0399nobodyさん
2006/05/29(月) 17:59:14ID:???昔の古いテクニックで、
フォーム投稿データに hiddenで特定の漢字を入れるのと、
出力するhtml文に、コメントで特定の漢字を入れる、ってのがあったけどそれはどうかな?
0401軟式PHP
2006/05/29(月) 18:07:44ID:???>2chで最近評判が悪いレッツPHPにあるスクリプトに
ウケタ。そんな噂があるのか。
まぁ、あそこに置いてあったスクリプトで、ファイル処理で
$fp = fopen("aaa.txt","w");
flock( $fp, LOCK_EX );
っていうのがあったのがウケた。意味ないじゃーん。
0404390
2006/05/29(月) 18:40:04ID:???ありがとうございます!
例えば掲示板などのスクリプトでログの一部を変更して書き込むなどの時は
$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`)
0405390
2006/05/29(月) 18:41:21ID:???flock($fp, LOCK_UN); // ロックを解放する
fclose($fp);
でした。閉じた後に$fp使っても意味が無いですよね
0406nobodyさん
2006/05/29(月) 18:54:16ID:???私的にはそれでばっちり。
念を入れるなら flockの返り値などもチェックするにこしたことはないけど、
それで充分だとおもいまふ。
file()関数も便利だけど、
flock()がかかっている最中のファイルに対する挙動とかっていまいち不明なので、全体処理ロックの中でしか使わない。
0407nobodyさん
2006/05/29(月) 19:21:06ID:???flockで排他されている方は、処理が終わるまでジッと待っていてくれるもんでしょうか。
0408nobodyさん
2006/05/29(月) 19:46:30ID:???その前に名前390ってのは合ってるのか?
専ブラ使ってるとポップアップでレス抽出できるから、その辺も気を付けてくれ
0410nobodyさん
2006/05/29(月) 20:33:08ID:Bdw+FLsCどのような設定が必要ですか?
Apacheの設定でしょうか?
0411nobodyさん
2006/05/29(月) 20:47:50ID:???error_reporting(0)でエラー出力をなくせるが、
これに頼らずエラーの出ないスクリプトを書いてくれ。
0412nobodyさん
2006/05/29(月) 20:50:34ID:???display_errorsをOffにして、log_errorsをOnにする。
でもってerror_logにエラーログを記録するファイルを絶対パスで記述するのがオススメ。
まかり間違ってもerror_reportingを0にしてエラー自体を出さないようにすることは止めた方がいい。
0413nobodyさん
2006/05/29(月) 20:51:07ID:???<?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');
?>
0415nobodyさん
2006/05/29(月) 21:48:04ID: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 =
0416415
2006/05/29(月) 21:50:05ID:IjgGbccK$headers = "";
$headers .= "Content-Type: text/plain; charset=ISO-2022-JP\n";
$headers .= "Content-Transfer-Encoding: 7bit";
サーバApacheのデフォルトcharsetはnone、shift_jisどちらも試したが×
どこかの設定で文字コードが合わないのかもしれない。
わかる人いませんか?
0417nobodyさん
2006/05/29(月) 21:53:51ID:???none っておいおい。
AddDefaultCharset none は完全に間違っている。
AddDefaultCharset off が正しい。
0418nobodyさん
2006/05/29(月) 21:54:14ID:???その文字列が含まれるファイル名をリストアップする、
という感じの検索システムを作ろうと思っています。
そこで質問なのですが、
ディレクトリ関数やファイル関数を使ってひとつひとつ内容を調べていこうと思ってるんですけど
これはサーバーに対してかなり負荷をかけてしまうものなのでしょうか?
レンタルサーバーを借りて使っているので気になります。
0419415
2006/05/29(月) 21:55:03ID:IjgGbccK返答どもです。
offで文字化け回避できますか?
今試してみます。
0420nobodyさん
2006/05/29(月) 21:57:03ID:???いろいろ試しましたがうまくいきませんでした
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
とアクセスしたきた場合の処理でつまづいています。
0421415
2006/05/29(月) 21:59:42ID:IjgGbccKダメでした。
ほかに文字化け原因箇所ってありますか?
ぐぐって見ましたが、書いてませんでした。
0422415
2006/05/29(月) 22:03:37ID:IjgGbccKfunction _mailSend($_mode,$_date,$_name,$_detail,$_email,$_keitai){
// ヘッダ作成
$headers = "";
$headers .= "Content-Type: text/plain; charset=ISO-2022-JP\n";
$headers .= "Content-Transfer-Encoding: 7bit";
文字化けでこのソースが間違っているわけではないと思うの
ですが。どこかの設定(confファイル)が原因でなっている
と推測ですが。。考えられる原因箇所お願いします。
0423nobodyさん
2006/05/29(月) 22:23:51ID:???<?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くらい嫁やボケ');
?>
0424nobodyさん
2006/05/29(月) 22:36:18ID:???>>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 />';
}
0425nobodyさん
2006/05/29(月) 22:49:24ID:???前々から思っているんだが、fcloseの前にflockで明示的にロックを解除してんのに
その前でfflushを使っているスクリプトを(あるかも知れんが)見たことが無い。
実際、fcloseの前にflock/fflushは不要で、単にfcloseのみをすれば暗黙的に
fflush→flock→fcloseの順で処理してくれるハズなのでうまく行くハズなんだが、
先に明示的にロックを解除すると、flock→fflush→fcloseの順で処理されて
まずいような気がするんだが。
>>422
mailSend()の中の処理を推測して回答しろ、と?
0426nobodyさん
2006/05/29(月) 23:22:11ID:???まずinternal_encodingとhttp_inputの値ぐらい出せんか。
そして素直にmb_send_mail関数使え。
0428nobodyさん
2006/05/29(月) 23:39:45ID:vMvjotbLとあるキーワードを変数$keyに入れたいのです。
私が$keyに入れたいキーワードは
「パソコン 激安 販売」の「パソコン」部分だけです。
「メガネ 高値 販売」の「メガネ」部分だけです。
「パソコン 激安 販売」には
計2つの半角スペースが入っているのですが
1つめの半角スペースから左の部分を$keyに入れる 見たいな事をコード化することは可能なのでしょうか?
0429nobodyさん
2006/05/29(月) 23:44:37ID:???0430nobodyさん
2006/05/29(月) 23:45:03ID:???0431nobodyさん
2006/05/30(火) 00:02:58ID:???でもログにはエラーがきちんと記録されています。
どうして画面にエラーが出力されないのでしょうか・・・?
display_errors以外にチェックすべきポイントはありますでしょうか。
0432391
2006/05/30(火) 00:12:56ID:???extract を利用したスクリプトが多いのが原因だと思います。
たしか前スレあたりでその話が出てたと思います。
>>408
ま、間違えていました・・・>>391でした(汗
>>406
ありがとうございました。とても勉強になりました。
>>425
という事は>>391を
$data =
0433nobodyさん
2006/05/30(火) 00:13:08ID:???find & grepか。
ディスクアクセスが必要な処理だから、相応に負荷はあるけど
そういったベタなやり方は禁じ手という訳でもない。
常用するならもちっと工夫するなりDB活用するなりしろといった感じ。
ファイルが多くて容量も大きければ、(Web経由なら)ブラウザのタイムアウトへの工夫とか、
PHPのタイムアウト、無限ループのプロセスと見なされないよう管理者との相談や
別サービスへの移行勧告とか出てくるかもね。
0434nobodyさん
2006/05/30(火) 00:13:48ID:???説明が足りない、お前の頭と同じくらい足りない。
質問するなら、何をどうしたいのか的確に書けよ、ボケナス。
で、allow_url_fopenはOnになってるんだろうな?
0435nobodyさん
2006/05/30(火) 00:19:20ID:???Path Traversal作るなよ
どうでもいいが多バイト文字でfopenかますという設計に疑問を抱かざるを得ない
0436nobodyさん
2006/05/30(火) 00:28:34ID:pEJEKC/o1つめの半角スペースから左の部分を削った上で再度$keyに入れるみたいな感じでやってみたのですが今一わかりません。
<?php
〜略
$key = $afafa[1]; //既にここで$keyにキーワードが入っている
$key = expload(' ',"$key"); //ここで1つめの半角スペースから左の部分を削った上で再度$keyに入れる
echo $key; //ここで削ったキーワードを表示
?>
こんな感じでやりたいのです。
0437nobodyさん
2006/05/30(火) 00:38:41ID:???$keyには1つの値しか入らん。
従って$keyに削った後の文字列とキーワードを同時に入れることは不可能。
あと変数だけをダブルクォーテーションで括るのは気持ち悪いから止めた方がいい
$key = expload(' ', $key);
echo array_shift($key);
$key = join(' ', $key);
0438437
2006/05/30(火) 00:42:23ID:???expload→explode
joinよりimplodeの方がいいな、どう考えても
0439nobodyさん
2006/05/30(火) 00:46:29ID:pEJEKC/o0440nobodyさん
2006/05/30(火) 00:48:16ID:pEJEKC/o右の部分でした。すいません。やってみます。
0441nobodyさん
2006/05/30(火) 01:06:50ID:???そういえばどっかでみたような気がする。
>flock解除を明言するなら、フラッシュしてから。
Perlの青らくだだったかな
0442nobodyさん
2006/05/30(火) 01:07:04ID:???0443nobodyさん
2006/05/30(火) 01:20:25ID:pEJEKC/oできました〜!えとarray_shiftでやはり最初以外の右部分が挿入されていました。
類似関数を調べたところ
array_pop辺りしかないようですね。削る関数は。
一応これで満足です!ご丁寧にありがとうございました。色々関数があって面白いですね。
0444nobodyさん
2006/05/30(火) 01:34:35ID:???0445nobodyさん
2006/05/30(火) 02:05:29ID:???1000個もある
0446nobodyさん
2006/05/30(火) 02:18:09ID: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=
0447nobodyさん
2006/05/30(火) 02:18:49ID:KRBUwnPN---------------
<iframe src="http://a.com/cookie_get.php"></iframe>
---------------
ブラウザ(IE6)で、
http://a.com/cookie_get.php にアクセスすると、意図通りに
「cookie:a.com」と表示されますが、
http://b.com/test.html にアクセスすると、IFRAMEの中には
「cookie:」とのみ表示されます。クッキーは取得できません。
重ねて書きますが、FirefoxとOperaでは問題なく取得できています。
IEのセキュリティが厳しいのかもしれませんが、
IEでIFRAMEの中からクッキーを取得できる方法があるのでしょうか?
0448nobodyさん
2006/05/30(火) 03:32:38ID:???IEのインターネットオプション>セキュリティ>信頼済みサイト>サイト>次のwebサイトを・・・
にa.comを追加してみる
0449nobodyさん
2006/05/30(火) 04:19:00ID:???レスありがとう。
その方法でうまく行くだろうことはわかりますが、
サイトを見てくれる第三者にそれを要求することは出来ないので、
別の解決策をどうかよろしくお願いします。
0450nobodyさん
2006/05/30(火) 04:24:51ID:???0451nobodyさん
2006/05/30(火) 07:01:27ID:???> HTMLのIFRAMEを使ったプログラムを書いているのですが、
iframeだけなら問題ないと思うが、iframeの中で別ドメインのページを呼ぶのは
セキュリティ的に問題があるので正常な動作を期待しない方がいい
0452nobodyさん
2006/05/30(火) 07:15:36ID:???手助けしていただけるとありがたいです
今、GD2.0.33をダウンロードしたところですがここからどうすればいいのでしょうか??
0453452
2006/05/30(火) 07:18:30ID:???お願いします
0455452
2006/05/30(火) 07:34:32ID:???PHP グラフィック ライブラ
PHP GD
PHPGD 導入
等でググってみたのですが、古い情報ばかりで…
今、GDライブラをダウンロードしたところでこれをどうすればいいのかさっぱりな状況です
0456nobodyさん
2006/05/30(火) 07:39:56ID:t5k6Siqfお前>>430見たのか
list($key) = explode(' ', $key);
expload('A`)
0458nobodyさん
2006/05/30(火) 07:44:09ID:???PHP5 GD2
で検索すると例えばこんなのが出てくる
ttp://bbs.fedora.jp/read.php?FID=8&TID=2864
0460nobodyさん
2006/05/30(火) 08:13:13ID:???>>458のはLinux用のインストール方法でWindowsでは使えない。
だからインストール関係なら最初からOSとか書いてなきゃダメなんだっつの。
Windows用ならさっきと同じ検索の中に
ttp://homepage1.nifty.com/yito/anhttpd/faq/php5.html
とか
ttp://www.dentuku.com/modules/tinycontent4/index.php?id=7
とか、色々引っかかる。
0461nobodyさん
2006/05/30(火) 09:04:49ID:???> iframeだけなら問題ないと思うが、iframeの中で別ドメインのページを呼ぶのは
> セキュリティ的に問題があるので正常な動作を期待しない方がいい
はい、同じドメインでは問題ありませんでした。
とりあえず現状ではIEのみ非対応ということにせざるを得ないですね。
0462nobodyさん
2006/05/30(火) 09:47:17ID:???php4.3.10でセッションを使ったログイン処理をやっています。
「session.cookie_lifetime」がデフォルトの「0」のままなのですが、
「ブラウザを閉じるまで」セッションが有効になりません。
だいたい1時間くらいで勝手にセッションが切れてログアウトしてしまいます。
どうしてなのでしょうか??
0463nobodyさん
2006/05/30(火) 10:03:41ID:???は4と返ってきますが、これで2と返るようなのはありませんか?
0464nobodyさん
2006/05/30(火) 10:06:36ID:???0465nobodyさん
2006/05/30(火) 10:50:47ID:???表示するまでにかなり時間のかかるphpファイルがあるのですが、
(内部でサーバローカルの特殊な処理をしていて、10秒ほどかかります)
そのページに複数アクセスが集中したときにコネクションが貼れるのかどうか心配です。
現状では同時に3〜4クライアント程度しかアクセスしてこないため大丈夫ですが、
例えば10秒の間に100〜1000クライアントが同時にアクセスしてきた場合、
Webサーバのコネクションは維持できるのでしょうか?
環境はLinux上でApache1.3.27とPHP4.4.2です。
コネクションの最大数の制限が、カーネルなのかWebサーバなのかPHPなのかわからないので
ご存知の方はそちらも教えていただけると助かります。
よろしくお願いします。
0466nobodyさん
2006/05/30(火) 11:05:41ID:???Windowsの場合、ディフォルトでPHPにGDが同封されているので、
php.iniのGDの項目をコメントアウトすれば使えるよ。
0467nobodyさん
2006/05/30(火) 11:10:51ID:???session.cookie_lifetimeのディフォルトは1440だと思うが、、、
共有のレンタルサーバで、session.save_pathをディフォのままにしておくと、
他の人に消されることがあるよ。
0468nobodyさん
2006/05/30(火) 11:50:53ID:???1440がデフォルトなのは「session.gc_maxlifetime」ですよね?
「session.cookie_lifetime」は「0」がデフォルトです。
ちなみにVPSなので他の人に消されるということはありません。
0469nobodyさん
2006/05/30(火) 12:34:25ID:???0471452
2006/05/30(火) 13:25:41ID:???コメントアウトしてアッパッチの再起動
phpinfo()見てみたのですが、やっぱりできてないみたいでデス
(TдT)ウウ〜
神様光臨を待ちます。。。
0473nobodyさん
2006/05/30(火) 13:54:26ID:D/hvuKGfコメントアウトはコメントにしちゃうことなのでコメントを外すとか言う
アッパッチな
まぁ落ち着いてな。焦ると見えるものも見えなくなるもんだ。
phpinfo()で表示されるphp.iniの位置は修正した場所のphp.iniになっている?
Apacheのエラーログを参照して.dllがロードエラーになっていないか確認
エラーがあれば.dllのパスとファイルの存在を確認
一つずつ確認
0474nobodyさん
2006/05/30(火) 14:32:47ID:???$date1の表示になります。
おそらく数字の部分が被っているからだと思うのですが、
それぞれ別物だと判断させる関数・方法はないでしょうか?
0475nobodyさん
2006/05/30(火) 14:38:03ID:???0478nobodyさん
2006/05/30(火) 14:43:11ID:???ていうかこうやてるんだろ?
echo "hogehoge$data10hogehoge";
こうしろ。
echo "hogehoge".$data10."hogehoge";
0479474
2006/05/30(火) 14:50:19ID:???教えていただいたのを試してみます
0481nobodyさん
2006/05/30(火) 17:07:35ID:???$table = $_POST['MySQL_Table_Name'];
$pattern = '/[A-Za-z]+/';
if ( !preg_match($pattern,$table) ) { die("error : not is_alpha"); }
0483481
2006/05/30(火) 17:20:11ID:???即レスありがとうございます。修正しました。
$pattern = '/[A-Za-z]+/';
それと if ( !preg_match ) とするより、
正規表現で「英字以外を含む時」にしておいて if ( preg_match ) の方がいいでしょうか?
0484481
2006/05/30(火) 17:22:36ID:???0485nobodyさん
2006/05/30(火) 17:40:20ID:???PHPでは正規表現使わない方法を探したら結構見つかるぜ
しかも正規表現使わない方が普通は速い
ctype_alpha($table)
0486481
2006/05/30(火) 17:52:51ID:???0487nobodyさん
2006/05/30(火) 17:54:59ID:???ついつい存在を忘れちゃうんだよなぁ・・・。
そろそろ最新のリファレンス買わないとダメかな。
0488nobodyさん
2006/05/30(火) 20:58:29ID:???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周りの設定は特におかしな所は無いようです)
0489nobodyさん
2006/05/30(火) 21:08:53ID:pEJEKC/o0490nobodyさん
2006/05/30(火) 21:21:20ID:pEJEKC/o↓
%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
0492nobodyさん
2006/05/30(火) 21:32:30ID:???urlencode(mb_convert_encoding('オフコース', 'utf-8', 'sjis'))
0493nobodyさん
2006/05/30(火) 21:39:17ID:???phpがcgiとして動く、というのがよく分かりませんが
shell上から、# php info.phpを実行する分には正常に動作します。
#./info.phpの場合は
>bash: ./info.php: 許可がありません
と返ってきます。(sudo suにて)
0494nobodyさん
2006/05/30(火) 21:51:32ID:???の結果を、ぽん。
0495nobodyさん
2006/05/30(火) 21:58:57ID:???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
0496nobodyさん
2006/05/30(火) 22:06:54ID:???AddHandler cgi-scriptから.phpを外してok。
これのせいでDSOではなくCGI動作しようとしていたって事なんでしょうか。
0498nobodyさん
2006/05/30(火) 22:10:12ID:pEJEKC/o出来ました。ありがとうございます。最後にお聞きしたいたいことが一つ、、
既に$haefという変数にオフコースという文字列が入っている場合、
urlencode(mb_convert_encoding($haef), 'utf-8', 'sjis')
こんな感じでやりたいのですが。
でやってみたのですがやはりエラーがでました。よろしければ教えていただけませんか?
0499nobodyさん
2006/05/30(火) 22:13:46ID:19Dhj3ir配下はPHPのエラーがWEB画面に表示されないように
一方、
/home/www/hogetest
配下はPHPのエラーを画面表示するようにするには
どのような設定が必要でしょうか?
0500nobodyさん
2006/05/30(火) 22:20:29ID:???http://www.php.net/manual/ja/ref.errorfunc.php
0501nobodyさん
2006/05/30(火) 22:31:56ID:???存在するかどうか確認するにはどうすればよろしいでしょうか。
0504nobodyさん
2006/05/30(火) 22:40:35ID:pEJEKC/oそうです、そのエラーが返ってきます。難しいです。
0506nobodyさん
2006/05/30(火) 22:45:26ID:???0508nobodyさん
2006/05/30(火) 23:28:43ID:pEJEKC/o一応マニュアル見たりして調べたんですが載ってないんですよね。
”;”が無いとかですか?
($haef), 'utf-8', 'sjis') →($haef, 'utf-8', 'sjis') ;
にしてもエラーです。おかしいです。
0509nobodyさん
2006/05/30(火) 23:35:22ID:???・urlencode() に渡すべき引数を調べる
・mb_convert_encoding() に渡すべき引数を調べる
> 一応マニュアル見たりして調べたんですが載ってないんですよね。
どっちも載ってますってば。
0510nobodyさん
2006/05/30(火) 23:36:43ID:pEJEKC/o再度確認してみます。
0512nobodyさん
2006/05/30(火) 23:46:51ID:pEJEKC/ohttp://php.s3.to/man/function.mb-convert-encoding.html
ここに載ってました。
<?php
$haef = mb_convert_encoding($haef,'utf-8','sjis');
echo urlencode($haef); ?>
ありがとうございましたぁよかったぁ〜実は今週プログラミング触り始めた者なのです。
またどうしてもわからないときは質問させていただきます!
>>511
括弧が多かったんですかね。。エラーでしたので。
0514nobodyさん
2006/05/31(水) 02:13:51ID:???で外部ファイルを読み込むのですが、外部ファイルの指定箇所を読み込む
と言うことは出来るのでしょうか?
例えばdata.phpの中身が
//テストデータの読み込み
$test="テスト";
//hogeデータの読み込み
$hoge="hoge";
みたいな内容だとして、「$test」の方だけ読み込むとか。
(実際には複雑なソースがあるとします)
0516nobodyさん
2006/05/31(水) 03:01:23ID:6RpSrScbprivate $_test;
public function set_iti($test) {
$this->_test=$test;
}
(同様にクラス内にて、set_niとset_sanのset用の関数と変数も作りました)
set_iti($test)やset_ni($test)の関数に値をsetしたいのですが、
$aarray = array(
0517516
2006/05/31(水) 03:07:28ID:6RpSrScb$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";
配列をくっつけようとしている所に問題があるのでしょうか?
すみませんが、皆様よろしくお願い致します。
0518nobodyさん
2006/05/31(水) 03:30:33ID:???・変数で分岐する
--- 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'; }
0519nobodyさん
2006/05/31(水) 03:39:29ID:???エラーメッセージくらい書けよ?
それとphp5なんだろうから、__setや__callを使えばいい
要するにだマニュアル嫁タコ
0520nobodyさん
2006/05/31(水) 04:08:11ID:???0521516
2006/05/31(水) 04:24:52ID:6RpSrScb以後気をつけます。
ご回答ありがとうございます。
__set __get次回試してみようと思います。
>>520さん
すいません。
それはありえないと思いつつ
519さんの「エラーメッセージくらい書けよ? 」で
エラー内容を見直していたらメソッド無いのエラー内容でした。
set_idで試していると思い込んでいたのですが、
新しく結合用に作っていた変数d_idのセッターを作っておりませんでした。
問題解決致しました。
ご回答ありがとうございました。
初歩的な間違いの質問してしまい皆様申し訳ありません。
0522nobodyさん
2006/05/31(水) 09:13:16ID:???PHP5で、後書きにしても普通に動作しました。
完全サポートされてるとしてこのままでいいんですかね?
0523nobodyさん
2006/05/31(水) 09:26:03ID:???$a = array();
$a[0] = new MyClass();
$a[1] = new MyClass();
このように要素ごとにクラスの宣言をせずに、
$aにこれから追加される要素もすべて MyClassとして扱えるような簡単な方法はないでしょうか?
0525523
2006/05/31(水) 10:38:16ID:???でできました。
0527nobodyさん
2006/05/31(水) 14:52:03ID:???ねーよ。
そういうのをやるなら適当だがこんな感じだな。
こんな関数使う意味ねーけどな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;
}
0528nobodyさん
2006/05/31(水) 16:33:16ID:???そもそもどういう基準で読む場所を切り替えようとしてるんだろ。
例えば
[data.php]
if($testmode) {
include("data_test.php");
return;
}
$hoge = "hoge";
[data_test.php]
$test = "テスト";
とかいう感じは?
0529nobodyさん
2006/05/31(水) 18:02:44ID:???パラメータの名前は不定で毎回変わります
0530nobodyさん
2006/05/31(水) 18:19:26ID:???0531nobodyさん
2006/05/31(水) 18:20:16ID:???「IntroGraphic [ Visible / Hide ] >1>2>3>4>5>6>7>8>9>10>11>12>13」
てなってるじゃんHide押したら消えてVisible押したら表示される
あれってphpの仕組みどうなってんの?
0532nobodyさん
2006/05/31(水) 18:26:36ID:???説明不足ですいません、パラメータの名前は毎回変わるんですが
過去のリクエストでのパラメータも全て残しておきたいんです
0533nobodyさん
2006/05/31(水) 18:39:20ID:???同じ名前のが上書きされても良いなら、
$_SESSION['request'] = array_merge($_SESSION['request'], $_REQUEST);
0534nobodyさん
2006/05/31(水) 18:41:10ID:???0535nobodyさん
2006/05/31(水) 19:11:06ID:???$ar[name][addr]
$ar[name][age]
たとえば上記のような形で、$arをageでソートしたいときです。
0536nobodyさん
2006/05/31(水) 19:13:08ID:???$ar[fred][age] = 18;
$ar[nancy][age] = 19;
のような感じで、ageでソートしたいです。
0537nobodyさん
2006/05/31(水) 19:42:11ID:???$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');
しかしマニュアル読んでれば、すぐに分かりそうな質問ばっかだな
だから下らねぇ質問なんだろうけど・・・
0538nobodyさん
2006/05/31(水) 20:48:20ID:???機能別に2つに分けようとしています。
class Original -> class A + class B
しかし、元のclass で$this->function()をしているため2つに分けると、AとBに別れて
しまい動作しなくなってしまいます。
かと言って、class A のfunction内で $obj = new B(); するのもどうかと思うのですが、
こういう場合どうすればいいのでしょうか。
0539nobodyさん
2006/05/31(水) 21:00:34ID:???現在、参考書を見ながらメールフォームを作成していますが、受信したメールが文字化けしています。
if(mb_send_mail($to, $title, $naiyou, "From : $from"))
これだとメールは届きますが、タイトル、送信者、メッセージともにすべて文字化けします
if(mail($to,$title,$naiyou))
だと、タイトルが文字化けするだけで、送信者とメッセージの部分は文字化けしていませんでした。
参考書には、php.ini の[mail function]の各項目の設定を確認してください。と書かれていますが、レンタルサーバーのためどこをどう修正すれば良いのかわかりません。
レンタルサーバーはさくらインターネットです。
コントロールパネルからphp.ini に、書き込むことが出来るようなのですが、何を書けば良いのでしょうか。
どなたか回答をよろしくお願いします。
0541nobodyさん
2006/05/31(水) 21:04:19ID:???吊ってくる
0542nobodyさん
2006/05/31(水) 21:10:12ID:???それだけでは本当に分けるべきクラスかどうか判断できん。
無理矢理分けてますます見通しが悪くなるオチが付くなら
メソッドが固まっている状態の方がいい。
元のクラス設計、或いはメソッドの作りがマヌケだと
分離させるには骨が折れる。
このへんはデザインパターンのソースコードの作りを理解する事で学習できるぞ。
0543nobodyさん
2006/05/31(水) 21:58:50ID:???単に見通しが悪いだけで、別クラスに分ける必要が無いなら
コード自体を書きやすくしろ。無意味に別クラスに分けることは、余計な混乱を招くだけだ。
機能的に別クラスに分けるべきクラスの場合(この辺の判断は経験が必要になるが
オブジェクト指向・抽象化あたりでぐぐるなりして勉強しろ)、継承を使え。
でも、Aの中で$this->obj = new B();のようにするのも別に悪い設計ではないぞ。
継承と内包を状況に応じて使い分けるのが、正しいオブジェクト指向設計だ。
php5の場合は、interfaceも活用しろ。
以上!
0545nobodyさん
2006/05/31(水) 23:07:42ID:???あ
</a>
<a>
い
</a>
<a>
う
</a>
<a>
え
</a>
<a>
お
</a>
という文字列を
あ
い
う
え
お
と置換したい場合PHPではどうすればよいのでしょうか。
mb_ereg_replace等で試してみてもうまくいきませんでした。
よろしくお願いします。
0546nobodyさん
2006/05/31(水) 23:10:52ID:???$str = str_replace('</a>', '', str_replace('<a>', '', $str));
0547nobodyさん
2006/05/31(水) 23:11:40ID:???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);
0549nobodyさん
2006/05/31(水) 23:29:02ID:???php.iniが変更できない(仕方が分からない)場合は、
スクリプト内でmb_language()とmb_internal_encoding()を適切に設定
まさかレン鯖でテストしてんの?
((( ;゚Д゚)))ガクガクブルブル
0551nobodyさん
2006/05/31(水) 23:56:11ID:LuayvLySどっちの方がおすすめですか?
SimpleXMLの方が速そうですが、
取り扱いやすさは、どちらの方がいいでしょう?
0552nobodyさん
2006/06/01(木) 01:34:29ID:???ソース上も何も考慮せずに作った掲示板を問題なく運用しているんですが、
これはたまたま問題が発生するケースに当たってないだけなんでしょうか?
それとも、考慮しなくても自動的に適切な処理をしてくれているんでしょうか?
0553nobodyさん
2006/06/01(木) 01:57:41ID:???自分で判断出来ないレベルならXML_RSS使っとけ
>>552
内部文字コードと、出力HTMLの文字コードが偶然一致しているだけ
php.iniで透過的な文字コード変換も指定出来るが、mbstring関数くらいは使えるようになろうな
0554552
2006/06/01(木) 02:02:00ID:???そうなんですか?
実はソースがEUCなスクリプトと、
ソースがSHIFT-JISなスクリプトが、同じ環境でどちらも問題なく稼動してるんですが、
ソース自体の文字コードはあまり関係ないんですか?
0555nobodyさん
2006/06/01(木) 02:17:05ID:???あ?関係なかったらmbstring関数なんていらねーだろが。
糞みたいな質問繰り返す前に、php.iniくらいは確認したんだろーな?
0556nobodyさん
2006/06/01(木) 02:44:29ID:???例えば、aaaテーブルとbbbテーブル二つに適合するデータを出力する
というようなことは出来るのでしょうか?どうしても2つ参照しなくては
いけないのですが、方法が想像出来なくて・・・。
0558nobodyさん
2006/06/01(木) 02:55:06ID:???落ち着いて再度コンタクトせよオーバー!
0559nobodyさん
2006/06/01(木) 03:18:06ID:???ソース自体の文字コードは大いに関係するが、
これはたまたま問題が発生するケースに当たってないだけ。
狙って不具合を起こそうと思えば、簡単に問題を発生させられる。
かなり注意深く書かれたコードもあるけどね。
0562554
2006/06/01(木) 10:22:43ID:???それは、"スケジュール表\";
で回避できますね。
で、ソース中にそうケースがないとし、
ユーザーからのpostデータで ソや表などを入れ込んだデータを処理、
テキスト保存、読み出し、html表示してもまったくエラーが発生しないんです。
0563554
2006/06/01(木) 10:27:41ID:???>mbstring関数くらいは使えるようになろうな
とありますが、
mbstring.func_overload を有効にしていれば特に気にしなくてももうばっちりですか?
0564nobodyさん
2006/06/01(木) 12:21:12ID:FSYfFeV9クッキー保存時にダイアログで確認する設定にして、
<?php
session_start();
?>
上記のスクリプトを3回続けて実行。
1回目と2回目は「Cookieを許可」を選択すると
3回目でブラウザの応答がなくなります。
これはIE6のバグでしょうか?
PHP側での回避策などありましたら教えてください。
0565nobodyさん
2006/06/01(木) 12:31:08ID:???1つのスクリプト内で1つの文字エンコーディングしか扱っていないのであれば、
内部文字エンコーディングの設定がどうなっていようとほとんど関係が無い
(勿論mb関連の関数は別)。そもそもどんな文字エンコーディングであろうと、
内部的にはバイト文字の羅列に過ぎない。
文字エンコーディングを判別して、文字化けしないように処理するのはUAの仕事。
例えばperlそのものには文字エンコーディングの概念なんて無いんだし、
PHPでもmb関連関数は拡張モジュール(オプション)。
それと、mbstring.func_overloadを有効にするなら、尚更文字エンコーディングを
意識しなければならない。暗黙的にmb_internal_encodingの設定値を参照されるので、
使用している文字エンコーディングと違っていれば当然文字化けを引き起こす。
あと、PHPには入出力時に自動的に文字エンコーディングを変換する手段があるが、
これは弊害があるため専用鯖でない限り通常はオフになっていると思われる。
0566nobodyさん
2006/06/01(木) 12:41:20ID:???function array_index($arr, $value) {
$i = 0;
foreach ($arr as $item) {
if ($item == $value) return $i;
$i++;
}
return NULL;
}
こんな感じの関数です。定義するのはできるんですが、標準であるんならそっちを使おうと思って探したけど見つかりませんでした。
0567nobodyさん
2006/06/01(木) 12:41:31ID:???あんた、とにかく文字コードを気にしたくなくて、でもちゃんと動くよと誰かに言って欲しいだけでしょ。
日本語処理する以上、設定もソースもデータも文字コードを考慮しないとだめだよ。
その上でちゃんと動くという確信を持たないとね。
0568nobodyさん
2006/06/01(木) 13:12:52ID:???array_search()
ttp://www.php.net/manual/ja/function.array-search.php
0570nobodyさん
2006/06/01(木) 14:04:19ID:b4/QNcGS表示するというのを作っています。
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日のデータしか表示されません。どこかおかしいでしょうか?
0571nobodyさん
2006/06/01(木) 14:21:02ID:???俺も昔それで悩んだことあった。
昔のことでよく覚えてないんだけど、サーバにより起きたり起きなかったりした気がする。
php.iniを別のサーバにコピーしても変化なかったんで、PHPの設定の問題でもなさそうだった。
今再実験しようと思ったんだけど、そもそもどうやったら、セッションのCookieを受け取りながら、
「Cookieを受け入れるか」のダイアログを再表示できるんだっけ?
0572nobodyさん
2006/06/01(木) 14:46:46ID:???>$yesterday2=strtotime("$yesterday");
$yesterdayはタイムスタンプだしな。
0573nobodyさん
2006/06/01(木) 15:25:56ID:???確かに再現した・・・
>>571
IEはインターネットオプションで
「プライバシー」タブ
「詳細設定」ボタン
「ダイアログを表示する」を2つとも選択
でできるよ
0574nobodyさん
2006/06/01(木) 15:45:22ID:GEVTcprQ{$abc.{$def.0}}
これはもちろんエラーですが、実現できる方法があれば教えて下さい。。
0575nobodyさん
2006/06/01(木) 15:50:33ID:???0576574
2006/06/01(木) 16:01:04ID:GEVTcprQどうやらできないみたいですね。
単純に
$abc.$def
だとできるようですが、後ろの変数が配列だったりすると無理っぽいです。
テンプレートの前に戻って処理するしかないかな。
0577nobodyさん
2006/06/01(木) 16:13:58ID:???0578nobodyさん
2006/06/01(木) 16:40:09ID:???ロジックの方で出来るだけ処理して、出来る限りテンプレートの方は簡潔に書けるようにした方がいい。
0579574
2006/06/01(木) 16:53:12ID:GEVTcprQname属性に変数入れることになるので、結局は一緒かな。
>>578
もう、自分でも「これはまずいなぁ〜」って分かっているんだけど、
やっぱり楽したい…って感じで、ついついと。
0580nobodyさん
2006/06/01(木) 20:07:56ID:???PHPで自分のスクリプト名を取得して使用する際に
$_SERVER["PHP_SELF"]
は xxx.php/hogehoge/
としてhogehogeの部分にjavaScriptが書けるので
セキュリティ上まずいというのは分かったのですが
$_SERVER["SCRIPT_NAME"]
のほうはなにか危険があるのでしょうか?
そのままformのactionに使っても問題ないのでしょうか?
見た目は問題なさそうなのですが
0582nobodyさん
2006/06/01(木) 20:19:54ID:???そうではなく、引数で渡した配列は変更せず、整列された新しい配列を返すような関数はありますか。
または、配列をコピーしてくれるような関数。
0583nobodyさん
2006/06/01(木) 20:22:29ID:???0584580
2006/06/01(木) 20:26:25ID:???すみません
省略して書いてしまいましたが
実際には他のページを経由するので
一時的にスクリプト名を取得したいのです。
$_SERVER["SCRIPT_NAME"]
には純粋にパスとスクリプト名だけが
格納されるのでしょうか?
よろしくお願いします
0586nobodyさん
2006/06/01(木) 20:39:16ID:???/private/配下に置いた.phpファイルをincludeしたいと思っています。
でも、ためしにやってみたら読み込めませんでした。エラーメッセージなども出ません。
privateのファイルをincludeするにはどの設定をいじれば良いのでしょうか?
ちなみに環境はVPSで、root権限があります。
0590nobodyさん
2006/06/01(木) 23:35:50ID:???> 整列された新しい配列を返すような関数はありますか。
ない
> または、配列をコピーしてくれるような関数。
代入で一発
0591nobodyさん
2006/06/01(木) 23:49:39ID:???お前よぉ、そういうことやってると捕まるぞ。
面白半分だとしてもそういったフザけた真似は止めとけ。
素人だとうっかりパスワード入ってるinclude用ファイルの内容とか貼りそうだからな。
0592588
2006/06/02(金) 00:09:18ID:???ハァ?
誰がincludeするファイルの中身を貼れって言いました?
そういう風に読めましたか?そりゃ失敬。
改めて言い直すわ。
あなたの書いた「includeの部分」をココに貼ってみよう。
0593nobodyさん
2006/06/02(金) 01:28:34ID:???普通の掲示板に画像アップの機能を持たせたいんです。
一番単純なスクリプトでお願いします。。。
0594nobodyさん
2006/06/02(金) 01:32:30ID:???マニュアルをなんだと思ってるのか
http://jp.php.net/manual/ja/features.file-upload.php
0595593
2006/06/02(金) 01:57:54ID:???レスありがとうございます。
そこはすでに見ていたんですが、良く分からなくて…。
もっと単純なものもあるんじゃないかと思ったんです。
もうちょっと格闘してみたいと思います。。。
0596nobodyさん
2006/06/02(金) 01:58:40ID:???http://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=PHP+%E7%94%BB%E5%83%8F%20%E3%82%A2%E3%83%83%E3%83%97%E3%83%AD%E3%83%BC%E3%83%89&num=50
ちょっとググッただけで山ほど出てくるぞ。
お前らなんだ?未だにクソした後は親にケツ拭いてもらってるのか?
ちょっとは自分で何とかしようとしてみろよ
お前はまず自分のケツを拭く事からはじめろ
努力も出来ないような奴がプログラミングなんてするな!
0597596
2006/06/02(金) 02:03:07ID:???スマン。ちょっと言い過ぎたかもしれん
ttp://masago.kir.jp/php20030814.php
こことかは分かりやすいんじゃないか?
ちょっと簡単なサンプル書いてくるから待ってろ
0599596
2006/06/02(金) 02:41:26ID:???うpしたぞ
ttp://sund1.sakura.ne.jp/uploader/source/up12599.zip
ほとんどさっきのURLのサイトのソースと同じだからな
後はファイル名とか保存先とかエラー処理とか色々追加してくれ
0600nobodyさん
2006/06/02(金) 04:47:11ID:ers3awbHA.php と B.php で、
C.php をincludeで読みこんでます。
さらにCはincludeで別のファイルを読みこんでいるのですが、
そのさい、
CがAにincludeされたなら、CはDを読みこみ、
CがBにincludeされたなら、CはEを読みこむ。
という風にしたいのですが、どのような条件分岐させたら良いのでしょうか。
0601nobodyさん
2006/06/02(金) 06:51:42ID:???0602nobodyさん
2006/06/02(金) 06:55:27ID:???0604nobodyさん
2006/06/02(金) 07:29:55ID:???0605nobodyさん
2006/06/02(金) 07:40:46ID:???釣りじゃないなら、まずはもっとシンプルな作りで勉強しろ。
コピペで何かが身につくと思ったら、大間違いだぞ。
0606nobodyさん
2006/06/02(金) 09:26:33ID:???これを抑制するには ¥$foo とすればいいのですが、すごく面倒で困ってます。
テストデータをヒアドキュメントで書いてて、$foo やら $bar やらがたくさんあるので、
これをいちいちエスケープするのがうっとうしいです。
そんなわけで、ヒアドキュメントで $foo をエスケープせずに済む方法または
テストデータを簡単に埋め込む方法ありましたら教えてください。
0607nobodyさん
2006/06/02(金) 09:34:13ID:I1GUzSSn0608nobodyさん
2006/06/02(金) 09:35:05ID:???0609nobodyさん
2006/06/02(金) 09:57:02ID:???リフレクションあたりのマニュアルを読んでみたのですが、既存のクラスやメソッドを調べる機能はあっても
新しいインスタンスメソッドを追加するような機能はなさそうでした。
0610nobodyさん
2006/06/02(金) 10:03:29ID:???0612nobodyさん
2006/06/02(金) 10:36:33ID:???0613nobodyさん
2006/06/02(金) 10:52:34ID:???自宅サーバで動作テストをしているのですが、
MySQL内の複数テーブルを指定して表示することは出来るのでしょうか?
1つずつ選択する場合はselect form dbname で表示出来ますが、
複数というのがよくわかりません。。
同様に複数テーブルの指定フィールドを一括で表示するなども出来ましたら
コマンドか関数を教えていただければと思います。
0614nobodyさん
2006/06/02(金) 10:54:16ID:???フレームワークを自作してみようと思って、それで設定ファイルから情報を読み取って
メソッドを動的に定義することを考えています。
あと、テスト用のメソッドもテストスクリプトの中で動的に追加したいと考えています。
0615nobodyさん
2006/06/02(金) 10:57:17ID:???それはさておき、PHP関係ないんじゃないの?
0616613
2006/06/02(金) 11:07:25ID:???すみません、、書き間違いました。。
複数のデータベースです。
・サーバ内のMySQLで作成されているデータベースのすべて表示、
・及びそれらのテーブルから指定フィールドの値を表示
がやりたいと思っています。
0617nobodyさん
2006/06/02(金) 11:19:02ID:???>サーバ内のMySQLで作成されているデータベースのすべて表示
SHOW DATABASES or mysql_list_dbs()
>それらのテーブルから指定フィールドの値を表示
データベースをまたいでの和や結合は出来ないと思う。
配列にでも保存し、PHPで処理するしかないんじゃないかな。
0619nobodyさん
2006/06/02(金) 11:22:01ID:???http://pc8.2ch.net/test/read.cgi/db/1148936556/
0620nobodyさん
2006/06/02(金) 11:23:43ID:???コマンドやSQL文でのやりかたはスレ違いなのでPHPの話にだけ限定して
mysql_list_dbs()、mysql_list_tables()、mysql_list_fields()、mysql_select_db()
つかマニュアルは読まんのか?
http://jp.php.net/manual/ja/ref.mysql.php
0622nobodyさん
2006/06/02(金) 11:47:39ID:???0623nobodyさん
2006/06/02(金) 12:09:19ID:???あのマニュアルがあれば、書籍なんて買う必要ないくらいなのにな。
>>609
http://www.php.net/manual/ja/ref.overload.php
0624nobodyさん
2006/06/02(金) 12:30:40ID:???「PHPでシステム組んでるうちに浮かんできた疑問」なら
俺は全て回答するぞ。
0626nobodyさん
2006/06/02(金) 13:11:03ID:???PHPでシステム組んでたらだんだんと悶々してきてヤりたくなったんだが、
近場で安くて質のいいとこどこかありませんか?
・・・ていう質問がきたらどーすんだよ!とか思ったが、
それはソレで楽しそうでいいかもしれないなw
いや、これはアリだろアリ
0628nobodyさん
2006/06/02(金) 13:47:36ID:???「インスタンス」にメンバ関数追加か。
そういうことをする設計もどうかと思うが、こんな感じにすれば出来る。
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);
0629nobodyさん
2006/06/02(金) 13:52:47ID:???同意。スクリプト書くときだけにみるんじゃなく、
暇なときにたまにどんな関数があるか見ておくのもオモシロイ。
そこで、ああ、こんな関数があったのか。これは便利。次はつかってみよう。とかなる。
0630629
2006/06/02(金) 13:56:24ID:???クラスの関数の定義のときに、引数の数を不定にして、たとえば、
MyClass->MyFunc($a, $b); とか、
MyClass->MyFunc($a) とか、って呼び出せるの?
Perlであれば、引数自体が自動的に配列扱いになるから、
呼び出す時の引数がいくつあっても、関数内で $_[0], $_[1]と自動的にできるのはわかるけど、
PHPではどうやればいいかよくわからんちんちのとっちみちん
0631nobodyさん
2006/06/02(金) 14:19:22ID:???うんこAA貼り付けたければいやそれは許さん
0632nobodyさん
2006/06/02(金) 14:28:35ID:???どうもありがとうです。
でも「インスタンスにメンバ関数を追加する」んじゃなくて、クラスにインスタンスメソッドを追加するだけです。
この例だと、Javascriptのような感じですよね。あるいはRubyの特異メソッド。
そうじゃなくて、ふつうのメソッドです。
evalだとなんかエラーになっちゃうみたいなんですけど、PHPではあとからメソッドを追加するのはできないんでしょうか。
PHPのメタプログラミングまわりはよくわからないので、すみません。
0633nobodyさん
2006/06/02(金) 14:37:12ID:???最後から固定数の引数のみ省略可能にするなら
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);
0634629
2006/06/02(金) 14:40:15ID:???なるほど、関数宣言の引数に固定値を宣言すればいいんですね。
っていうかけっこう基本的な知識っぽい気がする0TL
下のはどっかでみたような式だ。
0635586
2006/06/02(金) 15:00:35ID:???遅レスすみません。
include ("/home/httpd/vhosts/*****.jp/private/include_inc.php");
こんな感じでprivateに置いたファイルをインクルードしたいのですが出来ません。
ちなみにインクルード元の位置は /home/httpd/vhosts/*****.jp/httpdocs/index.php です。
0638nobodyさん
2006/06/02(金) 16:00:16ID:???なんと!そんな方法がありましたか。
・・・と思ったけど、それってクラス定義ごとファイルに出力して読み込むってことですよね。
それならファイルに出力するまでもなく、evalで済んじゃうような。
既存のクラスに対してメソッドを追加しようとして、その定義をファイルに出力して読み込んだ場合、
同じ名前のクラスを再定義することになり、エラーになります。
やっぱり追加はあきらめて、新しいクラスを生成する方向で考えてみます。
0639nobodyさん
2006/06/02(金) 16:03:43ID:???なんと!そんな方法がありましたか。
・・・と思ったけど、隣はおばさん、斜め向はデブスなので食いたくありません
0640nobodyさん
2006/06/02(金) 16:10:26ID:???配列の添え字に"02"などという文字列を指定した場合、配列の要素が表示されません。
この場合、C言語であれば"02"という文字列を2という数字に直してから、使用しますが、PHPの場合にはそのように文字列の数字を数列に直す関数などはないのでしょうか?
解答をよろしくお願いします。
0642nobodyさん
2006/06/02(金) 16:17:28ID:???おお!!
素晴らしいです!!さっそく試しましたが完璧でした。なんか裏技っぽくて少し感動しました。
ほんとうにありがとうございました。
0646nobodyさん
2006/06/02(金) 16:28:05ID:???>>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');
0647nobodyさん
2006/06/02(金) 16:32:25ID:???C言語の二次配列のような感じで、
$myArr = ・・・
$$myArr[0] = ・・・
・
・
と設定して
$$myArr[x][y]
というように値を参照しようとしましたが上手くいきませんでした。PHPの場合はこのような使い方は出来ないのでしょうか?
二次配列のような、配列の配列を参照する場合にはどうすればよいのでしょうか?
0649nobodyさん
2006/06/02(金) 16:41:24ID:???レスし終わってからマニュアル見てたら・・・
http://jp2.php.net/manual/ja/ref.runkit.php
http://jp2.php.net/manual/ja/function.runkit-method-add.php
ちゃんとマニュアルは読みましょう・・・_| ̄|○
0650nobodyさん
2006/06/02(金) 16:46:04ID:???となると、データーを最初から打ち直しに……
$myArr = array(...);
$$myArr[0] = array(...);
$$myArr[1] = array(...);
$$myArr[2] = array(...);
・
・
・
と設定してあって、これを二つの添え字を使って参照するのは不可能なんでしょうか?
$$myArr[x][y]みたいな感じで。
0652nobodyさん
2006/06/02(金) 17:07:33ID:???自分の買った参考書には二次元配列のことが一言も書いてありませんでした・・・4000円もしたのに・・・orz
0653nobodyさん
2006/06/02(金) 17:11:27ID:???PHPの書籍なんてろくなもんねーよ
窓から投げ捨ててマニュアル読んどけ
http://www.php.net/manual/ja/language.types.array.php
0654nobodyさん
2006/06/02(金) 17:22:11ID:???ありがとうございます。さっそくそこを参考にしながら二次元配列に取り組んでいます。
arrayの中でarrayを呼ぶとは意外でした。
参考書もいいところあるんですけどね。トイレの中で読めるとか・・・。
0655nobodyさん
2006/06/02(金) 17:46:09ID:???0656nobodyさん
2006/06/02(金) 17:56:04ID:???$a = "02";
$a += 0;
でも int にキャスト変換されるけど、もっと正当な方法で、
intval($a) か (int) $a
がいいと思う。
0659nobodyさん
2006/06/02(金) 17:59:09ID:???動作も一応自分の想定どおりに動いています。
ありがとうございます。
ただ
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];
というふうに呼び出せないのでしょうか?
0661nobodyさん
2006/06/02(金) 18:10:07ID:???$a = "02";
$a += 0;
だと、「$a += 0;」の部分を不要なものとして他人に消される可能性がある。
分かってる人間ならともかく、ぱっと見じゃ不要な処理にしか見えない。
>>656氏の方が処理の意味が簡潔に分かりやすくて良いと思われる。
0663nobodyさん
2006/06/02(金) 18:54:32ID:???中途半端な知識のせいか、思い込みで凝り固まってしまってる気がする。
まず、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
0664nobodyさん
2006/06/02(金) 19:00:05ID:???こんな感じでもいけそうかな。
$k = array_keys($fruits);
echo $fruits[$k[0]]["a"];
$fruits[$k[0]]["a"] = 'Qoo';
1次元目の添字を$k[0],$k[1]のようにする。
0665nobodyさん
2006/06/02(金) 19:02:39ID:???ありがとうございます。なんとなく分かったような気がします。
phpは数字と文字列がごっちゃになってるので、その辺が混乱してしまいます。
Cよりは便利なのは確かなのですが・・・。
0666nobodyさん
2006/06/02(金) 19:23:18ID:???mail()関数をリプレイスする、外部サーバを使う関数って無いどすか。
セキュリティ的に、プロバイダのsmtpサーバを使った方がいいと思いまして。
0667nobodyさん
2006/06/02(金) 19:47:03ID:???PEAR::Mail
http://pear.php.net/manual/ja/package.mail.mail.php
0668nobodyさん
2006/06/02(金) 20:02:10ID:???のですが、以下の正規表現だと全く削除されません。
正しくはどうすればいいのでしょうか?
$debug_str = preg_replace("/<html>.*<\/html>/mi", '', $debug_str);
0669nobodyさん
2006/06/02(金) 20:03:12ID:???PEARのMailライブラリとかはどうよ?
http://pear.php.net/manual/ja/package.mail.mail.php
0670669
2006/06/02(金) 20:03:46ID:???0672nobodyさん
2006/06/02(金) 21:12:18ID:???$debug_str = preg_replace("/<html>(?:(?!<\/?html>).)*<\/html>/gi", '', $debug_str);
というのはどうだろう。
0673nobodyさん
2006/06/02(金) 21:15:47ID:???>>669=670
ありがとう。
$mail_object =& Mail::factory('smtp', $params);
みたいにバックエンドにsmtp指定すればいいのね。多分。
0675nobodyさん
2006/06/02(金) 23:40:43ID:???これが面倒なので、
$a =& $this->array1;
のように、ローカル変数に代入してから使うといいのかなと思いつきました。
これってPHP的によいプログラミングといえるでしょうか。
0678nobodyさん
2006/06/03(土) 05:15:06ID:???PHPとImageMagickを使って画像をリサイズしたいのですが
passthru("$convert -geometry 10 x 10 $image $dst");
これでやってもリサイズできません。
以前はできていたのですが、突然できなくなってしまいました。
よろしくおねがいします。
0679nobodyさん
2006/06/03(土) 06:16:04ID:???20060602_ABCDE.log
20060603_ABCDE.log
$nowdate = date("Ymd");
$lines = file("$datalog");
該当ファイル1個をマッチングさせて開きたいんだけど
$datalog はどうやって指定すればいいの?
0680nobodyさん
2006/06/03(土) 07:21:50ID:???一時ファイルに書き出してincludeするしか思いつかないのですが、文字列のまま実行する方法があれば教えて下さい。
0681nobodyさん
2006/06/03(土) 07:27:02ID:???それができると、tmpfile()で書き出し→include()で読み込み というのが簡単にできるんですが。
0682nobodyさん
2006/06/03(土) 08:03:33ID:psho47Yz具体的には、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/
です。
0684nobodyさん
2006/06/03(土) 08:26:30ID:???mysql_fetch_arrayの前にmysql_closeしてるけど大丈夫なの?
オレはデータ取得するまでDB閉じたことないからわかんね
というかこのソース、いちいちDB接続してんのな。効率悪い
whileの中で$rowの値をprint_rしたらどうなる?
0685nobodyさん
2006/06/03(土) 08:30:18ID:psho47Yzphpmyadminから同じrootで入っていて、データベースの作成&編集が可能だから問題ないと思います。
念のためphpmyadminから特権の確認をしたところ、グローバル特権がすべて設定されており、リソースも0(0で制限がなくなると書いています)
ので大丈夫だと思います。
0686nobodyさん
2006/06/03(土) 08:39:45ID:psho47Yzとなります。
3となっているのはデータベースのcounticを3にしてみたからで、0にしてやり直すと0になっていました。
という事は、はやりアップデートができないということですね・・・。
DBを閉じることは疑問に思ったのですが、とりあえずやってみようということで、やってみてます。
0687nobodyさん
2006/06/03(土) 08:47:05ID:psho47Yzmysql_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ができないようです。
0689nobodyさん
2006/06/03(土) 10:53:34ID:???$array = mysql_fetch_array($result);
で$arrayにはまともな値が入ってきてるの?
0690nobodyさん
2006/06/03(土) 11:12:33ID:???679です。
ごめんなさい、_ABCDEは時間分秒が入るみたいなので不変ではないです。
スカラーに性器表現とかは使えませんか?
0692nobodyさん
2006/06/03(土) 11:57:07ID:???その日付のファイルは一個(時間は不定で)なの?
であれば、正規表現を使うより、
$date = date("Ymd");
strpos か、 (substr($filename[0], 0, len($data) == $data)
の判断を使うといいよ
0693692
2006/06/03(土) 11:59:15ID:???strposで$dateと同じ文字列が含まれているか調べるか、
substrで先頭から同じ文字数抜き出したのと一致しているかを調べる
という方法が、正規表現より早いとおもふ
0695nobodyさん
2006/06/03(土) 12:53:32ID:???よく見たらcounterってvarcharじゃん
↓でどうよ?
mysql_query( "update counter set counter=\"$counter\"" );
あと、phpmyadmin使ってるならそこでSQL文打てるから、そっちでテストしてみそ
0696nobodyさん
2006/06/03(土) 15:02:59ID:???まとめて書いてrequireしています。
このconfig.inc.phpを、ネットからアクセスできるところに置いておくのは
セキュリティ的に危ないと思うのですが、みなさんはどのように対策しているのでしょうか?
0698nobodyさん
2006/06/03(土) 15:11:08ID:psho47Yz中身の数字を変えれば変わるという事は、入ってるのでしょうか?
>>695
変えてもだめでした。
SQL文ちょっとわかんないんで調べてテストしたらまた報告します。
0701nobodyさん
2006/06/03(土) 15:16:51ID:psho47Yz53→0へphpmyadminから変更しましたが、これはSQL文とはまた違うのでしょうか?
0702nobodyさん
2006/06/03(土) 15:40:19ID:???それSQL文だよ
それ見るとDBはUTF-8みたいだね
今までの流れブッタ切るようで悪いけど、counticをintegerとかにした方がいいと思う
0703nobodyさん
2006/06/03(土) 16:32:17ID:???http://www.hoge.com に、PHPファイルからアクセスした時、返されるステータスコードを
PHPで取得させたいのですが、どのようにすればよいか教えてください。
宜しくお願いします。
0704nobodyさん
2006/06/03(土) 16:36:20ID:???とりあえずエラーでも表示してみたらどうかね
$result = mysql_query("update counter set counter='$counter'") or die(mysql_error());
0705nobodyさん
2006/06/03(土) 16:43:06ID:???hoge.comは実際に使われているドメインだから、例に使うな。
例としてドメインを使う場合は、example.(com|net|org)を使え。
RFC2606
http://suika.fam.cx/~wakaba/documents/rfc-ja/rfc2606-ja.html
0706nobodyさん
2006/06/03(土) 16:49:13ID:???一応回答も書いといてやる。
PEAR::HTTP_Client
http://pear.php.net/manual/ja/package.http.http-client.php
0708nobodyさん
2006/06/03(土) 16:59:45ID:AI0NcZr1セグメンテーション違反です
ってエラーが出るんですが、これはなんでしょうか?
0709nobodyさん
2006/06/03(土) 17:03:10ID:???メモリの読み書きしちゃいけない場所に読み書きしちゃったよってことです。
実行しているスクリプトで無限再帰呼出しとかしてませんか?
0711nobodyさん
2006/06/03(土) 17:04:27ID:???ヒント
http://blog.ohgaki.net/index.php/yohgaki/2006/04/25/phpa_ra_ei_bugtracka_ra_na_a_fa
0713nobodyさん
2006/06/03(土) 17:08:42ID:psho47Yzそういう事できてたんですね・・・。
Unknown column 'counter' in 'field list'
とのエラーです。ちょっと調べてみます。
0714707
2006/06/03(土) 17:11:09ID:AI0NcZr1>>711
なるほど。確かに心当たりあります。
無限ループはしてないですが、数値ですが30000レコード位の配列扱ってました。
プログラム修正します。
どうもありがとうございました。
0715nobodyさん
2006/06/03(土) 17:14:12ID:???すいません。
っていうか、根本的なミスに気づきました。
open_basedirの設定がダメだったようです。
しかもこれを修正するのに難儀しました・・・(VPS環境のため)。
0716nobodyさん
2006/06/03(土) 17:43:36ID:???0717nobodyさん
2006/06/03(土) 18:15:05ID:???0718nobodyさん
2006/06/03(土) 18:29:48ID:???http://www.php.net/manual/ja/language.constants.predefined.php
http://www.php.net/manual/ja/reserved.variables.php#reserved.variables.server
0719nobodyさん
2006/06/03(土) 18:48:00ID:???safe_mode = on にするとimagemagickが使えません。
offにすると使えるのですが、セキュリティ上onにしたいのです。
onにしてimagemagickを使うにはどうしたらいいでしょうか?
0721nobodyさん
2006/06/03(土) 19:00:09ID:psho47Yz解決できました。
13行目の代入するフィールドが違っていたようです。
くだらない質問にお付き合いいただいてありがとーです。
0723nobodyさん
2006/06/03(土) 20:56:05ID:pcQiHytUさくらには、php.ini編集画面というのがあり、
そこは空欄で、なにも書かれていません。
写真画像の投稿ファイルの上限を2MBから5MBへ上げたいのですが、
upload_max_filesize = 5M //
の一行だけをその空欄に記入すれば変更出来ますかね?
0725nobodyさん
2006/06/03(土) 21:18:33ID:pcQiHytUこのタグイの質問板はないのですかね?
0726nobodyさん
2006/06/03(土) 21:22:35ID:???http://pc8.2ch.net/test/read.cgi/hosting/1147179322/254-256
これか。
あのスレ、この板とかWeb板の.htaccessスレに誘導投げることが多いんだけど
鯖特有の事情を知らん人間には答えられないものまで投げてるときがある。
俺はあっちのスレでいいと思うけどな。
0727724
2006/06/03(土) 21:34:07ID:???3Mにしてみてphpinfo()で確認したから変更されると思う。
(鯖によるかもしれないが)
てか、最初にさくらに聞くべきと思う。
0728nobodyさん
2006/06/03(土) 23:22:45ID:ZQdIlxtX0730nobodyさん
2006/06/03(土) 23:54:34ID:???例)
$hoge['a'][] = "1";
$hoge['a'][] = "2";
$hoge['a'][] = "3";
$hoge['b'][] = "1";
$hoge['b'][] = "2";
この場合$hogeで[b]の配列を先頭に来るように並び替えたい。
0731nobodyさん
2006/06/03(土) 23:59:13ID:ZQdIlxtX標準出力はとれるけど、標準エラー出力がとれず・・・
popenもやってみたけど、なぜかうまくいかず。
http://jp.php.net/manual/ja/function.popen.php
0732nobodyさん
2006/06/04(日) 00:01:23ID:???と設定したいのですができません。
/home/にするしかないのでしょうか?
0733nobodyさん
2006/06/04(日) 00:05:45ID:???標準エラーを標準出力にリダイレクトしてみたら?
proc_open()ならデスクリプタを区別して取得できるよ。
0734nobodyさん
2006/06/04(日) 00:11:15ID:GKXODwlNhttp://*******/user/aiueo/index.html
の/aiueo/を作成したいのですが
0737nobodyさん
2006/06/04(日) 00:35:10ID:???phpinfo();で出力される
1.System
2.Build Date
3.Configure Command
この3つ、もしくはこれら一覧がのってる関連の項目を表示させないことってできますか?
0738nobodyさん
2006/06/04(日) 01:00:32ID:???0740nobodyさん
2006/06/04(日) 01:18:18ID:GKXODwlN教えてください
0741nobodyさん
2006/06/04(日) 01:28:51ID:???http://www.google.com/search?num=50&hl=ja&q=PHP+%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80%E4%BD%9C%E6%88%90&lr=lang_ja
ちょっとググッただけで山ほど出てくるぞ
あと、フォルダって言う言葉とディレクトリって言う言葉でググると当然だけど検索結果が違ってくる。
どっちも基本的に同じ意味だから両方覚えとけ
596 名前:nobodyさん[sage] 投稿日:2006/06/02(金) 01:58:40 ID:???
>>593
ちょっとググッただけで山ほど出てくるぞ。
お前らなんだ?未だにクソした後は親にケツ拭いてもらってるのか?
ちょっとは自分で何とかしようとしてみろよ
お前はまず自分のケツを拭く事からはじめろ
努力も出来ないような奴がプログラミングなんてするな!
※一部編集
0742nobodyさん
2006/06/04(日) 01:38:44ID:???>>596みたいな教える気のないやつはこなくていいよなw
説教してストレス発散したいだけなら、よそにいけっつーの。
0743nobodyさん
2006/06/04(日) 02:06:11ID:???asortでできるくさい。
うまくいかないようならuasortで比較部分を自作かな。
>>738
str_replaceで置き換えるしかなさそう。
0744728
2006/06/04(日) 02:37:25ID:aEL54rVyproc_open()で標準エラー出力とれました。
popen()のリダイレクトでもさっきはなぜかできなかったのですが、
できるようになりました。
0745nobodyさん
2006/06/04(日) 04:16:00ID:???>>741が言っている「フォルダとディレクトリは基本的に同じ意味」ていうの、
あくまで"基本的に"だからな。
実際は似て非なるものだが、ほぼ同義として扱われているだけ。
0746nobodyさん
2006/06/04(日) 04:18:16ID:???0747nobodyさん
2006/06/04(日) 06:05:13ID:???何がしたいのかいまいち分からんが。
ob_start();
phpinfo();
$info = ob_get_contents();
ob_end_clean();
// $infoの内容を編集
echo $info;
0748nobodyさん
2006/06/04(日) 06:10:59ID:???引数で指定出来るじゃねーか。
マニュアル嫁よボケナス
http://jp2.php.net/manual/ja/function.phpinfo.php
0749nobodyさん
2006/06/04(日) 07:42:46ID:???レンタルサーバーです。
いつもこのpublic_htmlの中で色々やってるのですが、
/home/user/log/
にPHPでアクセスすることは可能ですか?
直接ブラウザでlogにアクセスするんじゃなくて、
内部的にPHPを通じてデータを引き出すのは可能か、ということです。
0750nobodyさん
2006/06/04(日) 07:46:45ID:???0751nobodyさん
2006/06/04(日) 07:47:21ID:???0752nobodyさん
2006/06/04(日) 09:40:30ID:???どうもありがとう。タブ文字を空白に展開する関数はないということなので、
自分で作ってみました。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);
}
ひまな人がいたら添削おねがいします。
0753nobodyさん
2006/06/04(日) 09:58:38ID:???添削してもらうより先に自分で実行してみりゃいいじゃん
これじゃいかんの? "\t"でexplodeできるか知らんけど
$space = str_repeat( ' ', $width );
implode( $space, explode( "\t", $string ) );
0755nobodyさん
2006/06/04(日) 13:30:58ID:UMSweBV1if (条件式) {
$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個しかないのです・・・。
何か良い方法はありませんでしょうか? 宜しくお願いします。
0756nobodyさん
2006/06/04(日) 13:34:15ID:???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
{
//何にもエラーが無いなら処理をする
}
0757nobodyさん
2006/06/04(日) 13:35:16ID:???まんまコピペしたら?になったorz
?は空白(タブ)ね。
0758nobodyさん
2006/06/04(日) 13:35:45ID:???0760nobodyさん
2006/06/04(日) 14:08:29ID:GTou7SdE思ってるんだけど、PHP5って将来主流になるの?
スクリプトの機能的にはPHP5である必要は全くないんだけど、PHP4が
かつてのPHP3みたいに順調にフェードアウトしていくことが確定してるんなら
今のうちにPHP5に移行しようかなと
0761nobodyさん
2006/06/04(日) 14:11:38ID:???ついでだけど、そういうやり方するなら
$err_msg[] = "パスワードが正しくありません";
とか
$err_msg[] = "ファイルがありません";
の方がいいぞ。エラーコードとかも合った方がいいけど。
0762730
2006/06/04(日) 14:17:27ID:???てことはやっぱり多次元配列の並び替えを想定した関数は無いってことですね。
もしかしたらphpならと思いましたがそこまでは無いようですね。
では自分で比較用のルーチンでも組んでみます。
0765nobodyさん
2006/06/04(日) 15:46:43ID:???0766nobodyさん
2006/06/04(日) 16:04:35ID:???is_string
0767nobodyさん
2006/06/04(日) 16:09:23ID:???0768nobodyさん
2006/06/04(日) 16:12:44ID:???{
if( is_Baka( $bar ) )
{
echo "わたしゃ神様だよ";
}
else
{
echo "それは私のおいなりさんだ";
}
}
0769nobodyさん
2006/06/04(日) 16:14:35ID:???0770nobodyさん
2006/06/04(日) 16:37:35ID:???0771nobodyさん
2006/06/04(日) 16:37:58ID:???多次元配列の並び替えだけならarray_multisortで色々できるけど、
ソートって普通「格納されている値を元に並び替え」なので、
そういう「項目数の大小で並び替え」っていう構造解析的なのは
想定外の発想だと思うよ。
なので、手順的には
1.各キーの保持する項目数を新しい要素に格納する
2.その要素をソートキーにしてarray_multisort
ってすれば可能じゃないかと思う。
0772755
2006/06/04(日) 16:47:47ID:UMSweBV1なるほど。
elseifを使っていました...orz。勉強になります!V
>>759
コーディングの勉強をしていたのですが、「10日で覚える PHP5入門教室」(山田よしひろ著)という本を参考にしました。
やっぱりマズイでしたかね?
他人のスクリプトのソースでも見て勉強してみます。
0773nobodyさん
2006/06/04(日) 16:54:46ID:???別にその本を見るのは悪いことじゃないよ
その本の内容を理解せずにそのままコピペするのは悪いことだが。
他人のスクリプト見ても理解しなかったら同じ事
0774755
2006/06/04(日) 17:13:40ID:UMSweBV1>>773
いや、コピペしたのではなく、エラーチェックの部分だけを参考にしたんです。
そしたらelseifだったんですね。
まあその本に書いてあったスクリプトは、二つエラーがあっても一つしか表示されない。
そこで私はforで回して表示させようとチャレンジしたわけです。
と、そこで間違ってしまったので…。
最後までアドバイスありがとうございました。
0775nobodyさん
2006/06/04(日) 17:43:29ID:???動作もアルゴリズムもいい感じ。
どこかで使わせていただくかもです。
UTF-8の全角文字が絡むと狂うけど、それは仕方ないかな。
0776nobodyさん
2006/06/04(日) 17:52:57ID:???0777nobodyさん
2006/06/04(日) 18:41:36ID:???それだと、
a[TAB]e
ab[TAB]e
abc[TAB]e
abcd[TAB]e
がダメだと思う。単なるインデントとしてTABを使うなら問題ないけど
0778nobodyさん
2006/06/04(日) 19:05:33ID:???画像を表示させたいんですけど、複数の画像を合わせて
表示というのはできますか?(下手な質問ですみません)
たとえば、アバターのように、服装に合わせてアバターを表示させたり
9x9のマスがあって、変数の状態によってそのマスの色を変えるとか。
どなたかよければ教えてください。
0779778
2006/06/04(日) 19:06:37ID:???携帯用のサイトで表示させたいです。
0780nobodyさん
2006/06/04(日) 19:12:05ID:???画像が用意されているんならやろうと思えばやれるんじゃない?
服の指定をPHPが受けて、画像ファイルを取ってきてCSSとかで表示。
こういう感じじゃないか?
0781nobodyさん
2006/06/04(日) 19:12:38ID:???さらに言うと透過を扱える画像形式を使えばhtmlのレベルで重ね合わせる事もできるし、
全ての組み合わせパターンのものを作っておけば悩む必要すらないよ。
0782nobodyさん
2006/06/04(日) 19:12:42ID:???まぁ、デザインははPHP関係ないだろうからそれなりの手段を使うって事で。
0784778
2006/06/04(日) 19:17:54ID:???ほかのスレで聞いてみます。
0785nobodyさん
2006/06/04(日) 19:21:40ID:???>添削してもらうより先に自分で実行してみりゃいいじゃん
実行してうまく動くことを確認してますよ。実行してないなんてひとことも書いてないんだけど。
>$space = str_repeat( ' ', $width );
>implode( $space, explode( "¥t", $string ) );
これだと、タブ文字をすべて同じ数の空白に置き換えますよね。でもここでやろうとしているのは、置き換える空白の数をカラム位置によって変えて8桁揃えにすることなので、これだとだめですね。
でもタブ文字でsplitするならpreg_replace()よりexplode()のほうがよさそうですね。どうもありがとう。
>>754
>return join($buf);
>はエラーになると思うんだけど、動かしてみた?
手元では問題なく動いてるんだけど。当方PHP5.1.2。もしかしてPHP4だと動かないとか?
>>763
>きったねーソース
そうだね。できれば改善案を教えてくれると助かる。
0786nobodyさん
2006/06/04(日) 19:56:13ID:???注意: PHP 4.3.0 以降、implode() の glue パラメータはオプションとなり、デフォルトは空文字 ('') です。
これは implode() の好ましい使用法ではありません。
下位互換性のため、常に 2 つのパラメータを使用することが推奨されいます。
implode は join な
0789nobodyさん
2006/06/04(日) 20:32:35ID:???$temp="$foo=$bar;";
といったようにコードが入った変数があるとして、
このコード($foo=$bar)を実行するには何か方法がありますか?
0790nobodyさん
2006/06/04(日) 20:40:52ID:???viでソース書いても関数とかの色が変わらないや(´・ω・`)
0793nobodyさん
2006/06/04(日) 22:37:11ID:???httpの原理的に普通のhtmlだけだと無理な気がしますが。
DB+phpで画像を扱う場合一般的にはファイルパスだけをDBに入れてファイルは普通の方法で保存するのでしょうか?
0794nobodyさん
2006/06/04(日) 22:55:01ID:???0795nobodyさん
2006/06/04(日) 22:57:34ID:???img src="./image.php?img_id=100"という方法はわかります。
でも、これだとリクエストでphpが毎回動くので表示数が多いとキツイかと思いまして。
0796nobodyさん
2006/06/04(日) 23:00:41ID:???0798nobodyさん
2006/06/04(日) 23:20:59ID:???0799nobodyさん
2006/06/04(日) 23:49:15ID:???cronjobで一定時間ごとか、DBへの書き込みをトリガーにして更新された画像を
ファイルシステムに書き出すとかすればいいけど、だったらなんでDBに画像を入れるのって
話になるわなぁ。
0800nobodyさん
2006/06/05(月) 00:04:48ID:???やはり色々回りくどい処理になってしまいますか・・。
DBには画像の情報を保存しておいて画像自体は普通に置いておくのが一番効率が良さそうですね。
それでやってみます。
ありがとうございました。
0801nobodyさん
2006/06/05(月) 00:06:27ID:gDfHus2z以下のスクリプトだけでも、何の応答もありませし、@をとっても、何のエラーも表示されません。
allow_url_fopenはOnになっていますし、アクセス先(例ならwww.example.com)のアクセスログには記録されています。
Firewallは切ってあります。
どのような理由が考えられるか、教えていただけませんか?
<?php
$fp = @fopen('http://www.example.com/', 'r');//URLは変更してあります。
echo 'a';
0802nobodyさん
2006/06/05(月) 00:19:15ID:???俺はXPでコマンドプロンプト上で動かしたんだけど上手く言ったぞ
何をもってURLがオープンできてないと思ったんだ?
そもそもそのecho ('a')はなんだ?
0803nobodyさん
2006/06/05(月) 00:20:20ID:9HSZ1/yM一行掲示板を自作したいんだけど、
テキストBOXに書き込ませる。
↓
ボタンを押す
↓(ここがわからん)
変数としてテキストを取り込む
↓
それをデータベースなりテキストなりにインサート
ここまでを取り合えず理解したい。
一行掲示板に限らずこの辺の事詳しく書いてるサイトねーかな?
(一行掲示板 PHP mySQL)でぐぐってみたけどいいとこないんだわ。
0804801
2006/06/05(月) 00:26:58ID:???ありがとうございます。
echo 'a'は、とりあえず何か表示させるためです。
でも何も表示されず、503とかのエラーすら返ってきません。
Apacheのエラーログにも残ってません。
以前はfopen出来たのですが、OS再インストールして環境作り直したら駄目になりました(T-T)
0805nobodyさん
2006/06/05(月) 00:39:36ID:???まずはあれか?HTMLのフォームが分からないってことか?
とりあえず公式
ttp://php.s3.to/man/language.variables.external.html
で、分かりにくかったら
ttp://oss.kk-ntc.co.jp/jpug/pukiwiki/pukiwiki.php?PHP%2F%A5%D5%A5%A9%A1%BC%A5%E0%C6%FE%CE%CF(%B1%FE%CD%D1%CA%D4)
>>804
とりあえず、fopenを書いてる行をコメントアウトしたらもちろんaが表示されると思うけどそれは大丈夫?
0807801
2006/06/05(月) 00:47:51ID:???はい、表示されます。
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が来ないまま終了します。
0808nobodyさん
2006/06/05(月) 00:52:10ID:???指定したphpが実行されると。そういう事でぃすか?
最初に見た掲示板のソースでinput使ってて、よくわかんなかったけど、こっちならわかりそう。
0810nobodyさん
2006/06/05(月) 00:53:38ID:???最後の一行って?
>>807
おかしいなぁ〜。俺も今ちゃんとローカル上(Apache)で試したんだけど
ちゃんと取れたぞ?
ちょっと取得先のURL変えてみたら?
0811801
2006/06/05(月) 01:03:43ID:???別のURLでも駄目です。
fsockopen使う方法ではうまくいきました。
しかしXOOPSのテスト環境なので、スクリプトを修正するのは骨が折れるので
PHPのバージョンを変えて試してみます。
0812801
2006/06/05(月) 01:14:40ID:???ttp://bugs.php.net/bug.php?id=36054
ttp://bugs.php.net/bug.php?id=36102
どうもご迷惑をおかけしましたm(_ _)m
0813nobodyさん
2006/06/05(月) 01:22:35ID:???音楽情報をデータベースから読み込んで表示しますよね?
あれと同じようにPHPでもデータベースにアクセスして
検索キーか何かから音楽情報を出力する事って出来るのでしょうか?
PHPでamazonの商品を検索して表示出来るので、その仕組みと同じではないか
と思っているのですが、いかがでしょうか?
0817nobodyさん
2006/06/05(月) 02:51:30ID:???0818nobodyさん
2006/06/05(月) 03:10:46ID:???のキャッシュ
http://cc.msnscache.com/cache.aspx?q=3259325326139&lang=ja-JP&mkt=ja-JP&FORM=CVRE
0819nobodyさん
2006/06/05(月) 03:12:23ID:???「別ドメインのファイルを読めない」をなんとか解決することが、今回の課題ク
リアの最大のポイントかもしれない。
JavaScriptでは到底ムリのようで、もしかしたらPHPなら可能かもとPHPの本を見
てみると……。HTTPで読み込み可能らしい。簡単なサンプルを作ってみたら、あ
っさり読み込んでくれた。それじゃこれを組み込めばと考えてみるが、Ajaxを使
う必要がなくなってしまうことに気がつく。
いやいや、ここはどうしてもAjaxでなんとかしたい。
PHPなら他のサーバのファイルが読めるでしょ……………
あっ、なーんだそういうことか。
ということで作ったのがこれです。
http://sakipapa.sakura.ne.jp/rss-sample0p.html
0820nobodyさん
2006/06/05(月) 03:13:12ID:???<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」
へ受け渡されることになる。
このような“力技”は「別のサーバのファイルの中身を表示したい!」と同じです
ね。もう少し早く気がつけば良かった。
0821nobodyさん
2006/06/05(月) 04:41:27ID:b18GC8fyまさか書店の解説本なんて訳ないですよね?
0822803
2006/06/05(月) 05:06:03ID:???フォームから、データベースに残すのはできた。
サンクス
次は、これをそのままのページに表示させたいんだけど、どういう構造にしていいかがいまいちわからん。
一番新しいのを上にどんどん乗せてくにはどうしたらいいか教えてくり。
0823nobodyさん
2006/06/05(月) 05:07:41ID:???産地直入。
作ってる所(組織)、作ってる人、作ってる人が屯ってる所、
むしろ自分も生産者のひとりになるとか。
# 自分の見込んだ生産物を消費者に供給する人も重要
0824803
2006/06/05(月) 05:09:01ID:???そのフォームページの下に表示させるようphpを組めばおk?
0825nobodyさん
2006/06/05(月) 05:14:51ID:???Web及び書店
仕事で使ってんならPHPならPHPでカンファレンスがある(米国だったりするけど)
Googleのカンファレンスにも行ったしMicrosoftのカンファレンスにも行ったことがあるよ
ただ、カンファレンスと銘打った単なる商品の宣伝もあるので注意だな
0826nobodyさん
2006/06/05(月) 05:30:57ID:???<?php
$filename = $_GET['u'];
$array = file($filename);
$filenaiyou = join("",$array);
echo $filenaiyou;
?>
「Ajax + PHP」でRSSリーダーを作る はこれにて完了
0828nobodyさん
2006/06/05(月) 07:51:20ID:???0830nobodyさん
2006/06/05(月) 08:05:41ID:???ttp://www.php.net/manual/ja/
いかにもそういう関数が書かれていそうな「Strings(文字列関数)」ってのがある。
実際に中を見てみるとファイルから直接探すのは無さそう。
ってことは、ファイルの中身(全部あるいは一部分ずつ)を一度読み出してから検索すればよさそうだ。
あらためて見てみると「ファイルシステム関数」ってのがある
0832nobodyさん
2006/06/05(月) 11:02:44ID:???0834nobodyさん
2006/06/05(月) 15:09:00ID:ovUjrMmNtrueの時とfalseの時の動作の違いがよくわかりません。
0835nobodyさん
2006/06/05(月) 15:19:47ID:???0836nobodyさん
2006/06/05(月) 15:20:17ID:???ttp://php.benscom.com/manual/ja/function.is-callable.php
0837nobodyさん
2006/06/05(月) 16:02:12ID:ovUjrMmNどもども、いやその意味と違いがよくわからず・・・
あ、呼び出し可能かどうかは調べないということですかね。
0838nobodyさん
2006/06/05(月) 16:52:30ID:???0842nobodyさん
2006/06/05(月) 17:10:58ID:???ダメですか。
0843nobodyさん
2006/06/05(月) 17:26:25ID:???オレは構わないけど、適切な回答が得られるかどうかしらない。
MySQLは知らないけど、DESCじゃダメなの?
0845nobodyさん
2006/06/05(月) 17:52:24ID:???0846nobodyさん
2006/06/05(月) 17:57:00ID:???改行の位置がわからんからいきなり行の指定はできない
fileとかで読み込んでするしかないね
DBがいいと思う
0849nobodyさん
2006/06/05(月) 20:07:37ID:qfd9QG5u認証というか、いわゆるログイン/ログアウトの仕組みをつくりたいのですが、
1.ID/PASS2項目のログインフォームを作る
2.submitしたら、ユーザーテーブルにつないで、POSTされたID/PASSが存在するかチェックする
3.合致するレコードがあったら、ようこそhogehogeさん!とかやる
4.その後はsession_start()をやる
5.セッションクローズしたらログアウト
こんな流れでいいんでしょうか?
ユーザーテーブルの管理は管理者が手動で行うものとします。
とりあえずセキュリティ的なものは最低限にとどめるものとします。
なにか足りないものとかありますか?
0850nobodyさん
2006/06/05(月) 20:12:53ID:???注意することは↓くらい?
・session_startは始めにやっとけ
・POSTされたデータをそのままDBに渡すな
0851nobodyさん
2006/06/05(月) 20:16:58ID:???そっちの方が早くね?
0852849
2006/06/05(月) 20:22:29ID:qfd9QG5uれすありがとうございます。
POSTされたデータをそのままDBに渡さないというのはどういうことを指すのでしょうか?
いまとりあえず考えたのは
usernameとpasswordをPOSTして、
その値でwhere username = $_POST['username'] and password = $=POST['password']
みたいなクエリをつくってごにょごにょしようと思ったのですが、
これはまずいですかね?
0853849
2006/06/05(月) 20:26:11ID:qfd9QG5uそうですよね。
認証の仕組みについて、なにも資料を持っていないので、
想像でこんな感じなのかなと思ったのですが、
そもそもそんなプロセスじゃダメだ!と言われるかなと思い、
聞いてみました。
とりあえず書き始めます。
ありがとうございます。
0854nobodyさん
2006/06/05(月) 20:38:28ID:ycACK6dgMySQLに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はいりません。
よろしくお願いします。
0856nobodyさん
2006/06/05(月) 20:49:48ID:???0857nobodyさん
2006/06/05(月) 20:54:31ID:???うわ、ひでぇ文章だな。何となく理解できるが、それ読んでも意味わからない奴たくさんいると思うぞ。
国語勉強しないと駄目だな。
0860nobodyさん
2006/06/05(月) 21:20:32ID:/Q4wZYeJ> charlistパラメータにより、削除する 文字を指定することも可能です。
> 削除したい全ての文字をリストに してください。
> ..を文字の範囲を指定する際に 使用可能です。
"\n" と "\r" を削除したいのですが、具体的にはどうリストにすればよいのでしょうか?
区切り文字は必要なく、普通に:
trim ($var, "\n\r")
と書いてしまえばよいのでしょうか?
0861849
2006/06/05(月) 21:36:40ID:qfd9QG5uレスどうもです。いまスクリプト書いています。
XSS脆弱性については勉強が追いついてないです。POSTのデータは
サニタイズ(でいいのかな?)して、タグの除去等は行うつもりです。
passwordの値もmd5()の文字列にしようと思っています。
他になにかありますか?
実はPEARのAuthはカンタンでイイ!みたいな話を小耳に挟み、
サンプルコードなど書いてみたのですが、
なんとなく時期尚早というか、オーソドックスなやり方を知っといたほうが
いいと思ってやめときました。
やはりPEAR::Authはオススメなのでしょうか?
0864849
2006/06/05(月) 22:51:24ID:qfd9QG5uどうもです。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 "そんな人いません";
}
添削お願いいたします。
0866849
2006/06/05(月) 23:00:27ID:qfd9QG5u早速レスありがとうございます。
一応意図した通りに、登録されてる場合は名前が出るし、登録されてない人は、
いないといわれます。
セキュリティ的なものはあとでhtmlspecialcharとかしようと思ったのですが、それでもマイナスでしょうか....。
どのへんが致命的にイクナイ!ですかね?
0867nobodyさん
2006/06/05(月) 23:12:36ID:???アドスラに気を配るのと、
シングルクォートもどうにかする。
username = '' or username is not null and password = '$pass';
みたいになる。
0868nobodyさん
2006/06/05(月) 23:13:59ID:???username = '' or username != ''
$nameに、
' or username != '
みたいな感じで入れられるのを想定する
0869nobodyさん
2006/06/05(月) 23:36:10ID:???つながんねーYo!
0870nobodyさん
2006/06/05(月) 23:36:30ID:???小5なんで分かりやすく教えてくれると嬉しいデス
0871nobodyさん
2006/06/05(月) 23:46:46ID:???ttp://kids.goo.ne.jp/cgi-bin/kgbody.php?BL=0&SY=0&TP=http://php.s3.to/man/function.mysql-fetch-array.html
なお、PostgreSQLなら、pg_fetch_allでいっぺんに取得できる。
0873nobodyさん
2006/06/06(火) 00:13:32ID:???正規表現をしたい箇所で[0-9A-Za-z]に記載して半角英数字は表示されるのですが、
- を表示させたい場合、どのように書けばいいのでしょうか?
0876nobodyさん
2006/06/06(火) 00:29:40ID:???0877nobodyさん
2006/06/06(火) 00:30:35ID:???0879849
2006/06/06(火) 00:32:55ID:KDLdvTgnありがとうございます。
確かに危険ですね。
セキュリティ対策も同時進行で勉強するようにします。
phpセキュリティのオライリー本なども出てたので。
0881nobodyさん
2006/06/06(火) 01:25:50ID:P9qxVQD6記事とその記事の投稿者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。
0882nobodyさん
2006/06/06(火) 01:32:43ID:???0883nobodyさん
2006/06/06(火) 01:34:30ID:???0884nobodyさん
2006/06/06(火) 01:35:10ID:???0885nobodyさん
2006/06/06(火) 04:15:03ID:???0886nobodyさん
2006/06/06(火) 04:56:22ID:???if(!$name||ereg("^( | )*$",$name)) error("名前が書き込まれていません");
これの意味が分かりません
$nameが記入されているかどうかを調べる処理というのは分かるんですが
それぞれの文字列にどういう意味があるのか分かりません
検索しようにも記号ばかりなのでぜんぜん引っかかりません・・・
どうかご教授お願いします
0889nobodyさん
2006/06/06(火) 07:22:28ID:???見よう見まね?
0890nobodyさん
2006/06/06(火) 07:35:32ID:???例えば次のようなtry-catchがあったとして
try {
...throwする可能性のある処理...
} catch (MyException $ex) {
...catch処理...
}
finallyと同じことをしようとすると、今は次のようにしています。
try {
...throwする可能性のある処理...
...後始末...
} catch (Exception $ex) {
...後始末...
if ($ex instanceof MyException) {
...catch処理...
} else {
throw $ex;
}
}
いくらなんでもこれはださいので、もっとスマートに書けないかと考えているのですがいい考えがありません。
みなさん、finally処理はどうやってますか?
0892nobodyさん
2006/06/06(火) 14:55:13ID:19d/3eWN変数$aの数値が2の何乗かどうか調べたいのですが、そのような関数も見つからなかったので、自作しようかと思うんですが、どうすればスマートですかね?
例えば
$a=2の時は1
$a=8の時は3
$a=5の時は2余り1
としたいです。
考えたのは2*$iを繰り返しながら比較していくものですが、他に手はありませんかね?
0893nobodyさん
2006/06/06(火) 14:59:32ID:ZfYvkt9o0894nobodyさん
2006/06/06(火) 15:01:53ID:ZfYvkt9olog(底が2)をとればいいのでは?余りの表現も簡単にできそう。
0895nobodyさん
2006/06/06(火) 15:04:17ID:???intval(log($num, 2))
0896nobodyさん
2006/06/06(火) 15:23:29ID:???0900nobodyさん
2006/06/06(火) 16:15:28ID:???0901892
2006/06/06(火) 16:16:26ID:19d/3eWNうほ、レス早いですね。ありがとうございます、期待通りできましたしコードがすっきりしました!
精進いたします。
0902nobodyさん
2006/06/06(火) 19:04:40ID:W8TvM/A+<?
$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" って出てほしいんですが。。。
ログを見る権限もないのでどうすればいいのかわかりません。
どなたか教えてください。
0903902
2006/06/06(火) 19:05:58ID:???0904nobodyさん
2006/06/06(火) 19:27:40ID:???どのくらいの行が入っているか調べる方法ってありますでしょうか?
(もしくは現在○行目など)
リファレンス等見たのですが、適当な関数が無く、どうしたらいいかと思ってます
0905nobodyさん
2006/06/06(火) 19:30:45ID:???0906nobodyさん
2006/06/06(火) 19:38:32ID:???1行目に無意味にechoでも追加してみて,
それが表示されないようならデータベース以外に問題がある。
という切り分けはやったかい?
0909nobodyさん
2006/06/06(火) 20:38:54ID:Jdx8zpwk仕組みがありますが、あれってPHP側と言うより、サーバ側ですよね?
Cronで処理しているような。
PHPで同様の仕組みって可能なのでしょうか?
0912nobodyさん
2006/06/06(火) 21:47:47ID:q0hn4TSTらんらんらん♪
どーでもいいでーすよ...";
正規表現についての質問になってしまうと思うのですが、これを:
<p>ふんにゃかふんにゃからんらんらん♪</p>
<p>どーでもいいーですよ...</p>
のようにpタグで括りたいと思っています。
私の考えた正規表現では、普通に改行しただけでpタグに括られてしまいます...
これを *空行* がある行をマッチさせるにはどういう表現を使えばよいのでしょうか?
よろしくです。
0913nobodyさん
2006/06/06(火) 21:54:45ID:???0914nobodyさん
2006/06/06(火) 22:40:31ID:???また皆さんはどんな方法でやったますか?
0915nobodyさん
2006/06/06(火) 23:02:30ID:???↓
自分の好きな番号と照らし合わせる
↓
投稿出来るか否か判断。
0916nobodyさん
2006/06/06(火) 23:09:30ID:???レスありがとうございます
eregの意味は分かっていましたが
色々と調べていったところ「メタ文字」について分かっていなかったようです
分かりづらい質問ですんませんでした
0918nobodyさん
2006/06/07(水) 00:02:26ID:5StxHtuDPHPにもやはりできることとできないことがあると思うのですが
下記のようなプログラムをPHPで書くことは可能でしょうか?
碁盤の目を表示させ
キーボードの↑↓等で 碁盤の中の升目をカーソルが移動する
移動している際、今どこの位置にいる(縦x、横y)か常に画面上に表示する
□□□縦2
□■□横2
□□□
下を押すと
□□□縦3
□□□横2
□■□
このようなプログラムを書いてみたいと思っております
もし可能であってもやはり移動するごとに画面のロードのためサーバと通信しないといけないようになってしまうのでしょうか?
0920nobodyさん
2006/06/07(水) 00:22:36ID:???それはPHPじゃ無理だろうな
Javaとかじゃないと無理だと思う。
しかもサーバ通信をその都度したくないのならJavaScript(ajax)
まぁ、ajaxでもその都度サーバとアクセスするんだけどね。ただ、ページ全体のリロードはかからない。
0921nobodyさん
2006/06/07(水) 00:45:39ID:???PHPファイルを開くときはこのエディタを使うよう指定したんですが、
PHPファイルをダブルクリックしてPHPエディタが起動しても
何も書かれてない白紙状態なんですが・・・。どうしたもんだろ・・・
0923nobodyさん
2006/06/07(水) 01:47:58ID:???今のところレッツPHPくらいしか見つからない・・・
0926nobodyさん
2006/06/07(水) 03:10:35ID:???0927nobodyさん
2006/06/07(水) 04:07:34ID:???phpの拡張子のあとスラッシュが入って引数を渡しているようなのですが、どのようにして変数の受け渡しをしているのでしょうか?
サーバー側の設定でしょうか?
例
ttp://www.hostelworld.com/availability.php/KhaosanTokyo-Tokyo-10077
0932nobodyさん
2006/06/07(水) 06:49:03ID:JStUUvxxavailability.php
はディレクトリ名だったりするのかも。
0934nobodyさん
2006/06/07(水) 07:59:51ID:???auはサブスクライバIDだからまた別だろ。Vodaはシリアルナンバー。
少しは携帯会社のホムペ読んで勉強しろ。
0936nobodyさん
2006/06/07(水) 10:22:39ID:AURV4K35僕はPEARとSmartyをレンタルサーバのドキュメントルートに置いて、
ファイルにはrequire("PEAR/DB.php")とか
require("Smarty/libs/Smarty.class.php")とか書いているのですが、
これは間違った使い方ですか?
どこかで、ini_setでinclude_pathを〜というのを読み、やったのですが、
実際あってもなくても変わりません。
requireで直接クラスファイルを指定しても問題ないのでしょうか?
0937nobodyさん
2006/06/07(水) 10:43:38ID:???オブジェクトル志向でなければできないものってありますか?
またある場合はどんなものですか?
0938nobodyさん
2006/06/07(水) 10:45:21ID:WC4qWOrZ0939nobodyさん
2006/06/07(水) 11:19:36ID:???意外と引っかかって笑える
0940nobodyさん
2006/06/07(水) 11:44:41ID:???0941nobodyさん
2006/06/07(水) 12:43:23ID:???でもよく見たらただのタイプミスっぽいな。全部同じページの同じ箇所で
他の箇所はオブジェクトになっているし。
0942nobodyさん
2006/06/07(水) 13:05:41ID:???勝手に「オブジェクト指向」と読み替えてみるがよろしいか。
オブジェクト指向でなければできないというような事はない。
0943452
2006/06/07(水) 13:13:28ID:???0945nobodyさん
2006/06/07(水) 13:26:47ID:???しかも質問の内容がまたクズ過ぎる。
回答を待ってる間に自分でGoogle検索すら出来ないのだろうか。
0946nobodyさん
2006/06/07(水) 13:33:49ID:AURV4K35Pearはini_setしないと動かなくね?
0947452
2006/06/07(水) 13:34:19ID:???はぁ教えろよ!わざわざ学校休んだ漏れがかわいそうじゃないのか??(´;ω:`)口わるいのはあやまるからさ…(´;ω:`)
0949nobodyさん
2006/06/07(水) 13:39:57ID:???0950452
2006/06/07(水) 13:51:57ID:???0951nobodyさん
2006/06/07(水) 13:56:16ID:???0955452
2006/06/07(水) 14:05:56ID:???サンキュー
>>954
おっさんより将来明るいよてかもう1個質問してもいい?(`.ω.´)?カラム(?一列のことだよね?)だけ指定して配列に入れたいときはどうすればいいの?
0956nobodyさん
2006/06/07(水) 14:18:28ID:???0958nobodyさん
2006/06/07(水) 14:28:42ID:???オレは優しいから教えてあげるよ
ttp://dev.mysql.com/doc/refman/4.1/ja/index.html
ttp://www.postgresql.jp/document/current/html/
0960nobodyさん
2006/06/07(水) 14:30:31ID:guJlw/CSif (携帯からのアクセスではない){
echo "携帯からアクセスしてください";
処理を中断する。←これ
}
<HTML>
〜〜〜
</HTML>
つまり、中断したらその下は表示されなくしたいです。
0961nobodyさん
2006/06/07(水) 14:30:35ID:???学校までさぼりやがってお先真っ暗だろ。ばーか
0963nobodyさん
2006/06/07(水) 14:41:50ID:???PHPはドキュメント頑張ってるし、日本語訳もすぐに出てくるし、恵まれた環境なのに。
2chで聞いて返事待つより、マニュアルあたったほうが遥かに早い。
0966452
2006/06/07(水) 14:45:20ID:???0967nobodyさん
2006/06/07(水) 14:47:32ID:???0968nobodyさん
2006/06/07(水) 14:54:51ID:???そうやってこの世は続いていくんだ。
0969nobodyさん
2006/06/07(水) 14:59:29ID:???0970452
2006/06/07(水) 15:14:50ID:???0971nobodyさん
2006/06/07(水) 15:16:33ID:???0973nobodyさん
2006/06/07(水) 15:59:10ID:???具体的には、
2000/10/1
2005年01月3日
2003-3-1
平成8年1月2日
など不定形で得られた日付を、
20050105
等、定型にフォーマットしたいです。
0974nobodyさん
2006/06/07(水) 16:03:50ID:???(スレ違いだったらごめんなさい。どこで質問していいのかわかりませんでした。)
PHPでsafe_mode = on にすると、phpMyAdminが開けません。
エラーは「#1045 - Access denied for user: 'xxx@localhost' (Using password: NO) 」と出ています。
safe_mode = off にすると開けますが、セキュリティのため、onにしたいので困っています。
よろしくお願いします。
0978nobodyさん
2006/06/07(水) 16:24:45ID:???配列をstrlenしたら要素を合計した値が帰ってきますか?
0979nobodyさん
2006/06/07(水) 16:38:01ID:???0980nobodyさん
2006/06/07(水) 16:42:59ID:???マニュアル(日付関数)を読むと良いと思うよ。
その上で、そこにある機能で不足するなら再度訊きにおいで。
# UNIXタイムスタンプの範囲だとダメだとか。
0981nobodyさん
2006/06/07(水) 17:28:34ID:???ローマ字、カナ、漢字など関係なく50音順に配列させる方法を教えてください。
表示する文字とは別に、「よみがな」のような項目を作るのでしょうか?
0982nobodyさん
2006/06/07(水) 17:29:03ID:???なんか秀丸の自動選択でプログラムしてて、動作確認すると「ソ」や「十」の文字がエスケープされていたので、
EUCに保存しなおしたら、すべての日本語が文字化けして困ったのですが・・・
しかもSJISに再設定しても化けた文字が直らなかったし・・・
0984nobodyさん
2006/06/07(水) 17:35:34ID:???if ($hoge) $hoge1 = 1; $hoge2 = 2;
は文法的に正しいでしょうか?
{}で括った方がベターでしょうか?
0986nobodyさん
2006/06/07(水) 17:58:21ID:???どういう結果を求めてるのか分からんが
それだと最初の $hoge1 = 1; しか対象にならん。 $hoge2 = 2; は常に実行される。
0987984
2006/06/07(水) 18:11:42ID:???と同様の結果が得られているようなんですが環境によるんでしょうか。
0988nobodyさん
2006/06/07(水) 18:25:39ID: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);
のようにしてもうまくいかなくて困っています。
0990nobodyさん
2006/06/07(水) 18:31:44ID:???0991nobodyさん
2006/06/07(水) 18:34:54ID:LinrwTZ1すみません、どんなのかはわかったのですけど、
どのように書けばよいかわかりません。
良ければもう少し詳しく教えていただけませんか?
お手数おかけして申し訳ないです。
0992nobodyさん
2006/06/07(水) 18:37:24ID:???>>986が全て。
$hogeをtrueにしてもfalseにしても同じ結果何なるんだったら
藻前はスーパーハカー
0993nobodyさん
2006/06/07(水) 18:40:17ID:???見たいな感じででソートできればうれしいんだけどね
0994nobodyさん
2006/06/07(水) 18:42:45ID:???if ($a[2]) == $b[2])){
return 0;
}
return ($a[2] < $b[2]) ? -1 : 1;
}
usort($arrayr, 'my_cmp);
0995nobodyさん
2006/06/07(水) 18:56:28ID:???02 http://pc5.2ch.net/test/read.cgi/php/1105218084/
03 http://pc5.2ch.net/test/read.cgi/php/1107780435/
04 http://pc8.2ch.net/test/read.cgi/php/1110697712/
05 http://pc8.2ch.net/test/read.cgi/php/1114787573/
06 http://pc8.2ch.net/test/read.cgi/php/1117945031/
07 http://pc8.2ch.net/test/read.cgi/php/1121100429/
08 http://pc8.2ch.net/test/read.cgi/php/1123431535/
09 http://pc8.2ch.net/test/read.cgi/php/1125716012/
10 http://pc8.2ch.net/test/read.cgi/php/1127581425/
11 http://pc8.2ch.net/test/read.cgi/php/1129582431/
12 http://pc8.2ch.net/test/read.cgi/php/1130835396/
13 http://pc8.2ch.net/test/read.cgi/php/1132921016/
14 http://pc8.2ch.net/test/read.cgi/php/1134868212/
15 http://pc8.2ch.net/test/read.cgi/php/1137236771/
0996nobodyさん
2006/06/07(水) 18:57:43ID:???17 http://pc8.2ch.net/test/read.cgi/php/1140786348/
18 http://pc8.2ch.net/test/read.cgi/php/1142417901/
19 http://pc8.2ch.net/test/read.cgi/php/1144513878/
20 http://pc8.2ch.net/test/read.cgi/php/1146165153/
21 http://pc8.2ch.net/test/read.cgi/php/1148389517/
29ch ttp://makimo.to/cgi-bin/search/search.cgi?q=PHP%81@%8E%BF%96%E2%82%CD%82%B1%82%B1%82%C9&sf=2&andor=AND&H=&view=table&all=on
0997nobodyさん
2006/06/07(水) 20:22:40ID:???ttp://jp.php.net/manual/ja/function.include.php に、
requireやincludeした時にどういう場所をどういう順番で探していくか書いてあるから見てごらん。
0998nobodyさん
2006/06/07(水) 20:22:49ID:???逆引きリファレンスみたいなのがないからじゃね?
こうしたい → 関数がわからん… → はあマニュアルを最初から読むんですか...('A`)
0999nobodyさん
2006/06/07(水) 20:40:24ID:???公式にあるじゃん
こうしたい→関数わからん→公式リファレンス→○○関連→それらしい名前の関数発見→キター(゚∀゚)--!!
1000nobodyさん
2006/06/07(水) 20:57:18ID:???10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。