【PHP】下らねぇ質問はここに書き込みやがれ 22
1 :
nobodyさん :
2006/06/08(木) 05:09:28 ID:5gGJKVO4
3 :
1様 :2006/06/08(木) 05:11:19 ID:???
4 :
1様 :2006/06/08(木) 05:12:06 ID:???
・part17よりテンプレ化 extractは極力使わないほうがいいと思います。 例えば、 hoge.php?_SESSION[user_pw]=hogehoge って形で送られてきたとします。これを extract($_GET) しちゃうと、$_SESSION['user_pw']の値が、 "hogehoge"に変更されてしまいます。 もし事前にユーザのパスワードを、$_SESSION['user_pw']に 保持してたとしたら、勝手に書き換えられてしまうことになります。 それを避けるために extract($_GET, EXTR_SKIP) ってやって上書きを避けたとしても、 このままでは変数の初期化を忘れる危険性があります。 extract($_GET, EXTR_PREFIX_ALL, "get") と、接頭辞をつけるのが一番安全な気はしますが、 それなら最初から $hoge = $_GET['hoge']; ってやるのと手間が変わらないと思いますし、可読性も増します。 確かにextractするのは楽だと思いますけど。
質問スレはマニュアルの検索エンジンではありません 「○○する関数はありますか?」の類いの質問はお断りします
perl正規表現(preg)でmatchする部分を全て(all)で取り出す関数はありますか?
phpスクリプトから、別のphpスクリプトを実行するにはどのように書けばよいのでしょうか?
$_POSTを使うと、常にPHP Notice: Use of undefined constantという警告が出るのですが どうしたらよいのでしょうか?
>>8 $_POST[hoge]ってやってるだろ
配列のインデックスは数字か文字列なので
$_POST[゛hoge゛]が正しい。
header("Location: ./"); と header('Refresh: 0;URL=./'); の違いを教えてください。
>>10 HTTPの規格書でも読みなされ。PHP関係ないよ。
12 :
nobodyさん :2006/06/08(木) 10:43:29 ID:ke6FFl5N
$_SERVER['QUERY_STRING']
14 :
nobodyさん :2006/06/08(木) 11:08:55 ID:ke6FFl5N
user_agentをau,docomoなどにするにはどうすればいいですか? 偽りたいのですが
PHPでのディレクトリセパレータ文字について質問。 WindowsXPで試すと、'/' がセパレータとして使えるみたいだけど、'¥¥'じゃなくてもいいんでしょうか。 例えば $files = glob('lib/*/*.php'); と書いたとき、これはUNIXだけでなくWindowsでも問題なく動くことが保証されていますか。 マニュアルみると DIRECTORY_SEPARATOR という定数がわざわざ定義されてあるから、 それならUNIXとWindowsで異なるセパレータを使い分けなきゃいけないのだと思ってたので。
18 :
452 :2006/06/08(木) 12:44:52 ID:???
データベースに入っているデータを検索→当てはまったらreturn TRUE 当てはまらなかったらreturn FALSEにしたいんですができないorz誰か手伝って(´;ω;`) $query_1 = "select count(*) from user_tbl where id='{$hoge}' and delete_flg <> 1"; $query = "insert into user_tbl( hoge) values ('{$hoge}')"; if((mysql_query($query_1))==0) { $result = mysql_query($query); mysql_close($mysql); return TRUE; } mysql_close($mysql); var_dump(mysql_num_rows(mysql_query($query_1))); return FALSE; } これできないorz
>>18 当たりまえ
前スレでムカツイタ452に教える気はない
20 :
nobodyさん :2006/06/08(木) 13:09:17 ID:pYzcdko8
ログデータが保存されているディレクトリが複数あって、そのディレクトリ内のログデータを全部まとめて1つにして ディレクトリ名をログの配列に入れて、テキストデータに吐き出したいのですがうまくいきません(書き出すところです) 表示は出来ているのですが・・・。 ディレクトリ名を取得して、ディレクトリ内のファイルを取得して、ディレクトリ内のファイルを全部開いて、 ディレクトリ名をarray_unshiftで配列に加える、ログに書き出します。どこにfputsを入れても変な形になってしまいます。 どなたかご教授お願いしますTT file ├001(1.csv 2.csv 3.csv) ├002(1.csv 2.csv 3.csv) └003(1.csv 2.csv 3.csv)
21 :
20 :2006/06/08(木) 13:10:01 ID:???
$myself = basename($PHP_SELF); $path = "file"; $startdir = opendir($path); rewinddir($startdir); while($entry = readdir($startdir)){ $subdir = "$path/$entry"; if($entry == ".." || $entry == "."){ continue; } if ($dir = opendir("$subdir")) { while (($logfile = readdir($dir)) !== false) { if ($logfile != "." || $logfile != "..") { $logdir = "$subdir/$logfile"; $logs = @file($logdir); foreach($logs as $value){ $line = explode(",", rtrim($value)); array_unshift ($line,$entry); print "\"$line[0]\","; print "\"$line[1]\","; print "\"$line[2]\","; print "\n"; } } } closedir($dir); } } closedir($startdir);
>>18 どううまくいかないのか書いたほうがいいんじゃないかな。
データがあるのにかならずreturn falseになるとか、
データがあってもtrueが返ったりfalseが返ったりするとか。
23 :
452 :2006/06/08(木) 13:20:58 ID:???
>>22 ありがとうございます(´;ω;`)
どんな値を入れてもFALSEが返ってきちゃいます ダンプしてみたらboolが返ってきますた
>>24 >クピークププー
キンモッ!!
VIPに帰れ
>>18 >mysql_close($mysql);
>var_dump(mysql_num_rows(mysql_query($query_1)));
>return FALSE;
mysql_close() してから mysql_query() はしないほうがいいかな。
27 :
452 :2006/06/08(木) 14:21:49 ID:???
>>26 直したらresource(8) of type (mysql result)こんなんでました 関数ミスかクエリのミスっぽいのはわかるんだけんど(´;ω;`)明日までに全部終わらないぽ
>>24 あーこりゃだめだな
こんなアホの相手すんなって
30 :
nobodyさん :2006/06/08(木) 15:19:58 ID:vAH14IAN
日付を比較するプログラムを作成したのですが、なぜか上手く日付が 表示されません。ソースは↓ですが、おかしい箇所があれば、ご指摘下さい。 $date_set01="2006,06,10,00,00,00"; $date_set02="2006,06,12,23,00,00"; $set1=split(",",$date_set01); $set2=split(",",$date_set02); $d1 = mktime ($set1[3], $set1[4] , $set1[5] , $set1[1], $set1[2], $set1[0]); $d2 = mktime ($set2[3], $set2[4] , $set2[5] , $set2[1], $set2[2], $set2[0]); $time_diff = $d2 - $d1; echo("時差:<br>"); echo date("Y",$time_diff) - 1970; echo("年"); echo date("m",$time_diff) - 1; echo("ヶ月"); echo date("d",$time_diff) -1; echo("日"); echo date("H",$time_diff); echo("時"); echo date("i",$time_diff); echo("分"); echo date("s",$time_diff); echo("秒");
31 :
452 :2006/06/08(木) 15:27:32 ID:???
>>29 漏れ男ですけどいいんですか(´;ω;`)
32 :
軟式PHP :2006/06/08(木) 15:31:02 ID:???
>>20 >そのディレクトリ内のログデータを全部まとめて1つにして
>ディレクトリ名をログの配列に入れて、
ここの意味がわかりにくい。
全ディレクトリを走査して、全ファイルをひとつのファイルにしたいってこと??
>>30 date() 関数の使い方が間違っている
date() の第二引数は、タイムスタンプの数値が必要だけど
このソースだと、二つのタイムスタンプの差分を与えている
34 :
軟式PHP :2006/06/08(木) 15:42:55 ID:???
>>30 その計算の何ヶ月というのは31日固定でいいの?
ただ1970年に$time_diffを足した年月日との差分になるんで
期待する値は取得出来ないような気がする。
35 :
30 :2006/06/08(木) 15:51:51 ID:vAH14IAN
>>33 「二つのタイムスタンプ差分を」とのことですが、$time_diffは差分を求めた
後の変数なので、これで大丈夫だと思っていました。
ただ、その他どこをどうするか想像も付きません。変更箇所を教えていただけないでしょうか?
>>34 いえ、28日も30日も入ると思います。-1970などとしているのは
タイムスタンプが1970年01月01日から始まるとのことで、このようにしているのですが、
だからといってその他、どうすれば求める値が得られるかわかりません。。。
お世話になります。
session_start();
$hage = array(
'a' => "あむろ",
'b' => "ぶらいと",
'c' => "きゃすばる",
);
$_SESSION = $hage;
このような処理をすると$_SESSIONには確かに$hageの値が入っているのですが、
セッションIDを維持したまま他のファイルに移動して$_SESSIONを呼び出しても
そちらの$_SESSIONには何も入っていません。
マニュアルのセッションに関する説明(
http://php.s3.to/man/ref.session.html )には
> セッションを処理している時、 session_register()関数を使用するか
> スーパーグローバル配列$_SESSIONへ新しいキーを追加することにより
> 変数が登録されるまで、セッションのレコードは作成されないことに注意してください。
と書かれてありますが、$_SESSIONに値を登録する時には常に
$_SESSION['a'] = $hage['a'];
のように直接、もしくはforeach()等でとにかくひとつずつ入れる必要があるのでしょうか?
まとめて簡単に代入する何か良い方法がありましたらご教授頂けますと幸いです。
PHPのバージョンは5.1.2です。どうぞよろしくお願いします。
>>35 「二つのタイムスタンプ差分を」をタイムスタンプに変換する必要がある
このソースをそのまま手を入れるのなら
$time_diff = $d2 - $d1;
// ここで、タイムスタンプの基本の値を取得する
$base = mktime(0, 0, 0, 1, 1, 1970);
// 上で求めた、二つのタイムスタンプの差分に基本値を足して、タイムスタンプに変換する
$time_diff = $time_diff + $base;
>>36 $_SESSION['post_data'] = array(
'a' => "あむろ",
'b' => "ぶらいと",
'c' => "きゃすばる"
);
他のPHPで値を参照
$post_data = $_SESSION['post_data'];
echo $post_data['a']; // あむろ
>>38 つまり、
$_SESSION = $hage;
とは書けないということでしょうか?
40 :
20 :2006/06/08(木) 16:25:56 ID:???
>>32 そうです〜。更にディレクトリ名を取得して配列の列に加えたいのです。
元のCSVが「1列、2列、3列」という情報が入ってるとしますと、
「ディレクトリ名、1列、2列、3列」というふうにしたいのです。
月の日付が入ったディレクトリがあり(200505などしかし飛んだりしてバラバラで規則性はないです)、
そのディレクトリ内には日ごとのアクセスログ(CSV)があるという具合です。
41 :
30 :2006/06/08(木) 16:37:02 ID:???
>>37 出来ました!まだまだ理解力不足でしたが、これを期に精進します。
ありがとうございました。
>>42 本スレもくだらない質問ばかりだということで次スレがたたなかった
44 :
軟式PHP :2006/06/08(木) 17:20:30 ID:???
>>40 そのCSVって1行データなの??
>どこにfputsを入れても変な形になってしまいます。
どう変な形になってるの?
と突っ込みどころが多いけど、表示はうまくいってるってことなんで
それをひとつの変数にためて最後にfwriteしてみたら?
45 :
1様 :2006/06/08(木) 17:53:46 ID:???
>>42 すまん、コピペ厨で…
次スレまでにテンプレを改訂したほうがいいかもね。
46 :
452 :2006/06/08(木) 19:10:25 ID:???
昨日はすげ〜釣れたのにツマンセ〜ナ(´;ω;`)
DBM関数やデータベース抽象化レイヤ関数が指すデータベースというのはMySQLなどとは違うんですか?
HTMLが書かれたphpファイルに、 <?php /* ここにたくさんのメモ */ ?> みたいな使い方をするのは、 誰からも見えない自分だけのメモになりそうな気がするのです。
>>48 ありがとうございます。
MySQLを使っているわけではないのですが、
別のサーバを用意しなくてもデーターベースが使えそうだったので気になりました。
>>51 なんか勘違いしてないか?
データベースとPHPは関係ないぞ
データベースが無いと話にならん
PHPっはデータベースにアクセスする方法を提供してるだけだ
>>49 それくらい普通にやってるだろ
HTMLのコメントにするとソース見られたときに分かるから
見られたくないのはPHPコメントを利用する
ただこれやると改行が崩れるのが玉に瑕
>>52 dbmopenでは引数でファイル名を指定しているので、直接ファイルを操作するものと思い込んでました。
実際には何らかのソフトがファイルを開いて処理しているということでしょうか?
55 :
20 :2006/06/08(木) 22:12:08 ID:???
>>44 CSVは複数行入っています。
fputsすると1個のディレクトリにあるログデータしか取れなかったりします。
で
>>21 の$lineにひとつの変数に溜まっているはずなのですがなぜかそれを
fwiteやfputsしてもうまくいかない状況なので悩んでしまっているのです。
>>54 太古のヤツはそんなのあったけどね。
まず「データベースとは何か」から調べましょう。
それとDBMの使用は推奨されてなかったような気がするです。
現在PHPの掲示板を設置しているのですが、 英語のスパムに毎日悩んでおります。 ひらがな/カタカナを含まない投稿を拒否したいのですが、Perlで if ($in{'comment'} !~ /(\x82[\x9F-\xF2])|(\x83[\x40-\x96])/) { &error("日本語を書いてください。"); } と書くところをPHPではどう書いたらよろしいのでしょうか? ・・・すごい初歩の質問だと思うのですが、よろしくお願いいたします。
質問です
PHPのsafe_modeをonにするとphpMyAdminが使えません。
どうにかしてsafe_mode=onで使えるようにできないでしょうか?
よろしくお願いします。
>>57 if(preg_match("/[ぁ-んァ-ヶ亜-瑤]{2}/", $comment)){
echo "日本語です";
}else{
echo "日本語がありません";
}
59 :
58 :2006/06/09(金) 04:09:48 ID:???
if(preg_match("/[ぁ-んァ-ヶ亜-瑤]/", $comment)){ echo "日本語です"; }else{ echo "日本語がありません"; } # {2}が不要だった
>>58 セーフモードがonの場合、PHPは、 現在のスクリプトの所有者がファイル関数により処理されているファイルまたはディレクトリ の所有者に一致するかどうかを調べます。
61 :
58 :2006/06/09(金) 05:51:25 ID:???
>>59 Compilation failed: range out of order in character class at offset 4 in
64 :
軟式PHP :2006/06/09(金) 10:11:24 ID:???
>>55 最後の行にprint_r( $line );もしくはvar_dump( $line);
ってやって中身確認してみたら?
65 :
20 :2006/06/09(金) 11:52:02 ID:???
>>64 最後の行にprint_rやvar_dumpを$lineにかけますと、
Array ( [0] => ディレクトリ名 [1] => ログ列1 [2] => ログ列2 )と表示されます。
これを以下のようにfputsすると当然ですが1行しかログが書き込まれません。
何かforなどで繰り返し最後まで繰り返し書き込む必要があると思うのですが、
そこがわからないという状態です・・・。
$fp = fopen("log.csv", "w");
flock($fp, LOCK_EX);
fputs($fp, implode(",", $line) . "\n");
flock($fp, LOCK_UN);
fclose($fp);
66 :
軟式PHP :2006/06/09(金) 12:04:05 ID:???
>>65 1行しか入ってないなら当然それしか書き込まれないな。
$lineを二次元配列化するか、foreachの中でfwriteすれば出来るんじゃないの?
print "\"$line[2]\",";
print "\n";
fputs($fp, implode(",", $line) . "\n"); <<追加
}
fopen、fcloseはforeachの外で行うこと。
67 :
nobodyさん :2006/06/09(金) 12:36:07 ID:0pUzo2Bw
もしくは、先にforeachで合体させた変数を一回で書き込むか。
smartyで$i++またいな処理ってできないんでしょうか?
>>69 すまそ
>>70 sumaso
スマーティーで$i++みたいな処理({foreach}内で1個ずつ上がってくれる数値)できますでしょうか?
もしご存知でしたらやり方ご教示くださいな
72 :
20 :2006/06/09(金) 15:21:56 ID:???
>>66 以下をforeach($logs as $value)に入れたらログにきちんと書き込むことが出来ました。
$fp = fopen("log.csv", "w");ですと1行しか書き込めなかったのですがfopenのオプションを
"a"にしたらきちんと全部書き込んでくれました。
$fp = fopen("log.csv", "a");
flock($fp, LOCK_EX);
fputs($fp, implode(",", $line) . "\n");
flock($fp, LOCK_UN);
fclose($fp);
74 :
軟式PHP :2006/06/09(金) 15:46:03 ID:???
>>72 まぁ、「動くレベル」ならそれでもいいけどループ毎にfopenしてたらボトルネックになるし、ロックも怪しくならんかね。
1行しか書き込まれなかったのは"w"で書き込んでたからだろうと思ったから
最後にfopen,fcloseはforeachの外で行うことと補足してたんだが。
>>67 にあるようにバッファをためて最後に書き出すのが一番いいと思うぞ。
75 :
nobodyさん :2006/06/09(金) 17:07:05 ID:5EGQXMwm
引き継いだプログラム全体をmysql_connectでgrepしたら598個出てきやがった('A`) こんなとき、手早く共通モジュールに移す方法ってどうやってます? ウチだと普段はDB関係は独自クラスかpearを共通クラスで一発読みなんだけど…。
78 :
nobodyさん :2006/06/09(金) 18:27:31 ID:96A8iKx8
>>77 何を使ってですか?
秀丸では開ききれないくらいのファイル数です。
しかも、中の書き方もめちゃくちゃだし。
接続して、何か処理をはさんでデータベース選択したり…。
80 :
57 :2006/06/09(金) 21:46:36 ID:???
基本的な質問ですいませんが、定数の再定義って出来ないのでしょうか? 例えば define('DATA','123'); define('DATA','456'); echo DATA; とすると最初に定義した'123'が表示されてしまいます。 後からクリアしたり再設定出来ないのでしょうか?
変更するようなものを定数で定義しちゃいかんよ。
>>82 レスありがとうございます。
変数に変えるようにします。
本当にくだらない質問ですみません。
http://localhost/というのは 、
C:\Program Files\Apache Group\Apache2\htdocs\ですよね。
それを、他の場所で(例えばマイドキュメント)で実行したいのですが
どうすればよいですか?
スレ違いだけど つhttpd.conf
そりゃあんさん、apacheの設定のお話でっせ。 設定ファイルのhttpd.confを良く読んでごらん。分からん場合は適当な板へGo。
88 :
nobodyさん :2006/06/09(金) 22:55:23 ID:uli7/Tc4
>>85-87 すみません、解決できました。
httpd.confのDocumentRoot "E:/Web"に設定しなおしました。
その下に、
<Directory "C:/Program Files/Apache Group/Apache2/htdocs">
とあるのですが、これも変更する必要はあるのでしょうか?
89 :
軟式PHP :2006/06/09(金) 23:01:00 ID:???
>>88 みんながスレ違いって優しく教えてくれる間にApacheスレ探したほうがいいよ。
思ったんですが、hostやUAで判別して検索エンジン専用ページを NOARCHIVEで書き出すようにしたら誰かに怒られますか?
91 :
nobodyさん :2006/06/10(土) 00:02:37 ID:3lMQcCFE
92 :
nobodyさん :2006/06/10(土) 00:11:34 ID:BKZjDDwv
GETでもPOSTでもリクエストが発生するときに、いちいち判定するのが めんどくさいんですが、下記のコードでいいんでしょうか。 本当にGETかPOSTか判定したいときはそのときに$_SERVER['REQUEST_METHOD'] を見るつもりです。 $_REQUESTはCOOKIEまで混ざっちゃうみたいなんでやめとこうかな、と。 NULLバイト攻撃への対策のためNULL文字列は除去しています。 if ($_SERVER['REQUEST_METHOD']=='POST') { $GET = $POST; } $_GET = remove_nullchar($_GET); $_COOKIE = remove_nullchar($_COOKIE); //NULL文字列の除去 function remove_nullchar( $arr ) { if ( is_array( $arr ) ) { return array_map( 'remove_nullchar', $arr ); } return str_replace( "\0", "", $arr ); }
PCと携帯で表示内容の違うページがあります。 そのページがどのような中身か判断する為に、 fileやfopenで調べようとしたのですが、 携帯で、作成したPHPにアクセスしても、 fileやfopenで中身を調べるとPC版を見に行ってしまいます。 携帯版の中身を調べる方法はありませんでしょうか?
94 :
nobodyさん :2006/06/10(土) 00:25:59 ID:OH+eichS
phpスクリプトの著作権表示を消した場合どのように調べられるのでしょうか? そんなことはしないけどずっと疑問に思っているので教えてください。
PHPも少しなれて、データベースに手を出そうと思っています。 MySQLが多いようですが、他のとは何か違うのでしょうか?
include('file.php') を実行したときに、file.phpでパースエラーがあるとinclude()がエラーになりプログラムが終了しますが、 これをcatchすることはできますか。 try { include('file.php'); } catch (Exception $ex) { ..処理.. } でキャッチできるかと思いましたが、できませんでした。
97 :
nobodyさん :2006/06/10(土) 01:51:42 ID:akgzroAU
$array = array('1' => 'x', '2' => 'x'); array_shift($array); print_r($array); 最初に連想配列のキー名に文字列の1を渡してるのですが、 array_shiftすると'2'=>'x'が返ってくると思いきや '0'=>'x'になってしまいました。 数値として認識されてしまうのかもしれませんが、どうにか '2'=>'x'として返す手段はないでしょうか。
98 :
nobodyさん :2006/06/10(土) 02:22:26 ID:rIPxBbNz
気長に待ちますが解答者があまりいないようですね・・・・
>>97 本当だ、普通に添え字(数値の)として判断されるっぽいな。
俺にはどうしたら言いか分からん買った・・・
ただ、もしどうしてもそれでやりたいというのなら、array_shift関数を実行した
回数を変数に持っといて、取り出したい値(添え字)にそれを足すってやったらおkじゃない?
103 :
nobodyさん :2006/06/10(土) 03:16:20 ID:3lMQcCFE
>>93 UAで振り分けてるなら偽装すれば可能
IPで振り分けてれば不可能
>>97 キーの型(数値、文字列)をどのように解釈するかはこの場合関係なくて、
array_shift/array_unshift/array_push/array_popは
「常に配列のキーを連番に振り直す」ので、
array_shift/push系を使う限り、キーを利用する事は不可能
キーも利用したければarray_slice/+演算子/array_mergeを使うべき
>>95 導入してるレンタルサーバーが多い。
お手軽。検索早め。
読み込みメインのDBならmySQLがお勧め。
更新メインのDBならPgがお勧め
かな><
前に、CGIをやっていた物なのですが、 PHPでこのような処理を行うにはどうしたらいいでしょうか $sr[$i] の部分が原因のようなのですが、この先の手がかりがありませんorz for ($i = 0; $i <= 21; $i++) { if ( $st[$i] == "6" ) { $stt1 = "<font color=red><b>$st[$i]</b></font>" } else{ $stt1 = $st[$i] } $i++; if ( $st[$i] == "6" ) { $st[$i] = "<font color=red><b>$st[$i]</b></font>" } else{ $stt2 = $st[$i] } $i++; if ( $st[$i] == "12" ) { $st[$i] = "<font color=red><b>$st[$i]</b></font>" } else{ $stt3 = $st[$i] } array_push($st2, "$stt1", "$stt2", "$stt3"); }
109 :
96 :2006/06/10(土) 12:59:26 ID:???
>>96 ですが、どなたかヒントいただけませんか。
include()したファイルにsyntax errorとかがあった場合、それをcatchしたいのですが。
>>109 ・includeはエラーにならない。
・try-catchは例外を受け取るためのものなので、エラーやウォーニングは直接には関係しない
ttp://www.accessup.org/anime/j_jpmovie_best.html このような、すばらしいレビューサイトを作るには
何について勉強していけばいいですか?
「html」と「css」以外のことは、ど素人で何もわかりません。
自分の考えでは、PHP+データーベースについて
勉強すればいいのかな、と感じたんですが、
何分、無知なもので、その考えが合っているかもわかりません。
PHPの基礎を勉強するのは、当たり前ですが
具体的な勉強課程というのが、見えてこないのが現状です。
114 :
96 :2006/06/10(土) 15:31:25 ID:???
>>111 ,112
さんくすです。結局は補足できないというのが答えということですか。
runkit_lint_file()なる関数を教えてもらいましたが、戻り値がbooleanで
エラーがあったかどうかしか分からず、構文エラーメッセージがわからないので
今回の目的では使用できないです。残念。
やろうとしているのは、PHPコードを自動生成して一時ファイルに書き出し、
それをincludeするこで実行時にクラスを作成することでした。
一時ファイルはすぐに消すんですけど、生成されたPHPコードに構文エラーがあると
include()したときにPHPが終了してしまい、一時ファイルが残ってしまうため、
なんとかエラーをcatchして一時ファイルを削除したいと考えていました。
またinclude()じゃなくてrequire()やeval()だとエラーがあっても分からないので、
これはこれで問題あるし。
なかなかうまくいかないもんですね。
>>105 UAで分けているとしたら
例えばどのような形でUAを送信すればよいのでしょうか?
$url='
http://www.yahoo.co.jp ';
$ua='DoCoMo/2.0 F900i(c100;TB;W18H10)';
fopen,file,headerなどを利用するのでしょうか?
下のJavaScriptでをPHPで書きたいのですがどうしたらいいでしょうか。 parseIntをPHPでどう書けばいいかわからず迷ってます。 for (var i = 0; i < x; i++) a = parseInt("0x" + b.substr(1 + (i + 1) * 2, 2)); for (var i = 0; i < k; i++) c[i] = d.charCodeAt(i); c[0] = parseInt("0x" + b.substr(1, 2));
ちょっと待っててくれ。 JavaScriptスレでparseIntがどういう動作をするものか聞いてくる
119 :
116 :2006/06/10(土) 16:30:42 ID:???
>>118 サンクスです。助かります。
>>116 の2行目の場合だと
$a = hexdec(substr($b, 1 +($i +1) * 2, 2));
という感じでいいのでしょうか。
121 :
36=39 :2006/06/10(土) 17:59:40 ID:???
ど、どなたか
>>39 の疑問に答えを頂けませんか…(;´Д`)ノ
foreach ($hage as $k => $v) { $_SESSION[$k] = $v; } では不満だということ? 関数を定義するぐらいしかないような。
123 :
36=39 :2006/06/10(土) 18:43:20 ID:???
いえ、Array = Array;という書き方に問題があるのかということです。 $_SESSION = $hage; この書き方自体にはPHPの文法上は問題は無いが、 現在の$_SESSIONの仕様上$_SESSION['hage']=云々と書く必要がある、 という解釈で良いのでしょうか?
>$_SESSION = $hage; できるよ。
ああ、問題化といったら問題ないんじゃない。 セッションID強制的に変える場合とかやらないといけないし。
126 :
36 :2006/06/10(土) 19:44:18 ID:???
>>124 工エエェェ(´д`)ェェエエ工
これでもセッションとしてちゃんと動くんですか!
でも
>>36 の通り、この方法で入れた$_SESSIONは少なくとも私の環境では
ページを移った時に保持されていないんですが…もしかして
私のPHP環境が異常なんでしょうか。
>>126 session_start()してる?
129 :
36 :2006/06/10(土) 21:17:57 ID:???
>>128 以下のように書いてチェックしました。
<?php
session_start();
if ($_SESSION) { print_r($_SESSION); } else { print "はげ\n"; }
$hage = array('a' => "あむろ", 'b' => "ぶらいと", 'c' => "きゃすばる");
$_SESSION = $hage;
?>
Cookieを読めるブラウザでこのスクリプトを何度かリロードすると
$_SESSIONがあるならその中身が表示されるはずですが、
実際には何度やっても"はげ"としか表示されません。
一方で
<?php
session_start();
if ($_SESSION) { print_r($_SESSION); } else { print "はげ\n"; }
$hage = array('a' => "あむろ", 'b' => "ぶらいと", 'c' => "きゃすばる");
$_SESSION = $hage;
$_SESSION['a'] = $hage['a'];
?>
このように書いた場合は$_SESSIONの中身(3つ)が全て表示されました。
Hellow World
>>114 今はなんでもかんでも続行できなきゃFatal Errorで終了で、
他の言語みたいにevalでcompile errorをcatchしたりはできないけど、
PHP5以降のバージョンが普及すればevalが例外を投げてくれるように
書き直されるかも。
なんでもかんでもエラーなら終了ってのも動的言語としては微妙だよね。
PHP5以降が普及する前に他の言語に今の座を奪われなければいいけど。
>>130 とりあえず似たような機能を実装してるオープンソースのアプリのコードを読むのがいいんじゃない?
>>130 とりあえずこんなとこで下らない質問してないで自分で調べたらいいんじゃない?
MySQLのデータを外部からPHPを使って更新しようとしています。 フォームに書いた文字をデータとしてデータベースに入れているのですが、 データの中にタグ(「<」や「>」など)がある場合はPHPに送ることもできません。 どうすればちゃんと送れるでしょうか?
「<」や「>」でもちゃんとリクエスト受け取れるよ
>>134 とりあえずお前が作ったwebアプリには重大なセキュリティ・ホールが
存在することだけは確実に分かった。
138 :
nobodyさん :2006/06/11(日) 12:27:15 ID:VeszItwI
自分のリンクページから何人、他へ飛んで行ったか調べる逆アクセス解析みたいなのは無いんでしょうか?
間に入れなきゃダメ ぜんぜn逆アクセス解析じゃねーし
140 :
nobodyさん :2006/06/11(日) 12:49:00 ID:VeszItwI
なるほど、アドバイスありがとうございます。 ちなみに、正しい逆アクセス解析って、どんなんでしょうか?
>>140 自分のコンテンツが、自分以外のどのコンテンツから参照されているかの調査解析。
つか無理して理解が不十分な言葉を使う必要はないよ。その分冗長にはなるけど。
少し質問させてください。 現在ファイルのアップロードが行える掲示板系のシステムをPHPで作成しています。 プログラム自体はそんなに苦労していないんですが、ひとつ付け加えたいものがあって悩んでいます。 大容量のファイルをアップロードする際、アップロードが終わらないと別の処理ができません。 そこで、「現在アップロードをしている」ことをわかりやすくするために、HTML_Progressを使ったポップアップウインドウで実現しています。 しかし、サンプルサイトをみても「総容量に対し、どれだけアップロードできたか」の進捗状況を表示するのではなく、 アップロードが終わるまでアニメーションを行い、アップロードができたらストップさせる形でした。 これを、「総容量に対し、どれだけアップロードできたか」の進捗状況を表示するようには、どうすればいいのでしょうか。 また、アップロードを行うフォームはHTML_QuickFormを使っているのですが、 アップロード中にブラウザを中止させたり、閉じたりした場合、進捗バーが止まらず、見かけ上常にアップロードしているように見えます。 できることなら、アップロード中にブラウザ側でなんらかのエラーが起きてアップロードができなくなったとき、 進捗バーを止め、エラーを表示したいのです。 アップロードに使っている関数はHTML_QuickForm_File::moveUploadedFileです。 この関数ではアップロードが「できた」か「できなかった」かの状態が取れるはずなのですが、 ブラウザからの中断には対応していないのでしょうか。 長くなりましたが、お答え願えれば幸いです。 最後に、もうひとつ質問なのですが、同システムをPerlでやろうとした場合、 PHPで行うより簡単になりますか?
PHPは仕組み上そういう事ができない。perlやJavaならできるよ。 「php progress file upload」あたりでググってみそ。
>>129 上の試したけど、2回目からちゃんと配列が表示されるよ。
>>142 PHPの標準では、そのものの機能がないので工夫が必要。
tmpディレクトリのアップロード途中のファイルの
サイズを読んで返すという仕組みで実現する。
143のキーワード以外に「PHP upload progress-bar」とか。
ファイルのbyte数を計るのはどうすればいいの? Content-Lengthでこまってるんだけど。。。
>>136 そうでもないけど・・・? 釣りか...
>>145 それ無理でしょ。
途中のサイズは分かっても、総容量はアップ完了するまで分からない。
したがって進捗表示は無理。
あー、
>>150 みたいなつまんねぇ揚げ足取り厨がいることを忘れてたぁ〜〜〜
「PHPでは」無理でしょ。
って言えば良かったのかな??
あぶねーあぶねー、つまらない難癖をつけてくるクズには気をつけないと・・・
言語は分かっても日本語分からないヤツは沢山いるって
すみません、セッションを使ったログイン処理で、ブラウザを閉じたら セッションが切れるような設定にしてあります。 ところが、サーバ側でセッション・ファイルを保存しているtmpフォルダを見てみますと、 数日前〜1週間くらい前にログインした分のファイルがいくつか消えずに残っています。 ためしにいまログインして新しいセッション・ファイルが出来たのを確認したあと すぐにログアウトしてみると、そのファイルはきちんと削除されました。 では、なぜ残っているファイルがあるのでしょうか? これは消えないのでしょうか?
155 :
154 :2006/06/11(日) 21:34:32 ID:???
追記です。 さらに実験したところ、明示的にログアウト処理(セッションクッキーの削除やセッションの破壊)を した場合はきちんとセッション・ファイルも削除され、 単にブラウザを閉じるだけでログアウトしてしまうとセッション・ファイルが ゴミとして/tmpフォルダに残ってしまうようです。 このゴミを自動で消すことは出来ないのでしょうか? 一週間も前のが残っていると気持ち悪いし、セキュリティ的にも問題がある気がします。
156 :
nobodyさん :2006/06/11(日) 21:47:31 ID:BO/wu1ch
$info[0]['name'] = 'aaa'; $info[0]['value'] = 1; $info[1]['name'] = 'bbb'; $info[1]['value'] = 2; $info[2]['name'] = 'ccc'; $info[2]['value'] = 1; $info[3]['name'] = 'ddd'; $info[4]['value'] = 2; こんなデータがあるんですが、valueでソートして aaa, ccc, bbb, ddd のようにしたいと思っています。 しかし usort()+strcmp() でソートすると、valueではソートしてくれるんですが, ccc, aaa, ddd, bbb のように同じvalue内で逆順になってしまいます。 これを希望通りにソートするにはどうすればいいですか?
158 :
36 :2006/06/11(日) 21:54:05 ID:???
>>144 Σ(´Д`)ズガーン
…スクリプトをAAACAFEに置いて試したところ、
確かにセッションが保持されてました。
つまりうちのローカル環境が異様だという事ですね。
わざわざありがとうございました…トホホ
159 :
154 :2006/06/11(日) 22:17:03 ID:???
>>156 session.gc_maxlifetimeはデフォルトの1440秒のままです。
それなのに1週間も前のセッション・ファイルが消えないのが
おかしいと思いまして・・・
>>159 セッションファイルはセッションが開始されるごとに
gc_probability/gc_divisorの確率でgc_maxlifetimeより古いものが消される。
デフォルトでは1%の確率でGCが起こる。
gc_divisorを「gc_maxlifetime秒間のアクセス数」に設定しておけ。
ただし、「確率」の実装がどうなってるかは知らないが、本当に確率的に消されているなら、
100年分のセッションファイルが残る確率もある。限りなく0に近い確率だけど
161 :
145 :2006/06/11(日) 22:48:31 ID:???
>>151 揚げ足でもなんでもなく、素でjavascript前提で考えてたよ。
PHPだけでも、クライアントにファイル容量を入力させれば可能だけどね。
# これは本当に揚げ足取りw
さくっとFlashでやるのが一番楽。
香ばしい。
どうみてもperlです。 本当にありがとうございました。
164 :
154 :2006/06/12(月) 01:53:44 ID:???
>>160 なるほど・・・
ところで「gc_maxlifetime」で設定する秒数って、何を基準に数え始めるのでしょうか??
セッション・ファイル作成時刻からの秒数? それとも最終アクセス時刻からの秒数??
もし前者だとすると、24分ごとにセッションが切れちゃう可能性があって不便ですね・・・
>>151 みたいな、PHP単体で考えるヤツとかって、
仕事で使ってる訳でもない素人レベルなんだろうな。
ブラウザに表示する内容をブラウザリロード無しに書き換えるには、
JavaScript(+DHTML)は必要。
そうであれば、AJAXも普通に視野に入れて考えるべきだと思うが。
単純に
>>151 が
>>150 の上手な煽りに釣られただけにしか見えない。
>>165 そういう問題じゃない。
>>142 からの流れをよく嫁、バカ。
PHPで出来るかどうかの話をしてるんだよクズ。
JavaScriptだのFlashだの、ローカルでの処理を加えれば
ほとんど何だって実現出来るに決まってんだろアホ。
>>165 流れ的にPHPでのみ、って話だろ?
お前仕事で必要のない機能や処理を突っ込んでるタイプじゃないか?
仕事でプログラミングやってるやつが多いのはよく分かった。
まぁまぁ。 ここは質問者と解答者のいるスレだよ。 質問には色々な解答があって良いと思うよ。 では、次の方質問どうぞ↓
PHP6っていつ出るの? 何かもう開発してるんだよな?
Cookieの流れとかいろいろモニタしたいのですが、 HTTPヘッダを解析すれば良いのでしょうか? だとしたら、みなさんどのソフトがオススメですか? ベクターとかでちょっと探したけど、どれもイマイチな感じでした。。。
$match = '/>>(.+)/i'; $change = '<font color="red">\0</font>'; $msg = preg_replace($match,$change,$msg); >>hogeさん この部分だけ色を変えたいのですが、上のかきかたでは改行以降も色換えしてしまいます。。 くだらない質問ですが、どのようにすれば改行は含まないようにできるのでしょうか?
正規表現の問題だな。 改行以前まで色を変えたいなら >>(+)$ かな。
>>(.+?)\n
>>174 嘘つくな
知らないなら発言すんな
(+)こんなので動くと思うのか??
(+)_(+)
>>(.+?)\n これだと<br />までタグで囲っちゃうね 正規表現って難しい! マスターしてる人はすごいよ
まあ<br />まで囲っちゃっても実害は無いわけだが
まあ、ここら辺がphpの弱点だよね。perlの助けを借りないと出来ない。 次バージョンで出来るようになると良いのだが。
metaタグって<meta 〜 />みたいに閉じないのは何故でしょう?
間違えました。Web製作で聞きます
今までMySQL側でJOINとかで頑張って複雑なSQL作ってたのですが、 FruitTable、fruit_id, fruit_name 1,りんご 2,みかん 3,ぶどう 複雑なSELECT部分の中で、上記項目くらいしかないテーブルはJOINを使わず 前もって上記テーブルをSELECTして$fruit[]配列に入れておき $fruit[ $row[3] ] ←このような感じで参照したほうがよいでしょうか? また皆さんはどのように最適なスクリプト(とSQL)の組み合わせを考えてますでしょうか?
>>186 そもそもそんなデータでは複雑なSELECT文にならない気がする
>>185 ありがとうございました。ドンピシャですね。
なるほどmultisortの挙動はよく分からなかったんですが
$nameと$valueの配列を別個につくり、
$infoを$valueで比較、$valueが一緒だったら$nameで比較、としてソートしてくれるんですね。
本当に助かりました。そして勉強になります。
>>186 MySQLじゃなくPostgreSQLを進めてみる
CREATE VIEWでビュー作ってソコからSELECTしてるから楽だよ
>>186 正規化されすぎたDBだとJOINが多くなってSQLが複雑になる場合があるが、
DBの最適化が行われていればSQL実行時間はそんなに遅くならない。
俺はDB側を頑張ってPHP側は楽してるな。
193 :
186 :2006/06/12(月) 14:12:12 ID:???
>>187 実際にはTABLEが沢山あり、一つのSELECTだけで1KBほどになってるのもあります
>>191 MySQL5.0からCREATE VIEWが使用できるみたいです
でもCREATE VIEWって、SQLに変数が入る場合とか駄目ですよね?
変数の値が [1-5] とか少ないなら予め各ビューを作っておき
switch()で参照するビューを選択するという方法でしょうか?
>>193 『変数』がSQL文のどこに食い込むかによる
賢いDBMなら、必要に応じてViewに対するWHERE句をView内部のサブクエリに移動させて検索してくれる。
あと、Viewにするクエリを工夫すればViewに対するWHERE句だけに変数を追いやれることもある
DBMじゃなくてDBMSだよね、と下らないツッコミ gdbm始め、dbm系ライブラリは全然賢くないっす
196 :
nobodyさん :2006/06/12(月) 17:29:51 ID:hLJuV8ow
携帯で以下にアクセスしても
PC版のyahooページが表示されてしまいます。
携帯でアクセスした時は携帯を読み込むようには出来ませんでしょうか?
<?php
$url="
http://www.yahoo.co.jp ";
$page = readfile($url);
?>
宜しくお願い致します。
>一つのSELECTだけで1KBほどになってるのもあります ありえない 構造から見直した方がよくね?
>>196 そのサイトが携帯をUAだけで判断してるならUAを送ればできるとは思うけど、
中継サーバのIP見てるんなら無理
しかもYahoo!って中で変な処理してなかったっけ?
複数のサーバを同じように見せかけて同じものを表示・・・とか・・・
オナニー(Onanie)の語源は、『旧約聖書』の創世記の叙述に由来する。創世記38章にオナンという名の男が登場する。 彼は兄エルが早死にしたため、兄の代わりに子孫を残すべく兄嫁タマルと結婚させられた(逆縁結婚)。 しかしオナンは兄の為に子を残すことを嫌い、性交時は精液を膣の中に放出せず、寸前で陰茎を抜き精液を地に漏らして避妊をした。 すなわちオナンがおこなったのは膣外射精であるが、語義が転じて生殖を目的としない射精行為としてオナニーが使われるようになった。 ちなみになぜオナンは兄のために子を残すことを拒否したかというと、兄嫁に子が出来てしまうと父の遺産はその子のものになってしまう。 兄嫁に子が出来なければ遺産は次男であるオナンのものとなるはずだったとも言われる。当時の掟(慣習よりも強制力があった)により言われている ことだが、聖書にはそこまでのことは書いていない。一般には「血統維持」を強調した物語と理解されている。 これは、不幸の文章です。読むとあなたは必ず、いや必ず不幸になります。 しかし、読んでしまっても不幸を回避する方法があります。それは、この文章をまるまんま他の板へ3つ貼ることです。
202 :
201 :2006/06/12(月) 17:53:54 ID:???
>>200 UAが携帯でないとPC用のYahoo!モバイルが表示されるようです。
>>197 LEFT JOINが多かったりするとそれくらいなる時もあるんじゃね?
>>198 yahooは確かIPをチェックしてたはず。
別のサイトで試さないとダメかも
そういやLivedoor MAPへ携帯UAでアクセスした時、
返ってこないので変だと思ったら、
UAが携帯なので携帯向けアドレスへリダイレクト→
IPが携帯でないのでPC向けアドレスへリダイレクト→
UAが携帯なので携帯向けアドレスへリダイレクト→
以下略
ずっとリダイレクトを受け付けるIEもナンなんだが・・・
UAだけの所は
>>201 でOKですね。
IPが絡んでくるところはどうしようもないぽ
>>204 >yahooは確かIPをチェックしてたはず。
しているのは深階層の一部。
殆どのページはUA偽装で閲覧可能。
echo '日本負けもうダメポ';
208 :
nobodyさん :2006/06/13(火) 01:14:38 ID:NxGxiCeS
PHP5.1.2+pdo_mysqlで掲示板を作っておりましてUTF-8で表示したいのですが、 EUC-JPになってしまいます。 ・MySQLにはUTF-8で保存されている ・mbstringの設定 mbstring.detect_orderauto mbstring.encoding_translationOff mbstring.func_overload0 mbstring.http_inputauto mbstring.http_outputpass mbstring.internal_encodingUTF-8 mbstring.languageJapanese mbstring.strict_detectionOff mbstring.substitute_characterno value ・phpinfo()でEUC-JPの文字列はなし ・スクリプト内部 mbstringの設定は変更していない new PDO → prepare → execute → fetchしているのみ ご存知の方がいらっしゃいましたら、どうかご指摘お願い致します。
>>208 PHPファイルの文字コードはUTF-8になっていますか?
出力したHTMLは文字コード指定をUTF-8にしていますか?
mbstring.http_outputをUTF-8に指定するとどうなるでしょうか?
これで的外れな事を言ってたらすんまそん。
あとはHTMLのヘッダにキャラクタセットが書いてないとか Apacheの設定が強制EUC-JPになってるとか・・・
>>209 >mbstring.http_output
そんな関数ないよ。
惜しいけど。
212 :
209 :2006/06/13(火) 02:32:09 ID:???
>>211 関数て(;´Д`)
私はphp.iniを直接いじるのか.htaccess使うのかそれともini_set()使うのかは
>>208 の自由だと考えてああ書いたのですが、何故これが関数だと思ったのですか?
213 :
nobodyさん :2006/06/13(火) 03:16:25 ID:5706m95F
ぼうやだからさ
214 :
173 :2006/06/13(火) 04:03:00 ID:N4y2gPA5
どなたか綺麗な書き方できるかたいらっしゃいませんか?
改行というのは改行コードのことか、改行タグのことか?
216 :
215 :2006/06/13(火) 05:25:39 ID:???
>>173 より改行とは<br />のことを指すと推定して進めるけど、
">>"も含めて<br />の手前まで色を変える場合は
$match = '/(>>.+?)(<br \/>)/';
$change = '<font color="red">$1</font>$2';
$msg = preg_replace($match, $change, $msg);
">>"の色は変えないという場合は
$match = '/>>(.+?)(<br \/>)/';
$change = '>><font color="red">$1</font>$2';
$msg = preg_replace($match, $change, $msg);
こんな感じかね。
もっともこれだと
>>hoge>>hage<br />
とか
>>ho
ge<br />
とか書かれるとちゃんと動かんけど。
>>214 $match = '/>>(.+)/i';
ってのを
$match = '/>>(.+?)<br/i';
ってすりゃいいんじゃないの?
あー。<br>も()で括って$2を増やさなきゃダメか
219 :
173 :2006/06/13(火) 06:08:43 ID:???
それだとなんか奇麗じゃないような… 正規表現でもそれが限界なんでしょうか? $match = '/(>>.+?)<br \/>/'; $change = '<font color="red">$1</font><br />'; $msg = preg_replace($match, $change, $msg); 今のところ、こんな感じで一応動作してますが
Win XP Pro Apache 2.0.58 PHP 5.1.4 の環境で Cake PHP を実行しようとすると以下のエラーがでます。 Fatal error: Call to undefined function mysql_connect() in D:\workspace\cake\cake\libs\model\dbo\dbo_mysql.php on line 101 理由はPHPがMySQLのモジュールをうまく読み込んでないようで、 php.ini にて extension=php_mysql.dll のコメントをはずすのですが相変わらずうまくいきません。 なにが悪いのでしょうか? なお、httpd.conf は # For PHP 5 do something like this: LoadModule php5_module "c:/php5/php5apache2.dll" AddType application/x-httpd-php .php # configure the path to php.ini PHPIniDir "c:/php5" と設定して、php.ini は c:/php5 においてます。
>>220 libmysql.dllが読み込めていないかも
systemのパスにコピーしたかい
>>219 そんなにこだわるならperlの質問スレ行けば?
224 :
208 :2006/06/13(火) 10:01:25 ID:???
>>209 ご丁寧にありがとうございます。
ご指摘の点を確認してみました。
・PHPファイルはUTF-8
・Content-Typeは"text/html; charset=UTF-8"
・スクリプトの先頭でmb_http_output('UTF-8');してみましたがEUC-JPで表示されました。
mb_http_outputでTRUEが返っていることを確認しました。
・スクリプトの先頭でecho mb_internal_encoding(); → UTF-8
試しに、fetch後すぐにmb_detect_encodingをしてみましたら、この段階で既にEUC-JPになってしまって
いるようでして、データベースが勝手に変換してくれているような気がしてきました。
少し調べてみたいと思います。
225 :
nobodyさん :2006/06/13(火) 10:28:11 ID:3c5IwUSO
phpの設定のupload_max_filesizeを現状のdefault 2Mから 8Mにアップしたいと思うのですが、 サーバーの関係でphp.iniをいじることができません。 .htaccessで変更できるみたいなのですが、 .htaccessの設定方法がわかりません。 php_value upload_max_filesize 8388608 っぽいのでは?試してみたのですが、だめでした、お力御貸しください。
>>225 post_max_size >= upload_max_filesizeでないとupload_max_filesizeは意味をなしません。
8388608じゃなくて"8M"じゃどうよ?
それとそのサーバでは変更を許可してるのかい?
PHP_INI_PERDIRっぽいけど念のため
227 :
225 :2006/06/13(火) 11:15:56 ID:3c5IwUSO
226> post_max_size は8Mになっております。 .htaccess では バイト表記でないいけないとどこかの文献でみました。 ただ、 8Mでは失敗したので、"8M"で今から試してみます。 PHP_INI_PERDIRなので、大丈夫とはおもうのですが、、、
228 :
225 :2006/06/13(火) 11:27:57 ID:3c5IwUSO
8M "8M" ともに、だめでした。 管理に言って php.iniの数字を変えてもらったのですが、効き目なし というわけわからん状態に陥りました。 アパッチは再起動してみたのですが、、
229 :
軟式PHP :2006/06/13(火) 12:17:40 ID:???
<input type="hidden" name="MAX_FILE_SIZE" value="ファイルサイズ" /> とか定義してないかね。
本題の件はともかく、管理のphp.ini変更が適用されないのは、 PHPIniDirが変なとこ指してるんじゃないの。
231 :
225 :2006/06/13(火) 12:20:34 ID:3c5IwUSO
229 再度確認したところやっぱり、だめでした memorylimitもPOSTMAXも8Mなんですが、、 UPが2Mなんで、、どうにも、、、 はぁ
232 :
nobodyさん :2006/06/13(火) 12:31:59 ID:BClcCsNS
phpinfo()で表示される「User/Group」の部分を変更するには Apacheの設定変更が必要ですが、 それをphp.iniの設定で変更できたらご教授願います。 或いは、プログラムレベル内で変更できますか?
>>231 モジュール用の設定を変えているがCGIで実行してるとか
234 :
220 :2006/06/13(火) 13:49:14 ID:???
>>222 おお、できますた!
どうもありがとう。
>>224 っていうか、ソースもデータも何もかもEUCで統一したほうが
問題が少ないと思うんだけど。
HTML出力でUTFにしたいときだけアウトプットを変換すればいいし。
236 :
nobodyさん :2006/06/13(火) 15:52:48 ID:UqVx0E5S
すみません。PHPからMySQLの接続が出来ないので、どなたか教えて下さい。
WindowsXPPro+Apache2.0.52+PHP5.0.2+MySQL4.1.7で、
ttp://tsuttayo.sytes.net/mysql/install/mysql/10/20/20/20/install.php の通りにMySQLを設定しました。それで、MySQLのIDとPWを作って、データベースを
作成することは出来ました。localhostで、確かにコマンドプロンプトからは、My
SQLのIDとPWでMySQLにログインすることは出来ますし、MySQLが起動していること
も確かです。
ところが、PHPでMySQLと接続する文を書くと、(PHPにはサーバの場所(localhost)
やMySQLのID・PWも正確に書いています)
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]:
Access denied for user 'ODBC'@'localhost' (using password: NO) in
C:\Program Files\Apache Group\Apache2\htdocs\index.php on line 78
という表示が出てしまうのです。この「'ODBC'@'localhost'」とは一体何なのでしょうか?
PHPにはサーバの場所(localhost)やMySQLのID・PWも正確に書いていますのに、何故この
ような表示が出てしまうのでしょうか?
どうしたら、PHPでMySQLと接続する文を書くことが出来るのでしょうか。どなたか教えて
下さい。宜しくお願いします。
line 78 から調べろウンコ
>>236 コマンドプロンプトから作ったユーザー?
>>236 >Access denied for user 'ODBC'@'localhost' (using password: NO)
WindowsでMySQL接続ユーザを指定せずに、MySQLに接続しにいった時に
デフォルトユーザのODBC@localhostが指定されたと解釈されて出てるエラー。
78行に至るまでをチェックしろ、ウンコー
>>236 mysql_connectも失敗してるんじゃないの
241 :
nobodyさん :2006/06/13(火) 16:42:45 ID:UqVx0E5S
皆さん、こんな、うんこの私に回答して下さり、誠にありがとうございます。無視
しないでくれるだけでも、有難いです。
>>238 >コマンドプロンプトから作ったユーザー?
いえ、MySQLのユーザー名はrootであり、デフォルトで作成されるものです。PWは
私がMySQLのGUIの画面で作成しました。
>>239 >>Access denied for user 'ODBC'@'localhost' (using password: NO)
>WindowsでMySQL接続ユーザを指定せずに、MySQLに接続しにいった時に
>デフォルトユーザのODBC@localhostが指定されたと解釈されて出てるエラー。
>78行に至るまでをチェックしろ、ウンコー
ありがとうございます。78行目を見たのですが、DBのエスケープ処理が失敗した
ことしか分からなかったのです。それで、「WindowsでMySQL接続ユーザを指定」
するとは、具体的にどうすれば良いのでしょうか。php.iniでmysql.default_user
を設定しても、うまくいかなかったのですが・・・。
>>240 >mysql_connectも失敗してるんじゃないの
エラー表示は、前述のものだけでしたが、多分mysql_connectも失敗していると
思います。以前、この環境にXOOPSをインストールしようとしたら、「DBに接続
出来ません。」という表示が出てしまったからです。
この後、「WindowsでMySQL接続ユーザを指定」するとは、具体的にどうすれば良
いのでしょうか。php.iniでmysql.default_user = root と設定しても、うまく
いかなかったのですが・・・。
>>241 >php.iniでmysql.default_user = rootと設定しても、うまくいかなかった
・そのphp.iniが使ってるPHPで有効な設定ファイルではない。
・更に優先度の高い設定ファイル等で別の値が上書きされている。
・mysql_connect()に変数でパラメータが指定されていて、その変数の値が空(NULLではなく空文字)
mysql_connectのパラメータに着目して処理を追え
(@mysql_connectになってる。多分)
243 :
242 :2006/06/13(火) 17:12:14 ID:???
>(@mysql_connectになってる。多分) と思ったが、だったら78行目でリソース型(mysql接続リソース) じゃないってエラーになるか。
safe-modeはOFFになっているのですが、 <?php $output = shell_exec('ls -lart'); echo "$output"; ?> が表示されません。 なぜでしょうか?
>>244 答え:Windowsだから
とか言われないように、環境を書きましょうよ。
246 :
nobodyさん :2006/06/13(火) 17:51:04 ID:UqVx0E5S
>>244 safe-modeはOFFになっていても、
open_basedir が設定してあるのではないでしょうか?
>>241 mysql_real_escape_string()は接続してないと使えない関数。
で、接続されていないとデフォルトで接続を試みる。
ということでconnectできていないと考えられる。
まずはconnectができているか簡単なので試してみるといいかも。
(マニュアルより)
<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
die('接続できませんでした: ' . mysql_error());
}
echo '接続に成功しました';
mysql_close($link);
?>
248 :
nobodyさん :2006/06/13(火) 18:13:04 ID:UqVx0E5S
>>247 ありがとうございます。test1.phpに、
<?php
$link = mysql_connect('localhost', 'root', '私が設定した英数字のパスワード');
if (!$link) {
die('接続できませんでした: ' . mysql_error());
}
echo '接続に成功しました';
mysql_close($link);
?>
を書いて実行してみたところ、
Warning: mysql_connect() [function.mysql-connect]: Client does not support authentication protocol requested by server;
consider upgrading MySQL client in C:\Program Files\Apache Group\Apache2\htdocs\test1.php on line 2
Client does not support authentication protocol requested by server; consider upgrading MySQL client
という表示が出ました。接続出来ていないようですが、何故でしょうか・・・。MySQLでデータベースは作成出来た訳ですし、
MySQLが起動しているのも、「コントロールパネル」−「管理ツール」−「サービス」で確認しています。php.iniにも、
extension=php_msql.dll
extension=php_mysql.dll
extension=php_mysqli.dll
と書いていますし、test1.phpのID・PWも合っています。接続出来ない原因として、考えられるのは何でしょうか?教えて
下さい。お願い致します。
>>244 WindowsXP Home
HTTPD 1.42n
PHP 5.1.1
です。
>>246 open_basedirはコメントアウトされていました。
一瞬だけコマンドプロンプトは表示されるのですが・・・
>>248 phpのMySQLモジュールバージョンとMySQLサーバのバージョンの問題かも
パスワードの関係でなんかあったような・・・
一度パスワード無しのユーザを作ってそれで接続してみたらできるかも。
もちろんパスワードは無しで接続ね。
>>249 Windowsには標準でlsコマンドないでしょ?
Linuxとかはほぼ標準で入ってるはず
252 :
250 :2006/06/13(火) 18:41:25 ID:???
>>251 まったくその通りでございました。
ごめんなさい(ノω;)
>>253 貴様っ!!!!
オレと同じミスをするなっ!!!!!!!!!!
255 :
nobodyさん :2006/06/13(火) 19:05:16 ID:UqVx0E5S
>>250 >>一度パスワード無しのユーザを作ってそれで接続してみたらできるかも。
>>もちろんパスワードは無しで接続ね。
248です。パスワードは無しのユーザで試したところ、接続できました!!
ありがとうございます!しかし、パスワードありでは接続できないのでし
ょうか・・・・。
環境は、WindowsXPPro+Apache2.0.52+PHP5.0.2+MySQL4.1.7
です。パスワードありでは接続できないというのは、不自然な気がします・・・。
どなたか、解決策をご存知ではないでしょうか?
256 :
250 :2006/06/13(火) 19:57:52 ID:???
>>255 教えた関連サイト読んでもないのか?252で書いた調べもやってなさそうだし。
もし理解したいと思うなら252のURLのenをjaに変えてみて見れ。
PhpMyAdminからアカウント編集するなら、特権から作らないと使えないよ。
Userテーブルを直接いじるなって事ね。
259 :
nobodyさん :2006/06/13(火) 21:27:58 ID:y/p6TWtm
>>256 >教えた関連サイト読んでもないのか?252で書いた調べもやってなさそうだし。
>もし理解したいと思うなら252のURLのenをjaに変えてみて見れ。
すみません。mysqlのバージョンが 4.1.7だったので、
>>252 で教えて
頂いたサイトは自分には当てはまらないことだと思っていました。
「mysqlのバージョン」と「mysqlモジュールバージョン」は違うので
すね。
>>257 様や
>>258 様の話を聞いて、段々原因が掴めてきました。
今はサーバの近くにいないので、明日、皆様のおっしゃったことを
試してみます。
本日は皆様、本当に細かく教えて下さり、誠にありがとうございまし
た。
すごく初歩的な質問なんですがすみません。 MySQLでフィールドがid、name、add、koukou、daigakuと5つあります。 その中で検索するということをしたいと思っています。 送られてきた[data1]の単語をkoukou、daigakuのフィールドからor検索したいのですが、 $sql = "SELECT * FROM base WHERE koukou or daigaku like '%".$data1."%' ORDER BY id"; とすると後ろのdaigakuだけ検索してkoukouからは検索してくれません。 多分根本的に文法が違うのかな〜と思っているのですが、どうすれば検索できますか?
質問なのですが、ご存知の人、お教え下さいませ。 2つの画像を重ねて表示する場合は、imagecopymerge でできますが、 3つ以上の画像を重ねて表示したい場合、imagecopymerge でできるのでしょうか? 試してはみたのですが、どうもうまくいきません。 他にいい方法があるんでしょうか。。。
>>260 koukou=hogehoge or daigaku=hogehoge
文字列だとかLIKEだとかは自由にどうぞ
シンプルな掲示板を作っています。 次のページに行くとき、bbs.php?page=2みたいにしたいのですが、 どうやってfor関数に組み込めばいいのかわかりません。 どのように記述すればいいでしょうか? for関数で記事表示しています。よろしくお願いします。
>>263 ちと意味がわかんない
$_POST['page']とか$_GET['page']でページ数を取得してるんだよね?
記事の管理方法は?DBは使ってる?
DB使ってるならOFFSETするのが早い
使ってないなら多分ファイルだろうからファイルの管理方法も教えて
1日単位でログにしてるとか、1記事1ファイルにしてるとか
>>263 ひとつのテキストファイルをログファイルとして1記事1行で保存しており、
新規記事はログファイルの上から追加されると仮定すると、
$page = $_GEt['page']; // ページの指定
$line = 10; // 1ページあたりの記事数
$article = file(ログファイル); // ログの配列(1記事1行で最初の要素が最新の記事)
for ($num = ($page - 1) * $line; $num < $page * $line; $num++) {
print $article[$num];
}
こんな感じ?
>>262 ありがとうございます。
うまく検索できました。
267 :
263 :2006/06/13(火) 23:32:12 ID:???
1つのログファイルに 投稿日時,投稿者名,投稿内容 で記録しています。上からの追加です。 1ページ10件表示にして、ページ下部にある 次の10件(./bbs.php?page=x)をクリックすると 次の10件が、といった風にしたいんです。。 表現力が…
上からの追加とは上に追加なのか下に追加なのかどっちだよw
あー、すまん。ちゃんと読んでなかった。
つまり
>>265 でどんぴしゃなんじゃねーの?
270 :
263 :2006/06/14(水) 00:37:42 ID:???
風呂上りですが、早速やってみます。 みなさん、ありがとうございます。
はじめまして。質問です。 ページに400×400の画像を貼り付けて、 その画像上の任意の場所をクリックした時のマウスポインタの座標を取得することは可能でしょうか? よろしければ、関数名などを教えてください。よろしくお願いします。
>>271 関数要らない。HTMLのリファレンス読んでこい
それはJavaScriptの仕事だな…。
宇和ああああああああああああああああああああああああああ よし!俺ねる!お前ら明日もがんばれよ!俺もがんばるよ!
サーバーサイドクリッカブルマップっつーのもあるでよ。
>>271 274 276
ありがとうございます。
input type に imeage という属性があるのをはじめて知りました。
自分の買ったphp参考書には一行も書いてなかったです。
ちなみにこの参考書、誤字脱字やミスが結構あります・・・。
いやそれ、PHP以前にHTMLの基礎知識… HTMLを学ばずしてPHPが分かると思うなよ
279 :
273 :2006/06/14(水) 01:10:05 ID:???
うわ、本当だ。こんなのあったんか。 HTMLは一通り知ってるつもりだったのに…ハズカシ
>>274 完璧でした。これでゆっくりとフランス戦を見ながら寝れます。
ありがとうございました。
281 :
263 :2006/06/14(水) 01:50:04 ID:???
>>265 &みなさん
出来ました。ありがとうございます。
自分でも頑張ってみます。
よっし俺が質問しようジャマイカ Windowsで動くIDE以外のお勧めのテキストエディタってある? もちろんPHPの関数とかが強調表示されたり色変えられたりするやつ。 Linuxならもちろんviだな
スレ違い
285 :
nobodyさん :2006/06/14(水) 12:30:48 ID:2q2dqRMt
PHP5.0.2+MySQL4.1.7(WindowsXP)上で、PHPファイルやhtmlファイルは文字化け しないのですが、MySQLから取ってきた日本語は全て文字化けしてしまいます。 どなたか、解決策をご存知ではないでしょうか? php.iniは mbstring.language = Japanese mbstring.internal_encoding = UTF-8 mbstring.http_input = auto mbstring.http_output = UTF-8 mbstring.encoding_translation = On mbstring.detect_order = auto mbstring.substitute_character = auto; とし、my.iniは [client] default-character-set=utf8 [mysqld] default-character-set=utf8 init-connect="SET NAMES utf8" としています。MySQLのコマンドラインからshow variables like 'char%'; と打つと、 character_set_client latin1 character_set_connection latin1 character_set_database utf8 character_set_results latin1 character_set_server utf8 character_set_system utf8 character_set_dir C:\Program Files\MySQL\MySQL Server4.1\share\charsets/ となります。PHPファイルの先頭に $con = mysql_connect('localhost', 'ユーザー名', 'パスワード'); mysql_query("SET NAMES utf8", $con); //←強制的にUTF8にしようとする。 mysql_select_db("DB名"); と書いても、MySQLから取ってきた日本語は全て文字化けしてしまいます。 どなたか、解決策をご存知ではないでしょうか?宜しくお願い致します。
>>285 INSERTの仕方、SELECT,の仕方、表示の仕方を教えれ
288 :
nobodyさん :2006/06/14(水) 14:31:44 ID:2q2dqRMt
>>286 書いたPHP文の全文は、以下の通りです。
<?php
$con = mysql_connect('localhost', 'ユーザー名', 'パスワード');
mysql_query("SET NAMES utf8", $con); //←強制的にUTF8にしようとする。
mysql_select_db("DB名");
$sql="select * from Tuser";
$result=mysql_query($sql);
while($data = mysql_fetch_array($result)) {
print($data["id"]);
print($data["name"]);
print($data["name_kana"]);
print("<br>");
}
mysql_close($con);
?>
ここで、number型の$data["id"]は正しく表示されるのですが、日本語である
$data["name"]と$data["name_kana"]は文字化けしてしまうのです。
>>287 教えて頂いたサイトの「skip-character-set-client-handshake」は、MySQL4.1.15
以降でないと、出来ないのです。やはり、「SET NAMES 文字コードセット」をクエ
リすることだと思うのですが、mysql_query("SET NAMES utf8", $con); と書いて
いるのに文字化けしてしまう原因が分かりません。どなたか解決策をご存知でしょう
か。宜しくお願いします。
正規表現で $match = '/>>(.+)/i'; $change = '<font color="red">\0</font>'; $msg = preg_replace($match,$change,$msg); >>hogeさん この部分だけ色を変えたいのですが、上のかきかたでは改行以降も色換えしてしまいます。。 くだらない質問ですが、どのようにすれば改行は含まないようにできるのでしょうか?
selectする前にmysql_query("INSERT INTO Tuser VALUES('ほげ','ふが')"); して、それが正しく出てくるかチェックしたら?
>>289 iってなんだっけ?
$match = '/>>(.+)$/i';
とか?
pregのメタ文字の扱いがわかりません。 preg_replace("/\\\*/","auau", $hoge); の場合、\*が検索文字列になりますよね? なぜか、ヒットしない…。
296 :
nobodyさん :2006/06/14(水) 15:23:56 ID:2q2dqRMt
>>290 >>291 ありがとうございます。
<?php
$con = mysql_connect('localhost', 'ユーザー名', 'パスワード');
mysql_query("SET NAMES utf8", $con); //←強制的にUTF8にしようとする。
mysql_select_db("DB名");
mysql_query("INSERT INTO Tuser(name,name_kana) VALUES('ほげ','ふが')");
$sql="select * from Tuser";
$result=mysql_query($sql);
while($data = mysql_fetch_array($result)) {
print($data["id"]);
print($data["name"]);
print($data["name_kana"]);
print("<br>");
}
mysql_close($con);
?>
とやったところ、「ほげ」・「ふが」は正しく表示され、既にDBに入っている
レコードは、文字化けのままでした。PHPから、全てのレコードをinsertすれば
文字化けしないで済むということでしょうか?しかし、PHPから全てのレコード
をinsertしていくのは大変ですので(何千件もある)、文字化けを直して表示
する方法はないのでしょうか?
>>296 そのDBにデータ入れるときにUTF-8以外の文字コードで入れてる
そのまま使うならコンバートして使いたまへ
<<こちらサンダーヘッド。正規表現は正規表現スレでやるように。>>
くだらない質問させていただきます。 「ああああああ ああああ ああああああ」 と、フォームで打ち送信して、 \n⇒<BR>に直したのですが、 保存すると 「ああああああ<BR>ああああ<BR>ああああああ」 にならずに 「ああああああ<BR> ああああ<BR> ああああああ」 となってしまいます。 「ああああああ<BR>ああああ<BR>ああああああ」 にするにはどうしたらよいのでしょうか?
>>299 \n \r \r\n のいずれかなら <BR> にする
301 :
nobodyさん :2006/06/14(水) 15:54:23 ID:2q2dqRMt
>>297 >>そのDBにデータ入れるときにUTF-8以外の文字コードで入れてる
>>そのまま使うならコンバートして使いたまへ
ありがとうございます!!DBにインポートする際、ダンプファイル
の先頭にset names utf8;と書いたら、文字化けが全て直りました!
一生、感謝致します。(涙涙)本当に、ありがとうございました!!
>>300 $comment = str_replace("\n","<BR>",trim($comment));
$comment = str_replace("\r","<BR>",trim($comment));
$comment = str_replace("\n\r","<BR>",trim($comment));
なんかバグったwwwwwwww
>>295 確か、内部的に\*は\\*になってるので
preg_replace("/\\\\\*/", "auau", $hage);
なら上手く行くかも。
でも普通ならstr_replace()使った方が早いと思います。
以下は参考。
<?php
$hage = "\*\*\*\*";
print $hage."\n";
$hoge = preg_replace("/\\\\\*/", "auau", $hage);
print $hoge."\n";
$huge = str_replace("\*", "auau", $hage);
print $huge."\n";
?>
これの出力は、
\*\*\*\*
auauauauauauauau
auauauauauauauau
になった。
304 :
299 :2006/06/14(水) 16:07:19 ID:???
ありがとうございます。
>>302 と同じで解決しました。
>>302 日本語使ってんならマルチバイト対応関数でやれ
あと、それじゃ「いずれかなら」じゃなくて「すべてにおいて」になる。1行でやれ。
比較の順番も考慮しろよ
306 :
295 :2006/06/14(水) 16:13:44 ID:???
>>303 超d。
メタをエスケープして、さらにエスケープだったのか。
並びが変なのは誰もツッコミいれないのか あと、何でゴミ削除の関数必要なんだろう? $comment = str_replace("\n\r","<BR>", $comment); $comment = str_replace("\n","<BR>", $comment); $comment = str_replace("\r","<BR>", $comment);
>>304 >>300 はいかにもマズい。
/nと/rを変換→/n/rを変換になってるけど、
正しくやるなら\r\nを変換→/nと/rを変換の順番にすべき。
でないと/r/nがあった時に<BR>2個に変換される。
そもそも何で毎回trim()するのかとかもうワケ分からん。
あと\n\rじゃなくて\r\n。
$comment = trim($comment); // 行末改行を削除
$comment = nl2br($comment); // 改行コードの前に<br />追加
$search = array("\r\n", "\r", "\n");
$comment = str_replace($search, "", $comment); // 改行コード排除
か、
$comment = trim($comment); // 行末改行を削除
$search = array("\r\n", "\r", "\n");
$comment = str_replace($search, "<br />", $comment); // 改行コードを<br />に
の好きな方で。
>>305 これにmbstringなんて要りますか?
310 :
nobodyさん :2006/06/14(水) 16:42:06 ID:lNdv+Y0Z
$comment = str_replace(array("\n\r", "\n", "\r"),"<BR>", $comment); もしくは $comment = str_replace("\n\r|\n|\r","<BR>", $comment); あたりで一発でできなかったっけ?
311 :
309 :2006/06/14(水) 16:46:02 ID:???
>>310 下の方は正規表現だからstr_replaceではなくpreg_replace()が必要では。
最近正規表現に侵略されてPHPっぽくないな
正規表現ってなんですか?
カウンターを設置したいのですが、 CGIみたいにHTMLに埋め込みはどうすれば良いのでしょうか?
317 :
軟式PHP :2006/06/14(水) 17:27:43 ID:???
>>316 イメタグに埋め込めばよい。
まぁ、透明なGifを出したりする必要はあるけども。
ちょっと待て、HTMLをCGIに埋め込めるってマジか? それってSSIじゃなくて?
319 :
318 :2006/06/14(水) 17:38:08 ID:???
ごめん興奮のあまり間違えた。CGIをHTMLに埋め込めるってマジか?
>>316 PHPで書いたCGIで(比較してるのは多分PerlのCGIのことだろ?)同様にやればよい。
そのページ自体を全部PHPで出力しても良いけど。それもPerlのCGIと同様。
(Perlよりか楽だけど)
画像のカウンターなら
>>317
このスレってなんで他の質問スレみたく テンプレにいろいろリンクないの? PHPってちゃんと解説されてるサイトないの?
小5ですけど、MySQLの質問してもいいですか><
>>321 この上なくちゃんと解説されてるサイトが
>>1 にあるように見えますが…。
何年かかるんだよ…
>>324 えー
いきなりリファレンス全部読めってか
通して読める入門サイトとかない?
あと、レシピ集みたいのも欲しい
目次読めば、最初のインストールやチュートリアルの項目だけで 後の関数解説等は必要な時に参照すりゃ良いと"理解できるだろ?"
彼はどうやら教科書を読まずにいきなり参考書に走るタイプだから、
>>1 の「マニュアル」を消して「リファレンス」とでも書いておけば飛びついて読むんじゃね?w
みんな、俺の鴨(メシの種)をそう苛めないでやってくれ。
>>321 元々は本スレと言われてたPHP質問スレが別にあって、
このスレはそこから派生した「くだらない質問専用」のスレだから。
…ってのがまぁ理由ではあるけど、でも実際、本家の更新が早すぎて
公式リファレンス以上のまともな解説ってサイトも書籍も皆無だと思う >PHP
>>327 リファレンスの最初の章がインストール、入門、レシピになってる
んじゃ旧本スレ(今は消滅)のテンプレでも貼っとくか。 次スレ用テンプレの参考にでもしてくれ。
PHP全般の質問スレです。
>>2-10 も参照。
【ガイドライン】
質問の前にgoogleやマニュアルを検索してください。
http://www.php.net/manual/ja/ http://php.s3.to/namazu/ ◆質問する場合の注意
1. 自分のIDを表示させること。(メール欄には何も記述しないでください)
2. ハードウェア、OSのバージョン等を明記すること。
3. 己の行った操作、変更などを詳しく明記すること。
4. エラーメッセージはそのまま表記すること。
5. 質問者としても態度をわきまえること。
◆質問後の注意
・質問者は必ずIDを表示させてください。
書き込む場合はメール欄に何も記述しないでください。
・2回目以降は最初に質問した際のレス番号を名前欄に入れてください。
(逆に回答者は質問者に対して>>(アンカー)をつけて答えてください。)
・解決しなくても回答をもらった場合はお礼を言う。
(荒らし、煽りは除く)
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・オブジェクト指向については良スレがないから本を買え
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
過去スレ、関連リンク、FAQ等
>>2-10 辺り
【簡易FAQ】
1. ブラウザに何も表示されないんだけど・・・
→ error_reporting()や、php.iniのdisplay_errors、log_errorsを確認
2. include/requireに「〜.php?a=b&c=d」のようなパラメータをつけたい
→ できません
3. $a1, $a2, $a3 ... のような変数名をうまく扱いたい
→ 可変変数で実現できるけど、むしろ配列を使って$a[1], $a[2], $a[3]等とするのがベター
4. echo "$arr['hoge']['fuga']"; がうまくいかない
→ {おっぱい括弧}でくくって"{$arr['hoge']['fuga']}"にする
5. echo?print?
→ echoはコンマ区切りで書けるけど関数ではない。printは関数。パフォーマンスは気にするな
6. 値渡しと参照渡し(「&」を使う)のパフォーマンス
→ この二つはパフォーマンス目的で使いわけたらダメ。よく知らずに参照渡しにすると遅くなったりする
参照渡しは引数に戻り値を設定したり引数を関数内で変更するなど、正しい目的に使うこと
7. CSVやTSVのファイルをスマートに扱いたい
→ まずはfgetcsv()
8. ファイル入出力関数(fopen等)でリモートファイル(
http:// 〜とか)を扱う際の限界
→ fsockopen()でソケット通信 or PEARのHTTP系 or CURLで解決
必要ならHTTPをはじめとする各種プロトコル(どんなデータを送受信するか)はRFCなどで調べる
9. 一定時間ごとに何かしたい
→ cron、タスクスケジューラ
10. 画像処理一般 or GDの限界
→ ImageMagick(PECLのやつ or シェルから実行)
11. 画像・音・動画はファイルで保存?DBに保存?
→ 好きにしてください
12. クッキーの情報をユーザから隠したい
→ セッション使え。ただしクッキーとセッションは仕組みが違うから同じように扱うな
13. このスレに書き込むときに自分のサイト名を晒したくない
→
http://example.com/が例文などのために予約されている 14. SQLの質問はどこで?
→ データベース板に誘導されるのが嫌ならPHPにうまく関連させて質問する
15. 記号の意味がわからないけどググりようがない
→ 「@」 エラー表示を抑制、「->」 オブジェクトのメンバにアクセス
「==」は暗黙の型変換をしてゆるい比較、「===」は型情報も含めた厳密な比較
16. 文字列のなかに、英字のみとか数字のみとか記号が入っちゃいやんとかはどうしたらいいの?
→ ctype_〜()が手軽。複雑なパターンはpreg_〜()あたりで正規表現を使う。
17. strip_tags()で削除しないタグを複数指定したい
→ strip_tags($html, '<a><p><font>'); // htmlspecialchars()も検討すべし
18. そもそもインストールの時点でうまくいかない
→ 確認すべきはPHPのconfigureの引数、php.iniの内容と置き場所、
Webサーバの設定(Apacheならhttpd.conf)、起動&再起動あたり
19. PHPからPOSTリクエストしたい
→8.を参照
342 :
327 :2006/06/15(木) 00:34:23 ID:???
あーごめん
別にそういう意味じゃなかったんだ
ただ、もうちょいマシなテンプレあってもいいんじゃないかと思っただけ
おれはリファレンスあれば事足りてる
けど、初心者にただリファレンス嫁だけなのはアレだと思った
>>333 そういう歴史があったのね
でも今は本スレないわけでしょ
ならテンプレ考えてもよくない?
>>334 それなら
「リファレンス内に入門ページあり。初心者はまずそこ嫁」
みたいな一文があってもいいんでない?
343 :
327 :2006/06/15(木) 00:35:21 ID:???
げ・・・リロードしとくべきだった・・・orz
>>342 テンプレ作り直しは必要だと思うよ。
まー、本スレが無くなったばかりなのでその辺はこれからおいおいな。
その辺は
>>42-45 でも反省として取り上げられてる。
>>342 初心者にリファレンス嫁って言うのはすごい親切なんだぞ
逆に初心者だからこそリファレンス嫁ってことかな。
リファレンス読んでわからなきゃ人に聞く。
そーしないと「自分がどこがわからないかをわからない」まま質問することになるので
日本語でおkとか言われるわけだ。
まー、おまいさんも解答する側になったらわかるよ
おれも最近少しずつだが解答できるようになって、それが理解できるよーになったし。
ある程度何かプログラミングしたことがある奴ならリファレンス読んでも分かるだろうけど まったくプログラミングしたことない奴は読んでもまったく理解できんだろうな 誰か有志が簡単なサイトを作らないか? forぶんやらif文の説明も含めてリファレンスよりもうちょっとアバウトで簡単な感じの奴 漏れはパスだけど(´・ω・`)
飲み込みの悪いやつは素直にあきらめて欲しい。 こういう奴らが中途半端に言語を覚えて脆弱性だらけのコーディングしやがる。
>>346 ちょっと前にFAQとかを集約させたWiki立ち上げの話がここで出た。
で、実際にWikiは立ったが誰もサポートしないのでそのまま自然消滅?した。
まずお前がやれや。
これはPHP限定の質問という訳ではない気がするのですが、
PHPで作成中+どこで質問して良いのやら分からないので、
ここで質問させて頂きます。申し訳ありません。
現在、複数の検索エンジンに対応した検索窓を作成中なのですが、
1つの場合は
<form action="
http://www.google.co.jp/search?hl=ja&lr= ">
<input name="q" type="text"><input type="submit">
</form>
このようにすれば済むのですが、複数の場合はスクリプトに
値を渡し、値によって任意のサイト(URL)に飛ばさなくては
なりません。JavaScript等を使わずにこれを実現するには、
どうすれば良いのでしょうか^^;
350 :
349 :2006/06/15(木) 02:08:43 ID:Z9AOX7In
すいませんID表示させるの忘れてました。orz お願い致します。
言っている意味がよく分からん。 もうちょっとくやしく
352 :
349 :2006/06/15(木) 02:16:29 ID:Z9AOX7In
すいません。。1時間くらい調べてて出てこなかったのですが、 "リダイレクト"とやらで実現できそうだという事が今分かりました。
間違いありません。僕がやりたいのはリダイレクトです。
ただ、僕がやろうとしている「検索窓」の場合も
header("Location:
http://www.example.com ");
このようなやり方で正しいのでしょうか?
もっと適切だったりする方法はありますか?
354 :
349 :2006/06/15(木) 02:22:50 ID:Z9AOX7In
すいません
>>353 は私です。
どうやら、この方法で良いらしい事が分かりましたので、
解決という形になりました。大変お騒がせしました。
何だ?つまりテキストボックスは検索エンジンの個数分あるけど 検索ボタンは一つだけ欲しかったって事か?
header("Location: /"); でうまく飛ばないケースってどういう状態? 絶対パスにしろみたいに書いてあるけど
>>356 なんだそれは?Linuxの/なのか?
ならもちろん/がドキュメントルートになってるんだよな?
その「/」に本来入る文字列は「
http:// 〜」になるんだよ。
一応相対パスでも飛べるけど、そのファイル名がブラウザか
らURLをうって見えるものじゃないとダメ
>>357 header("Location: index.php");
でうまくいっちゃったもんだから試したら
"Location: /index.php"やら"Location: /"でも問題なく飛ばせるんで
疑問に思いマスタ
linux apache で / はルートです。
>>358 IE6,FX,OPERA,au携帯でいけたもんで。
>>360 Docomoの一部端末ではこけたはず(全部ではない)
クライアントによるなんてPHPらしくないあるよ
いぇあ!いぇあ!
>>362 そりゃLocationヘッダなんてPHP関係ないし
すいません、TEXTAREAとSUBMITボタンだけ作ってあるフォームから 日本語の文字列をPOSTした時に、 $encode = mb_http_input('P'); で、ブラウザが送信したエンコーディングを検出しようとしたのですが、 何度やっても$encodeの中身が空です。どうしてなのでしょうか? ちなみにブラウザはIE6.0です。
>>359 対応していないブラウザがどうの言ってるやつがいるが、
RFCに絶対URLにしろと書いてあるってのが正しい根拠な。
根拠はそうなんだが実際のとこ大半のブラウザは相対で通用しちゃう品 この場合、実際にRFC準拠じゃないとダメなブラウザがあることを証明しないと 「別にいーじゃん」で通す輩が出るので困る
本当にくだらない質問で恐縮なのですが 最新バージョンのブラウザでは特殊文字は変換しなくても表示する?
現在の最新ブラウザで表示される文字もあるかもしれないが、 将来の最新ブラウザがもっと標準に沿った実装になれば見えなくなる可能性は高い。
>>370 特殊文字の定義にもよるが・・・
基本的にどのOS,どのブラウザでも見られるようにしなきゃダメ
373 :
nobodyさん :2006/06/15(木) 11:45:39 ID:B1LJZBRv
cobaltのphp.ini ってなくても動作しますか? なんか、どこにも、php.iniがないのに動作してるんですが、、、
375 :
373 :2006/06/15(木) 11:55:19 ID:B1LJZBRv
phpinfo を出力すると Configuration File (php.ini) Path /usr/local/lib って出力されるんですが、 /usr/local/lib には、一切そんなファイルないんですよ。
webに転がってるXML、
例えばこういうのを読み込んで↓
http://headlines.yahoo.co.jp/rss/c_int-yonh.xml Shift-JISで出力したいんですが、上手くいきません。
なぜShift-JISかと言うと、FLASHがShift-JISでないと文字化けしちゃうようなので、
「xml→php→flash」というふうにphpを中継してFLASHにXMLを読み込ませようとしてます。
自分が書いてみたコードは以下です。
どなたかアドバイスのほどよろしくおねがいします
<?
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
header("Content-type: application/xml; charset=Shift_JIS");
$text = file("
http://headlines.yahoo.co.jp/rss/c_int-yonh.xml ");
echo join('',$text);
?>
>>375 無けりゃ、PHPのデフォルト値が採用される。
でもphp.iniで設定してないと困る事、多くないか?
php.iniでしか設定できないパラメータも多いし。
>>376 それだと恐らくヘッダーの表記だけSJISで、中身は元のエンコーディング。
PHPのHTTP出力機能で自動変換を掛けるか、
自分のコード内できちんとSJIS変換を掛ける。
>>379 mb_http_output("SJIS");
ってのをアタマに入れてみたんですが、変換されてないみたいなので、
出力の時に
echo mb_convert_encoding( join('',$text), "sjis", "utf-8");
ってエンコードかけたら出来ました。
ありがとうございます!
381 :
365 :2006/06/15(木) 13:53:50 ID:???
>>366 $encode = mb_http_input('GP');
とやってみましたが、やはり$encodeには何も戻り値が来ません。。。
(ちなみにフォームには「METHOD="POST"」と指定してあります)
これはブラウザ側の問題なのでしょうか、それともPHP側の設定の問題なのでしょうか?
みなさんはこのような例で、きちんとエンコードが戻り値として返されますか??
>>381 俺も既存のフォームで試してみたら、
たしかに文字エンコーディングの値が取れなかった。
HTMLにはcharset=EUC-JPを明記してあるのだが。
IEと携帯の両方で試したけどダメだった。
ってか、そのmb_http_inputって初めて見るんだけど、
そもそも戻り値をくれる関数なのか!?
質問です。 phpで画像を作成して表示するプログラムを作っています。 A:temp.gif 表示 B:あるボタンが押されたらそれに対応したtemp.gif作成 という二つの処理を同じページ(?)内で繰り返しています。 ところが、ボタンを押して新たなtemp.gifが作成されても、画像表示では以前のtemp.gifのまま表示されています。 (ブラウザをリロードすると新しく作成された画像が表示されます) この場合、ブラウザをリロードせずに、どうすれば新しく作成された画像を表示することが出来るでしょうか。 回答をよろしくお願いします。
>383 $time = time(); print "<img src=\"temp.gif?${time}\">"; などで、リンクを無理やり毎回変更する
>>383 ブラウザをリロードさせずにやるのはJavaScriptのお仕事と聞いたけど、
どうなんですか?
>>384 なるほど。そんな手があったんですね。さっそく試してみます。
ありがとうございました。
387 :
nobodyさん :2006/06/15(木) 14:44:32 ID:LGGZbqC+
正規表現の質問なんですが スクリプトはUTF-8、出力はSJIS(携帯用なので)で、 同スクリプトのフォームから送った単語をひらがなのみにマッチさせたいので以下のようにしてみました。 $tango = mb_convert_encoding($_POST['tango'], "utf-8", "SJIS"); echo preg_match("/^[ぁ-ん]+$/", $tango); しかし、カタカナが入っていても1が返ってくるのですが、原因は何なんでしょうか? エンコードは関係あるんでしょうか?
>>384 完璧でした。反応も早くて使い勝手が抜群ですね。
ありがとうございました。
質問です。1.php 2.php 3.phpの3ファイルを、ランダムにインクルードさせたいです。
<?php
include("1.php");
?>
これをどのようにすれば実装できるのでしょうか?
<?php
mt_srand((double)microtime()*1000000);
$randval=mt_rand(1,3);
include("
http:// ●.com/".$randval.".php");
?>
ぐぐってここまで書いたのですが、動きません(´・ω・`)
390 :
nobodyさん :2006/06/15(木) 14:59:16 ID:KiPjTUhk
>>389 include("hoge".mt_rand(1,3)."hoge");
>>389 include(mt_rand(1,3).".php");
392 :
nobodyさん :2006/06/15(木) 15:07:55 ID:sMlBi/Z4
>>236 >>248 >>255 です。
大変遅くなりましたが、皆様のおかげで、MySQLにパスワードありで接続
することが出来ました!!ありがとうございました!!
>>393 その"は何
"が勝手に変換されるエディタでも使ってるのか
やりなおし
>>393 その"は何
"が勝手に変換されるエディタでも使ってるのか
"なんて無いぞ
>>381 'GP'なんて"俺"パラメータを受け付けるような関数ではないが...
(実際には無指定と同じ処理になるようになってる)
>>381 マニュアル(
http://php.s3.to/man/ref.mbstring.html )のmbstringの設定の解説で
> mbstring.encoding_translation boolean
> 入力される HTTP クエリに関して、文字エンコーディング『検出』および
> 内部文字エンコーディングへの変換を行う透過的な文字エンコーディングフィルタを
> 有効にします。
とあったので試しに.htaccessに
php_flag mbstring.encoding_translation On
と書いてみると
mb_http_input("P");
が"pass"になったよ。
でもどうやったら"pass"を正しい文字コードにできるのかは俺には分からんかった。
試す時はmbstring.encoding_translationはPHPファイル中のini_set()では設定できないという点に注意。
402 :
軟式PHP :2006/06/15(木) 16:29:11 ID:???
連結しないやつのプログラムなんて糞の極みなんだろうなぁ。
>>393 その全角のスペースは何かの間違いだと仮定して、
1.php:
<?php print "1"; ?>
2.php:
<?php print "2"; ?>
3.php:
<?php print "3"; ?>
test.php:
<?php include("./".mt_rand(1,3).".php"); ?>
で動作した。
test.php:
<?php include("
http://127.0.0.1/~hage/ ".mt_rand(1,3).".php"); ?>
でも動作した。
設定のallow_url_fopenがOffなのか、或いはこの辺が怪しいと思う。
> 注意:
> PHP 4.3未満のWindows版PHPは次の関数については
> リモートファイルアクセスをサポートしてません。
http://php.s3.to/man/features.remote-files.html まあ相対パスで書いてみろってこった。
そうだったんですね! やてみます! ありがとうございます!
>>404 おお、できました!動作確認完了
サンクス!!
<?php include("
http:// ●●●.com/●●/php".mt_rand(1,3).".php"); ?>
この一行だけを実装してみて、ランダムアクセス・かつきちんと動作確認とれました。
mt_srand((double)microtime()*1000000);
この行がいらなかったのかなー
ありがとうございました(`・ω・´)
408 :
387 :2006/06/15(木) 18:51:02 ID:3dqAzs9O
>>394 さんレスありがとうございます。
そうなんですね…アホなことしてました。
そこでmb_eregを使って以下のようにしてOKでした。
if (mb_ereg("^[ぁ-ん]+$", $tango)) {
echo "ひらがな";
}
これに更に「ー」(長音?)もマッチさせたいのですが、
if (mb_ereg("^[ぁ-んー]+$", $tango)) {
echo "ひらがな";
}
とするとなぜかダメなようです。\ーもやってみました。
原因は何が考えられるでしょうか?
409 :
nobodyさん :2006/06/15(木) 19:08:49 ID:UdRqyXnh
XML/Unserializerで PerlのXMLinのForceArrayのようなことは できないのでしょうか?
410 :
nobodyさん :2006/06/15(木) 20:00:26 ID:tq4h0Q38
MD5化された文字列を、元に戻したいのですが適当な関数が見つかりません。 どうすれば? $str = md5 ('apple'); echo $str; // '1f3870be274f6c49b3e31a0c6728957f'
>>410 元に戻す事はできない。ハッシュの用途を知りたまえ。
200x年、私は恐るべき発明をしてしまった。 それはどれほど長い文字列であったとしても16バイトに縮める事ができ、 なおかつそれを元の長い文字列に戻すことができるという恐るべき悪魔の発明であった。
マニュアルを最後まで読んでみたら、その関数が廃止されていたことを知った。 文書の冒頭に強調して書いとけよ。 不満だーーー!!
>>408 [ぁ-ん]では飽きたらず、[ぁ-んー]か、エロいな。
>>398 >'GP'なんて"俺"パラメータを受け付けるような関数ではない
ハァ? 公式マニュアルよく嫁カス。
もしくは大垣リファレンスp.301でも良い。
touch();で新規に空ファイルを作りたいのだけど コマンドライン上からphp -rで実行した場合正常に生成されるのに ソースに書いてそれを実行すると失敗する パーミッションに関しては問題ないと思われるのですが 原因はどのようなものが考えられるでしょうか?
>>408 おk、把握した。
<?php
print mb_regex_encoding(); // そしたらISO-8859-1とか言われたので、
mb_regex_encoding("UTF-8"); // 正規表現で用いるエンコーディングを
// mb_regex_encoding("SJIS"); // スクリプトの文字コードに合わせる
// mb_regex_encoding("EUC-JP"); // 試した環境ではUTF-8。
$tango = "あああーあああ";
$search = "^[ぁ-んー]+$";
if (mb_ereg($search, $tango)) {
echo "ひらがな";
}
?>
あるいは、
<?php
print "あ"; // 先に2バイトコードを出力していれば、
print mb_regex_encoding(); // 大人しくUTF-8と分かってくれたので、
//mb_regex_encoding("UTF-8"); // 正規表現で用いるエンコーディングを
// mb_regex_encoding("SJIS"); // スクリプトの文字コードに合わせる
// mb_regex_encoding("EUC-JP"); // 必要は無い。
$tango = "あああーあああ";
$search = "^[ぁ-んー]+$";
if (mb_ereg($search, $tango)) {
echo "ひらがな";
}
?>
どう見ても文字コードの問題です。本当にありがry
>>418 やはり権限の問題なんですかね
コマンドラインから実行する際のユーザとサーバを動かしてるユーザは同じハズなんですが
お答えいただきありがとうございました
421 :
419 :2006/06/15(木) 22:30:25 ID:???
ところで携帯ってUTF-8でも表示できんかったっけ? DoCoMoのFOMAの拡張絵文字を何とかしようとしてUTF-16でばっちこいと言われ絶望した記憶が。
>>421 手元の「携帯端末用Web製作バイブル 第3刷」には
iモード シフトJIS
iモード対応XHTML シフトJIS, UTF-8
EZweb シフトJIS
Vodafone シフトJIS, ISO-2022-JP, EUC-JP, UTF-8(P4(2)型/W型のみ)
とある
>>421 マジか。
てことは、携帯全般に広く対応するには敢えてSJISで文字化けを乗り越えて行く必要があると。
タマランなあ…
>>423 出力だけShiftJISにすればいいやん
あ、そっか。言われてみれば。
PHPからメールを送り、それをthunderbirdで受信すると、改行した部分が2行改行になって表示されています。 メーラーによっては普通に表示できるみたいですが、どうしてこうなってしまうんでしょうか? 文字コードや改行コードについて調べてみましたが解決策はわからず。
>>426 パーミッションと所有者とパスを確認
>>427 Windows用の改行コード(\r\n)になってる恐れあり
確認されたし
>>428 ディレクトリは[777]
パスはあっていました。
>>416 一応PHP4.4.2と5.1.4のソースや、現行のマニュアルを確認した上で言ってんだけどな。
バージョン違いの仕様の差異や公式ドキュメントからの読み落としがあったら謝るよ。
http://jp.php.net/manual/ja/function.mb-http-input.php マニュアルには列挙出来るとも、列挙した場合の動作解説はないと思うが。
文字"列"とは書いてあるが、この場合はモードを表す1文字だけの文字列。
>大垣リファレンス
確かに手元の初版のやつだけど解説のサンプルで'GP'ってやってるな。
これは間違いだと思うよ。記述の方では「いずれか」ってなっている(適正)けど。
あと該当ページの「ブラウザから送られてくる文字エンコーディングを設定したり」
ってところも間違いかと。巷でもmb_http_input('SJIS')とか解説してるページがあるが...
xは「このオプションはPHP4.3.2以降でサポート」だろ バージョンはどうなんだよ
$data = "./data/count/".date(Ymd)."log.cgi"; includeで読み込んでるから、トップページからのパスだからあってるはず というか、Local鯖ではちゃんと作成されたんだけどな・・・ xはPHP4.3.2からでしたっけ?
436 :
433 :2006/06/16(金) 00:59:53 ID:???
>>426 あ、その無料ホームページサイトはCGIに関して「Perlが利用可能です」としか書いてないけど、
まさかPHPが無いとかいうオチでは無いだろうね?
>>434 今調べてみたところ、5.0.4でした。
438 :
nobodyさん :2006/06/16(金) 01:01:25 ID:jcDHX2J/
>>436 他のPHPは全て使えています。
掲示板やアクセスカウンタも大丈夫です。
439 :
433 :2006/06/16(金) 01:03:28 ID:???
>>436 その./data/count/のディレクトリはちゃんとあらかじめ作ってある?
すみません、新規作成なぜか解決しました。 いつのまにかファイルが作成されていてビックリです。 ディレクトリのパスは[0777]以外はダメなのですよね? もしかしたら、最初[0755]になっていたので それを変えて実行されたのかと思います。 文がまとまってませんが、お手数おかけしました。
441 :
433 :2006/06/16(金) 01:08:19 ID:???
既に作成されていたものを作ろうとしてエラーってことかな。 ともあれ解決して良かった。
$len = 100; echo "len: $lenm";//len: 100m と間を空けたくない場合は echo "len: ".$len."m"; とするしかないですか?
echo "len: {$len}m"; でもおk。
444 :
nobodyさん :2006/06/16(金) 03:24:36 ID:2zUyZAya
$testに数字が含まれている場合、数字を取り除いて表示するには <?=preg_replace("/[0-9]/","",$test]) ?> で、出来ました。 そしてこの数字を取り除いた後の文字(例えば”テスト”)と比較する為に $test2=preg_replace("/[0-9]/","",$test]) ; if($test2=="テスト"){ echo"テストです"; } みたいなことをしたかったのですが、$test2に数字を取り除いた後の文字が 入りません。こういう場合、どうしたらいいのでしょうか?
キーの打ち間違えです。正しくは下記です。 preg_replace("/[0-9]/","",$test);
>>444 単なる確認ミスかなんかだと思う。
$test2=preg_replace("/[0-9]/","",$test);
の次の行で
echo "test=[$test] test2=[$test2]";
って入れてみれば。
>>447 おっしゃる通りでした・・。申し訳ありません。正しく表示されました。
450 :
nobodyさん :2006/06/16(金) 08:07:44 ID:Zr6gS6bm
>>419 亀レスすいません、ありがとうございます。
おっしゃるとおり文字コードでした。
おかげさまでエロい正規表現ができました。感謝です。
マニュアルを検索したのですが分からなかったので教えてください。 << ってなにをする物でしょうか? こんな感じで使われていたのですが、具体的に何をやっているか分かりませんでした。 13 << 22
453 :
452 :2006/06/16(金) 13:03:59 ID:???
もしかしてマニュアル見ても分からなかったらこれでドゾー <?php print 13 << 22; // これらは全て print 13 * pow(2, 22); // 54525952を返す print 13 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2; ?>
$a = 1 << 1; // $a=2 $a = 1 << 2; // $a=4 $a = 1 << 3; // $a=8 $a = 1 << 4; // $a=16 $a = 1 << 5; // $a=32 $a = 1 << 6; // $a=64 $a = 1 << 7; // $a=128 $a = 1 << 8; // $a=256 $a = 1 << 9; // $a=512 $a = 1 << 10; // $a=1024 $a = 1 << 11; // $a=2048 $a = 1 << 12; // $a=4096 $a = 1 << 13; // $a=8192 $a = 1 << 14; // $a=16384 $a = 1 << 15; // $a=32768 $a = 1 << 16; // $a=65536
powより早いのかな?
>>455 ビットずらすだけだから乗算よりかなり早いだろ
2の乗数しかできないけどね
457 :
nobodyさん :2006/06/16(金) 17:13:43 ID:qTIfB6oI
基礎的な質問ですいませんが、tファイルとはなんですか?
しらん
そのずらしたビット(値)は何に使用するの? 何か3Dポリゴンの計算とかか 数学系の関数とかワケワカメな馬鹿な俺に教えてくれ
>>459 3Dの計算とかは普通に算術でやるんじゃないかな。
ビット演算でやるのはバイナリファイルの生成とかCRCの計算とか
フラグ値の処理とかそんな類じゃないの。
情報処理系の計算であって数学系の計算ではないな。
計算式渡されて「この結果を表示してくれ」って言われたとき。
463 :
nobodyさん :2006/06/16(金) 19:38:10 ID:u2m80wFk
定数ってダブルクォート内で展開されるんですか?
されない。
>>461 地図の2点をクリックしてその距離を算出して表示するときとか
それ面白そうだな。よくそうやってホイホイと浮かぶもんだ…。 俺の頭が固いんだろうなぁ。
>>466 俺Apacheしか使ったことないからなんともいえないけど
100%AN HTTPDの設定が間違ってる
ちゃんと再起動したか?
>>466 ここPHPスレだから・・・
ApacheスレとかWebサーバスレ行けばわかるんじゃないかな?
>>469 そんなけち臭いこというなよ
はげるぞ?
>>468 >>469 ご親切にありがとうございます。直りました。
おそらく環境変数でpathが通っていなかったのか、
an httpdの実行プログラムの拡張氏に
.を入れてなかったのが原因のようです。
計算の仕方?というか、考え方で助言をいただきたいのですが、 グラフを作成するとして、 1:Aだけ値がある場合 A:///////////////////////10 2:AとBそれぞれ値がある場合 A://///10 B://////////20 /は画像のwidhtのサイズだとします。上記のように合計の値によって グラフの幅が可変するようにしたいのです。 どのような考え方で計算式を組めばよいのでしょうか?
1例 sum = valueA + valueB + ... widthA = valueA / sum * max_width widthB = valueB / sum * max_width ... で、いいの?max_widthも変わるの? こういうのを多少なりとも楽しんでやれないようならプログラムは向いてないと心底思うよ?
>>473 ありがとうございます。理数系が苦手で、こういう計算式を考えるのに
頭を悩ませていたのですが、仕事で覚える必要があり、あれこれやってました。
参考にします。ありがとうございました。
理数系って・・・ これ、算数レベルだよ
まぁまぁ。単なる計算するだけじゃなくて、どういう計算すればいけないか考えるあたりが 数学苦手な人には大変だと思うよ。数字関係は。
要は慣れだよ、慣れ。
まぁまぁ。単なるピストン運動するだけじゃなくて、どういうピストン運動すればいけないか考えるあたりが 数学苦手な人には大変だと思うよ。ピストン運動関係は。
俺なんか縮小画像の座標から、原寸大のおおよその座標を 割り出す式を考えるのに10分掛かったぜ。DQN高卒マンセーだぜ。
DQN高卒のような底辺でも生活していけるだけの給料もらえる言語ってサイコーだな。
481 :
479 :2006/06/17(土) 01:02:02 ID:???
最高。俺の職場には中卒いるしなwww最高すぎるwww
>>479 尋常小学校卒のウチのじっちゃんでも、2分でやるよ...
フォーム(SJIS)で入力した「ソ」とかが化けてしまうのは どのように処理したらいいでしょう? ソフト %83%5C%83t%83g ャtト ってなっちゃいます
>483です 追加すいません if (stristr($str, $word)) のような処理です
%93I%8aO%82%ea%82%be%82%e6%83%7b%83P
フォームからsubmitする時の動作について質問です。 マウスでsubmitボタンをクリックすると全てのフィールドのname属性を取得できるのですが、 エンターキーを使ってsubmitすると、なぜかsubmitボタンに設定したnaem属性がPOSTされません。 以下のフォームの例ですと、マウス・クリックでsubmitした時は$_POST['test1']も$_POST['test2']も取得できます。 しかしエンターキーでsubmitしますと、$_POST['test1']のみしか送信されてきません。 (上記は print_r($_POST) で確認しました) <FORM method="POST"> <INPUT size="20" type="text" maxlength="10" name="test1"> <INPUT type="submit" name="test2" value="テスト"> </FORM> ブラウザはIEの最新版です。もしかしてIEのバグなのでしょうか・・・??
>>485 ありがとうございました。
>>486 たいへんなヒントでした。
原因は・・
stripslashesでした
スイマセンスイマセン
>>487 IEの仕様。1つのテキストボックスしかないフォームでEnterすると発生する。
回避策
2以上のテキストボックスを配置する
どうしても1つにしたいなら
<FORM method="POST">
<INPUT size="20" type="text" maxlength="10" name="test1">
<INPUT type="hidden" name="test2" value="テスト">
<INPUT type="submit" name="test2" value="テスト">
</FORM>
とでも。
490 :
489 :2006/06/17(土) 04:41:22 ID:???
>>487 どうしても1つにしたいとき
<FORM method="POST">
<INPUT size="20" type="text" maxlength="10" name="test1">
<INPUT type="text" name="test99" value="" style="display:none;">
<INPUT type="submit" name="test2" value="テスト">
</FORM>
のほうがIE以外考えるといいかもしれない(なんとなく
>>489 そうだったんですか! それは全く知りませんでした。
しかし変な仕様ですね・・・ IEって・・・
とにかく助かりました。ありがとうございます!!
自作スクリプトのベンチを取っていたところ、 データベースとの接続部分(mysql_connect関数の実行)で、 だいたい0.001秒〜0.01秒もかかっていることが分かりました。 これを速くするにはどういう解決法がありますでしょうか? たとえばスクリプト終了後もMySQLとのコネクションをプールして保持し続けられたら 次回の起動時にもそのコネクションを再利用できて速度アップにつながると思うのですが、やり方が分かりません。
493 :
492 :2006/06/17(土) 05:38:31 ID:???
ちなみに環境はLinux、PHP4.3.1、MySQL3.23です。
質問です、 defineで宣言した定数をヒアドキュメント内で表示することは可能ですか?
自分のPC内のフォルダを参照して、指定箇所にアップロードすると言うことは 出来ますでしょうか? HTMLのinput type="file"で1つずつファイルを選んでアップロードする方法で 現在対応しているのですが、複数ファイルある場合、めんどうになります。 出来ればフォルダを選択してすべて送信、などが出来ればと思っています。
>>496 試したんですけど、
define("NAME", "0123");
print <<< HTML
NAME
HTML;
これだと NAME が表示されます
{NAME}
としても {NAME} が表示されます
変数に代入して
${NAME}
とするしかないのでしょうか
>>492 >0.001秒〜0.01秒もかかっている
充分優秀な値だと思うけど。
もしかしてひとつのリクエストの中で何度も
コネクションの張ったり切ったりしてる(悪い設計)の?
あとマニュアル読んで問題がでる可能性も承知の上で
mysql_pcconect()を使う。
次のような文章を正規表現を用いて置き換えたのですがうまくいきません。 $text = ":55 aaa.html"; echo ereg_replace("^[^a-zA-Z]+[[:space:]]", "" $text); $textの内容はlsで取得した情報をsubstrで抜き出したものです。 最初のコロンは時間の「○時○分」の区切りのコロンです。 コロンはあるかもしれないし、無いかもしれない文章が混在しています。 その後に二桁の数字が入って、スペースが入って英数字記号若しくは日本語のファイル名が来ます。 最終的に一番最後のファイル名だけを抽出しようと思ってます。 英数字記号なら簡単なのですが場合によっては日本語のファイルがある場合もあるのでなかなかうまくいきません。 どう書けばよろしいでしょうか。 よろしくお願いします。
500 :
499 :2006/06/17(土) 09:50:01 ID:???
すみません。自己解決しました。 echo ereg_replace("^(:|[0-9]{1,2})+[[:space:]]", "" $text); 板汚しすみませんでした。
すみません。超初心者な質問です。 a.phpで echo <img src=\"hoge.php?id=$id\">; と記述して、指定された別ファイルの hoge.php で、 $id = $_GET["id"]; としても値が受け取れません。 print_r($_GET)とすると、空でした。 色々調べたのですが、さっぱりでした。 どうも基本的な見落としをしているみたいなのですが、別ファイルにリンクを使ってデーターを送信するにはどうしたらいいのでしょうか。 回答をお願いします。
そのimgタグはわざと?
>>503 リンクさきのphpファイルで画像を作成し、それをimgタグで出力させよかとしています。
>>505 いま試したら受け取れていませんでした。
img srcでなくて、a href と変更したらしっかりと受け取れていました。
img タグの場合はGET送信できないのでしょうか?
イメージ的には、img タグで画像を生成するphpファイルを呼び出し、
親ファイルに生成された画像を表示するという形を考えていたのですが。
>>506 >img タグの場合はGET送信できないのでしょうか?
いや問題ない。静的なhtmlにimgタグで該当のphpスクリプトを指定、
変数でやってる$idの部分も実際に値を指定して試してみな。
それと動作確認は、imgタグでやってるからにはimage/hogeが出力されることが期待されてるのだから、
echoなんぞで単純にtext/hogeの文字出力で確認なんぞは出来ないからな。
logファイルに出力するとか、画像として文字を書き出すかだ。
>>507 ありがとうございます。静的なHTMLに出力させて何度かテストさせると上手く解決できました。
やはりechoを使えないという点で手間取っていたみたいです。
情報量が少なくて何とも言えないけどさ、 画像を出力するhoge.phpでどうやって$_GETの中身を確認したのかが気になる。 実は取れてるけどそれを確認できてないというセンが怪しいと思うなあ。
おおっと4分遅かったか。スマソ
511 :
nobodyさん :2006/06/17(土) 15:17:26 ID:ZJRj0raG
セキュリティ的なことに関して質問です。 htmlspecialchars($_POST)とやって、フォームからの値を まとめてサニタイズしようとしているのですが、これはセキュリティ的にみてダメですか? そのほかにもaddslashes($_POST)とか、一個一個やるのが面倒なので、まとめてやりたいのですが、これってどうなんですかね?
515 :
511 :2006/06/17(土) 16:24:05 ID:ZJRj0raG
>512 レスどうもです。 ようするに、むしろ全部まとめてhtmlspesialcharsする方が自然ってことですかね?
516 :
510 :2006/06/17(土) 16:32:17 ID:ZJRj0raG
>514 レスどうもです。 まとめてやっても動くようです。$_POSTの中には数値というか整数型もありますが、エラーも出ないような...。 セキュリティについての本を買ったのですが、その中ではSQLインジェクション対策として、SQL文中の変数(文字列型)にはaddslashesをかけろと書いてあったのですがそうでもないんですかね?
へえ、俺がローカルでhtmlspecialchars($_GET)を試したら
> Warning:
> htmlspecialchars() expects parameter 1 to be string,
> array given in ほげほげ
とか言われるんだけど、最近のPHPはArrayもOKになったんか。
それは知らなかったよ。スマソ
で、ここは読んだ?
http://php.s3.to/man/function.addslashes.html > 注意:
> magic_quotes_gpc は デフォルトでOnです。
まあ念に念を入れてaddslashes()をするのも自由ではないでしょうか。
配列に対して処理したけりゃarray_mapとか使えばええんでないの?
>>517 本家にマニュアルがあるのに、そこのマニュアルを薦めるのはヤメれ。
>>518 す、すまそん。
普通に本家と勘違いしてた…w
520 :
510 :2006/06/17(土) 17:31:16 ID:ZJRj0raG
>517 れすありがとうございます。 スミマセン、僕が間違ってました。error_repoting(4)とやっていましたorz。 たしかにWarning出ますね。 マニュアルのaddslashesの項目、大変参考になります。magic_quotes_gpcはデフォルトでonなんですね。 丁寧にありがとうごいます。 >518 ありがとうございます。 array_mapという手がありますか。 そもそもhtmlspecialchars($_POST)みたいな「発想」自体がアリなのかどうかということなんですが、どうなんでしょうか? それと全然別の質問になってしまうのですが、基本的にはnotice系のエラーも全部潰すべきなんでしょうか?(自分はうっとうしいのでerror_repotingって書いちゃうんですけど...。)
>>520 >htmlspecialchars($_POST)
この発想はありだろ。
誰かがローカルからHTML改変してPOSTしてきても使用しなけりゃOKだし
PHPには良く使われる処理なんかは関数として用意されてる場合が多いので
やりたいことがあったら検索して見つけウマーって脳汁コンボになりやすい
522 :
nobodyさん :2006/06/17(土) 17:49:29 ID:ZJRj0raG
>520 れすどうもです。発想はアリですか。 ただほんとにやると517さんのエラーが出るので、518さんのように別の関数を用意したりするのが吉ですかね。 いま試したんですが、htmlspecialchars(extract($_POST))はアリですかね? ちゃんとタグが無効になってwarningも出ないようです。
function obutsu_ha_shodoku() { global $conf, $flag; $_SERVER = array_map("sanitize", $_SERVER); $_GET = array_map("sanitize", $_GET); $_POST = array_map("sanitize", $_POST); $_COOKIE = array_map("sanitize", $_COOKIE); } function sanitize($value) { global $conf, $flag; $value = trim($value); $value = htmlspecialchars($value, ENT_QUOTES); $value = addslashes($value); $value = str_replace(array("\r\n", "\n", "\r"), "<br />", $value); return $value; } こうですか? わかりません!><
あるphpをroot権限で動かしたいのですが、ブラウザからそのようなことは可能でしょうか。 具体的にはroot所有のディレクトリへのデータの入出力を行いたいのですが、 ブラウザ側からだとApache権限で動くため書き込むことは出来ません。 SSHやコマンドラインからphpを実行すればrootで動きますが ブラウザ操作で達成できることに意味をなす内容のためその手段を選択することは出来ません。 Cronジョブの利用も同様に即内容を反映させる必要があるため利用できません。 セキュリティ面の問題抜きで可能か不可能かという場合そのような操作は可能でしょうか。 よろしくお願いします。 環境:Linux(FC3) php-5.1.4 root権限を所持している状態です
>>522 http://jp.php.net/manual/ja/function.extract.php > 警告
> extract() をユーザー入力 ($_GET, ...) のような信頼できないデータについて使用しないでください。
> もし行う場合、例えば register_globals を信頼しているような古いコードを一時的に実行したい場合、
> EXTR_SKIP のような extract_type の値が上書きされていないことを確認してください。
> そして php.ini の variables_order で定義されたものと同じ順で展開すべきであることに留意してください。
というか普通にforeach()使っちゃダメなん?
526 :
nobodyさん :2006/06/17(土) 18:00:01 ID:GQE5aPRk
pearのDBを使っているのですが追加処理時に DB Error: value count on row と出てしまうようになってしまいました。 $sql=<<<EOS INSERT INTO lecture ( hoge1,hoge2,hoge3,hoge4, hoge5,hoge6,hoge7,hoge8, hoge9,hoge10,hoge11,host ) VALUES ( '$hoge1','$hoge2','$hoge3','$hoge4', '$hoge5','$hoge6','$hoge7','$hoge8', '$hoge9','$hoge10','$hoge11''$host' ) EOS; SQL文は上の通りです。 12番目のhostをなくして11個のデータ挿入だとエラーなしで動作します。 何が原因なんでしょうか? 環境はApachi1.3系、MySQL(バージョン不明)、レンタルサーバ(Xserver)です。
全角一文字の「が」を「か」、「ぎ」を「き」 のように、濁音を取るように変換するような一発関数はあるでしょうか?
528 :
510 :2006/06/17(土) 18:20:56 ID:ZJRj0raG
>525 レスどうもです。 extractがダメですか。 foreachを使うと言うことは、 $hoge = $_POST[0]; $hoge1 = $_POST[1]; $hoge2 = $_POST[2];.....続く みたいに、一個ずつPOSTの値を取り出すのと変わらないですよね? そうすると、結局いっこずつhtmlspecialcharsということになりますよね。 別にそこまでだわらないので、一個づつでもいいんですけど、 >521さんも発想としてはOKと言われていますし、 foreachを使って、安全に値を取り出しつつまとめてタグ除去とかできないものかと...。どうでしょうか?
だ、誰か
>>528 を俺にも分かるように説明してくれ…。
530 :
527 :2006/06/17(土) 18:30:16 ID:???
$w = "ががーりんたべたよ"; $w = mb_convert_kana($w, "h"); $w = str_replace('゙', '', $w); $w = str_replace('゚', '', $w); $w = mb_convert_kana($w, "H"); echo $w; とりあえず上記ので騙し騙しやることにしましたが、簡潔な方法があったらおしえてくださ。
>>527 あっても需要少なそうだしその程度ならfunctionで作れるくない?
ereg_replaceとifだけで作れそうな希ガス。
532 :
nobodyさん :2006/06/17(土) 18:39:52 ID:ZJRj0raG
>529 すいません。焦りすぎて謎なこと書いてしまいましたorz 要するに$_POSTの値をextractを使わずに$key = $_POST[key]みたいにしたくて、 結果として取り出した$key達に一括でhtmlspwcialcharsをかける方法です。 わかりずらくてすみません。
533 :
nobodyさん :2006/06/17(土) 18:40:59 ID:NaIxFncO
超くだらない質問ですみません。 PHPでURLに変数を受け渡しする記述のことです。 index.php?no=2 というnoという変数のほかにaという変数も渡したい場合どうなりますか? 一応 index.php?no=2,a=1 みたいになるのかなと思っていますが。正しい記述を教えて下さい。
>>530 それ以外でやるなら
$string = "はげふげほげもげぱげ";
$search = array(
"が", "ぎ", "ぐ", "げ", "ご",
"ざ", "じ", "ず", "ぜ", "ぞ",
"だ", "ぢ", "づ", "で", "ど",
"ば", "び", "ぶ", "べ", "ぼ",
"ぱ", "ぴ", "ぷ", "ぺ", "ぽ",
"ガ", "ギ", "グ", "ゲ", "ゴ",
"ザ", "ジ", "ズ", "ゼ", "ゾ",
"ダ", "ヂ", "ヅ", "デ", "ド",
"バ", "ビ", "ブ", "ベ", "ボ",
"パ", "ピ", "プ", "ペ", "ポ",
);
$replace = array(
"か", "き", "く", "け", "こ",
"さ", "し", "す", "せ", "そ",
"た", "ち", "つ", "て", "と",
"は", "ひ", "ふ", "へ", "ほ",
"は", "ひ", "ふ", "へ", "ほ",
"カ", "キ", "ク", "ケ", "コ",
"サ", "シ", "ス", "セ", "ソ",
"タ", "チ", "ツ", "テ", "ト",
"ハ", "ヒ", "フ", "ヘ", "ホ",
"ハ", "ヒ", "フ", "ヘ", "ホ",
);
print str_replace($search, $replace, $string);
こうかな。
>>533 index.php?no=2&a=1
厳密には
index.php?no=2&a=1
と書くといいらしいよ。
というかこれはPHPの質問じゃなさす。
536 :
535 :2006/06/17(土) 18:52:04 ID:???
ごめん、
>>535 の下段は
index.php?no=2&amp;a=1
って書いた。
537 :
527 :2006/06/17(土) 18:52:50 ID:???
>>534 なるほど。引数の1番目と1番目を、同じサイズの配列で対応できるのですね。
一旦半角カナに変換するのはなんとなく嫌なので、
それを採用してみたいと思います。
ありがとうございます。
538 :
521 :2006/06/17(土) 18:53:10 ID:???
>>ID:ZJRj0raG $_POST = array_map( 'htmlspecialchars' , $_POST ); 何故518からの話の流れで532になるのか分からん。 ググレカス
>>532 未だに何が言いたいのか良く分からんのだが、
htmlspecialchars()はArrayを受け付けないんだから
何をどうしようと処理上は要素を一個ずつ取り出して
Stringとしてかけることになるんじゃないの?
foreach ($_POST as &$value) { htmlspecialchars($value); }
でも
>>538 でも
>>523 でも、どれでも結局は同じことだと思うのだが…。
540 :
nobodyさん :2006/06/17(土) 19:02:11 ID:NaIxFncO
>>535 ありがとうございました。
そう言われればPHPというよりHTMLの基礎なのかも知れません。w
スレ違いで失礼しました。
542 :
nobodyさん :2006/06/17(土) 20:13:15 ID:vT2D8NFi
場違いな質問ですが、 書き込んだときに、青色の数字だす?→526みたいなのって どうやるんですか??
意味わかんねぇ。
URLテラナガスw 余分なパラメータは削ろうぜ。
酷い言い方だけど、こんなん自分で考えられないなら向いてないよ。
いくら下らない質問スレとはいえ、数行しか書かないここで そんなひとつのサービスまるまるを 詳しく説明なんてできないよ もっと、質問内容をしぼってくれ
こらこらおまいら、ここは下らない質問に優しく答えるスレですよ。
>>549 subject.phpを作って以下のように記述。
<?php
print <<EOM
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head>
(中略)
<title>Chronicle</title>
(中略)
</head><body>
13板 最新5スレ<br>2006/06/17 23:00:19<hr color='#006699' size='5' noshade><a name='worry'>お悩み相談板</a><br>
1:<a href=./test/mread.cgi/worry/1150450297/l5>??花言葉?? (24)</a><br>
2:<a href=./test/mread.cgi/worry/1150126847/l5>自分をだめだと思った時、集まる場所B (80)</a><br>
3:<a href=./test/mread.cgi/worry/1150209009/l5>駆け引きなんかじゃないのに… (19)</a><br>
4:<a href=./test/mread.cgi/worry/1147684184/l5>高校受験についてです。 (15)</a><br>
5:<a href=./test/mread.cgi/worry/1147097646/l5>【リセット】皆でオナ禁汁!3日目【上等】 (45)</a><br>
<hr width='100%' size='1' noshade>
(中略)
<a href="./index.php" target="_self" accesskey="9">HTOPへ戻る</a><br><hr color="#006699" size="5" noshade>
<div align="center"><img src="./site_img/ft_lg.gif" border="0" width="43" height="7"></div></body></html>
EOM;
?>
もしくは該当ページのソースを全部コピーして貼り付けて保存。
これでバッチリ同じものができあがります。お試しあれ!
…あ、お礼なんていいですよ^^
>>524 はいらない子ですかそうですか(´;ω;`)ブワッ
そろそろ誰か答えてよー
>>554 悪意があって無視してるんじゃなくて、今ここにいる人では分からないんです。
大人しくエロい人の登場を待って下ちぃ。
ここにもこれ貼っとく?
<わからない五大理由>
1. 読まない ・・・説明書などを読まない。読む気などさらさらない。
2. 調べない ・・・過去スレ、ググるなど最低限の内容も自分で調べようとしない。
3. 試さない ・・・めんどくさいなどの理由で実行しない。する気もない。
4. 理解力が足りない ・・・理解力以前の問題で理解しようとしない。
5. 人を利用することしか頭にない ・・・甘え根性でその場を乗り切ろうとする
<回答が無い理由>
1. 誰も知らない
2. 質問文が意味不明
3. 知ってるが、お前の態度が気に入らない
脱!教えて君同盟
ttp://myu.daa.jp/osiete/
>>554 スマン、俺にはやり方はわからないよ。
結局のところPHPを実行するユーザはapacheなんだから通常のやり方では無理だと思う。
あ、書いてて閃いたぞ!
1:bashとかで書かれたファイルを用意する(内容はスイッチユーザ、実行したいPHPファイルの実行)
2:ブラウザから叩かれたPHPファイルが1で書いたシェルファイルをキックする
3:2でキックされたシェルファイルが
>>554 が実行したいPHPファイルをキックしてウマー
これでどうだ?
>>524 UNIX系だとして、所有者が他者でもパーミッションを適切に設定すれば書き換えられるわけだが。
560 :
nobodyさん :2006/06/18(日) 00:46:49 ID:3xsAOr6z
$array2 = array("p"=>8,"a"=>5,"g"=>7); asort($array2); print_r($array2); Array ( [a] => 5 [g] => 7 [p] => 8 ) と出ますよね。 これを一番最初の変数をechoで echo $array2[a]; だったら順番が違っても5しか出ませんよね。 順番によって一番上のを出力させたいのですが、どうすればよいですか?
テクニックについて質問です。 現在、CSVファイル形式でデータを扱っています。 ファイルからデータを読み取るさい、 while(list($id, $name, $pos_x, $pos_y) = fgetcsv($file, 1000, ",")) { としています。 しかし、これではlistの項目が増えた場合には随所変数を書き直さないといけないという手間があります。 これを array("id","name,"pos_x","pos_y"); という配列の要素などを使って動的に扱うことはできないのでしょうか? 現在は、list()を使わずに配列に収め、一つ一つの変数それぞれをget関数を経由して取得するパターンを考えています。 もし良いテクニックなどがあれば教えてください。よろしくお願いします。
>>562 CSVファイルの1行目をカラム名レコードにする
>>563 うーん。ちょっと考えてみたのですが、うまい使い方が思いつきませんでした。
もしよければ一行目にカラム名を設定して、それをどう変数名として扱うのか教えてもらえませんでしょうか。
ちなみにレンタルサーバーでDBが使えないため、自分でデーターの管理をファイルで行いたいなと考えています。
>>564 まずフィールド名を作る
配列にしとく
$fields = array("id","name,"pos_x","pos_y");
または、ファイルの1行目にCSVでフィールド名
$fields = fgetcsv($file, 1000, ",");
while ($tmp = fgetcsv($file, 1000, ",")) {
$rec = array_combine($fields, $tmp);
な感じでいけるかな
http://jp.php.net/manual/ja/function.array-combine.php
566 :
562 :2006/06/18(日) 12:31:00 ID:???
さらに考えて、 // CSVファイルを開く $fp = fopen("Sample.csv", "r") or die(); // 一行目を読んでヘッダにする $header = fgetcsv($fp, 1024); // 以降の行を読んでテーブルとして表示 while(($line = fgetcsv($fp, 1024))) { if(任意の行) { foreach ($header as $i => $value) { $$value = $line[$i]; } break; } } で、いけるような気がしてきました。試してみます。
567 :
562 :2006/06/18(日) 12:33:34 ID:???
>>565 ありがとうございます。そちらもさっそく試してみます。
568 :
562 :2006/06/18(日) 12:36:31 ID:???
>>565 array_combine()は便利ですね。こういうのを探してました。これで上手くいくと思います。
ありがとうございました。
CSVの質問があったので便乗なんですが、 PHPでローカルにあるCSVのデータをSQLiteにINSERT(インポート?)するには どういう方法がありますでしょうか?
570 :
nobodyさん :2006/06/18(日) 16:25:04 ID:pp5MYlMG
phpのイメージ関数について質問です。 元となる画像に、文字を縦書きで乗せたいのですが効率的な方法はあるのでしょうか? 外道ジェネレーターの縦書きバージョンのようなものを作りたいのですが フリーの縦書きフォントが中々見つからず(そもそも私の発想が違うのかもしれません)、 sazanami等のフォントで一文字一文字区切ってならべても「ー」等の処理に困る始末です。 よろしくお願いします。
エスパーさん!およびですよ!
CSVを下の方法で編集したのですが、 ローカルで result.csv を開くと \r\n とそのまま表示され改行されてないです。 どうすれば改行されますでしょうか? $fp = fopen('test.csv', 'r'); $i = 0; while ($data = fgetcsv($fp, 10000)) { $row = array( $data[2], $data[3], $data[4] ); $total[] = join(',',$row); if (++$i == 10) { break; } } $fp_w = fopen('result.csv', 'a'); fputs($fp_w, join('\r\n',$total)); fclose($fp_w);
'\r\n'を"\r\n"にしてみるとか?
>>572 '\r\n'を"\r\n"に変えてみて
xml_set_element_handlerって xml_set_element_handler ( int parser, string startElementHandler, string endElementHandler ) 二番目の引数にstring 入れますよね。 classつくって、そのクラスのメソッドを指定したんですけど、 Warning: xml_parse() [function.xml-parse]: Unable to call handler になってしまいます。 そのclassを使用するところにファンクションをつくって そのファンクション名を引数に指定したんですが、駄目でした。 どのように指定するのでしょうか。
576 :
573 :2006/06/18(日) 18:18:43 ID:???
>>574 ふつつか者ですがよろしくお願いいたします…。
phpのソースを色分けしてくれる関数ってあった気がするんだけど 検索しようにもキーワードが思い浮かばず…。 なんて関数でしたっけ?
つsource_irowake($src)
show_source
style.php ってファイルを作って function error($detail){ return(" <b><font color=\"#ff0000\">ERROR!!</font> $detail </b><br> <a href=\"JavaScript:history.go(-1)\">戻る</a> "); } と、関数を定義して index.php ってファイルで <?php include"style.php"; ?> <?php print(error(ラジオボタン)); ?> とすると、エラーが出てしまうのですが エラー【Parse error: syntax error, unexpected '{' in D:\アドレス\index.php on line 26 】 どうも、error(ラジオボタン)のボという字が問題みたいなのですがどうしたら良いか教えてください ※ 例えば、ラジオ と入れるだけならちゃんと表示されます。 宜しくお願い致します。
RSSフィードを作るのに FeedCreator.class.php 以外に良いものってありますか?
htmlに埋め込むアクセス解析を作りたいのですが、 どうすればよいのでしょうか? htmlにincludeは無理ですよね
サッカー見ろよ非国民
>>584 imgタグでアクセス解析をしつつ画像を返すPHPスクリプトに飛ばすとか、
フレーム使うとか。
587 :
581 :2006/06/18(日) 23:54:08 ID:???
>>582 質問がくだらなすぎた・・ごめん
そしてありがとう!
>>584 鯖の設定次第じゃなかったっけ?
*.htmlでもPHPとしてちゃんと認識してくれるような設定になってるとこも
あったと思う。
php://outputストリームの明示的なcloseはどうやって行うのでしょうか? <html> 略 </html> <?php fclose(output); sleep(5); // 重い処理 ?> 的なことがしたいのですが。
>>590 ソースっても...山ほどあるからぐぐれw
少なくてもApacheとIISには拡張子で
振り分ける機能が普通にある。
>>590 <?php ?>が含まれてない.phpファイルがあってもいいように
単に.htmlをphpパーサに渡すだけじゃん。
ソースとかの問題じゃないよ。
>>590 拡張子がphpやcgiだとCGIとばれるからアタックを受けやすい
だからセキュリティに厳しいとこはよくやってる
ソース欲しいならApacheの設定ファイル(httpd.conf)でも見て来い
UNIXは拡張子でOSが勝手に実行アプリを判断することなんてないからな
Yahoo!がそういうことしてるっぽいかなーとかふと思った。 htmlファイルなのにアクセスするたびにソースが変わったりしてたような。
>>583 > RSSフィードを作るのに FeedCreator.class.php 以外に良いものってありますか?
これスレ違いでしたかね…
みんな自分で書いているのでしょうか
デジカメで撮ったファイルって「DSC00124.jpg」見たいな感じで 英数字が混ざったファイル名が多いじゃないですか これを上手く表示させるために $common = DSC00 $open = 001 $close = 124 のようにして、DSC00001〜DSC00124のファイルをHTMLで表示しようと思って for($a=$open ; $a<=$close ; $a++){ print("<img scr=\"{$a}\"><br>") } っていうことを考えたんですけど、$a = $open が 001 となっていて、以降1ずつ加算していくと 002ではなく普通に 2 という値が入ってしまいます。 これはどのように回避すればよいでしょうか?
0<>1<>2<>3<>\n 1<>2<>3<>0<>\n 2<>3<>0<>1<>\n 3<>0<>1<>2<>\n このように<>区切りで情報が書かれているテキストで、 任意の列を基準にソートするには、どうすれば良いのでしょうか。
601 :
nobodyさん :2006/06/19(月) 10:00:33 ID:Pg3y549I
>>600 データがさほど多くないのならfileで全部読んで
explodeを使って目的の列のデータで配列を作ってその配列をasortかarsortして
そのキーの並び順通りにファイルに書き出すなり使うなりすればいい
多いのならデータベースを使うべき
603 :
nobodyさん :2006/06/19(月) 10:21:16 ID:ywXHAQss
変数の初期化って具体的に言うとどういうことですか? 僕の買った本にはPHPは変数を初期化しなくても使えるから気にするなみたいに書いてあるのですが、一説には初期化しないとセキュリティ的にダメとか...。 くだらないですが、宜しくお願いします。
セキュリティ的に駄目ということはないと思う ただ、使い捨てのコードならともかく、長く利用するコードなら その変数が初期化忘れてでたまたまうごいているのか、 意味があって未定義にしているかが、わからないと 数ヵ月後に、もう一度そのソースを見たときに苦労することになる
php5 smarty apacheを使って認証アレコレを勉強しているんですが、 認証okならセッションにログイン情報を格納して、"logout.php"へのリンクを踏むと ログアウト処理してトップ画面を表示 ということがしたいのですが、ブラウザのURL入力欄に"〜sample/logout.php"と出てしまいます。 これを"〜sample/"と表示させるにはどうしたらいんでしょうか? logout.php内で ログアウト処理の後にheader("index.php") 記述しても ログアウト処理を踏まずindex.phpへ飛んでいるようです 参考になるHPなどあればご指南お願いしますm(_)m
606 :
nobodyさん :2006/06/19(月) 11:03:37 ID:ywXHAQss
>604 ありがとうございます。 セキュリティ的には問題ではないのですね。 逆に、未定義にする意味というか、未定義にしておく必要がある状況というのはどんなときですか?
607 :
600 :2006/06/19(月) 11:20:24 ID:???
>>601 ありがとうございます。usort関数についてはよく知らないので、
この後調べてみることにします。
>>602 ありがとうございます。確かにそれだと、うまくいきそうです!
>>601 さんと
>>602 が教えてくださった方法で速度を比べて、
速そうなほうを使ってみたいと思います。ありがとうございました!
608 :
nobodyさん :2006/06/19(月) 11:32:52 ID:ywXHAQss
例えば<input type="text" name="username">をサブミットして extract($_POST)とやるのと、 $username = $_POST['username']とやるのはどこがどう違うのですか? どちらも$usernameとして使えるようになりますが、前者は御法度ということになっていますよね?
>>597 文字列"DSC00001"をインクリメントしてみ
データーを呼出して、header関数のlocationを使ってサイト移動したいとき データーのURLには特殊文字が含まれていていいもの? それとも変換しておいたほうがいいの?
>>606 0とfalseとnullに違いを持たせるとき
C言語のほとんどの環境ではそれらはすべて0と同じ意味だけど
PHPなどはそれぞれ意味が違う
そのため
if (!$foo)
というコードを書いたときに $foo は0、false、null全てを許すのか
それとも
if ($foo === 0)
を簡略して書いたかを明確にしていないと、バグの原因になったりする
$foo = 0;
この初期化を通らないと
if ($foo === 0)
は警告が出る。これは、$foo にfalseやnullではなく数値の0が
入ってくることを期待する処理となる
614 :
nobodyさん :2006/06/19(月) 12:03:49 ID:ywXHAQss
>612 すごく分かり易いです。ありがとうございます!
だから変数は使用前に、 $name = ""; // 名前格納用 $age = 0; // 年齢格納用 とか宣言してから使うようにするといいってことだね><
616 :
608 :2006/06/19(月) 12:56:16 ID:ywXHAQss
>609 >4を読んで試したのですが、いまいちピンと来ないです。 extract($_GET)の場合だと、パラメータに付けた任意の値が代入されてしまいますが、extract($_POST)変数が上書きされることはないような気がします。 >4を読んで_GET[hoge]=fugefugaという値を送ってみたのですが、確かにextractによって$_GET[hoge]=fugafugaが成立(?)してしまいますが、例えばフォームに_POST[hoge]=fugafugaと入れてサブミットしても、extractで展開されて上書きという風にはならないです。 なんだか混乱していますが、extractが致命的な例を知りたいです。宜しくお願いします。
617 :
nobodyさん :2006/06/19(月) 12:57:29 ID:ywXHAQss
× extract($_POST)変数が ○ extract($_POST)の場合、変数が
くだらない質問はいいが、くだらないまたは間違った解答をするやつは消えろ
>>618 それじゃ、駄目だよ
ちゃんとどれが間違っているか指摘しないと
>>616 試してないけど、こういうのってヤバくね?
つか、ヤバいですか?
<form action="
http:// >>616 のサーバ/該当のスクリプト.php" method="post">
<input type="text" name="_SESSION[hoge]" value="fuga">
<input type="sumit" value="送信">
</form>
自分が知ってるのは「送信フォームが必ずサーバ上のHTMLから実行されるわけじゃないから気をつけろ」ということだけ。
個人のPC上にフォームをコピってきて、改変して実行される可能性もあるって教わったです。
つか、extractなんて初めて知った
>>620 んなことしなくてもHTTPしゃべれればいくらでも好きなようにPOST出来るわな。
質問です。 PHPとPostgresqlでツールを作ろうと考えています。 たとえば住所録で都道府県をセレクトボックスで入力する際に 001 北海道 002 青森 ・・・ といった選択肢を 1.テーブルを作っておくか、配列をファイルに書いておいてrequireするか 2.北海道なら"北海道"で持ってていいのか、001を持っておいて表示する際は$pref[ 001 ]みたいにするのか ex.そもそもPostgres系のスレでするべき質問か どうするのがベターなのでしょうか
625 :
nobodyさん :2006/06/19(月) 14:25:44 ID:ywXHAQss
>620 レスありがとうございます。 確かにそれは見ただけでヤバそうですね。面倒だけど、 $hoge = $_POST['hoge']; $fuga = $_POST['fuga']; (以下項目数ぶん続く) とやるのが一番安全確実なんですかね? でもやっぱなりextractが御法度のがわからんですorz registar_globals = OnはPOSTも変数上書きできたのでダメなのは分かったのですが...。
>>624 この状況で、別に言う必要もないことを敢えて言ってるからな
>>623 都道府県名が変更されることを考慮するか、
変更されたときに変更以前に選択された結果へ伝播するようにするか、
入力されたデータの使い道はなんなのか
など様々な条件によって異なってくるよ。
>ex.そもそもPostgres系のスレでするべき質問か
システム設計について基礎から学ぶのが正解
>>623 (1) 都道府県なんてほぼ変更ないだろうということで、別ファイルで配列作りインクルード
$pref[001] = '北海道';
$pref[002] = '青森県';
$pref[048] = '沖縄県';
(2) またはDBで別テーブルにしてJOIN
(1)は管理などが楽で直感的、PHP側が(2)と比べると冗長になる可能性はある。
DB側はPrimaryKeyで数値にして、SQL文も単純になりDB容量もすこーーし小さくなる。
ループ処理で "<td>$row[$i]</td>" とかしたいなら(2)かな
検索フォームも作りDBから抽出したりするなら(2)のほうが楽
>>628 "<td>".$pref[$row[$i]]."</td>"
(1)でもこうやればいいだけだから、これは(2)の利点として挙げるのは変だよ
まぁ道州制が導入されても10年後とかそんな感じだろうしね
>>625 >>4 を読んでも分からんのならもう分からないままで良いんじゃない?
誰もextract()が絶対ダメとか言ってないわけでさ、
別に問題ないケースもあるわけだから。
多分君のスクリプトでは問題は起こらないんだよ。
>>623 そんなの作る人の趣味で決めて良いと思う。
俺なら$_POST['location'] = "北海道"で済ますなあ。
633 :
623 :2006/06/19(月) 17:23:57 ID:???
>>629 MySQLで悪いけど、こういう時とかかな
while ( $row = mysql_fetch_array($res) )
{
echo "<tr>";
foreach ($row as $cell) { echo "<td>$cell</td>"; }
echo "</tr>";
}
extract($_GET); if ( hogehoge ) { $file = "hoge.php"; } if ($file) { include($file); } こんな馬鹿なコードを書かないようにね!!
PHP+Eclipse+CVSで、お奨めの本ありませんか? 「オープンソース徹底活用 EclipseによるPHPスクリプト開発」 という本があって良さそうなのだけど、古い本のもよう。 今時の新しい良い書籍が在れば教えてください。
質問です。 10件ごとにページ移動で表示させたいのですが、 全てのデータを10件ごとに表示はできるのですが、 検索結果を10件ごとに表示するやり方がうまく思いつきません。 どなたか教えてください。
>>637 状況が良くわからない
「全てのデータ」配列があって、そこから「検索結果」配列ができているんだろ
すでに10件ずつ表示できるのなら、そのまま表示できるだろう?
データベースを利用した場合は、PHPの問題じゃなくてSQLの問題だ
データベースによって仕様が違うのでなんともいえないが、
普通、limit やら、top やらを使って、10件ずつとか取得してくる
こいつらが使えない場合は、あきらめて全件取得してくるしかない
いや、一度全部のデータを読み込んで 一度検索結果のみを配列に格納したほうがいいのかな?
よくないだろ。 全件文の行数が知りたいなら、1 count 2 必要分だけデータ取得 の2クエリ
>>641 つまり、一行ずつ読み込んで
検索が一致したらその数を数えるということですか?
>>642 状況をもっと詳しく説明しろ
その検索もとは何だ?
データベースか?CSVファイルか?それ以外の何かか?
$data = "データの場所"; $file = file($data); $count = count($file); for($i=0;$i<$count;$i++){ 行[$i]を読み込む if(検索で一致){ $search++; } if($search>=10){ break; } } こうですかわかりません><;
>>645 ボクちゃん。
まずは、もっと基本的なことを勉強してこようね。
>>645 ( ゚д゚) …普通のxxxx.cgi?
(つд⊂)ゴシゴシ
(;゚д゚) ….cgi?
(つд⊂)ゴシゴシゴシ
_, ._
(;゚ Д゚) …!?
まあ
>>639 の上段が全てだと思う。
全てのデータを10件ずつ表示できるのなら
検索にヒットするデータをそれと差し替えれば良いだけのこと。
問題はこれがPHPの質問なのかどうかってことだ。
>>648 xxxx.datだったら直リンで中身見れるから・・・。
CSV??
つまり、検索にヒットしたデータを配列に格納すればよいのでしょうか?
>>649 ああ、そういうことか。おk、把握した。
仮に$linesという配列に全データを入れたとしよう。
で、その各要素から検索ワードにヒットしたものを$hittedという配列に入れるとしよう。
そしたら、全てのデータを表示する時は$linesを10件ずつ表示(1)して、
ヒットした物を表示したい時は
$lines = $hitted;
としてから$linesを10件ずつ表示(2)すればいいってわけだ。
お分かりかな?
テキストファイルだったら、fileで全件配列に入れちゃって 表示する範囲だけforで回しておけばいいよ。 どうせたいした量でもないんだろ。
いくらくだすれでもこれは^^
>>653 横からすまん。俺いつもそうやってるんですが、多い場合ってどうするのがいいんですか?
テキストファイルでやるとしたら・・。
ページャー付いてるスクリプトを見て理解するのが一番早いんじゃまいか?
>>655 多い場合はそもそもテキストファイルよりDB使うだろ。
どうしてもテキストファイルにしたいなら、何度も表示するようなものは
予めヒット数とかキャッシュしておいてfopen、fget()で最後のヒット行までしか読み込まないとか工夫すれば良いんじゃない?
条件がころころ変わるような検索は全件読み込まないと無理だけど、それでも一気にメモリを食うfile()は使わない方が良い。
>>655 テキストを読み込むバッファと、最終的に利用する配列を分ける
まずはバッファに読み込んで、必要なものだけ配列へコピーする
これを件数分たまるまで繰り返す
あ、ちなみに
>>657 のは[1][2]...とかページ数分のページャが付いてる場合ね。
prev nextしかないなら、表示数+1読めば次のページがあるかないか分かる。
と思ったが、そうでもいないな・・・。 最後の+1分が最後の行だったら結局最後まで読む事になるか。
件数が少なければこんな感じでいいんじゃないかい $page = 2; // 表示したいページ数 1-n $disp_count = 10; // 表示したい行数 $start_pos = ($page - 1) * $disp_count; $end_pos = $start_pos + $disp_count; if ($end_pos > $count) $end_pos = $count; // 10件に満たないときはどうするとかいろいろは // $start_pos,$end_posをどうにかする $arr = array(); for($i=0;$i<$count;$i++){ 行[$i]を読み込む if(検索で一致){ $search++; if ($end_pos < $i) break; if ($start_pos >= $i) { // 条件に合致しているとき$arrに溜める $arr[] = $file[$i]; } } } // $arrに目的のレコードが入ってるはず foreach ($arr as $rec) { echo $rec["....."].なんちゃら表示; } // 違ってたらスマ、誰か直して下さい。
くだスレらしくなってきた。
Basic認証とDigest認証なのですが
hittedはやばいよ
ツボったwwww
667 :
nobodyさん :2006/06/20(火) 07:39:43 ID:Js32egMI
data.txtにあるテキストデータの中で aaa,bbb,ccc,ddd eee,fff,ggg,hhh iii,jjj,kkk,lll とある内の fffを含むものを見つけて消すには どうしたらいいですか?
すれ違いだったらゴメソ。 <form method=post action=hoge.php> <input type=text name=これこれ> <input type=text name=あれあれ> <input type=submit value=こっちのばやい> <input type=submit value=あっちのばやい> </form> で、”これこれ”や”あれあれ”の中身を こっちのばやいに送るときと あっちのばやいに送りたいときが同じform上にあるときは ”input type=submit”や”form”にnameを付けたりして区別させるんですか
669 :
668 :2006/06/20(火) 08:16:25 ID:???
自己解決ですsumaso
画像アップする掲示板を作成してますが、 アップされたファイル名をユニークにしたいと思っています。 たとえば、 アップ前ファイル名 中田.jpg アップ後ファイル名 imge1DOf7.jpg こんな風にリネームする関数ありましたでしょうか。
>>670 俺ならデータが同じであるかを考慮してデータからハッシュ取るよ。
そういうのが必要なければ
>>671 の時刻(ミリ秒)で良いんじゃないの。
あとuniqid()
>>667 file()でデータ取得して
正規表現でfff探して
見つかったらunlinkで消す
>>673 行を消したいのかもね。
file()でデータ取得して
正規表現でfff探して
見つからなかった行をスタックして
最後にスタックした行があるのならファイルを書き直す
って感じか。
質問 仕事でPHPやるときってPHP4と5どっちが多い?
例えば以下のようなソースが$dateに入力されているとします。
<a href="
http://yahoo.co.jp "><img src="logo.jpg" width="100" height="50"></a>
<strong>アクセスはこちらまで!!</strong>
このソースから画像表示(<img>タグ)だけを取り出してechoで表示させることは
出来ますでしょうか?
>>667 673 674
preg_grep を使えば見たが目スマートに解決できる。
>>667 preg_grep と書いたが、ファイルから読み出して特定行を消して書き直すのであれば、
fopen( +r) からの処理で、
1行づつ読み出し、 strpos にて、fffがあるかをチェックして、
ないなら、書き出しようの配列に追加、
全行チェックの後,
ftruncate
fseek
fput
fclose
の手順が、ファイルロックの観点からいうと最適だとおもふ。
なお、fffのチェックにstrposを使うのは、正規表現を使うより動作が速いため、
特にパターンパッチを行う必要がない特定文字列ならば、これが推奨される。
.$n.みたいな記述がありますがこの変数の前後の.(dot)は何を意味してるんでしょうか。 これまで学んだ何冊かの本でもいつも華麗にスルーされていて いまだにピンときません。。。 「.」で探しても文字列連結のときの.(dot)しか出てこないしで。 あほすぎな質問ですがお願いします
.$a = "foo"; みたいなこと? エラーなると思うが。
構文エラー
>>680 文字列連結の . の気がするんだが違うのか?
>>680 $n = 'bb';
$hoge = 'aa'.$n.'cc';
echo $hoge;
---> aabbcc
とかじゃなくて?
686 :
680 :2006/06/20(火) 16:49:55 ID:???
皆さんすみません。PHP独得の構文なのかと思って脈絡もなく質問してしまいました。 ↓は今手もとの書籍からの引用でそういう記述がある1行のみ部分です。 $strPathには取得したファイル名が入っています。その前後にdotが。 print("<li><a href='record.php?doc=".$strPath."'>".$strPath."</a></li>"); 1行だけでわかりますでしょうか?
単なる連結だ
どう見ても文字の連結じゃん^^
689 :
680 :2006/06/20(火) 16:54:44 ID:???
うわあ〜やばい・・・今初めて気づいたけどやっぱ普通に文字列連結ですね、これ。 やっぱアホ杉だです。すいませんm(_ _)m
>>686 >>685 のとおり
間を開けると良く判る。
print( "<li><a href='record.php?doc=" . $strPath . "'>" . $strPath . "</a></li>" );
691 :
680 :2006/06/20(火) 17:01:38 ID:???
皆さん、ありがとうございます。重複しました。
>>865 ですでに指摘されてたんですね。すみません。
ほんとうに・・・俺って奴は・・・orz
692 :
680 :2006/06/20(火) 17:05:04 ID:???
693 :
nobodyさん :2006/06/20(火) 17:17:50 ID:e7ISWcMQ
質問です htmlspecialcharsはHTML出力時とDB格納時のどちらにかけるのが正しいのですか?両方すかね?
694 :
nobodyさん :2006/06/20(火) 17:21:19 ID:84KpNS9w
気にするな。みんな適当だから。
>>693 HTML出力時
DB格納時はpg_convertとかその辺のを使う
>>693 DB格納前。
なぜならヴぁ、HTML出力時であれば、HTML出力するたびに htmlspe〜を通さないとならない。
DB格納前に行えば、その一回だけですむ。
>>693 タグを含めた文字を検索とかするわけじゃなければ、DBに入れる前に変換してもいいんじゃない。
でも、公式かどっかにhtmlspecialcharsはHTML出力する直前にやるべきだ。みたいな事が書いてあった気がするけど。
出力前までhtmlspecialcharsしないのは、メール/HTML等に対応する為だとか。
まぁ、でも別にどっちでもいいと思うよ。
698 :
nobodyさん :2006/06/20(火) 17:59:39 ID:e7ISWcMQ
>694,695,696 トンクスっす。 やっぱみんな適当なんですかね。適当を卒業したいのですが...。 XSSとかの本を読んでると、なんかキリ無い気がして萎えます。 プロの現場というか、それで喰ってる人たちはどの程度対策してるんでしょうか? >695 pg_convertは初めてみました。便利そうですね。 >696 へんなjavascriptが表示されて...とか言う具合にはならないですかね?
おいおい、基本的な部分が分かってないと見た。
701 :
nobodyさん :2006/06/20(火) 18:25:48 ID:e7ISWcMQ
>699 おっしゃるとおりです。完全に独学してるので怪しいです。 色々本も買ったのですが、結構著者によってまちまちというか、 htmlspesialcharsさえやっときゃ殆ど大丈夫みたいな書き方されてたり...。 フォーム入力から→DB登録→一覧表示みたいな流れで最低限これだけはやっとけみたいのありますか?
>>693 html出力時にするのが一般的
DBに投入前に行うと、そのデータを編集するときにエスケープする前の状態に戻してから
編集して、再度htmlspecialchars()を使う必要があるから
そんなことをするくらいなら、出力する前にやるほうが楽
703 :
nobodyさん :2006/06/20(火) 19:00:00 ID:mpIQquvJ
フォームで、未入力の項目がある場合、条件式はどうするのが良いでしょうか? 私が考えたのは: 1. if (isset ($_POST['name'])) { ...処理... } // POST がTRUE なら処理 2. if ($_POST['name'] === '') { ...処理...} // POST の値が空なら処理 皆さんなら?
>>703 2 か if (strcmp($_POST['name'], '') {
>>703 (strlen($_POST['name']) > 0) and (strlen($_POST['name']) <= $MaxNameLen)
>>703 if (!isset($_POST['name']) || $_POST['name'] == '') { ...処理... }
if (!$_POST['name']) {...処理...}
708 :
nobodyさん :2006/06/20(火) 21:09:57 ID:e7ISWcMQ
if(strlen($_POST['name']) == 0) {...処理...}
709 :
nobodyさん :2006/06/20(火) 21:32:39 ID:mpIQquvJ
>>707 それはまずい
数値の0がきたときと空が来たときの判別ができない
CSVというのはなんですか?
712 :
711 :2006/06/20(火) 22:32:37 ID:???
データをCSVで保存するとカンマ区切りでExcelでは読みやすくなるのですね。
Excelというのはなんですか?
くだらん釣りはスルーヨロ
718 :
676 :2006/06/20(火) 23:31:39 ID:???
タイミング悪くてだいぶレスが流れてしまったのですが、、 678さんが「できる」と回答していますが、どうやってやるんでしょうか? 自分ではどの関数を使ってどうやってやればいいかの ソースの組立の予測が付きません・・。 ヒントか何か教えていただければと思います。
かなりスレ違いと思いますがお願いします。 ページA→ページBと移動する際に パスを引き継ぎたいのですが getではパスがばれるので× postだとアンカーで引き継げない となるとsessionidがベストなのでしょうか?
720 :
nobodyさん :2006/06/20(火) 23:34:25 ID:Vcobe6Xy
>>718 一番手っ取り早いのは正規表現で取得してくる
>>719 セッションがベスト
セッションのことをsessionidと言ってるならもうちょっと勉強ヨロシク
724 :
723 :2006/06/21(水) 00:02:45 ID:???
独自ドメインのサーバーでテストしたところ、同じスクリプトで/で終わっていても正常に動作しました。 Xreaのサブドメインの方でテストすると出来ないっぽいです。 session.cookie_domainを設定して試してみましたが、やはいダメでした。 という事はサーバーの設定の関係でしょうか。
>>723-724 全てやりつくして自分ではどうにもならないって状況になってから質問しなおせ。
で、次質問するときは、phpinfoで出るセッション関連設定晒せ。
あと、例で用いるドメインはexample.comな。
>>723 おちつけ
なにが保存されないんだ
セッションとクッキーの違いは分かってるか?
クッキーの確認方法はなんだ?
ブラウザを閉じたら内容がクリアされるようなクッキーはファイルには保存されないのを知ってるな?
>>725 これ以上はもう無理そうです。
>>726 デフォルトで言うところのPHPSESSIDクッキーが保存されません。
クッキーはブラウザのクッキー表示機能で確認してます。
セッションの設定は session.bug_compat_42OffOff session.bug_compat_warnOnOn session.gc_probability11 session.hash_bits_per_character55 session.gc_divisor10001000 これ以外はデフォルトのようです。
>>725 なんでexample.comじゃなきゃいけねーの?
ブラウザ=Firefoxです。
731 :
729 :2006/06/21(水) 00:17:24 ID:???
ごめん。俺が悪かった
すみませんお願いします。 数値を全角から半角に直したいのですが $com1 = i18n_ja_jp_hantozen($_POST["com1".$i],"n"); と記述したところ、 Fatal error: Call to undefined function: i18n_ja_jp_hantozen() というエラーが返ってきました。 PHP4ではまだ対応されていないのでしょうか?
>>733 変更されていたのですね^^;
mb_convert_kana()で試したところも同じエラーになりました。
「mb」を使うには何か設定が必要なのでしょうか?
735 :
nobodyさん :2006/06/21(水) 00:42:18 ID:Ap/VWjSS
セッションに配列を入れて出力する仕組みを書いています。 以下のようなソースになるのですが、出力結果はArrayとなって うまくできません。おかしい箇所を訂正・指摘していただけないでしょうか? //送信ボタンが押された場合 if(isset($ok)){ //セッション『id』に値がある場合 if(isset($_SESSION["id"])){ array_push($_SESSION["id"],$id); for($i=0;$i<count($_SESSION["id"]);$i++){ print "$_SESSION[id][$i]"."<br>"; } //セッション『id』に値が無い場合 }else{ $_SESSION["id"] = array($id); print $_SESSION["id"]; } }
>>734 マルチバイト関数はインストール時に指定が必要
その鯖の環境では使えるのかい?
>>736 ローカルです。
extension=php_mbstring.dll
にしてあるのですが使えないのです。
>>735 最初にelseの方にいくよな?
そしてarrayを代入してそれをprintしてればarrayが表示されて当たり前だろ?
>>737 オマイが設定したと言っても本当に正しく設定してあるか分からんだろ?
phpinfo()を出したまい
>>738 出しました。
「mbstring」らしき文が見当たりません
740 :
735 :2006/06/21(水) 00:59:26 ID:???
>>738 それでは最初のelseではprintをせずに2回目の送信を行ったところ
forで出力してもやっぱり、Arrayっと表示されます。
※$idが最初は10次は20入れた場合
10
Array
>>739 phpinfoの
Configuration File (php.ini) Path
のphp.iniにあるextension=php_mbstring.dllの前に;が無いか
phpinfoの
extension_dirのディレクトリにphp_mbstring.dllファイルがあるか確認
>>739 じゃぁ使えないな
>>740 × $_SESSION[id]
○ $_SESSION['id']
>>741 extension=php_mbstring.dll
;はありません。
extension_dirは ./ ./ となっています
>>743 php_mbstring.dllのありかを探してそのディレクトリを
php.iniのextension_dirに指定してみれ
php.iniはphpinfoで表示された場所のファイルを修正
745 :
735 :2006/06/21(水) 01:09:38 ID:???
>>742 7行目のprintの箇所ですよね?
以下のようにしたのですが、状況は変わらずです・・。
print $_SESSION['id'][$i]."<br>";
>>745 742じゃないが、最後の行に
print_r($_SESSION);
で中身がどうなってるか確認してみれ
747 :
nobodyさん :2006/06/21(水) 01:15:53 ID:A9H5bJA/
extension_dirにphp_mbstring.dllの場所を設定したら解決しました。 ありがとうございます。 mb_convert_kana($_POST["com".$i],"n"); としたら、出力が「?P?P?P」になっちゃったよ;;
748 :
735 :2006/06/21(水) 01:16:01 ID:???
>>746 最初に10を、2回目に20をテキストボックスに入れて送信した結果です。
Array ( [id] => Array ( [0] => 10 [1] => Array ( [0] => 10 ) ) ) Array ( [id] => Array ( [0] => 10 [1] => Array ( [0] => 10 ) ) )
なんかかなり変な感じですね・・。しかも配列にArrayが入っているし・・。
全く原因が掴めません。。array_pushが悪い訳じゃないだろうし。。
>>747 mb_convert_kana($_POST["com".$i],"n","sjis");
でやってみれ
//送信ボタンが押された場合 if(isset($ok)){ //セッション『id』に値がある場合 if(isset($_SESSION["id"])){ array_push($_SESSION["id"],$id);// (3) for($i=0;$i<count($_SESSION["id"]);$i++){ print "$_SESSION["id"][$i]"."<br>"; // (4) } //セッション『id』に値が無い場合 }else{ $_SESSION["id"] = array($id); // (1) print $_SESSION["id"]; // (2) } } 最初はelse以降に逝くが、$idが10なら (1)の$_SESSION["id"]はarray(10)になる。 当然(2)はArrayと表示される。 次はセッションが既にあるから上段に行って、 $idが20なら(3)で$_SESSION["id"]はarray(10, 20)になる。 当然(4)では 10 20 と表示されるはずだ、と。 この20がArrayとなっているという事は(3)の$idがArrayになってるって事だから、 この処理以前の$idの取り方に問題があるような気がする。
753 :
735 :2006/06/21(水) 01:23:00 ID:???
>>750 ,752
どうも解説ありがとうございます。私もどこがおかしいのか全くわからなくて・・。
ちなみに、$idを受け取る送信ページは以下のソースです。普通のHTMLです。
<form action="session.php" method="post">
<input type="text" name="id">
<br>
<input type="submit" name="ok" value="送信">
</form>
>>753 print_r($_POST);
print_r($id);
で中身をみてみちゃどうかね。
多分 $id = $_POST["id"]; とすべきところを $id = array($_POST["id"]); とでもしている予感。
756 :
735 :2006/06/21(水) 01:33:54 ID:???
>>754 ■1回目の10を入れた場合
Array ( [id] => 10 [ok] => 送信 )
10
■2回目の20を入れた場合
10
Array
Array ( [id] => 20 [ok] => 送信 )
Array ( [0] => 10 [1] => Array ( [0] => 10 ) )
758 :
757 :2006/06/21(水) 01:39:01 ID:???
$_SERVER['PHP_SELF'];で解決しました。
>>754 $id = てな感じで$idを代入しているとこ書いてみてくり
そういえば、csvだと直リンで中身見られることはないの?
>>760 見ることもできるし、見られなくすることもできる
いろいろな設定次第
762 :
735 :2006/06/21(水) 01:47:32 ID:???
>>759 特に代入してないです。
>>735 で書いたとおりです。
別に$idはそのまま出力される(値が入る)かと思いますが。。
763 :
nobodyさん :2006/06/21(水) 02:01:38 ID:B7JejGVK
>>762 展開してるのね。了解。
■2回目の20を入れた場合
10
Array
Array ( [id] => 20 [ok] => 送信 )
Array ( [0] => 10 [1] => Array ( [0] => 10 ) )
↑ここで最後の$_SESSION[1]が配列になっているし、中身が10のまま
なんか、セッションがあろうがなかろうが関係ないんじゃないか?
$_SESSION["id"][] = $id;
for($i=0;$i<count($_SESSION["id"]);$i++){
print $_SESSION["id"][$i]."<br>";
}
764 :
735 :2006/06/21(水) 02:24:29 ID:???
>>763 ご説明ありがとうございます。
//セッション『id』がある場合
〜
} //最後から二つ目の}
をコメントアウトしました。そして763さんのコードを追加してみたのですが、
2回目の20を入れた処理で
10
Array
Array ( [id] => 20 [ok] => 送信 )
Array ( [0] => 10 [1] => Array ( [0] => 10 [1] => Array *RECURSION* ) )
このようになります。あまり変わりないような気がします・・。
765 :
735 :2006/06/21(水) 02:27:43 ID:???
テストをWindowsXPのローカル上で行っていまして、 PHPが5.1.4なのですが、あまり関係ないですよね・・。 session_start();もしているからセッションが有効になっているはずだし・・。
>>764 いや、735をいっそのことこうしたらどうかと。
//送信ボタンが押された場合
if(isset($ok)){
$_SESSION["id"][] = $id;
for($i=0;$i<count($_SESSION["id"]);$i++){
print $_SESSION["id"][$i]."<br>";
}
}
$_SESSION["id"]があるかどうかで
何か処理が変わるの?735だと単純に$idを追加すればいいだけのような気がするんだけど。
767 :
735 :2006/06/21(水) 02:49:46 ID:???
>>766 変わり無しです・・。766さんのコードに変更したのですが、
10
Array
というエラーが出ます。環境による問題ですかね。。
>>767 よっしゃ。とりあえずそのファイルどっかに上げてみてみないか?
もしくはそんなに長くないコードならここに貼り付けるか
769 :
735 :2006/06/21(水) 02:55:19 ID:???
【送信前・index.html】 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> <title>セッションテスト</title> </head> <body> <form action="session.php" method="post"> <input type="text" name="id"> <br> <input type="submit" name="ok" value="送信"> </form> </body> </html>
770 :
735 :2006/06/21(水) 02:57:18 ID:???
【送信後・session.php】 <?php session_start(); ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> <title>セッション受け取り</title> </head> <body> <?php //送信ボタンが押された場合 if(isset($ok)){ $_SESSION["id"][] = $id; for($i=0;$i<count($_SESSION["id"]);$i++){ print $_SESSION["id"][$i]."<br>"; } } ?> <input type="button" onClick="history.back()" value="前に戻る"> </body> </html> 何度もお手数おかけします。。よろしくお願いします。
>>770 WInXP,Apache1.3,php5.0.3
結果
10
20
2回目の$_SESSIONの中身
Array
(
[id] => Array
(
[0] => 10
[1] => 20
)
)
ただし、register_globals Offのため
$id=$_POST["id"];
$ok=$_POST["ok"];
を追加した
うまくいってるけど?
あれ? $_SESSION["id"][] = $id; ~~~~~~~~~~~ こういう書き方ってありだっけ?
774 :
735 :2006/06/21(水) 03:23:08 ID:???
>>771 テストしていただいてありがとうございます。
うちはApache2.0.52とPHP5.1.4ですが、やはりなりません。
Linux+PHP4系のレンタルサーバにファイルをアップしても
同様に、
10
Array
という表示です。どうなっているのか・・。
775 :
735 :2006/06/21(水) 03:26:12 ID:???
わかりました!! $_SESSION["id"][] = $id; ↓ $_SESSION["id"][] = $_POST["id"]; とすることで、771さんと同じ結果になりました! ちょっと理由がわからないのですが、変数を$_POSTにしないといけないみたいですね。。 長い間、お付き合いいただき、ありがとうございます。 また勉強します。
>>774 恐らく$idがおかしそうなので、最初に
<?php
session_start();
$id=$_POST["id"];
$ok=$_POST["ok"];
?>
ってやてみたらどうかな
>>775 もう見て無いかもしれないが、よく考えたら
register_globalsがOnなため、$_POSTと$_SESSIONの両方の["id"]が
$idに展開されて変になっていたのではないかと
$_SESSION["id"]を$_SESSION["xid"]にするとうまくいくべ
779 :
nobodyさん :2006/06/21(水) 05:43:39 ID:r7tfflxK
既に何かデータが存在するファイルに上書きをする時は、w+でいいんですか?
w+でもいいけど既にあるんだったらwでいいんじゃない?
書くけど書いたのをファイルを開いたまま読みたいときw+ 書くだけw
782 :
nobodyさん :2006/06/21(水) 06:27:43 ID:r7tfflxK
wでやってるんですが、上書きできないんですよね 何故でしょう? こんな感じです。 if (is_writable($file)) { if (!$handle = fopen($file, 'w')) { print "Cannot open file ($file)"; exit; } for($i; $i <= $count-1; $i++){ $files_rows = preg_split("/,/", $files[$i]); $serial = $files_rows[0]; if($files_rows[16] == $_POST['original']){ $mod_file .= $add_data."\n"; } else{ $mod_file .= $files[$i]."\n"; } } flock($handle,LOCK_EX); if (!fwrite($handle, $mod_file)) { print "Cannot write to file ($file)"; exit; } fclose($handle); }
783 :
nobodyさん :2006/06/21(水) 06:45:56 ID:r7tfflxK
ポインタ指定してないのが原因でしょうか?
if (!$handle = fopen($file, 'w')) { for($i; $i <= $count-1; $i++){ ぱっと見 この2つの行になんだか違和感。 普通はこうかな if (!($handle = fopen($file, 'w'))) { for($i=0; $i < $count; $i++){
jpeg画像を表示ではなく、ダウンロードさせるにはどのようにすればよいのでしょうか?
>>782 段階を追って確認してみれば?
まず
if (is_writable($file)) {
はちゃんと通過できてるの?
あとぶっちゃけ
$handle = fopen($file, 'w');
の1行だけ実行したら中身空っぽの0バイトファイルになるはずだけどどうよ?
これで0バイトになったら上書き自体はできてるってことだ。
こういうのはシンプルなコードで順次確認が基本だよ。
>>785 画像データの標準出力への出力前にheader()を使って別のファイルタイプとして認識させる。
Parse error: parse error, unexpected '{', expecting '(' って何ですか?
構文解析エラー: '('が来ると思ってたのになんか'{'がキタこれナニこれ
phpではmethod=getのデータは$_GET['']で受け取るんかいな?
その通り。つかマニュアル嫁
配列の使い方の関係で、どうしても定義してないキーが出ちゃう場合があって noticeエラーが頻発しちゃうんだけど、これって無視しても特に問題ないよね? notice出ないように修正することも出来なくはないけど、 すごく無駄なコードが増えちゃうしスパゲティ化するから、 かえって修正しないほうがいい気がしてる。
noticeエラーは開発時のデバッグお助け機能くらいで考えとけばいいんじゃねーかと俺は考えてる。 全部潰せばより堅牢にはなると思うが、正直なとこ過剰としか思えん。 ちゃんとデバッグできない低脳な人は片っ端から潰した方がいいかもしれんけどな。
ポリシーをどうするかは本人の自由だと思うので好きに決めていいと思うけど、 > すごく無駄なコードが増えちゃうしスパゲティ化する ってのが気になるな。 そんなにあちこちで定義されていないキーを使うってのは、スクリプトの構造自体に問題があるんじゃないかなぁと。
>>795 親切といえば親切だし、過剰といえば過剰だよね。
>>796 あちこち・・・ってほどでもないんだけど、ある一つの処理に関する配列において、
要素の数が場合によって0〜9個まで、まちまちになるのよ。で、それをHTMLテンプレに埋め込んだ変数(配列)に
展開するときに、noticeが出ちゃう。
>>797 エラーの抑制方法はもちろん知ってるわけで・・・ 質問の意図が分からなかったんかな?
>>798 じゃぁ無視するとエラーログがとんでもないことになる。
どこまで保存するかの設定にもよるが。
>>798 >>796 も書いてるが、存在しないキーでエラーが出たり、
それを修正するためにスパゲティコードになる時点で根本的に設計がおかしい
まあ、好きにすれば?としか答えようがないな
配列を初期化すればいいんじゃないの。
任意の項目名で自由にHTMLテンプレ上に表示させたいとかゆー類っぽいな
素直に @をつけるか、 Noticeメッセージを表示しないように設定するかのどっちかだな。
804 :
nobodyさん :2006/06/21(水) 11:44:35 ID:NAuR8t7O
PRINTかECHOで複数行を簡潔に記述したいのですがどう書けばいいのでしょうか? 以下のようにしても動きませんでした。一行ずつ関数書くのは省きたいです。 PRINT" あかさたな テスト りんご ";
>>840 ?>
あかさたな
テスト
りんご
<?php
print <<< HTML りんご だいすき ぱいなっぷるも すき HTML;
sendmailを使いたい場合は何か設定をしなくてはいけないのでしょうか?
めいらーでーもん
>>804 ひょっとして
PRINT"
あかさたな<br>
テスト<br>
りんご<br>
";
>>804 echo "あかさたな<BR>テスト<BR>りんご";
print(" あかさたな\n テスト\n りんご\n "); こういうこと?
おまえら単純な質問に協力しるなんてなんていいやつらなんだ (つд`) おじさんは感動して涙がとまらないよ。
>>815 多分暇なだけだよ
インデントを使いたいなら、
echo "あいうえお"
."かきくけこ"
."さしすせそ"
."たちつてと";
818 :
nobodyさん :2006/06/21(水) 17:43:17 ID:r7tfflxK
1150672920,aaa,bbb,ccc 1150671220,ddd,eee,fff 1150672450,iii,jjj,kkk のファイルは、0行目がタイムスタンプになっています。 mktime関数を使っています。 このタイムスタンプで日付が現在に近い順に並べ替えしたいのですが どうすればいいですか。
>>818 先頭がタイムスタンプなら、そのまま行ごとソートでいいのでは?
>>818 それは3つのファイルの0行目の例か?
それとも行頭がタイムスタンプになっている1つのファイルの各行を並べ替えたいという事か?
何にせよ日付が先頭なら、配列に入れてソートすればいいだけじゃ?
ただし、日付が何年も前のものが入る可能性があるなら、単純にソートはだめだな。
すまん。何年も前のが入ってるとどうして単純なソートじゃ駄目なのか分からん。
>>824 >>823 ではないが、「何年も先のが」って言いたかったンじゃまいか?
命題が「現在に近い順」だから
ま、タイムスタンプって言ってるから未来の数値は入らないとは思うけど
スイッチ構文($AAA) ケース1 0; ユーザー関数A ケース2 1; ユーザー関数B ブレイク HTMLの表示 以上の文で質問です。 ブレイク文の処理で、SUBMITボタン押して$AAAの値を変え、ケース1の処理を動かしたいのですがうまくいかませんでした。 考えられるヒントをどうか与えてください。 はしおった書き方ですいません。
jpgやgif、pngについて アップロードしたいのですが どうすればできますか?
hoge.php?foo=bar を extract も $foo = $_GET['foo'] もやってないのに $foo = "bar" となってしまうのはどの設定でしょうか?
d register_globals でした。
なんか普通にプログラム組んでリャありえないような質問ばっかりだな。
スレタイ
不覚にもつっこみにワロタ
さらに
>>834 が初心者なら余計にワロエタ
下らん質問でスマンがAjax+PHP使って例えば、 図なんかに噴出し等で文字を入れることをするとします。 掲示板みたいな感じで誰でも挿入できるとします。 その文字をファイルベースでサーバにログや噴出しの位置情報を保存したとしたら、 部分更新がAjaxのメリットなはずだけど、結局更新は全体的に読み込みなおしですよね?
>>837 669じゃないが、
<input type="submit" name="a" value="OK_a">
<input type="submit" name="b" value="OK_b">
見たいにして、
if (isset($_POST['a']) {
// TO DO a
} else if (isset($_POST['b']) {
// TO DO b
}
で処理を分岐させこともできるし、javascript の onClick を
使う方法もある
>>838 状況がいまいち理解できないが、
ユーザーが入力した値をサーバに保存すして
次回更新時のその保存した値で画面を再生成ってこと?
>>838 質問の意味がいまいちイメージし難いんだが。。。
ファイルベースで噴出しの位置情報を保存っていうのはテキストにX=30,Y=50って言う値を
保存するって感じか?
で、噴出し内のコメントも保存しないといけないよな?
@最初にPHPファイルにアクセスした場合、まずPHPが背景画像を表示する。
Aそしてテキストを読んで位置情報を取得する
・・・書いててよく分からんなって北。
そもそも@の段階で表示しなくても言い訳だもんな。Aまで進んで位置情報から
それなりのCSSファイルを作ってやればいい訳だし。
別にajaxを使わなくても出来そうだな。まぁ、普通のJavaScriptは必要だろうけど
>>838 全体を読み込み直ししちゃったらAjaxの意味ないじゃん。
そこをJavaScript使って部分更新するからAjaxなんだろ?
>>841 そんな感じです。
つまり、そのあと噴出しをドラッグで動かせるようにした場合なんかだと、
結局ログファイル全体を配列かなんかで読み込み→PHPの関数で配列を編集→ファイル全体を書き込み→ファイル全体を再読み込み
とまあこんな感じになるんでしょうか。
>>842 JavaScriptだけでサーバのログは書き換えられるの?
部分的な読み込み直しはできると思うんだけど。
>>843 結局位置情報はどのタイミングで保存したいんだ?
保存ボタンを作って、ボタンを押して位置情報をDBなりテキストなりに
保存するっていうんならajaxは必要ないよ。
噴出しを動かす部分はただのJavaScriptで実現できる。
>>843 ふきだしを移動させるだけなら、別に再読み込みはいらないだろう
JAVAScriptを切ってるおれにはなんのことだかさっぱりわからん。完成させて時代を開いてくれ
>>845 リアルタイムでの更新をイメージしてた。ドラッグして動かして、移動が終わった時点で更新、と。
>>846 移動させただけなら、そうか、書き込み処理だけで再読み込みいらないか。ごめん。
>>844 動かすたびにサーバー側データも同期を取りたい→それには送信+ページ丸ごと再読み込みってこと?
もしもサーバーへのデータ送信がページ丸ごと再読み込みでしかできなかったら
検索エンジンで使ってるような非同期検索なAjaxは動いて無いじゃない。
バックグラウンドでサーバーに送信→更新→情報取得→ページ部分更新まで問題なくできるよ。それがAjax。
>>847 時代が開かれても君には一生無縁の話だから気にする必要はない。
_, -'"``'ー-、_ ||``'ー-、_ ``'ー-、_ || l ``'ー-、_ ``'ー-、_ ``'ー-、_ || .l ``'ー-、_ _, -'"l || l || l ``'ー-、||, -'"``'ー-、_ ||. l ``'ー-、_ ``'ー-、_ . || l ``'ー-、_ ``'ー|| l ( )ノ ``'ー(д゚;)_ -'" </13/ <| 1|ヾ'ー-、_ ノ >○ ``'ー-、_
852 :
nobodyさん :2006/06/22(木) 04:11:27 ID:4vrB1Nlw
<form action="" method="post" enctype="multipart/form-data"> <p>Pictures: <input type="file" name="pictures[]" /> <input type="file" name="pictures[]" /> <input type="file" name="pictures[]" /> <input type="submit" value="Send" /> </p> </form> <?php foreach ($_FILES["pictures"]["error"] as $key => $error) { if ($error == UPLOAD_ERR_OK) { $tmp_name = $_FILES["pictures"]["tmp_name"][$key]; $name = $_FILES["pictures"]["name"][$key]; move_uploaded_file($tmp_name, "data/$name"); } } ?> の15行目 move_uploaded_file関数が必ずエラーになってしまうのですが 何故でしょうか?
エラー文ぐらい書け
○○ as ■■ っていう文をよく見るんですけど、これどんな意味なんですか? 今見てるのは foreach(○○ as ■■ => △△) {〜〜〜;}という文です。 辞書にも載って無かったです。
855 :
nobodyさん :2006/06/22(木) 05:48:05 ID:4vrB1Nlw
>853 自己解決しました! 書き込み用のファイルをうpしてませんでした
辞書って何だよ。ちゃんとPHPのマニュアル嫁
>>854 そのマニュアル、古くない?
foreach文はPHP4以降で追加された構文だろ。
859 :
nobodyさん :2006/06/22(木) 06:04:20 ID:4vrB1Nlw
またまたエラーなのですが Warning: file(/data.cgi): failed to open stream: No such file or directory in /home/example/ と Warning: rsort() expects parameter 1 to be array, string given in /home/example/ の意味を教えていただけませんか?
>>859 2番目のエラーは1番目のエラーに伴うもの
863 :
859 :2006/06/22(木) 08:14:17 ID:4vrB1Nlw
ありがとうございました!
>>824 最近のタイムスタンプは、先頭が繰り上がって、1・・・・になっているが、
何年か前までは、一つ桁が少ない、9・・・・だったからだ。
行ごとそのままソートすると文字列比較になって、以前のタイムである,
9・・の方が昇順で後ろに来てしまう。
865 :
864 :2006/06/22(木) 09:16:34 ID:???
echo mktime(10, 46, 40, 9, 9, 2001); echo mktime(0, 0, 0, 1, 1, 2000); これをやってみるといい。
866 :
nobodyさん :2006/06/22(木) 09:40:11 ID:XjfBJY0m
複数の画像を重ね合わせて1枚の画像として出力したいのですがどうすればよいですか?
>>886 image_combin($image[0], $image[1], IMG_LANDSCAPE | IMG_PORTRATE);
868 :
nobodyさん :2006/06/22(木) 10:28:45 ID:XjfBJY0m
>>867 すみません、ググってもなかったのですが、何か参照サイトとかありませんかね
870 :
867 :2006/06/22(木) 11:04:22 ID:???
>>868 上記のような関数を自作すれば便利かなと。
>>869 扱うってただの文字列だろ?それを一体どうしたいんだ?
グーグル検索のURL貼ってるが、それも意味わからんし。
まさか、検索の一覧から意図を読み取れ、とか言うんじゃねーだろーな?
ま、単純に整数値に変換してシフトでもすれば?
>>872 何故俺に言うw
なんだその回答は!?って意味の「はあ?」だよ
>>869 PEAR内の関数を自分用のファイルにコピペでいいんじゃね
>>869 こんなのが欲しかったわけか?
function ipInNetwork($target_ip, $netmask) {
$target_ip = ip2long($target_ip);
list($network_ip, $network_bits) = explode('/', $netmask);
$network_ip = ip2long($network_ip);
$host_mask = bindec(str_repeat('1', 32 - $network_bits));
return ($target_ip ^ ($network_ip | $host_mask)) <= $host_mask;
}
CIDR表記とか知ってるなら、これくらいさくっと作ろうぜ・・・
文字コードをEUCで統一しているんですが、なぜか文字化けします METAでもEUCを指定しています この場合、文字化けする原因て何が考えられますか?
実際の文字エンコードは何なのよ?
SJISかJISです。
またはUTF-8です。
どっちだよw
884 :
nobodyさん :2006/06/22(木) 14:54:01 ID:oCUi25wn
PHPで例えば function test() っていうユーザー関数をkansuu.phpってファイルに書いてるとして index.phpでtest()関数をコールするにはどうしたら良いですか?
886 :
nobodyさん :2006/06/22(木) 15:17:01 ID:oCUi25wn
>>885 ありがとうございます。include()を呼び出すとfatalエラーが出ます。
include 'index.php';と記述しています。
index.phpのなかにもtest()があってkansuu.phpにもtest()と言う関数が記述されています。
その内容は全く違うのですが。kansuu.phpの中でindex.phpのtest()を呼び出すことはできますか?
面倒な質問してすみません。
エラーの内容は?
include 'index.php'; というのはなんかおかしい
こういうことか? index.phpの内容 <?php function test() { } ?> kansuu.phpの内容 <?php function test(){ } ?>
>>878 ShiftJISとかいろいろとメタタグで宣言してみれ。それで文字化けがないならApacheの設定とPHPの設定の問題。
891 :
nobodyさん :2006/06/22(木) 15:47:36 ID:oCUi25wn
index.phpの内容 <?php function test() {中略} ?> kansuu.phpの内容 <?php include 'index.php'; function test(){中略} $s=test(); //kansuu.php内の方 $p=test(); //index.php内の方 echo "<html><BODY>$s,$p</BODY></html>" ?> 見たいな感じ。
なるべく同じ関数名はつけないほうがいいとおもうが…
>>891 変数に置き換える手法いいね。でも変数に入れるなら、最初から関数名はどーでもよくなるわな。
894 :
nobodyさん :2006/06/22(木) 15:58:11 ID:oCUi25wn
違うファイルに関数名変えて同じの書けば良いことなのでしょうけど たまたま、index.phpに書いてるコードがそのまま使えそうだったので楽しよとしただけです。 関数名変えます。
普通は違う関数名を付けて万事解決なわけだが、 そこを敢えて同じ名前で区別する方法は無いかというのが質問の趣旨だよな。 OK、俺には分からんッ!
896 :
884 :2006/06/22(木) 16:00:16 ID:oCUi25wn
みなさまご協力ありがとうございました。
897 :
884 :2006/06/22(木) 16:02:03 ID:oCUi25wn
あと携帯サイトを作ってるのですがこのスレの携帯サイト版見たいなのってありますか? 一応検索しても出てこないので。スレ違いな質問ですみません。
>>897 聞いている意味がよく分からんが、このスレは普通に携帯からでも読めるぞ。
p2使えばスレ内検索とかもできる。
900 :
nobodyさん :2006/06/22(木) 16:17:57 ID:z1rfr09/
$logfilename=1.htm; $fp = fopen($logfilename, "w"); こういうソースがあるとして1.htmが上層フォルダの場合どうしたら良い? $logfilename=../1.htmにしたらダメだった。相対パスで指定したいんだけど。 お願いします。
$logfilename= "../1.htm";
$logfilename = "../1htm"; じゃ駄目なのかなぁ。
それとパーミッション[666]は当然やってるんだろうね。
904 :
nobodyさん :2006/06/22(木) 16:25:10 ID:z1rfr09/
ありがとうございました。 $logfile="../".PHP_NAME; で解決しました。
905 :
878 :2006/06/22(木) 16:27:31 ID:???
>>881-882 偽
全ファイル、エディッターでEUCに統一
METAも全ページ(HTMLページ)
<meta http-equiv="Content-Type" content="text/html; charset=euc-jp">
で統一しているんですがなぜかバグります
mbstring.http_output
mb_string がはいっているなら、 内部エンコードがEUC、outputがsjisになっている可能性が高い。 metaを書くなら sjisにするか、 どうしてもEUCでブラウザに表示させたいなら、 スクリプト先頭あたりで mb_http_output('EUC'); ob_start('mb_output_handler');
909 :
nobodyさん :2006/06/22(木) 17:16:10 ID:4vrB1Nlw
ソートがうまくいきません。 少し教えてくださいませんか。 <?php $file = "test_data.cgi"; $data = "110220327"; // 今までのデータがあるファイルを呼び出す $file = "test_data.cgi"; $files = file($file); $count = count($files); // 既にあるファイルを $old_files に格納 for($i = 0; $i <= $count; $i++){ $old_files .= $files[$i]; } // 現在のデータを足す $old_files .= $add_data."\n"; // そのままでソート $filename = "$file"; $somecontent = $old_files; $old_files = preg_split("/\n/",$old_files); ksort($old_files, SORT_NUMERIC); for($i = 0; $i <= $count; $i++){ print "old_files[$i] = <!---->$old_files[$i]<!----><br><br>"; } ?>
910 :
909 :2006/06/22(木) 17:19:14 ID:4vrB1Nlw
test_data.cgiの内容です 110220330,aaa,adoifja, 110220333,adf,agtargg, 110220335,hwr,adfgads, 110220313,gar,argvtta, 110220342,arg,drfgsrg, 110220329,jtr,fjhtsfg, 110220343,tfe,gthrlff,
>>909 ナニがしたいのかわからん
それとforループの回数が1回多い
$old_files .= $files[$i];は文字連結だがソートしたいなら$old_files[$i] = $files[$i];じゃないのか?
912 :
nobodyさん :2006/06/22(木) 17:45:56 ID:z1rfr09/
他のPHPファイルを実行させるってできる? index.php <? printf "テスト"; 更新.php //index.phpないでこのPHPファイルを実行させるみたいなの ?> 読込みではなくて実行ってのが可能なのかどうか? わかりにくい説明ですみません。
include | require
>>913 だからそれ(読み込み)じゃないって言ってるじゃん。
915 :
nobodyさん :2006/06/22(木) 18:06:38 ID:z1rfr09/
大量にユーザー関数を定義しておいて それをincludeしたりするのって実行スピードに置いてはどうなの?
>>914 a.phpからb.phpを実行する例。
遠慮無く1000回ほど試すといいぞ。
a.php:
<?php
require('b.php');
?>
b.php:
<?php
for ($i=1;$i<1000;$i++) {
print "このヴォケが";
}
?>
求めているのがこれでないとしたらget付きURLにLocationで飛ばす、かな。
>>915 何と比較して聞いているのかが理解不能だが、
用のないユーザ関数を大量に読み込ませたりすれば
そりゃ実行スピードは落ちるだろうね。
918 :
nobodyさん :2006/06/22(木) 18:19:43 ID:ylHLo5v5
strstr($mail,array("!","#","%","&","(",")","@",",","/")) この書き方ってできなかったっけ?
バイナリセーフって何ですか?
>>909 >ksort($old_files, SORT_NUMERIC);
使う関数が間違ってる
923 :
nobodyさん :2006/06/22(木) 18:36:09 ID:z1rfr09/
>>917 よく使いそうな関数をファイルにまとめるとして、
よく使うが使わない関数も当然読み込まれてしまうと思う。
それで実行速度が遅くなるならそのファイルから使う関数だけを読み込んだりしたい。
そんなやり方ありますか?
>>923 関数群をカテゴリ分けするしかない。
というか、そんなに遅くならない。
require や include を速くしたいなら 無料になった Zend Optimizer 3 を入れたら?
PHP5+Sqliteで勉強させてもらっています なぜかわからないのですがDB(ファイル)が存在しませんといわれてしまいます 実行している手順は /home/hotta/に移動し sqlite testでtestというDBを作成し テーブルを作成し、データを入れ ls -l /home/hotta/test でファイルの存在を確認した後 <?php define('DB', '/home/hotta/test'); if (!file_exists(DB)) { die(DB ." が見つかりません \n"); } ?> を実行してみると 必ず/home/hotta/testが見つかりませんといわれてしまいます ファイルはあるはずなのですが(パーミッションかと思い777にしてみたのですがだめでした) なぜかわかる方おられましたら教えていただけないでしょうか?
ディレクトリのパーミッションは? それとdefineせずにやってみたらどうなる? というかSQLiteはわからん
$this->get('hoge') -> この矢印みたいなヤツ意味がわからないです ググルにも -> はキーワードにならないし
今はPHP4なんですが、PHP5にしたほうがいいですかね?
>>912 echo '<iframe src="kousin.php" height=0 width=0></iframe>';
こういうことか?
>929 ありがとう! もやもやが吹っ切れた
>>927 ありがとうとございます ディレクトリのパーミッションが問題だったようです
/home オーナーroot 700→777
/hotta オーナーhotta 700→777
に変更したら
home/hotta/testが見つかりません といわれなくなりました
file_exists(DB)関数でファイルを読み出すときはapacheのユーザで検索してるのでしょうか?
>>933 違う。
httpdデーモンがPHPのスクリプトを読み込んで実行しているから
apacheユーザーになっているからであって、
file_exists() だけがapacheユーザーで動くわけではない
$_GETした$KEYWORDが全角かどうかをチェックしています。 正常に動いてるんですが、時々長さが一致せずエラーになります。 サーバの負荷?mbstringのバグ?と悩んでいます。 $data = stripslashes($keyword); if (strlen($data) != mb_strlen($data) * 2) { die("引数エラー!".strlen($data).":".mb_strlen($data) * 2); }
>>934 有難うございます
ということは
何かを参照する関数とかは
すべてhttpd.confに記載されているUser欄のユーザーによって実行されるので
パーミッションはUserにあわせる必要があるということですね
937 :
934 :2006/06/22(木) 21:48:19 ID:???
自己解決しました。
939 :
909 :2006/06/23(金) 00:40:32 ID:lPdqGX0Z
したい事を書いてませんでした。
各行の[0](先頭行)は、mktime関数によって取得したタイムスタンプとして
この先頭行をソートして時間が現在に近い順(数字が小さい順?)→つまり昇順に並べ替えたいのです
よろしくお願いします。
>>911 下の方のforループが余計なのでしょうか?
私にはなぜ余計なのかがよく分かりません 簡単でいいので教えていただけませんか?
>>922 どの関数に直せばよろしかったでしょうか?
natsort関数でしょうか?
それともsoat関数でしょうか?
soat関数で試したところ
old_files[0] =
old_files[1] =
old_files[2] = 110220313,gar,argvtta,
old_files[3] = 110220329,jtr,fjhtsfg,
old_files[4] = 110220330,aaa,adoifja,
old_files[5] = 110220333,adf,agtargg,
old_files[6] = 110220335,hwr,adfgads,
old_files[7] = 110220342,arg,drfgsrg,
となり、一部が消えてしまいます。
これは、何故なのでしょうか?
940 :
909 :2006/06/23(金) 00:43:09 ID:lPdqGX0Z
natsort関数でも同様に消えてしまう部分があります。 old_files[0] = 110220330,aaa,adoifja, old_files[1] = 110220333,adf,agtargg, old_files[2] = 110220335,hwr,adfgads, old_files[3] = 110220313,gar,argvtta, old_files[4] = 110220342,arg,drfgsrg, old_files[5] = 110220329,jtr,fjhtsfg, old_files[6] = 110220343,tfe,gthrlff, old_files[7] = 消える理由が分かりません。 少し手を貸していただけたら幸いです。 よろしくお願いします。
つかforeach使えよ
>>939 バグとか以前に作り方が意味不明すぎるんだけど、
なんでわざわざ配列を1行に連結した挙句にまた配列に分解してるの?
で、消える理由だけど、データに空行が入ってて空っぽのデータがあるだけ。
それがソートされた際に先頭に出てきたり末尾に出てきたりする。
また、実際にデータが消えているわけじゃなく、本当は8件でなく9件あるのに
頭8件しか表示してないせいで後ろがちょんぎれてるだけ。
最後の表示部分は
for($i = 0; $i <= $count; $i++){
print "old_files[$i] = <!---->$old_files[$i]<!----><br><br>";
}
となってて$countの数だけ表示してるけど、この$countって
$files = file($file);
$count = count($files);
この段階で取得しちゃってて、その後ろの
// 現在のデータを足す
$old_files .= $add_data."\n";
ってのを含んでいないから。
いやぁコーディングセンス抜群だわ。 頼むから俺の職場には来ないでね^^
>>912 passthru("/usr/local/bin/php index.php");
945 :
909 :2006/06/23(金) 01:21:39 ID:lPdqGX0Z
>>942 >なんでわざわざ配列を1行に連結した挙句にまた配列に分解してるの?
こんなことしなくても、ソート処理ができるんですか!
そこを教えてもらえませんかぁ>_<
お前、もうプログラミングやめた方がいいんじゃ・・・
947 :
909 :2006/06/23(金) 01:38:45 ID:lPdqGX0Z
自分で判りやすい画面になるように少し変えてみました。 見て欲しいです。一応正しく表示が出来てるようです! <?php $file = "test_data.cgi"; $add_data = "110220327,sdt,adafgafg,"; // 今までのデータがあるファイルを呼び出す $file = "test_data.cgi"; $files = file($file); $count = count($files); // 既にあるファイルを $old_files に格納 print "<h2>ソート前のファイルデータ</h2><hr>"; for($i = 0; $i < $count; $i++){ $old_files[$i] .= $files[$i]; print "old_files[$i] = $old_files[$i]<hr>"; } /*-----------------------------------------------------*/ // 中間線 print "<br><hr>中間線<hr><br>"; /*-----------------------------------------------------*/
>>946 まぁそういうなって
>>945 for($i = 0; $i <= $count; $i++){
これでforが何回まわる?最初がゼロからってのが味噌
$count=1の場合、0,1が実行される。多くないか?
正解はどこかに書いてあった気がするけどfor($i = 0; $i <$count; $i++){
参考にしてみ。タイムスタンプの桁数に注意
<?php
$file = "test.cgi";
$data = "110220327";
$files = file($file);
$files[] = $data."\n";
sort($files);
foreach ($files as $i => $v) print "files[".$i."] = ".$v;
?>
結果
files[0] = 110220313,gar,argvtta,
files[1] = 110220327
files[2] = 110220329,jtr,fjhtsfg,
files[3] = 110220330,aaa,adoifja,
files[4] = 110220333,adf,agtargg,
files[5] = 110220335,hwr,adfgads,
files[6] = 110220342,arg,drfgsrg,
files[7] = 110220343,tfe,gthrlff,
949 :
909 :2006/06/23(金) 01:40:44 ID:lPdqGX0Z
>>947 の続きです
// 現在のデータを足す
$old_files[$i+1] = $add_data."\n";
// そのままでソート
$filename = "$file";
$somecontent = $old_files;
print "<h2>ソート後のファイルデータ</h2><hr>";
//$old_files = preg_split("/\n/", $old_files);
array_multisort($old_files, SORT_ASC);
for($i = 0; $i <= $count; $i++){
print "old_files[$i] = $old_files[$i]<hr>";
}
?>
950 :
909 :2006/06/23(金) 01:48:50 ID:lPdqGX0Z
>>948 す、すごい
勉強になりました。
すごく簡潔に書かれていて、それでいてちょっと$vが可愛いですね//▽//
ありがとうございます!
5,6行で済むのに
なんでmultisortなんだw
たぶんプログラミングとか初めてなんだろう。暖かく見守ろうぜ。
954 :
909 :2006/06/23(金) 01:56:14 ID:lPdqGX0Z
950取ったので 新しいスレを立てようと思うのですが 私でも立てられるんですか? ちょっといって見て来ます。
あー。次スレはテンプレの再検討をするんじゃなかったっけ。 事情を分かってるやつがやった方がいくね?
957 :
909 :2006/06/23(金) 02:00:26 ID:lPdqGX0Z
新しいスレ作ました! 定型文?を書くのでもう少しお待ち下さい。
958 :
909 :2006/06/23(金) 02:02:00 ID:lPdqGX0Z
>>956 え;
もう作っちゃいました。
けど、
>>2 以降はまだ書いてません。
事情の分かる方にパスした方が良いですか?
959 :
nobodyさん :2006/06/23(金) 02:03:03 ID:8iUOatGT
テンプレ作る前に、質問の嵐でスレッドが埋まる予感。質問はforの永遠ループみたいな終わりのない処理だからな。
960 :
909 :2006/06/23(金) 02:04:25 ID:lPdqGX0Z
961 :
909 :2006/06/23(金) 02:05:27 ID:lPdqGX0Z
よく見たら、スレのアドレスの一番最後の部分って タイムスタンプじゃないですか?
phpってたまーにさぁ なんで実行結果がおかしいんだろ〜。 エラーも起きないし。一体全体どうして〜〜〜〜〜〜〜ってとき if文で$a=1 とかなってんの!!!wwww 比較は$a==1だっつうの!!=2つは他の言語やりまくってると たまーにやるよね、うん。
>>961 >よく見たら、スレのアドレスの一番最後の部分って
>タイムスタンプじゃないですか?
そうですね〜(^-^)
964 :
909 :2006/06/23(金) 02:36:35 ID:lPdqGX0Z
2 :nobodyさん :2006/06/23(金) 02:15:16 ID:??? 本 ス レ は も う 無 く な り ま し た って書き込まれてましたT_T
965 :
909 :2006/06/23(金) 02:43:16 ID:lPdqGX0Z
ちなみに、
>>948 さんの構文で、元のファイルに今ソートしたばっかりの
データを上書きするときって、どこでfopenするべきですか?
foreachの前でfopenとflockをして、{}の中にあるprintの部分を書き込みに変えるような方法ですか?
>>965 スレ立て乙でつ。
2の本スレはPHP質問スレのこと。くだ質と同じレベルだということで
くだ質に一本化したという経緯
968 :
909 :2006/06/23(金) 03:16:14 ID:lPdqGX0Z
>>966 、
>>967 初めてスレ立てしました!
緊張しました;
>>967 じゃぁ、イタズラじゃないってことですよね
よかったぁ。
新しいスレのテンプレとかは事情というものを知らないので
知ってある方にお任せしたいのですが、誰かいらっしゃいますか?
>>968 今やってくれてる人がいらっしゃいますよ(^o^)♪
IDにPerlが出たら神!PHPが出たらシメジ とか言われてますけど PHPってどうしてバカにされてるんですか? PHPが他の言語に劣っている部分を教えてください。
972 :
909 :2006/06/23(金) 05:09:38 ID:lPdqGX0Z
寝ちゃってました;
また明日も来たいです。よろしくおねがいします!
>>969 親切に教えてくれてありがとうございましたぁ
梅るか、それとも残り30弱を有効に使うか・・・それが問題だ
990辺りまでいったら埋めた方が質問者のためにもなるが それまではちゃんと使ってやるのが質問スレの流儀ってもんだ。
>>974 サンクスコ。
ファイルのアップロードの質問が出てたけど、ファイルを消す関数はあるん?
unlink
サーバローカルのファイルならunlinkで消せる クライアントローカルのファイルを消せるなら大問題だ
昔書いた自分のコード見て無駄な処理やってるなーと思うことがある
>>909 ほどではないが
979 :
nobodyさん :2006/06/23(金) 13:27:30 ID:CXSPEY04
phpの内部コードがEUCのサーバでUTF8のフォームスクリプトを動かしたいです。 直接php.iniにはさわれませんし、htaccessを使うと500エラーになります。 スクリプトに直接 mb_internal_encoding("utf-8"); mb_http_input("utf-8"); mb_http_output("utf-8"); などと書いたのですが、状況は変わりません。 ini_setというのも使ってみたのですが、ダメっぽいです。 どなたか解決方法をご存じないでしょうか? サーバはラピッドサイトというところです。 スクリプトをeucに変えるというのは無しの方向でお願いします。
エラーの内容は?
981 :
nobodyさん :2006/06/23(金) 14:09:21 ID:CXSPEY04
>980 レスありがとうございます。エラーはメッセージは何も出ないようです。 mb_internal_encoding("utf-8"); と書いて、 その後echo mb_intnal_enercoding("utf-8"); とすると、 UTF-8と出力されますが、文字は全て???????になります。 単純にtextのinputを一行かいて、submitしてecho $_POST['hoge'];で表示させてみたのですが、ラピッドサイトでは化けますが、ロリポでは化けません。 phpinfoを比較すると、ロリポップはhttp_inputとoutputがpassとなっています。 mbinternal_encodingはno valueです。(でもecho mb_internal_encodingするとEUCです) mbstring.encoding_trancelationというのだけ、ロリポはoff、ラピッドはonです。
サーバの方がUTF-8に対応してないのかもね ラピッドの人に聞いてみたら? mb_convert_encodingも失敗するようなら諦めるしか
983 :
nobodyさん :2006/06/23(金) 14:30:13 ID:CXSPEY04
>982 レスどうもです。 そうですね。サーバ自体が対応しないっていうこともあり得るとしたら、そうかもしれないです。 ラピッドのサポートにはさっきメールしました。 ありがとうございました。
984 :
979 :2006/06/23(金) 15:46:40 ID:CXSPEY04
やっちゃいました.......。ラピッドのhtdocsより上の階層にユーザーが変更出来るphp.iniがありました。スクリプトに書いたものはそれで上書きされてたぽいですorz。 板汚しスマソ。逝ってきます。
sessionをDBで管理する利点ってなんですか?
俺はDBを使ってるんだぞ。どうだ、高等だろ? と威張れる利点
なるほど。勉強してみよう
>>988 sessionidを持ちまわしでって事ですか?
>>985 webサーバを分散していて、それらのセッションを共有したい時
ネットワークファイルシステム等を使うより管理が楽で、安心感がある。
(NFSで問題が出るってわけでもないが)
みんなスクリプト書いてるときはな〜んも見ないで書いてんの? それとも仕様書しこしこ作ってから書き出すの? 規模にもよるだろうけど、webアプリぐらい頭ん中で粗方作って 勢いで書いちゃえーって人のが多そうな希ガス
俺の場合仕事とかの時は もちろん仕様書とかは書く それ以外の場合は覚書みたいなメモ作ってから作る 仕事以外の時でも簡単に書いておかないと どんどん仕様変更しちゃって完成できない俺orz
掲示板とかなら何も見ずに書く
簡単な画面仕様と入力仕様は書く、 もしくは書いてもらう
そりゃまあ掲示板くらいのものならねぇwww けどそんなんばっかじゃないしね さらに質問、どんなふうな仕様書を書いてんの 最近仕様書かくのとかもろもろイヤで辞めたい病
997 :
996 :2006/06/23(金) 19:52:40 ID:???
>>996 この関数はPHPでは(存在し)ないのでしょうか? ってコトでOK?
この関数はPHPではない、つまりC言語とかJAVAなのでしょうか? っていう風にもとれるから念のため。
ちなみに三角関数系の関数は一式揃ってるよ。
使い方はマニュアル参照。
\ / \ / / ̄ ̄ ヽ, / ', / _/\/\/\/|_ \ ノ//, {0} /¨`ヽ {0} ,ミヽ / \ / \ / く l ヽ._.ノ ', ゝ \ < バーカ! > / /⌒ リ `ー'′ ' ⌒\ \ / \ (  ̄ ̄⌒ ⌒ ̄ _)  ̄|/\/\/\/ ̄ ` ̄ ̄`ヽ /´ ̄ | | −−− ‐ ノ | / ノ −−−− / ∠_ −− | f\ ノ  ̄`丶. | | ヽ__ノー─-- 、_ ) − _ . | | / / | | ,' / / / ノ | ,' \ / / | / \ /_ノ / ,ノ 〈 \ ( 〈 ヽ.__ \ \ ヽ._> \__)
良かったら教えてください
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。