【PHP】下らねぇ質問はここに書き込みやがれ 22
レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん
2006/06/08(木) 05:09:28ID:5gGJKVO4ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
まず読め【PHP マニュアル】
http://www.php.net/manual/ja/
過去スレは>>2
0002nobodyさん
2006/06/08(木) 05:10:29ID:???http://pc5.2ch.net/test/read.cgi/php/1099322141/
【PHP】くだらねぇ質問はここに書き込みやがれpart2
http://pc5.2ch.net/test/read.cgi/php/1105218084/
【PHP】くだらねぇ質問はここに書き込みやがれpart3
http://pc5.2ch.net/test/read.cgi/php/1107780435/
【PHP】くだらねぇ質問はここに書き込みやがれpart4
http://pc8.2ch.net/test/read.cgi/php/1110697712/
【PHP】くだらねぇ質問はここに書き込みやがれpart5
http://pc8.2ch.net/test/read.cgi/php/1114787573/
【PHP】くだらねぇ質問はここに書き込みやがれpart6
http://pc8.2ch.net/test/read.cgi/php/1117945031/
【PHP】くだらねぇ質問はここに書き込みやがれpart7
http://pc8.2ch.net/test/read.cgi/php/1121100429/
【PHP】くだらねぇ質問はここに書き込みやがれpart8
http://pc8.2ch.net/test/read.cgi/php/1123431535/
【PHP】くだらねぇ質問はここに書き込みやがれpart9
http://pc8.2ch.net/test/read.cgi/php/1125716012/
【PHP】下らねぇ質問はここに書き込みやがれpart10
http://pc8.2ch.net/test/read.cgi/php/1127581425/
【PHP】下らねぇ質問はここに書き込みやがれpart11
http://pc8.2ch.net/test/read.cgi/php/1129582431/
【PHP】下らねぇ質問はここに書き込みやがれpart12
http://pc8.2ch.net/test/read.cgi/php/1130835396/
【PHP】下らねぇ質問はここに書き込みやがれpart13
http://pc8.2ch.net/test/read.cgi/php/1132921016/
【PHP】下らねぇ質問はここに書き込みやがれpart14
http://pc8.2ch.net/test/read.cgi/php/1134868212/
【PHP】下らねぇ質問はここに書き込みやがれpart15
http://pc8.2ch.net/test/read.cgi/php/1137236771/
00031様
2006/06/08(木) 05:11:19ID:???http://pc8.2ch.net/test/read.cgi/php/1139146534/
【PHP】下らねぇ質問はここに書き込みやがれpart18
http://pc8.2ch.net/test/read.cgi/php/1142417901/
【PHP】下らねぇ質問はここに書き込みやがれ Part19
http://pc8.2ch.net/test/read.cgi/php/1144513878/
【PHP】下らねぇ質問はここに書き込みやがれpart20
http://pc8.2ch.net/test/read.cgi/php/1146165153/
【PHP】下らねぇ質問はここに書き込みやがれpart21
http://pc8.2ch.net/test/read.cgi/php/1148389517/
00041様
2006/06/08(木) 05:12:06ID:???extractは極力使わないほうがいいと思います。
例えば、
hoge.php?_SESSION[user_pw]=hogehoge
って形で送られてきたとします。これを
extract($_GET)
しちゃうと、$_SESSION['user_pw']の値が、
"hogehoge"に変更されてしまいます。
もし事前にユーザのパスワードを、$_SESSION['user_pw']に
保持してたとしたら、勝手に書き換えられてしまうことになります。
それを避けるために
extract($_GET, EXTR_SKIP)
ってやって上書きを避けたとしても、
このままでは変数の初期化を忘れる危険性があります。
extract($_GET, EXTR_PREFIX_ALL, "get")
と、接頭辞をつけるのが一番安全な気はしますが、
それなら最初から
$hoge = $_GET['hoge'];
ってやるのと手間が変わらないと思いますし、可読性も増します。
確かにextractするのは楽だと思いますけど。
0005nobodyさん
2006/06/08(木) 07:05:00ID:???「○○する関数はありますか?」の類いの質問はお断りします
0006nobodyさん
2006/06/08(木) 07:11:10ID:???0007nobodyさん
2006/06/08(木) 07:13:07ID:???0008nobodyさん
2006/06/08(木) 07:26:45ID:???どうしたらよいのでしょうか?
0009nobodyさん
2006/06/08(木) 08:21:27ID:???$_POST[hoge]ってやってるだろ
配列のインデックスは数字か文字列なので
$_POST[゛hoge゛]が正しい。
0010nobodyさん
2006/06/08(木) 08:27:29ID:???と
header('Refresh: 0;URL=./');
の違いを教えてください。
0012nobodyさん
2006/06/08(木) 10:43:29ID:ke6FFl5N↑このように変数名を書かずに送られてきたものをGETしたいのですが、
どのようにすればいいのでしょうか?
ググるためのワードだけでも教えてもらえたらうれしいです。
よろしくお願いします。
0013nobodyさん
2006/06/08(木) 10:56:08ID:???0014nobodyさん
2006/06/08(木) 11:08:55ID:ke6FFl5Nありがd!!
0015nobodyさん
2006/06/08(木) 11:15:50ID:???偽りたいのですが
0017nobodyさん
2006/06/08(木) 12:23:37ID:???WindowsXPで試すと、'/' がセパレータとして使えるみたいだけど、'¥¥'じゃなくてもいいんでしょうか。
例えば
$files = glob('lib/*/*.php');
と書いたとき、これはUNIXだけでなくWindowsでも問題なく動くことが保証されていますか。
マニュアルみると DIRECTORY_SEPARATOR という定数がわざわざ定義されてあるから、
それならUNIXとWindowsで異なるセパレータを使い分けなきゃいけないのだと思ってたので。
0018452
2006/06/08(木) 12:44:52ID:???$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
0020nobodyさん
2006/06/08(木) 13:09:17ID:pYzcdko8ディレクトリ名をログの配列に入れて、テキストデータに吐き出したいのですがうまくいきません(書き出すところです)
表示は出来ているのですが・・・。
ディレクトリ名を取得して、ディレクトリ内のファイルを取得して、ディレクトリ内のファイルを全部開いて、
ディレクトリ名を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)
002120
2006/06/08(木) 13:10:01ID:???$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);
0022nobodyさん
2006/06/08(木) 13:11:24ID:???どううまくいかないのか書いたほうがいいんじゃないかな。
データがあるのにかならずreturn falseになるとか、
データがあってもtrueが返ったりfalseが返ったりするとか。
0023452
2006/06/08(木) 13:20:58ID:???ありがとうございます(´;ω;`)
どんな値を入れてもFALSEが返ってきちゃいます ダンプしてみたらboolが返ってきますた
0024nobodyさん
2006/06/08(木) 13:45:55ID:???クピークププー
ttp://pc8.2ch.net/test/read.cgi/php/1148389517/970
0026nobodyさん
2006/06/08(木) 14:13:20ID:???>mysql_close($mysql);
>var_dump(mysql_num_rows(mysql_query($query_1)));
>return FALSE;
mysql_close() してから mysql_query() はしないほうがいいかな。
0027452
2006/06/08(木) 14:21:49ID:???直したらresource(8) of type (mysql result)こんなんでました 関数ミスかクエリのミスっぽいのはわかるんだけんど(´;ω;`)明日までに全部終わらないぽ
0030nobodyさん
2006/06/08(木) 15:19:58ID: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("秒");
0032軟式PHP
2006/06/08(木) 15:31:02ID:???>そのディレクトリ内のログデータを全部まとめて1つにして
>ディレクトリ名をログの配列に入れて、
ここの意味がわかりにくい。
全ディレクトリを走査して、全ファイルをひとつのファイルにしたいってこと??
0033nobodyさん
2006/06/08(木) 15:42:00ID:???date() 関数の使い方が間違っている
date() の第二引数は、タイムスタンプの数値が必要だけど
このソースだと、二つのタイムスタンプの差分を与えている
0034軟式PHP
2006/06/08(木) 15:42:55ID:???その計算の何ヶ月というのは31日固定でいいの?
ただ1970年に$time_diffを足した年月日との差分になるんで
期待する値は取得出来ないような気がする。
003530
2006/06/08(木) 15:51:51ID:vAH14IAN「二つのタイムスタンプ差分を」とのことですが、$time_diffは差分を求めた
後の変数なので、これで大丈夫だと思っていました。
ただ、その他どこをどうするか想像も付きません。変更箇所を教えていただけないでしょうか?
>>34
いえ、28日も30日も入ると思います。-1970などとしているのは
タイムスタンプが1970年01月01日から始まるとのことで、このようにしているのですが、
だからといってその他、どうすれば求める値が得られるかわかりません。。。
0036nobodyさん
2006/06/08(木) 15:53:45ID:???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です。どうぞよろしくお願いします。
0037nobodyさん
2006/06/08(木) 16:00:30ID:???「二つのタイムスタンプ差分を」をタイムスタンプに変換する必要がある
このソースをそのまま手を入れるのなら
$time_diff = $d2 - $d1;
// ここで、タイムスタンプの基本の値を取得する
$base = mktime(0, 0, 0, 1, 1, 1970);
// 上で求めた、二つのタイムスタンプの差分に基本値を足して、タイムスタンプに変換する
$time_diff = $time_diff + $base;
0038nobodyさん
2006/06/08(木) 16:08:45ID:???$_SESSION['post_data'] = array(
'a' => "あむろ",
'b' => "ぶらいと",
'c' => "きゃすばる"
);
他のPHPで値を参照
$post_data = $_SESSION['post_data'];
echo $post_data['a']; // あむろ
004020
2006/06/08(木) 16:25:56ID:???そうです〜。更にディレクトリ名を取得して配列の列に加えたいのです。
元のCSVが「1列、2列、3列」という情報が入ってるとしますと、
「ディレクトリ名、1列、2列、3列」というふうにしたいのです。
月の日付が入ったディレクトリがあり(200505などしかし飛んだりしてバラバラで規則性はないです)、
そのディレクトリ内には日ごとのアクセスログ(CSV)があるという具合です。
0044軟式PHP
2006/06/08(木) 17:20:30ID:???そのCSVって1行データなの??
>どこにfputsを入れても変な形になってしまいます。
どう変な形になってるの?
と突っ込みどころが多いけど、表示はうまくいってるってことなんで
それをひとつの変数にためて最後にfwriteしてみたら?
0046452
2006/06/08(木) 19:10:25ID:???0047nobodyさん
2006/06/08(木) 20:33:19ID:???0048nobodyさん
2006/06/08(木) 21:07:52ID:???違うよ
「データベース」という意味なら同じだけど、
データベースのソフトが違うから使う関数も違ってくる。
MySQL関数とPostgreSQL関数が違うのと一緒。
MySQL使ってるならコッチ使いましょう。
ttp://www.php.net/manual/ja/ref.mysql.php
0049nobodyさん
2006/06/08(木) 21:25:56ID:???<?php
/*
ここにたくさんのメモ
*/
?>
みたいな使い方をするのは、
誰からも見えない自分だけのメモになりそうな気がするのです。
0051nobodyさん
2006/06/08(木) 21:31:01ID:???ありがとうございます。
MySQLを使っているわけではないのですが、
別のサーバを用意しなくてもデーターベースが使えそうだったので気になりました。
0052nobodyさん
2006/06/08(木) 21:35:16ID:???なんか勘違いしてないか?
データベースとPHPは関係ないぞ
データベースが無いと話にならん
PHPっはデータベースにアクセスする方法を提供してるだけだ
0053nobodyさん
2006/06/08(木) 21:37:14ID:???それくらい普通にやってるだろ
HTMLのコメントにするとソース見られたときに分かるから
見られたくないのはPHPコメントを利用する
ただこれやると改行が崩れるのが玉に瑕
0054nobodyさん
2006/06/08(木) 22:08:56ID:???dbmopenでは引数でファイル名を指定しているので、直接ファイルを操作するものと思い込んでました。
実際には何らかのソフトがファイルを開いて処理しているということでしょうか?
005520
2006/06/08(木) 22:12:08ID:???CSVは複数行入っています。
fputsすると1個のディレクトリにあるログデータしか取れなかったりします。
で>>21の$lineにひとつの変数に溜まっているはずなのですがなぜかそれを
fwiteやfputsしてもうまくいかない状況なので悩んでしまっているのです。
0056nobodyさん
2006/06/08(木) 22:25:40ID:???太古のヤツはそんなのあったけどね。
まず「データベースとは何か」から調べましょう。
それとDBMの使用は推奨されてなかったような気がするです。
0057nobodyさん
2006/06/09(金) 00:44:58ID:???英語のスパムに毎日悩んでおります。
ひらがな/カタカナを含まない投稿を拒否したいのですが、Perlで
if ($in{'comment'} !~ /(\x82[\x9F-\xF2])|(\x83[\x40-\x96])/) {
&error("日本語を書いてください。");
}
と書くところをPHPではどう書いたらよろしいのでしょうか?
・・・すごい初歩の質問だと思うのですが、よろしくお願いいたします。
0058nobodyさん
2006/06/09(金) 04:04:44ID:???PHPのsafe_modeをonにするとphpMyAdminが使えません。
どうにかしてsafe_mode=onで使えるようにできないでしょうか?
よろしくお願いします。
>>57
if(preg_match("/[ぁ-んァ-ヶ亜-瑤]{2}/", $comment)){
echo "日本語です";
}else{
echo "日本語がありません";
}
005958
2006/06/09(金) 04:09:48ID:???echo "日本語です";
}else{
echo "日本語がありません";
}
# {2}が不要だった
0060nobodyさん
2006/06/09(金) 04:12:22ID:???セーフモードがonの場合、PHPは、 現在のスクリプトの所有者がファイル関数により処理されているファイルまたはディレクトリ の所有者に一致するかどうかを調べます。
0062nobodyさん
2006/06/09(金) 07:44:44ID:???Compilation failed: range out of order in character class at offset 4 in
0064軟式PHP
2006/06/09(金) 10:11:24ID:???最後の行にprint_r( $line );もしくはvar_dump( $line);
ってやって中身確認してみたら?
006520
2006/06/09(金) 11:52:02ID:???最後の行に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);
0066軟式PHP
2006/06/09(金) 12:04:05ID:???1行しか入ってないなら当然それしか書き込まれないな。
$lineを二次元配列化するか、foreachの中でfwriteすれば出来るんじゃないの?
print "\"$line[2]\",";
print "\n";
fputs($fp, implode(",", $line) . "\n"); <<追加
}
fopen、fcloseはforeachの外で行うこと。
0067nobodyさん
2006/06/09(金) 12:36:07ID:0pUzo2Bw0068nobodyさん
2006/06/09(金) 13:47:11ID:???0071nobodyさん
2006/06/09(金) 14:15:41ID:???>>70sumaso
スマーティーで$i++みたいな処理({foreach}内で1個ずつ上がってくれる数値)できますでしょうか?
もしご存知でしたらやり方ご教示くださいな
007220
2006/06/09(金) 15:21:56ID:???以下を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);
0073nobodyさん
2006/06/09(金) 15:26:10ID:???iterationでどない
http://sunset.freespace.jp/smarty/SmartyManual_2-6-3J_html/language.function.foreach.html
0074軟式PHP
2006/06/09(金) 15:46:03ID:???まぁ、「動くレベル」ならそれでもいいけどループ毎にfopenしてたらボトルネックになるし、ロックも怪しくならんかね。
1行しか書き込まれなかったのは"w"で書き込んでたからだろうと思ったから
最後にfopen,fcloseはforeachの外で行うことと補足してたんだが。
>>67にあるようにバッファをためて最後に書き出すのが一番いいと思うぞ。
0075nobodyさん
2006/06/09(金) 17:07:05ID:5EGQXMwmsection
0076nobodyさん
2006/06/09(金) 17:14:26ID:???こんなとき、手早く共通モジュールに移す方法ってどうやってます?
ウチだと普段はDB関係は独自クラスかpearを共通クラスで一発読みなんだけど…。
0078nobodyさん
2006/06/09(金) 18:27:31ID:96A8iKx8何を使ってですか?
秀丸では開ききれないくらいのファイル数です。
しかも、中の書き方もめちゃくちゃだし。
接続して、何か処理をはさんでデータベース選択したり…。
0081nobodyさん
2006/06/09(金) 21:55:08ID:???例えば
define('DATA','123');
define('DATA','456');
echo DATA;
とすると最初に定義した'123'が表示されてしまいます。
後からクリアしたり再設定出来ないのでしょうか?
0082nobodyさん
2006/06/09(金) 22:07:18ID:???0084nobodyさん
2006/06/09(金) 22:25:15ID:???http://localhost/というのは、
C:\Program Files\Apache Group\Apache2\htdocs\ですよね。
それを、他の場所で(例えばマイドキュメント)で実行したいのですが
どうすればよいですか?
0085nobodyさん
2006/06/09(金) 22:27:50ID:???つhttpd.conf
0086nobodyさん
2006/06/09(金) 22:29:57ID:???http://localhost/というのは、
C:\Program Files\Apache Group\Apache2\htdocs\ではない
0087nobodyさん
2006/06/09(金) 22:30:08ID:???設定ファイルのhttpd.confを良く読んでごらん。分からん場合は適当な板へGo。
0088nobodyさん
2006/06/09(金) 22:55:23ID:uli7/Tc4すみません、解決できました。
httpd.confのDocumentRoot "E:/Web"に設定しなおしました。
その下に、
<Directory "C:/Program Files/Apache Group/Apache2/htdocs">
とあるのですが、これも変更する必要はあるのでしょうか?
0090nobodyさん
2006/06/09(金) 23:29:05ID:???NOARCHIVEで書き出すようにしたら誰かに怒られますか?
0091nobodyさん
2006/06/10(土) 00:02:37ID:3lMQcCFE俺優しいから教えてやるよ
【Windows】Apache初心者質問スレ 3鯖目【専門】
http://pc8.2ch.net/test/read.cgi/mysv/1128473338/
0092nobodyさん
2006/06/10(土) 00:11:34ID:BKZjDDwvめんどくさいんですが、下記のコードでいいんでしょうか。
本当に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 );
}
0093nobodyさん
2006/06/10(土) 00:17:25ID:???そのページがどのような中身か判断する為に、
fileやfopenで調べようとしたのですが、
携帯で、作成したPHPにアクセスしても、
fileやfopenで中身を調べるとPC版を見に行ってしまいます。
携帯版の中身を調べる方法はありませんでしょうか?
0094nobodyさん
2006/06/10(土) 00:25:59ID:OH+eichSそんなことはしないけどずっと疑問に思っているので教えてください。
0095nobodyさん
2006/06/10(土) 00:48:42ID:???MySQLが多いようですが、他のとは何か違うのでしょうか?
0096nobodyさん
2006/06/10(土) 00:59:08ID:???これをcatchすることはできますか。
try {
include('file.php');
}
catch (Exception $ex) {
..処理..
}
でキャッチできるかと思いましたが、できませんでした。
0097nobodyさん
2006/06/10(土) 01:51:42ID:akgzroAUarray_shift($array);
print_r($array);
最初に連想配列のキー名に文字列の1を渡してるのですが、
array_shiftすると'2'=>'x'が返ってくると思いきや
'0'=>'x'になってしまいました。
数値として認識されてしまうのかもしれませんが、どうにか
'2'=>'x'として返す手段はないでしょうか。
0098nobodyさん
2006/06/10(土) 02:22:26ID:rIPxBbNz0100nobodyさん
2006/06/10(土) 02:36:24ID:???本当だ、普通に添え字(数値の)として判断されるっぽいな。
俺にはどうしたら言いか分からん買った・・・
ただ、もしどうしてもそれでやりたいというのなら、array_shift関数を実行した
回数を変数に持っといて、取り出したい値(添え字)にそれを足すってやったらおkじゃない?
0102nobodyさん
2006/06/10(土) 03:09:03ID:???マニュアル-配列より引用
>あるキーが、整数の標準的な表現形式である場合、 そのように解釈されます
>(つまり、"8" は 8 として解釈されます。一方、 "08" は "08" として解釈されます)。
http://jp.php.net/manual/ja/language.types.array.php
面倒だけど$array = array('01' => 'x', '02' => 'x'); みたいにキーの最初にゼロとかつければいける
取り出さなくてもいいなら101かな
0103nobodyさん
2006/06/10(土) 03:16:20ID:3lMQcCFEてかあんたどの質問したの?
0104nobodyさん
2006/06/10(土) 04:02:04ID:???http://akky.cjb.net/download/speeeeed.html
0106nobodyさん
2006/06/10(土) 09:16:24ID:???キーの型(数値、文字列)をどのように解釈するかはこの場合関係なくて、
array_shift/array_unshift/array_push/array_popは
「常に配列のキーを連番に振り直す」ので、
array_shift/push系を使う限り、キーを利用する事は不可能
キーも利用したければarray_slice/+演算子/array_mergeを使うべき
0107nobodyさん
2006/06/10(土) 12:21:23ID:???導入してるレンタルサーバーが多い。
お手軽。検索早め。
読み込みメインのDBならmySQLがお勧め。
更新メインのDBならPgがお勧め
かな><
0108nobodyさん
2006/06/10(土) 12:47:08ID:???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");
}
010996
2006/06/10(土) 12:59:26ID:???include()したファイルにsyntax errorとかがあった場合、それをcatchしたいのですが。
0111nobodyさん
2006/06/10(土) 13:17:40ID:???try,catchは実行時例外を捕捉する構文。
~~~~~~~
パースエラーは「実行」以前に、コードを解析した時点で発生するエラー。
~~~~~~~~~~~~~~
どうしても希望するような動作をさせたいなら
http://jp2.php.net/manual/ja/function.runkit-lint-file.php
こういうのを使って構文エラーがあった場合、
例外を投げるような関数でも作ればいいんじゃないかい。
0112nobodyさん
2006/06/10(土) 13:22:47ID:???・includeはエラーにならない。
・try-catchは例外を受け取るためのものなので、エラーやウォーニングは直接には関係しない
0113nobodyさん
2006/06/10(土) 13:31:38ID:???このような、すばらしいレビューサイトを作るには
何について勉強していけばいいですか?
「html」と「css」以外のことは、ど素人で何もわかりません。
自分の考えでは、PHP+データーベースについて
勉強すればいいのかな、と感じたんですが、
何分、無知なもので、その考えが合っているかもわかりません。
PHPの基礎を勉強するのは、当たり前ですが
具体的な勉強課程というのが、見えてこないのが現状です。
011496
2006/06/10(土) 15:31:25ID:???さんくすです。結局は補足できないというのが答えということですか。
runkit_lint_file()なる関数を教えてもらいましたが、戻り値がbooleanで
エラーがあったかどうかしか分からず、構文エラーメッセージがわからないので
今回の目的では使用できないです。残念。
やろうとしているのは、PHPコードを自動生成して一時ファイルに書き出し、
それをincludeするこで実行時にクラスを作成することでした。
一時ファイルはすぐに消すんですけど、生成されたPHPコードに構文エラーがあると
include()したときにPHPが終了してしまい、一時ファイルが残ってしまうため、
なんとかエラーをcatchして一時ファイルを削除したいと考えていました。
またinclude()じゃなくてrequire()やeval()だとエラーがあっても分からないので、
これはこれで問題あるし。
なかなかうまくいかないもんですね。
0115nobodyさん
2006/06/10(土) 15:55:22ID:???UAで分けているとしたら
例えばどのような形でUAを送信すればよいのでしょうか?
$url='http://www.yahoo.co.jp';
$ua='DoCoMo/2.0 F900i(c100;TB;W18H10)';
fopen,file,headerなどを利用するのでしょうか?
0116nobodyさん
2006/06/10(土) 16:03:29ID:???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));
0117nobodyさん
2006/06/10(土) 16:10:59ID:???JavaScriptスレでparseIntがどういう動作をするものか聞いてくる
0119116
2006/06/10(土) 16:30:42ID:???サンクスです。助かります。
>>116の2行目の場合だと
$a = hexdec(substr($b, 1 +($i +1) * 2, 2));
という感じでいいのでしょうか。
0122nobodyさん
2006/06/10(土) 18:18:25ID:???では不満だということ?
関数を定義するぐらいしかないような。
012336=39
2006/06/10(土) 18:43:20ID:???$_SESSION = $hage;
この書き方自体にはPHPの文法上は問題は無いが、
現在の$_SESSIONの仕様上$_SESSION['hage']=云々と書く必要がある、
という解釈で良いのでしょうか?
0124nobodyさん
2006/06/10(土) 18:55:59ID:???できるよ。
0125nobodyさん
2006/06/10(土) 18:57:26ID:???セッションID強制的に変える場合とかやらないといけないし。
012636
2006/06/10(土) 19:44:18ID:???工エエェェ(´д`)ェェエエ工
これでもセッションとしてちゃんと動くんですか!
でも>>36の通り、この方法で入れた$_SESSIONは少なくとも私の環境では
ページを移った時に保持されていないんですが…もしかして
私のPHP環境が異常なんでしょうか。
0127nobodyさん
2006/06/10(土) 20:57:53ID:???ttp://jp2.php.net/manual/ja/ref.filesystem.php
マニュアル嫁
012936
2006/06/10(土) 21:17:57ID:???以下のように書いてチェックしました。
<?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つ)が全て表示されました。
0130nobodyさん
2006/06/10(土) 21:29:35ID:???すみません遅くなりました。回答ありがとうございます。
なるほど、いろんなレンタルサーバーで使われているのですね。
掲示板がメインだったらMySQLのほうが良いのかな?
ちなみに、最終的にはFFAのようなゲームを作ってみたいと思っています。
ttp://www.pc-house.net/free/ffa/cgi-bin/ffa/others.cgi
最初はどんなことから勉強すればよいのでしょうか?
0131nobodyさん
2006/06/10(土) 22:13:12ID:???0132nobodyさん
2006/06/10(土) 22:15:29ID:???今はなんでもかんでも続行できなきゃFatal Errorで終了で、
他の言語みたいにevalでcompile errorをcatchしたりはできないけど、
PHP5以降のバージョンが普及すればevalが例外を投げてくれるように
書き直されるかも。
なんでもかんでもエラーなら終了ってのも動的言語としては微妙だよね。
PHP5以降が普及する前に他の言語に今の座を奪われなければいいけど。
>>130
とりあえず似たような機能を実装してるオープンソースのアプリのコードを読むのがいいんじゃない?
0134nobodyさん
2006/06/11(日) 03:29:00ID:???フォームに書いた文字をデータとしてデータベースに入れているのですが、
データの中にタグ(「<」や「>」など)がある場合はPHPに送ることもできません。
どうすればちゃんと送れるでしょうか?
0135nobodyさん
2006/06/11(日) 03:59:04ID:???0138nobodyさん
2006/06/11(日) 12:27:15ID:VeszItwI0139nobodyさん
2006/06/11(日) 12:32:46ID:???ぜんぜn逆アクセス解析じゃねーし
0140nobodyさん
2006/06/11(日) 12:49:00ID:VeszItwIちなみに、正しい逆アクセス解析って、どんなんでしょうか?
0141nobodyさん
2006/06/11(日) 13:04:14ID:???自分のコンテンツが、自分以外のどのコンテンツから参照されているかの調査解析。
つか無理して理解が不十分な言葉を使う必要はないよ。その分冗長にはなるけど。
0142nobodyさん
2006/06/11(日) 15:20:00ID:???現在ファイルのアップロードが行える掲示板系のシステムをPHPで作成しています。
プログラム自体はそんなに苦労していないんですが、ひとつ付け加えたいものがあって悩んでいます。
大容量のファイルをアップロードする際、アップロードが終わらないと別の処理ができません。
そこで、「現在アップロードをしている」ことをわかりやすくするために、HTML_Progressを使ったポップアップウインドウで実現しています。
しかし、サンプルサイトをみても「総容量に対し、どれだけアップロードできたか」の進捗状況を表示するのではなく、
アップロードが終わるまでアニメーションを行い、アップロードができたらストップさせる形でした。
これを、「総容量に対し、どれだけアップロードできたか」の進捗状況を表示するようには、どうすればいいのでしょうか。
また、アップロードを行うフォームはHTML_QuickFormを使っているのですが、
アップロード中にブラウザを中止させたり、閉じたりした場合、進捗バーが止まらず、見かけ上常にアップロードしているように見えます。
できることなら、アップロード中にブラウザ側でなんらかのエラーが起きてアップロードができなくなったとき、
進捗バーを止め、エラーを表示したいのです。
アップロードに使っている関数はHTML_QuickForm_File::moveUploadedFileです。
この関数ではアップロードが「できた」か「できなかった」かの状態が取れるはずなのですが、
ブラウザからの中断には対応していないのでしょうか。
長くなりましたが、お答え願えれば幸いです。
最後に、もうひとつ質問なのですが、同システムをPerlでやろうとした場合、
PHPで行うより簡単になりますか?
0143nobodyさん
2006/06/11(日) 15:23:36ID:???「php progress file upload」あたりでググってみそ。
0145nobodyさん
2006/06/11(日) 16:56:49ID:???PHPの標準では、そのものの機能がないので工夫が必要。
tmpディレクトリのアップロード途中のファイルの
サイズを読んで返すという仕組みで実現する。
143のキーワード以外に「PHP upload progress-bar」とか。
0146nobodyさん
2006/06/11(日) 16:58:13ID:???Content-Lengthでこまってるんだけど。。。
0147nobodyさん
2006/06/11(日) 17:30:53ID:???http://www.php.net/manual/ja/ref.filesystem.php
0149nobodyさん
2006/06/11(日) 20:21:21ID:???それ無理でしょ。
途中のサイズは分かっても、総容量はアップ完了するまで分からない。
したがって進捗表示は無理。
0150nobodyさん
2006/06/11(日) 21:00:27ID:???http://tomas.epineer.se/archives/3
このぐらいの事で「無理でしょ。」って言い切るレベルのヤツしかいないんだな、ここは。
0151nobodyさん
2006/06/11(日) 21:14:42ID:???「PHPでは」無理でしょ。
って言えば良かったのかな??
あぶねーあぶねー、つまらない難癖をつけてくるクズには気をつけないと・・・
0152nobodyさん
2006/06/11(日) 21:16:43ID:???0154nobodyさん
2006/06/11(日) 21:30:33ID:???セッションが切れるような設定にしてあります。
ところが、サーバ側でセッション・ファイルを保存しているtmpフォルダを見てみますと、
数日前〜1週間くらい前にログインした分のファイルがいくつか消えずに残っています。
ためしにいまログインして新しいセッション・ファイルが出来たのを確認したあと
すぐにログアウトしてみると、そのファイルはきちんと削除されました。
では、なぜ残っているファイルがあるのでしょうか? これは消えないのでしょうか?
0155154
2006/06/11(日) 21:34:32ID:???さらに実験したところ、明示的にログアウト処理(セッションクッキーの削除やセッションの破壊)を
した場合はきちんとセッション・ファイルも削除され、
単にブラウザを閉じるだけでログアウトしてしまうとセッション・ファイルが
ゴミとして/tmpフォルダに残ってしまうようです。
このゴミを自動で消すことは出来ないのでしょうか?
一週間も前のが残っていると気持ち悪いし、セキュリティ的にも問題がある気がします。
0156nobodyさん
2006/06/11(日) 21:47:31ID:BO/wu1chセッションのことだとわかっているのに
http://www.php.net/manual/ja/ref.session.php
を見ていないの?
ブラウザを閉じたのかどうかはサーバには解らないからセッションファイルが残る。
気になるならsession.gc_maxlifetimeを短く設定しろ
0157nobodyさん
2006/06/11(日) 21:48:33ID:???$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内で逆順になってしまいます。
これを希望通りにソートするにはどうすればいいですか?
015836
2006/06/11(日) 21:54:05ID:???Σ(´Д`)ズガーン
…スクリプトをAAACAFEに置いて試したところ、
確かにセッションが保持されてました。
つまりうちのローカル環境が異様だという事ですね。
わざわざありがとうございました…トホホ
0159154
2006/06/11(日) 22:17:03ID:???session.gc_maxlifetimeはデフォルトの1440秒のままです。
それなのに1週間も前のセッション・ファイルが消えないのが
おかしいと思いまして・・・
0160nobodyさん
2006/06/11(日) 22:47:54ID:???セッションファイルはセッションが開始されるごとに
gc_probability/gc_divisorの確率でgc_maxlifetimeより古いものが消される。
デフォルトでは1%の確率でGCが起こる。
gc_divisorを「gc_maxlifetime秒間のアクセス数」に設定しておけ。
ただし、「確率」の実装がどうなってるかは知らないが、本当に確率的に消されているなら、
100年分のセッションファイルが残る確率もある。限りなく0に近い確率だけど
0161145
2006/06/11(日) 22:48:31ID:???揚げ足でもなんでもなく、素でjavascript前提で考えてたよ。
PHPだけでも、クライアントにファイル容量を入力させれば可能だけどね。
# これは本当に揚げ足取りw
さくっとFlashでやるのが一番楽。
0162nobodyさん
2006/06/11(日) 22:50:08ID:???0163nobodyさん
2006/06/11(日) 23:01:31ID:???本当にありがとうございました。
0164154
2006/06/12(月) 01:53:44ID:???なるほど・・・
ところで「gc_maxlifetime」で設定する秒数って、何を基準に数え始めるのでしょうか??
セッション・ファイル作成時刻からの秒数? それとも最終アクセス時刻からの秒数??
もし前者だとすると、24分ごとにセッションが切れちゃう可能性があって不便ですね・・・
0165nobodyさん
2006/06/12(月) 02:01:34ID:???仕事で使ってる訳でもない素人レベルなんだろうな。
ブラウザに表示する内容をブラウザリロード無しに書き換えるには、
JavaScript(+DHTML)は必要。
そうであれば、AJAXも普通に視野に入れて考えるべきだと思うが。
単純に>>151が>>150の上手な煽りに釣られただけにしか見えない。
0166nobodyさん
2006/06/12(月) 02:27:28ID:???そういう問題じゃない。
>>142からの流れをよく嫁、バカ。
PHPで出来るかどうかの話をしてるんだよクズ。
JavaScriptだのFlashだの、ローカルでの処理を加えれば
ほとんど何だって実現出来るに決まってんだろアホ。
0168nobodyさん
2006/06/12(月) 02:38:30ID:???0169nobodyさん
2006/06/12(月) 02:39:40ID:???ここは質問者と解答者のいるスレだよ。
質問には色々な解答があって良いと思うよ。
では、次の方質問どうぞ↓
0170nobodyさん
2006/06/12(月) 02:51:42ID:???何かもう開発してるんだよな?
0171nobodyさん
2006/06/12(月) 02:53:39ID:???HTTPヘッダを解析すれば良いのでしょうか?
だとしたら、みなさんどのソフトがオススメですか?
ベクターとかでちょっと探したけど、どれもイマイチな感じでした。。。
0173nobodyさん
2006/06/12(月) 03:28:33ID:???$change = '<font color="red">\0</font>';
$msg = preg_replace($match,$change,$msg);
>>hogeさん
この部分だけ色を変えたいのですが、上のかきかたでは改行以降も色換えしてしまいます。。
くだらない質問ですが、どのようにすれば改行は含まないようにできるのでしょうか?
0174nobodyさん
2006/06/12(月) 04:10:33ID:???改行以前まで色を変えたいなら
>>(+)$
かな。
0175nobodyさん
2006/06/12(月) 04:53:29ID:???0177nobodyさん
2006/06/12(月) 05:01:05ID:???0178nobodyさん
2006/06/12(月) 05:19:36ID:???これだと<br />までタグで囲っちゃうね
正規表現って難しい!
マスターしてる人はすごいよ
0179nobodyさん
2006/06/12(月) 06:36:11ID:???0180nobodyさん
2006/06/12(月) 07:33:43ID:???次バージョンで出来るようになると良いのだが。
0182nobodyさん
2006/06/12(月) 07:55:29ID:???0183nobodyさん
2006/06/12(月) 07:56:31ID:???0185nobodyさん
2006/06/12(月) 09:58:12ID:???foreach ($info as $key => $row) {
$name[$key] = $row['name'];
$value[$key] = $row['value'];
}
array_multisort($value, SORT_ASC, $name, SORT_ASC, $info);
http://jp.php.net/manual/ja/function.array-multisort.php
に例が書いてある。
157
$info[3]['name'] = 'ddd';
$info[3]['value'] = 2;
^^^^^^^^^
0186nobodyさん
2006/06/12(月) 10:45:51ID:???FruitTable、fruit_id, fruit_name
1,りんご
2,みかん
3,ぶどう
複雑なSELECT部分の中で、上記項目くらいしかないテーブルはJOINを使わず
前もって上記テーブルをSELECTして$fruit[]配列に入れておき
$fruit[ $row[3] ] ←このような感じで参照したほうがよいでしょうか?
また皆さんはどのように最適なスクリプト(とSQL)の組み合わせを考えてますでしょうか?
0190nobodyさん
2006/06/12(月) 12:02:08ID:???ありがとうございました。ドンピシャですね。
なるほどmultisortの挙動はよく分からなかったんですが
$nameと$valueの配列を別個につくり、
$infoを$valueで比較、$valueが一緒だったら$nameで比較、としてソートしてくれるんですね。
本当に助かりました。そして勉強になります。
0191nobodyさん
2006/06/12(月) 12:08:24ID:???MySQLじゃなくPostgreSQLを進めてみる
CREATE VIEWでビュー作ってソコからSELECTしてるから楽だよ
0192nobodyさん
2006/06/12(月) 12:16:44ID:???正規化されすぎたDBだとJOINが多くなってSQLが複雑になる場合があるが、
DBの最適化が行われていればSQL実行時間はそんなに遅くならない。
俺はDB側を頑張ってPHP側は楽してるな。
0193186
2006/06/12(月) 14:12:12ID:???実際にはTABLEが沢山あり、一つのSELECTだけで1KBほどになってるのもあります
>>191
MySQL5.0からCREATE VIEWが使用できるみたいです
でもCREATE VIEWって、SQLに変数が入る場合とか駄目ですよね?
変数の値が [1-5] とか少ないなら予め各ビューを作っておき
switch()で参照するビューを選択するという方法でしょうか?
0194nobodyさん
2006/06/12(月) 17:25:56ID:???『変数』がSQL文のどこに食い込むかによる
賢いDBMなら、必要に応じてViewに対するWHERE句をView内部のサブクエリに移動させて検索してくれる。
あと、Viewにするクエリを工夫すればViewに対するWHERE句だけに変数を追いやれることもある
0195nobodyさん
2006/06/12(月) 17:29:37ID:???gdbm始め、dbm系ライブラリは全然賢くないっす
0196nobodyさん
2006/06/12(月) 17:29:51ID:hLJuV8owPC版のyahooページが表示されてしまいます。
携帯でアクセスした時は携帯を読み込むようには出来ませんでしょうか?
<?php
$url="http://www.yahoo.co.jp";
$page = readfile($url);
?>
宜しくお願い致します。
0197nobodyさん
2006/06/12(月) 17:38:42ID:???ありえない
構造から見直した方がよくね?
0198nobodyさん
2006/06/12(月) 17:41:48ID:???そのサイトが携帯をUAだけで判断してるならUAを送ればできるとは思うけど、
中継サーバのIP見てるんなら無理
しかもYahoo!って中で変な処理してなかったっけ?
複数のサーバを同じように見せかけて同じものを表示・・・とか・・・
0199nobodyさん
2006/06/12(月) 17:43:54ID:???彼は兄エルが早死にしたため、兄の代わりに子孫を残すべく兄嫁タマルと結婚させられた(逆縁結婚)。
しかしオナンは兄の為に子を残すことを嫌い、性交時は精液を膣の中に放出せず、寸前で陰茎を抜き精液を地に漏らして避妊をした。
すなわちオナンがおこなったのは膣外射精であるが、語義が転じて生殖を目的としない射精行為としてオナニーが使われるようになった。
ちなみになぜオナンは兄のために子を残すことを拒否したかというと、兄嫁に子が出来てしまうと父の遺産はその子のものになってしまう。
兄嫁に子が出来なければ遺産は次男であるオナンのものとなるはずだったとも言われる。当時の掟(慣習よりも強制力があった)により言われている
ことだが、聖書にはそこまでのことは書いていない。一般には「血統維持」を強調した物語と理解されている。
これは、不幸の文章です。読むとあなたは必ず、いや必ず不幸になります。
しかし、読んでしまっても不幸を回避する方法があります。それは、この文章をまるまんま他の板へ3つ貼ることです。
0200nobodyさん
2006/06/12(月) 17:47:19ID:???if(携帯からのアクセス){
$url="http://mobile.yahoo.co.jp";
}else{
$url="http://www.yahoo.co.jp";
}
0201nobodyさん
2006/06/12(月) 17:51:32ID:???<?php
ini_set('user_agent', $_SERVER['HTTP_USER_AGENT']);
$url="http://www.yahoo.co.jp";
print readfile($url);
?>
0204nobodyさん
2006/06/12(月) 18:21:37ID:???yahooは確かIPをチェックしてたはず。
別のサイトで試さないとダメかも
そういやLivedoor MAPへ携帯UAでアクセスした時、
返ってこないので変だと思ったら、
UAが携帯なので携帯向けアドレスへリダイレクト→
IPが携帯でないのでPC向けアドレスへリダイレクト→
UAが携帯なので携帯向けアドレスへリダイレクト→
以下略
ずっとリダイレクトを受け付けるIEもナンなんだが・・・
0206nobodyさん
2006/06/12(月) 18:47:59ID:???>yahooは確かIPをチェックしてたはず。
しているのは深階層の一部。
殆どのページはUA偽装で閲覧可能。
0207nobodyさん
2006/06/12(月) 23:59:10ID:???0208nobodyさん
2006/06/13(火) 01:14:38ID:NxGxiCeSEUC-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しているのみ
ご存知の方がいらっしゃいましたら、どうかご指摘お願い致します。
0209nobodyさん
2006/06/13(火) 01:48:33ID:???PHPファイルの文字コードはUTF-8になっていますか?
出力したHTMLは文字コード指定をUTF-8にしていますか?
mbstring.http_outputをUTF-8に指定するとどうなるでしょうか?
これで的外れな事を言ってたらすんまそん。
0210nobodyさん
2006/06/13(火) 01:57:20ID:???Apacheの設定が強制EUC-JPになってるとか・・・
0212209
2006/06/13(火) 02:32:09ID:???関数て(;´Д`)
私はphp.iniを直接いじるのか.htaccess使うのかそれともini_set()使うのかは
>>208の自由だと考えてああ書いたのですが、何故これが関数だと思ったのですか?
0213nobodyさん
2006/06/13(火) 03:16:25ID:5706m95F0214173
2006/06/13(火) 04:03:00ID:N4y2gPA50215nobodyさん
2006/06/13(火) 04:33:54ID:???0216215
2006/06/13(火) 05:25:39ID:???">>"も含めて<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 />
とか書かれるとちゃんと動かんけど。
0217nobodyさん
2006/06/13(火) 05:27:43ID:???$match = '/>>(.+)/i';
ってのを
$match = '/>>(.+?)<br/i';
ってすりゃいいんじゃないの?
0218nobodyさん
2006/06/13(火) 05:28:53ID:???0219173
2006/06/13(火) 06:08:43ID:???正規表現でもそれが限界なんでしょうか?
$match = '/(>>.+?)<br \/>/';
$change = '<font color="red">$1</font><br />';
$msg = preg_replace($match, $change, $msg);
今のところ、こんな感じで一応動作してますが
0220nobodyさん
2006/06/13(火) 06:37:39ID:???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 においてます。
0224208
2006/06/13(火) 10:01:25ID:???ご丁寧にありがとうございます。
ご指摘の点を確認してみました。
・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になってしまって
いるようでして、データベースが勝手に変換してくれているような気がしてきました。
少し調べてみたいと思います。
0225nobodyさん
2006/06/13(火) 10:28:11ID:3c5IwUSO8Mにアップしたいと思うのですが、
サーバーの関係でphp.iniをいじることができません。
.htaccessで変更できるみたいなのですが、
.htaccessの設定方法がわかりません。
php_value upload_max_filesize 8388608
っぽいのでは?試してみたのですが、だめでした、お力御貸しください。
0226nobodyさん
2006/06/13(火) 11:12:31ID:???post_max_size >= upload_max_filesizeでないとupload_max_filesizeは意味をなしません。
8388608じゃなくて"8M"じゃどうよ?
それとそのサーバでは変更を許可してるのかい?
PHP_INI_PERDIRっぽいけど念のため
0227225
2006/06/13(火) 11:15:56ID:3c5IwUSOpost_max_size は8Mになっております。
.htaccess では バイト表記でないいけないとどこかの文献でみました。
ただ、 8Mでは失敗したので、"8M"で今から試してみます。
PHP_INI_PERDIRなので、大丈夫とはおもうのですが、、、
0228225
2006/06/13(火) 11:27:57ID:3c5IwUSO管理に言って php.iniの数字を変えてもらったのですが、効き目なし
というわけわからん状態に陥りました。
アパッチは再起動してみたのですが、、
0229軟式PHP
2006/06/13(火) 12:17:40ID:???とか定義してないかね。
0230nobodyさん
2006/06/13(火) 12:20:18ID:???PHPIniDirが変なとこ指してるんじゃないの。
0231225
2006/06/13(火) 12:20:34ID:3c5IwUSO再度確認したところやっぱり、だめでした
memorylimitもPOSTMAXも8Mなんですが、、
UPが2Mなんで、、どうにも、、、
はぁ
0232nobodyさん
2006/06/13(火) 12:31:59ID:BClcCsNSApacheの設定変更が必要ですが、
それをphp.iniの設定で変更できたらご教授願います。
或いは、プログラムレベル内で変更できますか?
0235nobodyさん
2006/06/13(火) 15:17:40ID:???っていうか、ソースもデータも何もかもEUCで統一したほうが
問題が少ないと思うんだけど。
HTML出力でUTFにしたいときだけアウトプットを変換すればいいし。
0236nobodyさん
2006/06/13(火) 15:52:48ID:UqVx0E5SWindowsXPPro+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と接続する文を書くことが出来るのでしょうか。どなたか教えて
下さい。宜しくお願いします。
0237nobodyさん
2006/06/13(火) 16:15:50ID:???0239nobodyさん
2006/06/13(火) 16:26:17ID:???>Access denied for user 'ODBC'@'localhost' (using password: NO)
WindowsでMySQL接続ユーザを指定せずに、MySQLに接続しにいった時に
デフォルトユーザのODBC@localhostが指定されたと解釈されて出てるエラー。
78行に至るまでをチェックしろ、ウンコー
0241nobodyさん
2006/06/13(火) 16:42:45ID: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 と設定しても、うまく
いかなかったのですが・・・。
0242nobodyさん
2006/06/13(火) 17:08:58ID:???>php.iniでmysql.default_user = rootと設定しても、うまくいかなかった
・そのphp.iniが使ってるPHPで有効な設定ファイルではない。
・更に優先度の高い設定ファイル等で別の値が上書きされている。
・mysql_connect()に変数でパラメータが指定されていて、その変数の値が空(NULLではなく空文字)
mysql_connectのパラメータに着目して処理を追え
(@mysql_connectになってる。多分)
0243242
2006/06/13(火) 17:12:14ID:???と思ったが、だったら78行目でリソース型(mysql接続リソース)
じゃないってエラーになるか。
0244nobodyさん
2006/06/13(火) 17:22:07ID:???<?php
$output = shell_exec('ls -lart');
echo "$output";
?>
が表示されません。
なぜでしょうか?
0246nobodyさん
2006/06/13(火) 17:51:04ID:UqVx0E5Ssafe-modeはOFFになっていても、
open_basedir が設定してあるのではないでしょうか?
0247nobodyさん
2006/06/13(火) 17:57:02ID:???mysql_real_escape_string()は接続してないと使えない関数。
で、接続されていないとデフォルトで接続を試みる。
ということでconnectできていないと考えられる。
まずはconnectができているか簡単なので試してみるといいかも。
(マニュアルより)
<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
die('接続できませんでした: ' . mysql_error());
}
echo '接続に成功しました';
mysql_close($link);
?>
0248nobodyさん
2006/06/13(火) 18:13:04ID:UqVx0E5Sありがとうございます。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も合っています。接続出来ない原因として、考えられるのは何でしょうか?教えて
下さい。お願い致します。
0249nobodyさん
2006/06/13(火) 18:15:12ID:???WindowsXP Home
HTTPD 1.42n
PHP 5.1.1
です。
>>246
open_basedirはコメントアウトされていました。
一瞬だけコマンドプロンプトは表示されるのですが・・・
0250nobodyさん
2006/06/13(火) 18:16:31ID:???phpのMySQLモジュールバージョンとMySQLサーバのバージョンの問題かも
パスワードの関係でなんかあったような・・・
一度パスワード無しのユーザを作ってそれで接続してみたらできるかも。
もちろんパスワードは無しで接続ね。
0252250
2006/06/13(火) 18:41:25ID:???調べたらphpのmysqlモジュールバージョンが4.0.x以下だとまずいみたい。
phpinfo()でmysqlのバージョン調べてみてね。
4.0.x以下だったら、phpのバージョン上げるか以下のページに回避策(英語)
http://dev.mysql.com/doc/refman/4.1/en/old-client.html
0255nobodyさん
2006/06/13(火) 19:05:16ID:UqVx0E5S>>一度パスワード無しのユーザを作ってそれで接続してみたらできるかも。
>>もちろんパスワードは無しで接続ね。
248です。パスワードは無しのユーザで試したところ、接続できました!!
ありがとうございます!しかし、パスワードありでは接続できないのでし
ょうか・・・・。
環境は、WindowsXPPro+Apache2.0.52+PHP5.0.2+MySQL4.1.7
です。パスワードありでは接続できないというのは、不自然な気がします・・・。
どなたか、解決策をご存知ではないでしょうか?
0256250
2006/06/13(火) 19:57:52ID:???教えた関連サイト読んでもないのか?252で書いた調べもやってなさそうだし。
もし理解したいと思うなら252のURLのenをjaに変えてみて見れ。
0257nobodyさん
2006/06/13(火) 20:37:50ID:???0258nobodyさん
2006/06/13(火) 20:39:16ID:???0259nobodyさん
2006/06/13(火) 21:27:58ID:y/p6TWtm>教えた関連サイト読んでもないのか?252で書いた調べもやってなさそうだし。
>もし理解したいと思うなら252のURLのenをjaに変えてみて見れ。
すみません。mysqlのバージョンが 4.1.7だったので、>>252で教えて
頂いたサイトは自分には当てはまらないことだと思っていました。
「mysqlのバージョン」と「mysqlモジュールバージョン」は違うので
すね。>>257様や>>258様の話を聞いて、段々原因が掴めてきました。
今はサーバの近くにいないので、明日、皆様のおっしゃったことを
試してみます。
本日は皆様、本当に細かく教えて下さり、誠にありがとうございまし
た。
0260nobodyさん
2006/06/13(火) 22:08:23ID:???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からは検索してくれません。
多分根本的に文法が違うのかな〜と思っているのですが、どうすれば検索できますか?
0261nobodyさん
2006/06/13(火) 22:25:21ID:???2つの画像を重ねて表示する場合は、imagecopymerge でできますが、
3つ以上の画像を重ねて表示したい場合、imagecopymerge でできるのでしょうか?
試してはみたのですが、どうもうまくいきません。
他にいい方法があるんでしょうか。。。
0262nobodyさん
2006/06/13(火) 22:49:17ID:???koukou=hogehoge or daigaku=hogehoge
文字列だとかLIKEだとかは自由にどうぞ
0263nobodyさん
2006/06/13(火) 22:50:13ID:???次のページに行くとき、bbs.php?page=2みたいにしたいのですが、
どうやってfor関数に組み込めばいいのかわかりません。
どのように記述すればいいでしょうか?
for関数で記事表示しています。よろしくお願いします。
0264nobodyさん
2006/06/13(火) 22:55:12ID:???ちと意味がわかんない
$_POST['page']とか$_GET['page']でページ数を取得してるんだよね?
記事の管理方法は?DBは使ってる?
DB使ってるならOFFSETするのが早い
使ってないなら多分ファイルだろうからファイルの管理方法も教えて
1日単位でログにしてるとか、1記事1ファイルにしてるとか
0265nobodyさん
2006/06/13(火) 23:17:44ID:???ひとつのテキストファイルをログファイルとして1記事1行で保存しており、
新規記事はログファイルの上から追加されると仮定すると、
$page = $_GEt['page']; // ページの指定
$line = 10; // 1ページあたりの記事数
$article = file(ログファイル); // ログの配列(1記事1行で最初の要素が最新の記事)
for ($num = ($page - 1) * $line; $num < $page * $line; $num++) {
print $article[$num];
}
こんな感じ?
0267263
2006/06/13(火) 23:32:12ID:???投稿日時,投稿者名,投稿内容
で記録しています。上からの追加です。
1ページ10件表示にして、ページ下部にある
次の10件(./bbs.php?page=x)をクリックすると
次の10件が、といった風にしたいんです。。
表現力が…
0268nobodyさん
2006/06/13(火) 23:50:23ID:???0270263
2006/06/14(水) 00:37:42ID:???みなさん、ありがとうございます。
0271nobodyさん
2006/06/14(水) 00:38:32ID:???ページに400×400の画像を貼り付けて、
その画像上の任意の場所をクリックした時のマウスポインタの座標を取得することは可能でしょうか?
よろしければ、関数名などを教えてください。よろしくお願いします。
0273nobodyさん
2006/06/14(水) 00:44:52ID:???0275nobodyさん
2006/06/14(水) 00:49:25ID:???よし!俺ねる!お前ら明日もがんばれよ!俺もがんばるよ!
0276nobodyさん
2006/06/14(水) 00:51:10ID:???0277nobodyさん
2006/06/14(水) 01:03:58ID:???ありがとうございます。
input type に imeage という属性があるのをはじめて知りました。
自分の買ったphp参考書には一行も書いてなかったです。
ちなみにこの参考書、誤字脱字やミスが結構あります・・・。
0278nobodyさん
2006/06/14(水) 01:05:24ID:???HTMLを学ばずしてPHPが分かると思うなよ
0279273
2006/06/14(水) 01:10:05ID:???HTMLは一通り知ってるつもりだったのに…ハズカシ
0282nobodyさん
2006/06/14(水) 02:20:38ID:???Windowsで動くIDE以外のお勧めのテキストエディタってある?
もちろんPHPの関数とかが強調表示されたり色変えられたりするやつ。
Linuxならもちろんviだな
0283nobodyさん
2006/06/14(水) 02:59:05ID:???0284nobodyさん
2006/06/14(水) 03:10:11ID:???では俺が回答してやろうジャマイカ
つhttp://pc8.2ch.net/test/read.cgi/php/1133785416/
0285nobodyさん
2006/06/14(水) 12:30:48ID:2q2dqRMtしないのですが、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から取ってきた日本語は全て文字化けしてしまいます。
どなたか、解決策をご存知ではないでしょうか?宜しくお願い致します。
0287nobodyさん
2006/06/14(水) 14:19:14ID:???これで解決するかどうかは分かんないけど、
つ ttp://puchiko.lowtech.ne.jp/index.php?itemid=349
0288nobodyさん
2006/06/14(水) 14:31:44ID:2q2dqRMt書いた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); と書いて
いるのに文字化けしてしまう原因が分かりません。どなたか解決策をご存知でしょう
か。宜しくお願いします。
0289nobodyさん
2006/06/14(水) 14:46:40ID:???$match = '/>>(.+)/i';
$change = '<font color="red">\0</font>';
$msg = preg_replace($match,$change,$msg);
>>hogeさん
この部分だけ色を変えたいのですが、上のかきかたでは改行以降も色換えしてしまいます。。
くだらない質問ですが、どのようにすれば改行は含まないようにできるのでしょうか?
0290nobodyさん
2006/06/14(水) 14:47:28ID:???して、それが正しく出てくるかチェックしたら?
0293nobodyさん
2006/06/14(水) 14:56:12ID:???スネーク、まずは>>173-180を見るんだ。
それが終わったら次に>>214-219を見るんだ。
その上で今度は>>221を見るんだ。
そしたら>>223を見るんだ。
最後に、iに関してはこっちを参照するんだ。
http://php.s3.to/man/pcre.pattern.modifiers.html
0295nobodyさん
2006/06/14(水) 15:16:35ID:???preg_replace("/\\\*/","auau", $hoge);
の場合、\*が検索文字列になりますよね?
なぜか、ヒットしない…。
0296nobodyさん
2006/06/14(水) 15:23:56ID:2q2dqRMt<?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していくのは大変ですので(何千件もある)、文字化けを直して表示
する方法はないのでしょうか?
0297nobodyさん
2006/06/14(水) 15:28:49ID:???そのDBにデータ入れるときにUTF-8以外の文字コードで入れてる
そのまま使うならコンバートして使いたまへ
0298nobodyさん
2006/06/14(水) 15:29:58ID:???0299nobodyさん
2006/06/14(水) 15:37:02ID:???「ああああああ
ああああ
ああああああ」
と、フォームで打ち送信して、
\n⇒<BR>に直したのですが、
保存すると
「ああああああ<BR>ああああ<BR>ああああああ」
にならずに
「ああああああ<BR>
ああああ<BR>
ああああああ」
となってしまいます。
「ああああああ<BR>ああああ<BR>ああああああ」
にするにはどうしたらよいのでしょうか?
0301nobodyさん
2006/06/14(水) 15:54:23ID:2q2dqRMt>>そのDBにデータ入れるときにUTF-8以外の文字コードで入れてる
>>そのまま使うならコンバートして使いたまへ
ありがとうございます!!DBにインポートする際、ダンプファイル
の先頭にset names utf8;と書いたら、文字化けが全て直りました!
一生、感謝致します。(涙涙)本当に、ありがとうございました!!
0302nobodyさん
2006/06/14(水) 16:02:05ID:???$comment = str_replace("\n","<BR>",trim($comment));
$comment = str_replace("\r","<BR>",trim($comment));
$comment = str_replace("\n\r","<BR>",trim($comment));
なんかバグったwwwwwwww
0303nobodyさん
2006/06/14(水) 16:04:30ID:???確か、内部的に\*は\\*になってるので
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
になった。
0305nobodyさん
2006/06/14(水) 16:09:06ID:???日本語使ってんならマルチバイト対応関数でやれ
あと、それじゃ「いずれかなら」じゃなくて「すべてにおいて」になる。1行でやれ。
比較の順番も考慮しろよ
0307nobodyさん
2006/06/14(水) 16:23:20ID:???あと、何でゴミ削除の関数必要なんだろう?
$comment = str_replace("\n\r","<BR>", $comment);
$comment = str_replace("\n","<BR>", $comment);
$comment = str_replace("\r","<BR>", $comment);
0309nobodyさん
2006/06/14(水) 16:32:53ID:???>>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なんて要りますか?
0310nobodyさん
2006/06/14(水) 16:42:06ID:lNdv+Y0Zもしくは
$comment = str_replace("\n\r|\n|\r","<BR>", $comment);
あたりで一発でできなかったっけ?
0312nobodyさん
2006/06/14(水) 16:57:15ID:???0313nobodyさん
2006/06/14(水) 16:59:34ID:???0314nobodyさん
2006/06/14(水) 17:02:44ID:???っ http://d.hatena.ne.jp/keyword/%C0%B5%B5%AC%C9%BD%B8%BD
0316nobodyさん
2006/06/14(水) 17:12:00ID:???CGIみたいにHTMLに埋め込みはどうすれば良いのでしょうか?
0318nobodyさん
2006/06/14(水) 17:37:18ID:???0319318
2006/06/14(水) 17:38:08ID:???0320nobodyさん
2006/06/14(水) 17:39:33ID:???PHPで書いたCGIで(比較してるのは多分PerlのCGIのことだろ?)同様にやればよい。
そのページ自体を全部PHPで出力しても良いけど。それもPerlのCGIと同様。
(Perlよりか楽だけど)
画像のカウンターなら>>317
0321nobodyさん
2006/06/14(水) 18:52:07ID:???テンプレにいろいろリンクないの?
PHPってちゃんと解説されてるサイトないの?
0323nobodyさん
2006/06/14(水) 18:54:30ID:???0325nobodyさん
2006/06/14(水) 18:59:52ID:???良し分かった!
ここにPHPについて解説されているサイトへのリンクを列挙しておいた。
ちゃんと全部読んでから質問に来るんだぞっ。
http://qrl.jp/?234511
0326nobodyさん
2006/06/14(水) 19:01:48ID:???0327nobodyさん
2006/06/14(水) 19:04:44ID:???えー
いきなりリファレンス全部読めってか
通して読める入門サイトとかない?
あと、レシピ集みたいのも欲しい
0329nobodyさん
2006/06/14(水) 19:31:52ID:???いくらでもあるよ。好きなのをドゾー
入門
http://qrl.jp/?234512
レシピ集
http://qrl.jp/?227513
まあ隅から隅まで全部完璧に理解する必要なんか無いけどさ、
少しくらいは自力で探す&理解する努力もしてみない?
>>1のマニュアルにだって検索機能付いてるしさ。
0330nobodyさん
2006/06/14(水) 19:49:47ID:???後の関数解説等は必要な時に参照すりゃ良いと"理解できるだろ?"
0331nobodyさん
2006/06/14(水) 20:01:29ID:???>>1の「マニュアル」を消して「リファレンス」とでも書いておけば飛びついて読むんじゃね?w
0332nobodyさん
2006/06/14(水) 20:35:35ID:???0333nobodyさん
2006/06/14(水) 23:45:00ID:???元々は本スレと言われてたPHP質問スレが別にあって、
このスレはそこから派生した「くだらない質問専用」のスレだから。
…ってのがまぁ理由ではあるけど、でも実際、本家の更新が早すぎて
公式リファレンス以上のまともな解説ってサイトも書籍も皆無だと思う >PHP
0335nobodyさん
2006/06/15(木) 00:29:35ID:???次スレ用テンプレの参考にでもしてくれ。
0336nobodyさん
2006/06/15(木) 00:30:05ID:???【ガイドライン】
質問の前に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辺り
0337nobodyさん
2006/06/15(木) 00:30:40ID:???■本家マニュアル http://www.php.net/manual/ja/
■日本PHPユーザ会 http://www.php.gr.jp/
■PEARマニュアル http://pear.php.net/manual/ja/
■メーリングリスト http://ns1.php.gr.jp/mailman/listinfo/
(以下英語)
■Smarty http://smarty.php.net/
■Zend本家 http://www.zend.com/
■Zend Framework http://framework.zend.com/
■php | architect http://www.phparch.com/
■Smartyマニュアル http://smarty.php.net/manual/en/
■ZFマニュアル http://framework.zend.com/manual/en/
■PECL本家(英語) http://pecl.php.net/
まだ英語しかないマニュアルも後々/manual/en/を/manual/ja/に変えてみたら日本語があるかもしれません。
0338nobodyさん
2006/06/15(木) 00:31:23ID:???【PHP】下らねぇ質問はここに書き込みやがれpart18
http://pc8.2ch.net/test/read.cgi/php/1142417901/
【PHP】PEAR Part2
http://pc8.2ch.net/test/read.cgi/php/1122899232/
[PHP]フレームワークについて語るスレ2[総合]
http://pc8.2ch.net/test/read.cgi/php/1135847024/
【Smarty】PHPのテンプレートエンジン【Flexy】
http://pc8.2ch.net/test/read.cgi/php/1118799352/
[PHP-users MLヲチ8]巣もいませんでした。
http://pc8.2ch.net/test/read.cgi/php/1132800251/
正規表現道場@2ch Part4
http://pc8.2ch.net/test/read.cgi/php/1105930285/(落ち)
Webでオブジェクト指向プログラミング
http://pc8.2ch.net/test/read.cgi/php/1133489897/
0339nobodyさん
2006/06/15(木) 00:31:53ID:???データベース(SQL、DBMSの話題はこちら)
http://pc8.2ch.net/db/
プログラム(CLI、アルゴリズム、インタプリタの話題はおそらくこちら)
http://pc8.2ch.net/tech/
Web制作(クライアントサイドの話題は問答無用でこちら)
http://pc8.2ch.net/hp/
0340nobodyさん
2006/06/15(木) 00:32:25ID:???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 シェルから実行)
0341nobodyさん
2006/06/15(木) 00:32:56ID:???→ 好きにしてください
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.を参照
0342327
2006/06/15(木) 00:34:23ID:???別にそういう意味じゃなかったんだ
ただ、もうちょいマシなテンプレあってもいいんじゃないかと思っただけ
おれはリファレンスあれば事足りてる
けど、初心者にただリファレンス嫁だけなのはアレだと思った
>>333
そういう歴史があったのね
でも今は本スレないわけでしょ
ならテンプレ考えてもよくない?
>>334
それなら
「リファレンス内に入門ページあり。初心者はまずそこ嫁」
みたいな一文があってもいいんでない?
0343327
2006/06/15(木) 00:35:21ID:???0344nobodyさん
2006/06/15(木) 00:39:12ID:???テンプレ作り直しは必要だと思うよ。
まー、本スレが無くなったばかりなのでその辺はこれからおいおいな。
その辺は>>42-45でも反省として取り上げられてる。
0345nobodyさん
2006/06/15(木) 00:58:01ID:???初心者にリファレンス嫁って言うのはすごい親切なんだぞ
逆に初心者だからこそリファレンス嫁ってことかな。
リファレンス読んでわからなきゃ人に聞く。
そーしないと「自分がどこがわからないかをわからない」まま質問することになるので
日本語でおkとか言われるわけだ。
まー、おまいさんも解答する側になったらわかるよ
おれも最近少しずつだが解答できるようになって、それが理解できるよーになったし。
0346nobodyさん
2006/06/15(木) 01:21:59ID:???まったくプログラミングしたことない奴は読んでもまったく理解できんだろうな
誰か有志が簡単なサイトを作らないか?
forぶんやらif文の説明も含めてリファレンスよりもうちょっとアバウトで簡単な感じの奴
漏れはパスだけど(´・ω・`)
0347nobodyさん
2006/06/15(木) 01:32:15ID:???こういう奴らが中途半端に言語を覚えて脆弱性だらけのコーディングしやがる。
0348nobodyさん
2006/06/15(木) 01:40:33ID:???ちょっと前にFAQとかを集約させたWiki立ち上げの話がここで出た。
で、実際にWikiは立ったが誰もサポートしないのでそのまま自然消滅?した。
まずお前がやれや。
0349nobodyさん
2006/06/15(木) 02:01:51ID:???PHPで作成中+どこで質問して良いのやら分からないので、
ここで質問させて頂きます。申し訳ありません。
現在、複数の検索エンジンに対応した検索窓を作成中なのですが、
1つの場合は
<form action="http://www.google.co.jp/search?hl=ja&lr=">
<input name="q" type="text"><input type="submit">
</form>
このようにすれば済むのですが、複数の場合はスクリプトに
値を渡し、値によって任意のサイト(URL)に飛ばさなくては
なりません。JavaScript等を使わずにこれを実現するには、
どうすれば良いのでしょうか^^;
0350349
2006/06/15(木) 02:08:43ID:Z9AOX7Inお願い致します。
0351nobodyさん
2006/06/15(木) 02:09:52ID:???もうちょっとくやしく
0352349
2006/06/15(木) 02:16:29ID:Z9AOX7In"リダイレクト"とやらで実現できそうだという事が今分かりました。
0353nobodyさん
2006/06/15(木) 02:17:49ID:???ただ、僕がやろうとしている「検索窓」の場合も
header("Location: http://www.example.com");
このようなやり方で正しいのでしょうか?
もっと適切だったりする方法はありますか?
0354349
2006/06/15(木) 02:22:50ID:Z9AOX7Inどうやら、この方法で良いらしい事が分かりましたので、
解決という形になりました。大変お騒がせしました。
0355nobodyさん
2006/06/15(木) 02:49:43ID:???検索ボタンは一つだけ欲しかったって事か?
0356nobodyさん
2006/06/15(木) 02:50:25ID:???でうまく飛ばないケースってどういう状態?
絶対パスにしろみたいに書いてあるけど
0357nobodyさん
2006/06/15(木) 02:58:44ID:???なんだそれは?Linuxの/なのか?
ならもちろん/がドキュメントルートになってるんだよな?
その「/」に本来入る文字列は「http://〜」になるんだよ。
一応相対パスでも飛べるけど、そのファイル名がブラウザか
らURLをうって見えるものじゃないとダメ
0359nobodyさん
2006/06/15(木) 03:36:07ID:???header("Location: index.php");
でうまくいっちゃったもんだから試したら
"Location: /index.php"やら"Location: /"でも問題なく飛ばせるんで
疑問に思いマスタ
linux apache で / はルートです。
0362nobodyさん
2006/06/15(木) 05:11:09ID:???0363nobodyさん
2006/06/15(木) 05:16:11ID:???0365nobodyさん
2006/06/15(木) 07:44:27ID:???日本語の文字列をPOSTした時に、
$encode = mb_http_input('P');
で、ブラウザが送信したエンコーディングを検出しようとしたのですが、
何度やっても$encodeの中身が空です。どうしてなのでしょうか?
ちなみにブラウザはIE6.0です。
0367nobodyさん
2006/06/15(木) 07:59:49ID:???対応していないブラウザがどうの言ってるやつがいるが、
RFCに絶対URLにしろと書いてあるってのが正しい根拠な。
0368nobodyさん
2006/06/15(木) 08:17:47ID:???この場合、実際にRFC準拠じゃないとダメなブラウザがあることを証明しないと
「別にいーじゃん」で通す輩が出るので困る
0370nobodyさん
2006/06/15(木) 10:31:26ID:???最新バージョンのブラウザでは特殊文字は変換しなくても表示する?
0371nobodyさん
2006/06/15(木) 10:52:57ID:???将来の最新ブラウザがもっと標準に沿った実装になれば見えなくなる可能性は高い。
0373nobodyさん
2006/06/15(木) 11:45:39ID:B1LJZBRvってなくても動作しますか?
なんか、どこにも、php.iniがないのに動作してるんですが、、、
0375373
2006/06/15(木) 11:55:19ID:B1LJZBRvを出力すると
Configuration File (php.ini) Path /usr/local/lib
って出力されるんですが、
/usr/local/lib には、一切そんなファイルないんですよ。
0376nobodyさん
2006/06/15(木) 12:07:42ID:???例えばこういうのを読み込んで↓
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);
?>
0378nobodyさん
2006/06/15(木) 12:29:36ID:???無けりゃ、PHPのデフォルト値が採用される。
でもphp.iniで設定してないと困る事、多くないか?
php.iniでしか設定できないパラメータも多いし。
0379nobodyさん
2006/06/15(木) 12:37:15ID:???それだと恐らくヘッダーの表記だけSJISで、中身は元のエンコーディング。
PHPのHTTP出力機能で自動変換を掛けるか、
自分のコード内できちんとSJIS変換を掛ける。
0380nobodyさん
2006/06/15(木) 12:55:23ID:???mb_http_output("SJIS");
ってのをアタマに入れてみたんですが、変換されてないみたいなので、
出力の時に
echo mb_convert_encoding( join('',$text), "sjis", "utf-8");
ってエンコードかけたら出来ました。
ありがとうございます!
0381365
2006/06/15(木) 13:53:50ID:???$encode = mb_http_input('GP');
とやってみましたが、やはり$encodeには何も戻り値が来ません。。。
(ちなみにフォームには「METHOD="POST"」と指定してあります)
これはブラウザ側の問題なのでしょうか、それともPHP側の設定の問題なのでしょうか?
みなさんはこのような例で、きちんとエンコードが戻り値として返されますか??
0382nobodyさん
2006/06/15(木) 14:27:51ID:???俺も既存のフォームで試してみたら、
たしかに文字エンコーディングの値が取れなかった。
HTMLにはcharset=EUC-JPを明記してあるのだが。
IEと携帯の両方で試したけどダメだった。
ってか、そのmb_http_inputって初めて見るんだけど、
そもそも戻り値をくれる関数なのか!?
0383nobodyさん
2006/06/15(木) 14:30:15ID:???phpで画像を作成して表示するプログラムを作っています。
A:temp.gif 表示
B:あるボタンが押されたらそれに対応したtemp.gif作成
という二つの処理を同じページ(?)内で繰り返しています。
ところが、ボタンを押して新たなtemp.gifが作成されても、画像表示では以前のtemp.gifのまま表示されています。
(ブラウザをリロードすると新しく作成された画像が表示されます)
この場合、ブラウザをリロードせずに、どうすれば新しく作成された画像を表示することが出来るでしょうか。
回答をよろしくお願いします。
0384nobodyさん
2006/06/15(木) 14:36:13ID:???$time = time();
print "<img src=\"temp.gif?${time}\">";
などで、リンクを無理やり毎回変更する
0387nobodyさん
2006/06/15(木) 14:44:32ID:LGGZbqC+スクリプトはUTF-8、出力はSJIS(携帯用なので)で、
同スクリプトのフォームから送った単語をひらがなのみにマッチさせたいので以下のようにしてみました。
$tango = mb_convert_encoding($_POST['tango'], "utf-8", "SJIS");
echo preg_match("/^[ぁ-ん]+$/", $tango);
しかし、カタカナが入っていても1が返ってくるのですが、原因は何なんでしょうか?
エンコードは関係あるんでしょうか?
0389nobodyさん
2006/06/15(木) 14:53:39ID:???<?php
include("1.php");
?>
これをどのようにすれば実装できるのでしょうか?
<?php
mt_srand((double)microtime()*1000000);
$randval=mt_rand(1,3);
include("http://●.com/".$randval.".php");
?>
ぐぐってここまで書いたのですが、動きません(´・ω・`)
0390nobodyさん
2006/06/15(木) 14:59:16ID:KiPjTUhkinclude("hoge".mt_rand(1,3)."hoge");
0392nobodyさん
2006/06/15(木) 15:07:55ID:sMlBi/Z4です。
大変遅くなりましたが、皆様のおかげで、MySQLにパスワードありで接続
することが出来ました!!ありがとうございました!!
0393nobodyさん
2006/06/15(木) 15:14:34ID:???http://php.com/php/php2.php
http://php.com/php/php3.php
ってな具合に用意して、
<?php
mt_srand((double)microtime()*1000000);
include("http://php.com/php/php".mt_rand(1,3).".php");
?>
動かないorz
ドシロウトで済みません(´・ω・`)なんで?
0397nobodyさん
2006/06/15(木) 15:50:03ID:???0398nobodyさん
2006/06/15(木) 16:11:39ID:???'GP'なんて"俺"パラメータを受け付けるような関数ではないが...
(実際には無指定と同じ処理になるようになってる)
0399nobodyさん
2006/06/15(木) 16:23:06ID:???マニュアル(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()では設定できないという点に注意。
0402軟式PHP
2006/06/15(木) 16:29:11ID:???0404nobodyさん
2006/06/15(木) 16:41:01ID:???その全角のスペースは何かの間違いだと仮定して、
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
まあ相対パスで書いてみろってこった。
0405nobodyさん
2006/06/15(木) 16:43:56ID:???やてみます!
ありがとうございます!
0406nobodyさん
2006/06/15(木) 17:08:26ID:???おお、できました!動作確認完了
サンクス!!
<?php include("http://●●●.com/●●/php".mt_rand(1,3).".php"); ?>
この一行だけを実装してみて、ランダムアクセス・かつきちんと動作確認とれました。
mt_srand((double)microtime()*1000000);
この行がいらなかったのかなー
ありがとうございました(`・ω・´)
0407nobodyさん
2006/06/15(木) 17:41:22ID:???何だか良く分からんが動いたのか、そりゃ良かった。
ちなみに
<?php
mt_srand((double)microtime()*1000000);
print "http://php.com/php/php".mt_rand(1,3).".php";
?>
は特に問題なく動く。
>>393みたいに変な位置に全角スペースが無ければね。
全角スペースが原因で無かったとしたら、これかも知れない。
http://php.s3.to/man/function.microtime.html
> microtime() は、gettimeofday() システムコールをサポートする
> オペレーティング システムがでのみ使用できます。
まあともあれ、
http://php.s3.to/man/function.mt-srand.html
> 注意:
> PHP 4.2.0 以降、srand() または mt_srand() によりランダム数生成器に
> シードを与える必要はありません。
> これは、この処理が自動的に行われるためです。
というわけでmt_srand()は省略しても問題はない。
0408387
2006/06/15(木) 18:51:02ID:3dqAzs9Oそうなんですね…アホなことしてました。
そこでmb_eregを使って以下のようにしてOKでした。
if (mb_ereg("^[ぁ-ん]+$", $tango)) {
echo "ひらがな";
}
これに更に「ー」(長音?)もマッチさせたいのですが、
if (mb_ereg("^[ぁ-んー]+$", $tango)) {
echo "ひらがな";
}
とするとなぜかダメなようです。\ーもやってみました。
原因は何が考えられるでしょうか?
0409nobodyさん
2006/06/15(木) 19:08:49ID:UdRqyXnhPerlのXMLinのForceArrayのようなことは
できないのでしょうか?
0410nobodyさん
2006/06/15(木) 20:00:26ID:tq4h0Q38どうすれば?
$str = md5 ('apple');
echo $str; // '1f3870be274f6c49b3e31a0c6728957f'
0412nobodyさん
2006/06/15(木) 20:09:56ID:???それはどれほど長い文字列であったとしても16バイトに縮める事ができ、
なおかつそれを元の長い文字列に戻すことができるという恐るべき悪魔の発明であった。
0413nobodyさん
2006/06/15(木) 20:14:05ID:???文書の冒頭に強調して書いとけよ。
不満だーーー!!
0416nobodyさん
2006/06/15(木) 21:59:40ID:???>'GP'なんて"俺"パラメータを受け付けるような関数ではない
ハァ? 公式マニュアルよく嫁カス。
もしくは大垣リファレンスp.301でも良い。
0417nobodyさん
2006/06/15(木) 22:16:03ID:???コマンドライン上からphp -rで実行した場合正常に生成されるのに
ソースに書いてそれを実行すると失敗する
パーミッションに関しては問題ないと思われるのですが
原因はどのようなものが考えられるでしょうか?
0419nobodyさん
2006/06/15(木) 22:26:13ID:???お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
0420nobodyさん
2006/06/15(木) 22:29:06ID:???やはり権限の問題なんですかね
コマンドラインから実行する際のユーザとサーバを動かしてるユーザは同じハズなんですが
お答えいただきありがとうございました
0421419
2006/06/15(木) 22:30:25ID:???DoCoMoのFOMAの拡張絵文字を何とかしようとしてUTF-16でばっちこいと言われ絶望した記憶が。
0422nobodyさん
2006/06/15(木) 22:36:31ID:???手元の「携帯端末用Web製作バイブル 第3刷」には
iモード シフトJIS
iモード対応XHTML シフトJIS, UTF-8
EZweb シフトJIS
Vodafone シフトJIS, ISO-2022-JP, EUC-JP, UTF-8(P4(2)型/W型のみ)
とある
0423nobodyさん
2006/06/15(木) 23:31:52ID:???マジか。
てことは、携帯全般に広く対応するには敢えてSJISで文字化けを乗り越えて行く必要があると。
タマランなあ…
0425nobodyさん
2006/06/15(木) 23:46:29ID:???0426nobodyさん
2006/06/16(金) 00:18:37ID:???新しいファイルを作成しようとしたのですが、
$fp = fopen($data,"x");
これで、localサーバーでは作成できたのですが、
アップロードしたら作成されません。
ちなみにサーバーは
http://space-town.net/を使っています。
0427nobodyさん
2006/06/16(金) 00:21:07ID:???メーラーによっては普通に表示できるみたいですが、どうしてこうなってしまうんでしょうか?
文字コードや改行コードについて調べてみましたが解決策はわからず。
0428nobodyさん
2006/06/16(金) 00:32:55ID:???パーミッションと所有者とパスを確認
>>427
Windows用の改行コード(\r\n)になってる恐れあり
確認されたし
0430nobodyさん
2006/06/16(金) 00:40:41ID:???一応PHP4.4.2と5.1.4のソースや、現行のマニュアルを確認した上で言ってんだけどな。
バージョン違いの仕様の差異や公式ドキュメントからの読み落としがあったら謝るよ。
http://jp.php.net/manual/ja/function.mb-http-input.php
マニュアルには列挙出来るとも、列挙した場合の動作解説はないと思うが。
文字"列"とは書いてあるが、この場合はモードを表す1文字だけの文字列。
>大垣リファレンス
確かに手元の初版のやつだけど解説のサンプルで'GP'ってやってるな。
これは間違いだと思うよ。記述の方では「いずれか」ってなっている(適正)けど。
あと該当ページの「ブラウザから送られてくる文字エンコーディングを設定したり」
ってところも間違いかと。巷でもmb_http_input('SJIS')とか解説してるページがあるが...
0433nobodyさん
2006/06/16(金) 00:55:51ID:???> $fp = fopen($data,"x");
ここに問題があるとは思えないなあ。
$dataの中身はどうなってる?
>>431
つ http://php.s3.to/man/function.fopen.html
"x"は完全な新規作成だよ。
0434nobodyさん
2006/06/16(金) 00:56:25ID:???バージョンはどうなんだよ
0435nobodyさん
2006/06/16(金) 00:58:28ID:???includeで読み込んでるから、トップページからのパスだからあってるはず
というか、Local鯖ではちゃんと作成されたんだけどな・・・
xはPHP4.3.2からでしたっけ?
0436433
2006/06/16(金) 00:59:53ID:???あ、その無料ホームページサイトはCGIに関して「Perlが利用可能です」としか書いてないけど、
まさかPHPが無いとかいうオチでは無いだろうね?
0438nobodyさん
2006/06/16(金) 01:01:25ID:jcDHX2J/他のPHPは全て使えています。
掲示板やアクセスカウンタも大丈夫です。
0440nobodyさん
2006/06/16(金) 01:04:08ID:???いつのまにかファイルが作成されていてビックリです。
ディレクトリのパスは[0777]以外はダメなのですよね?
もしかしたら、最初[0755]になっていたので
それを変えて実行されたのかと思います。
文がまとまってませんが、お手数おかけしました。
0441433
2006/06/16(金) 01:08:19ID:???ともあれ解決して良かった。
0442nobodyさん
2006/06/16(金) 02:24:31ID:???echo "len: $lenm";//len: 100m と間を空けたくない場合は
echo "len: ".$len."m";
とするしかないですか?
0443nobodyさん
2006/06/16(金) 02:48:29ID:???でもおk。
0444nobodyさん
2006/06/16(金) 03:24:36ID:2zUyZAya<?=preg_replace("/[0-9]/","",$test]) ?>
で、出来ました。
そしてこの数字を取り除いた後の文字(例えば”テスト”)と比較する為に
$test2=preg_replace("/[0-9]/","",$test]) ;
if($test2=="テスト"){
echo"テストです";
}
みたいなことをしたかったのですが、$test2に数字を取り除いた後の文字が
入りません。こういう場合、どうしたらいいのでしょうか?
0446nobodyさん
2006/06/16(金) 03:35:24ID:???preg_replace("/[0-9]/","",$test);
0447nobodyさん
2006/06/16(金) 03:39:34ID:???単なる確認ミスかなんかだと思う。
$test2=preg_replace("/[0-9]/","",$test);
の次の行で
echo "test=[$test] test2=[$test2]";
って入れてみれば。
0450nobodyさん
2006/06/16(金) 08:07:44ID:Zr6gS6bm亀レスすいません、ありがとうございます。
おっしゃるとおり文字コードでした。
おかげさまでエロい正規表現ができました。感謝です。
0451nobodyさん
2006/06/16(金) 12:41:51ID:???<< ってなにをする物でしょうか?
こんな感じで使われていたのですが、具体的に何をやっているか分かりませんでした。
13 << 22
0452nobodyさん
2006/06/16(金) 12:49:43ID:???http://php.s3.to/man/language.operators.bitwise.html
0453452
2006/06/16(金) 13:03:59ID:???<?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;
?>
0454nobodyさん
2006/06/16(金) 15:55:13ID:???$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
0455nobodyさん
2006/06/16(金) 16:26:24ID:???0457nobodyさん
2006/06/16(金) 17:13:43ID:qTIfB6oI0458nobodyさん
2006/06/16(金) 17:22:34ID:???0459nobodyさん
2006/06/16(金) 17:24:40ID:???何か3Dポリゴンの計算とかか
数学系の関数とかワケワカメな馬鹿な俺に教えてくれ
0460nobodyさん
2006/06/16(金) 19:03:29ID:???3Dの計算とかは普通に算術でやるんじゃないかな。
ビット演算でやるのはバイナリファイルの生成とかCRCの計算とか
フラグ値の処理とかそんな類じゃないの。
情報処理系の計算であって数学系の計算ではないな。
0461nobodyさん
2006/06/16(金) 19:29:35ID:???ラジアンとか平方根とか意味は分かるけど、使用するシチュ(アプリ)が思い浮かばん
0462nobodyさん
2006/06/16(金) 19:38:05ID:???0463nobodyさん
2006/06/16(金) 19:38:10ID:u2m80wFk0464nobodyさん
2006/06/16(金) 19:39:08ID:???0466nobodyさん
2006/06/16(金) 20:11:51ID:???ここを頼りにローカルでphpが動くようにPHPのパッケージをインストールしました。
インストールと設定が終わってブラウザから、ローカルのPHPファイルアクセスしました。
ページがブラウザに表示されるはずなんですが、ファイルをダウンロードしようとしてしまいます。
設定が間違っているんでしょうか?
0467nobodyさん
2006/06/16(金) 20:12:10ID:???俺の頭が固いんだろうなぁ。
0468nobodyさん
2006/06/16(金) 21:21:56ID:???俺Apacheしか使ったことないからなんともいえないけど
100%AN HTTPDの設定が間違ってる
ちゃんと再起動したか?
0471nobodyさん
2006/06/16(金) 22:46:17ID:???>>469
ご親切にありがとうございます。直りました。
おそらく環境変数でpathが通っていなかったのか、
an httpdの実行プログラムの拡張氏に
.を入れてなかったのが原因のようです。
0472nobodyさん
2006/06/16(金) 23:27:35ID:???グラフを作成するとして、
1:Aだけ値がある場合
A:///////////////////////10
2:AとBそれぞれ値がある場合
A://///10
B://////////20
/は画像のwidhtのサイズだとします。上記のように合計の値によって
グラフの幅が可変するようにしたいのです。
どのような考え方で計算式を組めばよいのでしょうか?
0473nobodyさん
2006/06/16(金) 23:58:25ID:???sum = valueA + valueB + ...
widthA = valueA / sum * max_width
widthB = valueB / sum * max_width
...
で、いいの?max_widthも変わるの?
こういうのを多少なりとも楽しんでやれないようならプログラムは向いてないと心底思うよ?
0474nobodyさん
2006/06/17(土) 00:16:32ID:???ありがとうございます。理数系が苦手で、こういう計算式を考えるのに
頭を悩ませていたのですが、仕事で覚える必要があり、あれこれやってました。
参考にします。ありがとうございました。
0475nobodyさん
2006/06/17(土) 00:39:49ID:???これ、算数レベルだよ
0476nobodyさん
2006/06/17(土) 00:46:58ID:???数学苦手な人には大変だと思うよ。数字関係は。
0477nobodyさん
2006/06/17(土) 00:49:55ID:???0478nobodyさん
2006/06/17(土) 00:57:51ID:???数学苦手な人には大変だと思うよ。ピストン運動関係は。
0479nobodyさん
2006/06/17(土) 00:58:37ID:???割り出す式を考えるのに10分掛かったぜ。DQN高卒マンセーだぜ。
0480nobodyさん
2006/06/17(土) 00:59:40ID:???0481479
2006/06/17(土) 01:02:02ID:???0483nobodyさん
2006/06/17(土) 02:26:42ID:???どのように処理したらいいでしょう?
ソフト
%83%5C%83t%83g
ャtト
ってなっちゃいます
0484nobodyさん
2006/06/17(土) 02:32:11ID:???追加すいません
if (stristr($str, $word))
のような処理です
0485nobodyさん
2006/06/17(土) 02:46:04ID:???SJISを使うのをやめる
まあ携帯だとそうもいかないが・・・
よくある質問と思われるのでこの辺参照
ttp://jp.php.net/manual/ja/security.magicquotes.php
ちなみに'\'(バックスラッシュ)=%5C
というか情報が小出し過ぎてそれ以上はワカンネ
0486nobodyさん
2006/06/17(土) 02:57:49ID:???0487nobodyさん
2006/06/17(土) 03:24:50ID:???マウスで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のバグなのでしょうか・・・??
0488nobodyさん
2006/06/17(土) 03:36:34ID:???ありがとうございました。
>>486
たいへんなヒントでした。
原因は・・
stripslashesでした
スイマセンスイマセン
0489nobodyさん
2006/06/17(土) 04:33:03ID:???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>
とでも。
0490489
2006/06/17(土) 04:41:22ID:???どうしても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以外考えるといいかもしれない(なんとなく
0491nobodyさん
2006/06/17(土) 05:16:42ID:???そうだったんですか! それは全く知りませんでした。
しかし変な仕様ですね・・・ IEって・・・
とにかく助かりました。ありがとうございます!!
0492nobodyさん
2006/06/17(土) 05:35:51ID:???データベースとの接続部分(mysql_connect関数の実行)で、
だいたい0.001秒〜0.01秒もかかっていることが分かりました。
これを速くするにはどういう解決法がありますでしょうか?
たとえばスクリプト終了後もMySQLとのコネクションをプールして保持し続けられたら
次回の起動時にもそのコネクションを再利用できて速度アップにつながると思うのですが、やり方が分かりません。
0493492
2006/06/17(土) 05:38:31ID:???0494nobodyさん
2006/06/17(土) 08:50:38ID:???defineで宣言した定数をヒアドキュメント内で表示することは可能ですか?
0495nobodyさん
2006/06/17(土) 08:54:44ID:???出来ますでしょうか?
HTMLのinput type="file"で1つずつファイルを選んでアップロードする方法で
現在対応しているのですが、複数ファイルある場合、めんどうになります。
出来ればフォルダを選択してすべて送信、などが出来ればと思っています。
0497nobodyさん
2006/06/17(土) 09:19:41ID:???試したんですけど、
define("NAME", "0123");
print <<< HTML
NAME
HTML;
これだと NAME が表示されます
{NAME}
としても {NAME} が表示されます
変数に代入して
${NAME}
とするしかないのでしょうか
0498nobodyさん
2006/06/17(土) 09:25:30ID:???>0.001秒〜0.01秒もかかっている
充分優秀な値だと思うけど。
もしかしてひとつのリクエストの中で何度も
コネクションの張ったり切ったりしてる(悪い設計)の?
あとマニュアル読んで問題がでる可能性も承知の上で
mysql_pcconect()を使う。
0499nobodyさん
2006/06/17(土) 09:46:11ID:???$text = ":55 aaa.html";
echo ereg_replace("^[^a-zA-Z]+[[:space:]]", "" $text);
$textの内容はlsで取得した情報をsubstrで抜き出したものです。
最初のコロンは時間の「○時○分」の区切りのコロンです。
コロンはあるかもしれないし、無いかもしれない文章が混在しています。
その後に二桁の数字が入って、スペースが入って英数字記号若しくは日本語のファイル名が来ます。
最終的に一番最後のファイル名だけを抽出しようと思ってます。
英数字記号なら簡単なのですが場合によっては日本語のファイルがある場合もあるのでなかなかうまくいきません。
どう書けばよろしいでしょうか。 よろしくお願いします。
0500499
2006/06/17(土) 09:50:01ID:???echo ereg_replace("^(:|[0-9]{1,2})+[[:space:]]", "" $text);
板汚しすみませんでした。
0502nobodyさん
2006/06/17(土) 12:37:05ID:???a.phpで
echo <img src=\"hoge.php?id=$id\">;
と記述して、指定された別ファイルの
hoge.php で、
$id = $_GET["id"];
としても値が受け取れません。
print_r($_GET)とすると、空でした。
色々調べたのですが、さっぱりでした。
どうも基本的な見落としをしているみたいなのですが、別ファイルにリンクを使ってデーターを送信するにはどうしたらいいのでしょうか。
回答をお願いします。
0503nobodyさん
2006/06/17(土) 13:00:00ID:???0505nobodyさん
2006/06/17(土) 13:06:41ID:???hoge.phpを<?php phpinfo(INFO_VARIABLES); ?>として
ブラウザで直接http://example.com/hoge.php?id=123にアクセスしたら
パラメータとして取れてるか?
あと当たり前だが、ブラウザで画像を表示する設定にしてないと
img srcで指定しても呼ばれない。
0506nobodyさん
2006/06/17(土) 13:19:25ID:???いま試したら受け取れていませんでした。
img srcでなくて、a href と変更したらしっかりと受け取れていました。
img タグの場合はGET送信できないのでしょうか?
イメージ的には、img タグで画像を生成するphpファイルを呼び出し、
親ファイルに生成された画像を表示するという形を考えていたのですが。
0507nobodyさん
2006/06/17(土) 13:35:09ID:???>img タグの場合はGET送信できないのでしょうか?
いや問題ない。静的なhtmlにimgタグで該当のphpスクリプトを指定、
変数でやってる$idの部分も実際に値を指定して試してみな。
それと動作確認は、imgタグでやってるからにはimage/hogeが出力されることが期待されてるのだから、
echoなんぞで単純にtext/hogeの文字出力で確認なんぞは出来ないからな。
logファイルに出力するとか、画像として文字を書き出すかだ。
0508nobodyさん
2006/06/17(土) 14:01:49ID:???ありがとうございます。静的なHTMLに出力させて何度かテストさせると上手く解決できました。
やはりechoを使えないという点で手間取っていたみたいです。
0509nobodyさん
2006/06/17(土) 14:05:32ID:???画像を出力するhoge.phpでどうやって$_GETの中身を確認したのかが気になる。
実は取れてるけどそれを確認できてないというセンが怪しいと思うなあ。
0510nobodyさん
2006/06/17(土) 14:06:40ID:???0511nobodyさん
2006/06/17(土) 15:17:26ID:ZJRj0raGhtmlspecialchars($_POST)とやって、フォームからの値を
まとめてサニタイズしようとしているのですが、これはセキュリティ的にみてダメですか?
そのほかにもaddslashes($_POST)とか、一個一個やるのが面倒なので、まとめてやりたいのですが、これってどうなんですかね?
0512nobodyさん
2006/06/17(土) 15:34:37ID:???http://takagi-hiromitsu.jp/diary/20051227.html#p02
0514nobodyさん
2006/06/17(土) 16:18:36ID:???それで動くのなら好きにすればいいんじゃない? …動くものならな。
マニュアルにはhtmlspecialchars()もaddslashes()もStringしか受け付けないように書いてある。
それと、よほど変にいじった環境でも無い限りaddslashes()は通常は必要ない気もする。
http://php.s3.to/man/function.htmlspecialchars.html
http://php.s3.to/man/function.addslashes.html
>>513
** いわのなかにいる! **
0515511
2006/06/17(土) 16:24:05ID:ZJRj0raGレスどうもです。
ようするに、むしろ全部まとめてhtmlspesialcharsする方が自然ってことですかね?
0516510
2006/06/17(土) 16:32:17ID:ZJRj0raGレスどうもです。
まとめてやっても動くようです。$_POSTの中には数値というか整数型もありますが、エラーも出ないような...。
セキュリティについての本を買ったのですが、その中ではSQLインジェクション対策として、SQL文中の変数(文字列型)にはaddslashesをかけろと書いてあったのですがそうでもないんですかね?
0517nobodyさん
2006/06/17(土) 16:47:44ID:???> 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()をするのも自由ではないでしょうか。
0518nobodyさん
2006/06/17(土) 17:21:32ID:???>>517
本家にマニュアルがあるのに、そこのマニュアルを薦めるのはヤメれ。
0520510
2006/06/17(土) 17:31:16ID:ZJRj0raGれすありがとうございます。
スミマセン、僕が間違ってました。error_repoting(4)とやっていましたorz。
たしかにWarning出ますね。
マニュアルのaddslashesの項目、大変参考になります。magic_quotes_gpcはデフォルトでonなんですね。
丁寧にありがとうごいます。
>518
ありがとうございます。
array_mapという手がありますか。
そもそもhtmlspecialchars($_POST)みたいな「発想」自体がアリなのかどうかということなんですが、どうなんでしょうか?
それと全然別の質問になってしまうのですが、基本的にはnotice系のエラーも全部潰すべきなんでしょうか?(自分はうっとうしいのでerror_repotingって書いちゃうんですけど...。)
0521nobodyさん
2006/06/17(土) 17:39:08ID:???>htmlspecialchars($_POST)
この発想はありだろ。
誰かがローカルからHTML改変してPOSTしてきても使用しなけりゃOKだし
PHPには良く使われる処理なんかは関数として用意されてる場合が多いので
やりたいことがあったら検索して見つけウマーって脳汁コンボになりやすい
0522nobodyさん
2006/06/17(土) 17:49:29ID:ZJRj0raGれすどうもです。発想はアリですか。
ただほんとにやると517さんのエラーが出るので、518さんのように別の関数を用意したりするのが吉ですかね。
いま試したんですが、htmlspecialchars(extract($_POST))はアリですかね?
ちゃんとタグが無効になってwarningも出ないようです。
0523nobodyさん
2006/06/17(土) 17:51:05ID:???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;
}
こうですか? わかりません!><
0524nobodyさん
2006/06/17(土) 17:54:04ID:???具体的にはroot所有のディレクトリへのデータの入出力を行いたいのですが、
ブラウザ側からだとApache権限で動くため書き込むことは出来ません。
SSHやコマンドラインからphpを実行すればrootで動きますが
ブラウザ操作で達成できることに意味をなす内容のためその手段を選択することは出来ません。
Cronジョブの利用も同様に即内容を反映させる必要があるため利用できません。
セキュリティ面の問題抜きで可能か不可能かという場合そのような操作は可能でしょうか。
よろしくお願いします。
環境:Linux(FC3) php-5.1.4 root権限を所持している状態です
0525nobodyさん
2006/06/17(土) 17:56:09ID:???http://jp.php.net/manual/ja/function.extract.php
> 警告
> extract() をユーザー入力 ($_GET, ...) のような信頼できないデータについて使用しないでください。
> もし行う場合、例えば register_globals を信頼しているような古いコードを一時的に実行したい場合、
> EXTR_SKIP のような extract_type の値が上書きされていないことを確認してください。
> そして php.ini の variables_order で定義されたものと同じ順で展開すべきであることに留意してください。
というか普通にforeach()使っちゃダメなん?
0526nobodyさん
2006/06/17(土) 18:00:01ID:GQE5aPRkDB 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)です。
0527nobodyさん
2006/06/17(土) 18:18:44ID:???のように、濁音を取るように変換するような一発関数はあるでしょうか?
0528510
2006/06/17(土) 18:20:56ID:ZJRj0raGレスどうもです。
extractがダメですか。
foreachを使うと言うことは、
$hoge = $_POST[0];
$hoge1 = $_POST[1];
$hoge2 = $_POST[2];.....続く
みたいに、一個ずつPOSTの値を取り出すのと変わらないですよね?
そうすると、結局いっこずつhtmlspecialcharsということになりますよね。
別にそこまでだわらないので、一個づつでもいいんですけど、
>521さんも発想としてはOKと言われていますし、
foreachを使って、安全に値を取り出しつつまとめてタグ除去とかできないものかと...。どうでしょうか?
0530527
2006/06/17(土) 18:30:16ID:???$w = mb_convert_kana($w, "h");
$w = str_replace('゙', '', $w);
$w = str_replace('゚', '', $w);
$w = mb_convert_kana($w, "H");
echo $w;
とりあえず上記ので騙し騙しやることにしましたが、簡潔な方法があったらおしえてくださ。
0531nobodyさん
2006/06/17(土) 18:32:18ID:???あっても需要少なそうだしその程度ならfunctionで作れるくない?
ereg_replaceとifだけで作れそうな希ガス。
0532nobodyさん
2006/06/17(土) 18:39:52ID:ZJRj0raGすいません。焦りすぎて謎なこと書いてしまいましたorz
要するに$_POSTの値をextractを使わずに$key = $_POST[key]みたいにしたくて、
結果として取り出した$key達に一括でhtmlspwcialcharsをかける方法です。
わかりずらくてすみません。
0533nobodyさん
2006/06/17(土) 18:40:59ID:NaIxFncOPHPでURLに変数を受け渡しする記述のことです。
index.php?no=2
というnoという変数のほかにaという変数も渡したい場合どうなりますか?
一応
index.php?no=2,a=1
みたいになるのかなと思っていますが。正しい記述を教えて下さい。
0534nobodyさん
2006/06/17(土) 18:49:18ID:???それ以外でやるなら
$string = "はげふげほげもげぱげ";
$search = array(
"が", "ぎ", "ぐ", "げ", "ご",
"ざ", "じ", "ず", "ぜ", "ぞ",
"だ", "ぢ", "づ", "で", "ど",
"ば", "び", "ぶ", "べ", "ぼ",
"ぱ", "ぴ", "ぷ", "ぺ", "ぽ",
"ガ", "ギ", "グ", "ゲ", "ゴ",
"ザ", "ジ", "ズ", "ゼ", "ゾ",
"ダ", "ヂ", "ヅ", "デ", "ド",
"バ", "ビ", "ブ", "ベ", "ボ",
"パ", "ピ", "プ", "ペ", "ポ",
);
$replace = array(
"か", "き", "く", "け", "こ",
"さ", "し", "す", "せ", "そ",
"た", "ち", "つ", "て", "と",
"は", "ひ", "ふ", "へ", "ほ",
"は", "ひ", "ふ", "へ", "ほ",
"カ", "キ", "ク", "ケ", "コ",
"サ", "シ", "ス", "セ", "ソ",
"タ", "チ", "ツ", "テ", "ト",
"ハ", "ヒ", "フ", "ヘ", "ホ",
"ハ", "ヒ", "フ", "ヘ", "ホ",
);
print str_replace($search, $replace, $string);
こうかな。
0535nobodyさん
2006/06/17(土) 18:50:56ID:???index.php?no=2&a=1
厳密には
index.php?no=2&a=1
と書くといいらしいよ。
というかこれはPHPの質問じゃなさす。
0537527
2006/06/17(土) 18:52:50ID:???なるほど。引数の1番目と1番目を、同じサイズの配列で対応できるのですね。
一旦半角カナに変換するのはなんとなく嫌なので、
それを採用してみたいと思います。
ありがとうございます。
0538521
2006/06/17(土) 18:53:10ID:???$_POST = array_map( 'htmlspecialchars' , $_POST );
何故518からの話の流れで532になるのか分からん。
ググレカス
0539nobodyさん
2006/06/17(土) 19:01:21ID:???未だに何が言いたいのか良く分からんのだが、
htmlspecialchars()はArrayを受け付けないんだから
何をどうしようと処理上は要素を一個ずつ取り出して
Stringとしてかけることになるんじゃないの?
foreach ($_POST as &$value) { htmlspecialchars($value); }
でも>>538でも>>523でも、どれでも結局は同じことだと思うのだが…。
0540nobodyさん
2006/06/17(土) 19:02:11ID:NaIxFncOありがとうございました。
そう言われればPHPというよりHTMLの基礎なのかも知れません。w
スレ違いで失礼しました。
0542nobodyさん
2006/06/17(土) 20:13:15ID:vT2D8NFi書き込んだときに、青色の数字だす?→526みたいなのって どうやるんですか??
0544nobodyさん
2006/06/17(土) 20:21:10ID:???マニュアル読もうね。
http://info.2ch.net/guide/faq.html#D5
0545nobodyさん
2006/06/17(土) 20:32:43ID:???0547nobodyさん
2006/06/17(土) 22:20:39ID:???もう一度読み直せ。
それでも解らないなら小学校か日本語学校からやり直せ。
あと
$_POSTや$_GETをextractすることの危険性
http://www.google.co.jp/search?q=%24_POST+%24_GET+extract+%E5%8D%B1%E9%99%BA&start=0&hl=ja&lr=lang_ja&ie=utf-8&oe=utf-8&client=firefox&rls=org.mozilla:ja:official
0548nobodyさん
2006/06/17(土) 22:36:28ID:???余分なパラメータは削ろうぜ。
0549nobodyさん
2006/06/17(土) 22:46:20ID:???ttp://chronicle.jp/subject.php
PHPを使ってるみたいですが、これのやり方を誰か詳しく教えてください
0551nobodyさん
2006/06/17(土) 22:54:04ID:???0552nobodyさん
2006/06/17(土) 23:00:04ID:???そんなひとつのサービスまるまるを
詳しく説明なんてできないよ
もっと、質問内容をしぼってくれ
0553nobodyさん
2006/06/17(土) 23:08:55ID:???>>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;
?>
もしくは該当ページのソースを全部コピーして貼り付けて保存。
これでバッチリ同じものができあがります。お試しあれ!
…あ、お礼なんていいですよ^^
0555nobodyさん
2006/06/17(土) 23:17:40ID:???悪意があって無視してるんじゃなくて、今ここにいる人では分からないんです。
大人しくエロい人の登場を待って下ちぃ。
0556nobodyさん
2006/06/17(土) 23:32:50ID:???http://ns1.php.gr.jp/pipermail/php-users/2003-January/012428.html
0557nobodyさん
2006/06/17(土) 23:48:36ID:???<わからない五大理由>
1. 読まない ・・・説明書などを読まない。読む気などさらさらない。
2. 調べない ・・・過去スレ、ググるなど最低限の内容も自分で調べようとしない。
3. 試さない ・・・めんどくさいなどの理由で実行しない。する気もない。
4. 理解力が足りない ・・・理解力以前の問題で理解しようとしない。
5. 人を利用することしか頭にない ・・・甘え根性でその場を乗り切ろうとする
<回答が無い理由>
1. 誰も知らない
2. 質問文が意味不明
3. 知ってるが、お前の態度が気に入らない
脱!教えて君同盟
ttp://myu.daa.jp/osiete/
0558nobodyさん
2006/06/18(日) 00:13:26ID:???スマン、俺にはやり方はわからないよ。
結局のところPHPを実行するユーザはapacheなんだから通常のやり方では無理だと思う。
あ、書いてて閃いたぞ!
1:bashとかで書かれたファイルを用意する(内容はスイッチユーザ、実行したいPHPファイルの実行)
2:ブラウザから叩かれたPHPファイルが1で書いたシェルファイルをキックする
3:2でキックされたシェルファイルが>>554が実行したいPHPファイルをキックしてウマー
これでどうだ?
0560nobodyさん
2006/06/18(日) 00:46:49ID:3xsAOr6zasort($array2);
print_r($array2);
Array (
[a] => 5
[g] => 7
[p] => 8
)
と出ますよね。
これを一番最初の変数をechoで
echo $array2[a];
だったら順番が違っても5しか出ませんよね。
順番によって一番上のを出力させたいのですが、どうすればよいですか?
0561nobodyさん
2006/06/18(日) 01:04:32ID:???こうっすかねえ。
echo current($array2);
http://www.php.net/manual/ja/function.current.php
0562nobodyさん
2006/06/18(日) 11:10:00ID:???現在、CSVファイル形式でデータを扱っています。
ファイルからデータを読み取るさい、
while(list($id, $name, $pos_x, $pos_y) = fgetcsv($file, 1000, ",")) {
としています。
しかし、これではlistの項目が増えた場合には随所変数を書き直さないといけないという手間があります。
これを
array("id","name,"pos_x","pos_y");
という配列の要素などを使って動的に扱うことはできないのでしょうか?
現在は、list()を使わずに配列に収め、一つ一つの変数それぞれをget関数を経由して取得するパターンを考えています。
もし良いテクニックなどがあれば教えてください。よろしくお願いします。
0564nobodyさん
2006/06/18(日) 11:44:38ID:???うーん。ちょっと考えてみたのですが、うまい使い方が思いつきませんでした。
もしよければ一行目にカラム名を設定して、それをどう変数名として扱うのか教えてもらえませんでしょうか。
ちなみにレンタルサーバーでDBが使えないため、自分でデーターの管理をファイルで行いたいなと考えています。
0565nobodyさん
2006/06/18(日) 12:29:59ID:???まずフィールド名を作る
配列にしとく
$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
0566562
2006/06/18(日) 12:31:00ID:???// 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;
}
}
で、いけるような気がしてきました。試してみます。
0568562
2006/06/18(日) 12:36:31ID:???array_combine()は便利ですね。こういうのを探してました。これで上手くいくと思います。
ありがとうございました。
0569nobodyさん
2006/06/18(日) 16:17:49ID:???PHPでローカルにあるCSVのデータをSQLiteにINSERT(インポート?)するには
どういう方法がありますでしょうか?
0570nobodyさん
2006/06/18(日) 16:25:04ID:pp5MYlMG元となる画像に、文字を縦書きで乗せたいのですが効率的な方法はあるのでしょうか?
外道ジェネレーターの縦書きバージョンのようなものを作りたいのですが
フリーの縦書きフォントが中々見つからず(そもそも私の発想が違うのかもしれません)、
sazanami等のフォントで一文字一文字区切ってならべても「ー」等の処理に困る始末です。
よろしくお願いします。
0571nobodyさん
2006/06/18(日) 17:53:06ID:???0572nobodyさん
2006/06/18(日) 18:00:40ID:???ローカルで 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);
0573nobodyさん
2006/06/18(日) 18:07:41ID:???0575nobodyさん
2006/06/18(日) 18:15:02ID:???xml_set_element_handler ( int parser, string startElementHandler, string endElementHandler )
二番目の引数にstring 入れますよね。
classつくって、そのクラスのメソッドを指定したんですけど、
Warning: xml_parse() [function.xml-parse]: Unable to call handler
になってしまいます。
そのclassを使用するところにファンクションをつくって
そのファンクション名を引数に指定したんですが、駄目でした。
どのように指定するのでしょうか。
0577nobodyさん
2006/06/18(日) 18:27:24ID:???検索しようにもキーワードが思い浮かばず…。
なんて関数でしたっけ?
0578nobodyさん
2006/06/18(日) 18:28:29ID:???0579nobodyさん
2006/06/18(日) 18:31:14ID:???0581nobodyさん
2006/06/18(日) 21:50:32ID:???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(ラジオボタン)のボという字が問題みたいなのですがどうしたら良いか教えてください
※ 例えば、ラジオ と入れるだけならちゃんと表示されます。
宜しくお願い致します。
0583nobodyさん
2006/06/18(日) 21:58:46ID:???0584nobodyさん
2006/06/18(日) 22:48:41ID:???どうすればよいのでしょうか?
htmlにincludeは無理ですよね
0585nobodyさん
2006/06/18(日) 22:54:53ID:???0588nobodyさん
2006/06/19(月) 00:08:41ID:???鯖の設定次第じゃなかったっけ?
*.htmlでもPHPとしてちゃんと認識してくれるような設定になってるとこも
あったと思う。
0589nobodyさん
2006/06/19(月) 00:14:28ID:???<html>
略
</html>
<?php
fclose(output);
sleep(5); // 重い処理
?>
的なことがしたいのですが。
0591nobodyさん
2006/06/19(月) 00:30:50ID:???ソースっても...山ほどあるからぐぐれw
少なくてもApacheとIISには拡張子で
振り分ける機能が普通にある。
0592nobodyさん
2006/06/19(月) 00:39:34ID:???<?php ?>が含まれてない.phpファイルがあってもいいように
単に.htmlをphpパーサに渡すだけじゃん。
ソースとかの問題じゃないよ。
0593nobodyさん
2006/06/19(月) 00:48:00ID:???拡張子がphpやcgiだとCGIとばれるからアタックを受けやすい
だからセキュリティに厳しいとこはよくやってる
ソース欲しいならApacheの設定ファイル(httpd.conf)でも見て来い
UNIXは拡張子でOSが勝手に実行アプリを判断することなんてないからな
0594nobodyさん
2006/06/19(月) 00:53:02ID:???htmlファイルなのにアクセスするたびにソースが変わったりしてたような。
0595nobodyさん
2006/06/19(月) 00:56:48ID:???> RSSフィードを作るのに FeedCreator.class.php 以外に良いものってありますか?
これスレ違いでしたかね…
みんな自分で書いているのでしょうか
0597nobodyさん
2006/06/19(月) 01:05:06ID:???英数字が混ざったファイル名が多いじゃないですか
これを上手く表示させるために
$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 という値が入ってしまいます。
これはどのように回避すればよいでしょうか?
0599nobodyさん
2006/06/19(月) 02:14:33ID:???sprintf()でフォーマットを整形すれば良いんだけど、
http://jp2.php.net/manual/ja/function.sprintf.php
どうせやるならreaddir()でファイル名の一覧を取った方がよろしいかと。
http://jp2.php.net/manual/ja/function.readdir.php
0600nobodyさん
2006/06/19(月) 04:36:38ID:???1<>2<>3<>0<>\n
2<>3<>0<>1<>\n
3<>0<>1<>2<>\n
このように<>区切りで情報が書かれているテキストで、
任意の列を基準にソートするには、どうすれば良いのでしょうか。
0601nobodyさん
2006/06/19(月) 10:00:33ID:Pg3y549Iusortを使えばできなくはない
0602nobodyさん
2006/06/19(月) 10:09:13ID:???データがさほど多くないのならfileで全部読んで
explodeを使って目的の列のデータで配列を作ってその配列をasortかarsortして
そのキーの並び順通りにファイルに書き出すなり使うなりすればいい
多いのならデータベースを使うべき
0603nobodyさん
2006/06/19(月) 10:21:16ID:ywXHAQss僕の買った本にはPHPは変数を初期化しなくても使えるから気にするなみたいに書いてあるのですが、一説には初期化しないとセキュリティ的にダメとか...。
くだらないですが、宜しくお願いします。
0604nobodyさん
2006/06/19(月) 10:31:31ID:???ただ、使い捨てのコードならともかく、長く利用するコードなら
その変数が初期化忘れてでたまたまうごいているのか、
意味があって未定義にしているかが、わからないと
数ヵ月後に、もう一度そのソースを見たときに苦労することになる
0605nobodyさん
2006/06/19(月) 10:58:17ID:???認証okならセッションにログイン情報を格納して、"logout.php"へのリンクを踏むと
ログアウト処理してトップ画面を表示
ということがしたいのですが、ブラウザのURL入力欄に"〜sample/logout.php"と出てしまいます。
これを"〜sample/"と表示させるにはどうしたらいんでしょうか?
logout.php内で ログアウト処理の後にheader("index.php") 記述しても
ログアウト処理を踏まずindex.phpへ飛んでいるようです
参考になるHPなどあればご指南お願いしますm(_)m
0606nobodyさん
2006/06/19(月) 11:03:37ID:ywXHAQssありがとうございます。
セキュリティ的には問題ではないのですね。
逆に、未定義にする意味というか、未定義にしておく必要がある状況というのはどんなときですか?
0607600
2006/06/19(月) 11:20:24ID:???ありがとうございます。usort関数についてはよく知らないので、
この後調べてみることにします。
>>602
ありがとうございます。確かにそれだと、うまくいきそうです!
>>601さんと>>602が教えてくださった方法で速度を比べて、
速そうなほうを使ってみたいと思います。ありがとうございました!
0608nobodyさん
2006/06/19(月) 11:32:52ID:ywXHAQssextract($_POST)とやるのと、
$username = $_POST['username']とやるのはどこがどう違うのですか?
どちらも$usernameとして使えるようになりますが、前者は御法度ということになっていますよね?
0611nobodyさん
2006/06/19(月) 11:56:20ID:???データーのURLには特殊文字が含まれていていいもの?
それとも変換しておいたほうがいいの?
0612nobodyさん
2006/06/19(月) 11:56:59ID:???0とfalseとnullに違いを持たせるとき
C言語のほとんどの環境ではそれらはすべて0と同じ意味だけど
PHPなどはそれぞれ意味が違う
そのため
if (!$foo)
というコードを書いたときに $foo は0、false、null全てを許すのか
それとも
if ($foo === 0)
を簡略して書いたかを明確にしていないと、バグの原因になったりする
$foo = 0;
この初期化を通らないと
if ($foo === 0)
は警告が出る。これは、$foo にfalseやnullではなく数値の0が
入ってくることを期待する処理となる
0614nobodyさん
2006/06/19(月) 12:03:49ID:ywXHAQssすごく分かり易いです。ありがとうございます!
0615nobodyさん
2006/06/19(月) 12:10:27ID:???$name = ""; // 名前格納用
$age = 0; // 年齢格納用
とか宣言してから使うようにするといいってことだね><
0616608
2006/06/19(月) 12:56:16ID:ywXHAQss>4を読んで試したのですが、いまいちピンと来ないです。
extract($_GET)の場合だと、パラメータに付けた任意の値が代入されてしまいますが、extract($_POST)変数が上書きされることはないような気がします。
>4を読んで_GET[hoge]=fugefugaという値を送ってみたのですが、確かにextractによって$_GET[hoge]=fugafugaが成立(?)してしまいますが、例えばフォームに_POST[hoge]=fugafugaと入れてサブミットしても、extractで展開されて上書きという風にはならないです。
なんだか混乱していますが、extractが致命的な例を知りたいです。宜しくお願いします。
0617nobodyさん
2006/06/19(月) 12:57:29ID:ywXHAQss○ extract($_POST)の場合、変数が
0618nobodyさん
2006/06/19(月) 13:09:54ID:???0620nobodyさん
2006/06/19(月) 13:28:32ID:???試してないけど、こういうのってヤバくね?
つか、ヤバいですか?
<form action="http://>>616のサーバ/該当のスクリプト.php" method="post">
<input type="text" name="_SESSION[hoge]" value="fuga">
<input type="sumit" value="送信">
</form>
自分が知ってるのは「送信フォームが必ずサーバ上のHTMLから実行されるわけじゃないから気をつけろ」ということだけ。
個人のPC上にフォームをコピってきて、改変して実行される可能性もあるって教わったです。
つか、extractなんて初めて知った
0623nobodyさん
2006/06/19(月) 14:19:12ID:???PHPとPostgresqlでツールを作ろうと考えています。
たとえば住所録で都道府県をセレクトボックスで入力する際に
001 北海道
002 青森
・・・
といった選択肢を
1.テーブルを作っておくか、配列をファイルに書いておいてrequireするか
2.北海道なら"北海道"で持ってていいのか、001を持っておいて表示する際は$pref[ 001 ]みたいにするのか
ex.そもそもPostgres系のスレでするべき質問か
どうするのがベターなのでしょうか
0625nobodyさん
2006/06/19(月) 14:25:44ID:ywXHAQssレスありがとうございます。
確かにそれは見ただけでヤバそうですね。面倒だけど、
$hoge = $_POST['hoge'];
$fuga = $_POST['fuga'];
(以下項目数ぶん続く)
とやるのが一番安全確実なんですかね?
でもやっぱなりextractが御法度のがわからんですorz
registar_globals = OnはPOSTも変数上書きできたのでダメなのは分かったのですが...。
0627nobodyさん
2006/06/19(月) 14:50:56ID:???都道府県名が変更されることを考慮するか、
変更されたときに変更以前に選択された結果へ伝播するようにするか、
入力されたデータの使い道はなんなのか
など様々な条件によって異なってくるよ。
>ex.そもそもPostgres系のスレでするべき質問か
システム設計について基礎から学ぶのが正解
0628nobodyさん
2006/06/19(月) 15:16:41ID:???(1) 都道府県なんてほぼ変更ないだろうということで、別ファイルで配列作りインクルード
$pref[001] = '北海道';
$pref[002] = '青森県';
$pref[048] = '沖縄県';
(2) またはDBで別テーブルにしてJOIN
(1)は管理などが楽で直感的、PHP側が(2)と比べると冗長になる可能性はある。
DB側はPrimaryKeyで数値にして、SQL文も単純になりDB容量もすこーーし小さくなる。
ループ処理で "<td>$row[$i]</td>" とかしたいなら(2)かな
検索フォームも作りDBから抽出したりするなら(2)のほうが楽
0629nobodyさん
2006/06/19(月) 15:35:15ID:???"<td>".$pref[$row[$i]]."</td>"
(1)でもこうやればいいだけだから、これは(2)の利点として挙げるのは変だよ
0630nobodyさん
2006/06/19(月) 16:16:24ID:???0631nobodyさん
2006/06/19(月) 17:10:13ID:???>>4を読んでも分からんのならもう分からないままで良いんじゃない?
誰もextract()が絶対ダメとか言ってないわけでさ、
別に問題ないケースもあるわけだから。
多分君のスクリプトでは問題は起こらないんだよ。
0632nobodyさん
2006/06/19(月) 17:13:46ID:???そんなの作る人の趣味で決めて良いと思う。
俺なら$_POST['location'] = "北海道"で済ますなあ。
0634nobodyさん
2006/06/19(月) 17:24:22ID:???while ( $row = mysql_fetch_array($res) )
{
echo "<tr>";
foreach ($row as $cell) { echo "<td>$cell</td>"; }
echo "</tr>";
}
0635nobodyさん
2006/06/19(月) 18:42:40ID:???if ( hogehoge ) {
$file = "hoge.php";
}
if ($file) {
include($file);
}
こんな馬鹿なコードを書かないようにね!!
0636nobodyさん
2006/06/19(月) 21:41:13ID:???「オープンソース徹底活用
EclipseによるPHPスクリプト開発」
という本があって良さそうなのだけど、古い本のもよう。
今時の新しい良い書籍が在れば教えてください。
0637nobodyさん
2006/06/19(月) 21:50:00ID:???10件ごとにページ移動で表示させたいのですが、
全てのデータを10件ごとに表示はできるのですが、
検索結果を10件ごとに表示するやり方がうまく思いつきません。
どなたか教えてください。
0639nobodyさん
2006/06/19(月) 21:56:21ID:???状況が良くわからない
「全てのデータ」配列があって、そこから「検索結果」配列ができているんだろ
すでに10件ずつ表示できるのなら、そのまま表示できるだろう?
データベースを利用した場合は、PHPの問題じゃなくてSQLの問題だ
データベースによって仕様が違うのでなんともいえないが、
普通、limit やら、top やらを使って、10件ずつとか取得してくる
こいつらが使えない場合は、あきらめて全件取得してくるしかない
0640nobodyさん
2006/06/19(月) 21:57:38ID:???一度検索結果のみを配列に格納したほうがいいのかな?
0641nobodyさん
2006/06/19(月) 22:03:47ID:???全件文の行数が知りたいなら、1 count 2 必要分だけデータ取得 の2クエリ
0644nobodyさん
2006/06/19(月) 22:11:26ID:???$file = file($data);
$count = count($file);
for($i=0;$i<$count;$i++){
行[$i]を読み込む
if(検索で一致){
$search++;
}
if($search>=10){
break;
}
}
こうですかわかりません><;
0648nobodyさん
2006/06/19(月) 22:26:35ID:???( ゚д゚) …普通のxxxx.cgi?
(つд⊂)ゴシゴシ
(;゚д゚) ….cgi?
(つд⊂)ゴシゴシゴシ
_, ._
(;゚ Д゚) …!?
まあ>>639の上段が全てだと思う。
全てのデータを10件ずつ表示できるのなら
検索にヒットするデータをそれと差し替えれば良いだけのこと。
問題はこれがPHPの質問なのかどうかってことだ。
0649nobodyさん
2006/06/19(月) 22:29:40ID:???xxxx.datだったら直リンで中身見れるから・・・。
CSV??
つまり、検索にヒットしたデータを配列に格納すればよいのでしょうか?
0652nobodyさん
2006/06/19(月) 22:48:10ID:???ああ、そういうことか。おk、把握した。
仮に$linesという配列に全データを入れたとしよう。
で、その各要素から検索ワードにヒットしたものを$hittedという配列に入れるとしよう。
そしたら、全てのデータを表示する時は$linesを10件ずつ表示(1)して、
ヒットした物を表示したい時は
$lines = $hitted;
としてから$linesを10件ずつ表示(2)すればいいってわけだ。
お分かりかな?
0653nobodyさん
2006/06/19(月) 22:50:12ID:???表示する範囲だけforで回しておけばいいよ。
どうせたいした量でもないんだろ。
0654nobodyさん
2006/06/19(月) 22:50:16ID:???0655nobodyさん
2006/06/19(月) 22:51:21ID:???横からすまん。俺いつもそうやってるんですが、多い場合ってどうするのがいいんですか?
テキストファイルでやるとしたら・・。
0656nobodyさん
2006/06/19(月) 22:51:53ID:???0657nobodyさん
2006/06/19(月) 22:56:11ID:???多い場合はそもそもテキストファイルよりDB使うだろ。
どうしてもテキストファイルにしたいなら、何度も表示するようなものは
予めヒット数とかキャッシュしておいてfopen、fget()で最後のヒット行までしか読み込まないとか工夫すれば良いんじゃない?
条件がころころ変わるような検索は全件読み込まないと無理だけど、それでも一気にメモリを食うfile()は使わない方が良い。
0658nobodyさん
2006/06/19(月) 22:57:13ID:???テキストを読み込むバッファと、最終的に利用する配列を分ける
まずはバッファに読み込んで、必要なものだけ配列へコピーする
これを件数分たまるまで繰り返す
0659nobodyさん
2006/06/19(月) 22:58:31ID:???prev nextしかないなら、表示数+1読めば次のページがあるかないか分かる。
0660nobodyさん
2006/06/19(月) 22:59:43ID:???最後の+1分が最後の行だったら結局最後まで読む事になるか。
0661nobodyさん
2006/06/19(月) 23:04:26ID:???$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["....."].なんちゃら表示;
}
// 違ってたらスマ、誰か直して下さい。
0662nobodyさん
2006/06/19(月) 23:07:49ID:???0663nobodyさん
2006/06/20(火) 00:59:53ID:???0664nobodyさん
2006/06/20(火) 02:51:40ID:???0665nobodyさん
2006/06/20(火) 03:03:08ID:???0666nobodyさん
2006/06/20(火) 03:45:35ID:???PHPを使った「パスワード共有システム」だそうだが、なんだか香ばしい気が・・・
↓
http://www.bf-web.net/~dmcsoftware/cgi-bin/dlmanager/index.php?mode=details&id=pawosys_server
0667nobodyさん
2006/06/20(火) 07:39:43ID:Js32egMIaaa,bbb,ccc,ddd
eee,fff,ggg,hhh
iii,jjj,kkk,lll
とある内の
fffを含むものを見つけて消すには
どうしたらいいですか?
0668nobodyさん
2006/06/20(火) 08:00:56ID:???<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を付けたりして区別させるんですか
0669668
2006/06/20(火) 08:16:25ID:???0670nobodyさん
2006/06/20(火) 09:06:47ID:???アップされたファイル名をユニークにしたいと思っています。
たとえば、
アップ前ファイル名 中田.jpg
アップ後ファイル名 imge1DOf7.jpg
こんな風にリネームする関数ありましたでしょうか。
0672nobodyさん
2006/06/20(火) 10:17:51ID:???俺ならデータが同じであるかを考慮してデータからハッシュ取るよ。
そういうのが必要なければ>>671の時刻(ミリ秒)で良いんじゃないの。
あとuniqid()
0674nobodyさん
2006/06/20(火) 11:56:26ID:???行を消したいのかもね。
file()でデータ取得して
正規表現でfff探して
見つからなかった行をスタックして
最後にスタックした行があるのならファイルを書き直す
って感じか。
0675nobodyさん
2006/06/20(火) 13:31:10ID:???仕事でPHPやるときってPHP4と5どっちが多い?
0676nobodyさん
2006/06/20(火) 14:05:43ID:???<a href="http://yahoo.co.jp"><img src="logo.jpg" width="100" height="50"></a>
<strong>アクセスはこちらまで!!</strong>
このソースから画像表示(<img>タグ)だけを取り出してechoで表示させることは
出来ますでしょうか?
0679nobodyさん
2006/06/20(火) 14:13:01ID:???preg_grep と書いたが、ファイルから読み出して特定行を消して書き直すのであれば、
fopen( +r) からの処理で、
1行づつ読み出し、 strpos にて、fffがあるかをチェックして、
ないなら、書き出しようの配列に追加、
全行チェックの後,
ftruncate
fseek
fput
fclose
の手順が、ファイルロックの観点からいうと最適だとおもふ。
なお、fffのチェックにstrposを使うのは、正規表現を使うより動作が速いため、
特にパターンパッチを行う必要がない特定文字列ならば、これが推奨される。
0680nobodyさん
2006/06/20(火) 15:38:25ID:???これまで学んだ何冊かの本でもいつも華麗にスルーされていて
いまだにピンときません。。。
「.」で探しても文字列連結のときの.(dot)しか出てこないしで。
あほすぎな質問ですがお願いします
0681nobodyさん
2006/06/20(火) 16:18:41ID:???みたいなこと?
エラーなると思うが。
0682nobodyさん
2006/06/20(火) 16:19:07ID:???0685nobodyさん
2006/06/20(火) 16:46:01ID:???$n = 'bb';
$hoge = 'aa'.$n.'cc';
echo $hoge;
---> aabbcc
とかじゃなくて?
0686680
2006/06/20(火) 16:49:55ID:???↓は今手もとの書籍からの引用でそういう記述がある1行のみ部分です。
$strPathには取得したファイル名が入っています。その前後にdotが。
print("<li><a href='record.php?doc=".$strPath."'>".$strPath."</a></li>");
1行だけでわかりますでしょうか?
0687nobodyさん
2006/06/20(火) 16:50:55ID:???0688nobodyさん
2006/06/20(火) 16:54:13ID:???0689680
2006/06/20(火) 16:54:44ID:???やっぱアホ杉だです。すいませんm(_ _)m
0690nobodyさん
2006/06/20(火) 16:54:54ID:???>>685のとおり
間を開けると良く判る。
print( "<li><a href='record.php?doc=" . $strPath . "'>" . $strPath . "</a></li>" );
0691680
2006/06/20(火) 17:01:38ID:???>>865ですでに指摘されてたんですね。すみません。
ほんとうに・・・俺って奴は・・・orz
0693nobodyさん
2006/06/20(火) 17:17:50ID:e7ISWcMQhtmlspecialcharsはHTML出力時とDB格納時のどちらにかけるのが正しいのですか?両方すかね?
0694nobodyさん
2006/06/20(火) 17:21:19ID:84KpNS9w0696nobodyさん
2006/06/20(火) 17:51:10ID:???DB格納前。
なぜならヴぁ、HTML出力時であれば、HTML出力するたびに htmlspe〜を通さないとならない。
DB格納前に行えば、その一回だけですむ。
0697nobodyさん
2006/06/20(火) 17:53:26ID:???タグを含めた文字を検索とかするわけじゃなければ、DBに入れる前に変換してもいいんじゃない。
でも、公式かどっかにhtmlspecialcharsはHTML出力する直前にやるべきだ。みたいな事が書いてあった気がするけど。
出力前までhtmlspecialcharsしないのは、メール/HTML等に対応する為だとか。
まぁ、でも別にどっちでもいいと思うよ。
0698nobodyさん
2006/06/20(火) 17:59:39ID:e7ISWcMQトンクスっす。
やっぱみんな適当なんですかね。適当を卒業したいのですが...。
XSSとかの本を読んでると、なんかキリ無い気がして萎えます。
プロの現場というか、それで喰ってる人たちはどの程度対策してるんでしょうか?
>695
pg_convertは初めてみました。便利そうですね。
>696
へんなjavascriptが表示されて...とか言う具合にはならないですかね?
0699nobodyさん
2006/06/20(火) 18:04:18ID:???0700nobodyさん
2006/06/20(火) 18:24:23ID:???http://takagi-hiromitsu.jp/diary/20051227.html#p02
0701nobodyさん
2006/06/20(火) 18:25:48ID:e7ISWcMQおっしゃるとおりです。完全に独学してるので怪しいです。
色々本も買ったのですが、結構著者によってまちまちというか、
htmlspesialcharsさえやっときゃ殆ど大丈夫みたいな書き方されてたり...。
フォーム入力から→DB登録→一覧表示みたいな流れで最低限これだけはやっとけみたいのありますか?
0702nobodyさん
2006/06/20(火) 18:35:35ID:???html出力時にするのが一般的
DBに投入前に行うと、そのデータを編集するときにエスケープする前の状態に戻してから
編集して、再度htmlspecialchars()を使う必要があるから
そんなことをするくらいなら、出力する前にやるほうが楽
0703nobodyさん
2006/06/20(火) 19:00:00ID:mpIQquvJ私が考えたのは:
1. if (isset ($_POST['name'])) { ...処理... } // POST がTRUE なら処理
2. if ($_POST['name'] === '') { ...処理...} // POST の値が空なら処理
皆さんなら?
0705nobodyさん
2006/06/20(火) 19:03:58ID:???(strlen($_POST['name']) > 0) and (strlen($_POST['name']) <= $MaxNameLen)
0706nobodyさん
2006/06/20(火) 20:57:12ID:???if (!isset($_POST['name']) || $_POST['name'] == '') { ...処理... }
0707nobodyさん
2006/06/20(火) 20:59:43ID:???0708nobodyさん
2006/06/20(火) 21:09:57ID:e7ISWcMQ0709nobodyさん
2006/06/20(火) 21:32:39ID:mpIQquvJおまいらありがとう(・∀・)
参考にするよ♪
0711nobodyさん
2006/06/20(火) 22:22:23ID:???0712711
2006/06/20(火) 22:32:37ID:???0714nobodyさん
2006/06/20(火) 22:37:19ID:???0717nobodyさん
2006/06/20(火) 23:29:36ID:???0718676
2006/06/20(火) 23:31:39ID:???678さんが「できる」と回答していますが、どうやってやるんでしょうか?
自分ではどの関数を使ってどうやってやればいいかの
ソースの組立の予測が付きません・・。
ヒントか何か教えていただければと思います。
0719nobodyさん
2006/06/20(火) 23:32:48ID:???ページA→ページBと移動する際に
パスを引き継ぎたいのですが
getではパスがばれるので×
postだとアンカーで引き継げない
となるとsessionidがベストなのでしょうか?
0720nobodyさん
2006/06/20(火) 23:34:25ID:Vcobe6Xyヒント:暗号化
0723nobodyさん
2006/06/20(火) 23:52:15ID:???http://hogehoge.com/index.php でアクセスした時にはクッキーに保存されるのですが
http://hogehoge.com/ でアクセスするとセッションファイルは作成されるもののクッキーが発行されません。
なぜか原因が分かる方いますか?
ちなみに、session.cookie_pathは変更していなくて、/のままになっています。
0724723
2006/06/21(水) 00:02:45ID:???Xreaのサブドメインの方でテストすると出来ないっぽいです。
session.cookie_domainを設定して試してみましたが、やはいダメでした。
という事はサーバーの設定の関係でしょうか。
0725nobodyさん
2006/06/21(水) 00:06:05ID:???全てやりつくして自分ではどうにもならないって状況になってから質問しなおせ。
で、次質問するときは、phpinfoで出るセッション関連設定晒せ。
あと、例で用いるドメインはexample.comな。
0726nobodyさん
2006/06/21(水) 00:07:47ID:???おちつけ
なにが保存されないんだ
セッションとクッキーの違いは分かってるか?
クッキーの確認方法はなんだ?
ブラウザを閉じたら内容がクリアされるようなクッキーはファイルには保存されないのを知ってるな?
0727nobodyさん
2006/06/21(水) 00:09:38ID:???これ以上はもう無理そうです。
>>726
デフォルトで言うところのPHPSESSIDクッキーが保存されません。
クッキーはブラウザのクッキー表示機能で確認してます。
0728nobodyさん
2006/06/21(水) 00:12:15ID:???session.bug_compat_42OffOff
session.bug_compat_warnOnOn
session.gc_probability11
session.hash_bits_per_character55
session.gc_divisor10001000
これ以外はデフォルトのようです。
0730nobodyさん
2006/06/21(水) 00:15:05ID:???0731729
2006/06/21(水) 00:17:24ID:???0732nobodyさん
2006/06/21(水) 00:27:46ID:???数値を全角から半角に直したいのですが
$com1 = i18n_ja_jp_hantozen($_POST["com1".$i],"n");
と記述したところ、
Fatal error: Call to undefined function: i18n_ja_jp_hantozen()
というエラーが返ってきました。
PHP4ではまだ対応されていないのでしょうか?
0733nobodyさん
2006/06/21(水) 00:33:10ID:???こりゃまた古い関数を引っ張り出してきたもんだねぇ。
ttp://www.php.net/manual/ja/aliases.php
0734nobodyさん
2006/06/21(水) 00:36:10ID:???変更されていたのですね^^;
mb_convert_kana()で試したところも同じエラーになりました。
「mb」を使うには何か設定が必要なのでしょうか?
0735nobodyさん
2006/06/21(水) 00:42:18ID: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"];
}
}
0738nobodyさん
2006/06/21(水) 00:48:17ID:???最初にelseの方にいくよな?
そしてarrayを代入してそれをprintしてればarrayが表示されて当たり前だろ?
>>737
オマイが設定したと言っても本当に正しく設定してあるか分からんだろ?
phpinfo()を出したまい
0740735
2006/06/21(水) 00:59:26ID:???それでは最初のelseではprintをせずに2回目の送信を行ったところ
forで出力してもやっぱり、Arrayっと表示されます。
※$idが最初は10次は20入れた場合
10
Array
0741nobodyさん
2006/06/21(水) 01:01:42ID:???phpinfoの
Configuration File (php.ini) Path
のphp.iniにあるextension=php_mbstring.dllの前に;が無いか
phpinfoの
extension_dirのディレクトリにphp_mbstring.dllファイルがあるか確認
0743nobodyさん
2006/06/21(水) 01:04:37ID:???extension=php_mbstring.dll
;はありません。
extension_dirは ./ ./ となっています
0744nobodyさん
2006/06/21(水) 01:09:37ID:???php_mbstring.dllのありかを探してそのディレクトリを
php.iniのextension_dirに指定してみれ
php.iniはphpinfoで表示された場所のファイルを修正
0745735
2006/06/21(水) 01:09:38ID:???7行目のprintの箇所ですよね?
以下のようにしたのですが、状況は変わらずです・・。
print $_SESSION['id'][$i]."<br>";
0747nobodyさん
2006/06/21(水) 01:15:53ID:A9H5bJA/ありがとうございます。
mb_convert_kana($_POST["com".$i],"n");
としたら、出力が「?P?P?P」になっちゃったよ;;
0748735
2006/06/21(水) 01:16:01ID:???最初に10を、2回目に20をテキストボックスに入れて送信した結果です。
Array ( [id] => Array ( [0] => 10 [1] => Array ( [0] => 10 ) ) ) Array ( [id] => Array ( [0] => 10 [1] => Array ( [0] => 10 ) ) )
なんかかなり変な感じですね・・。しかも配列にArrayが入っているし・・。
全く原因が掴めません。。array_pushが悪い訳じゃないだろうし。。
0750nobodyさん
2006/06/21(水) 01:18:51ID:???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の取り方に問題があるような気がする。
0753735
2006/06/21(水) 01:23:00ID:???どうも解説ありがとうございます。私もどこがおかしいのか全くわからなくて・・。
ちなみに、$idを受け取る送信ページは以下のソースです。普通のHTMLです。
<form action="session.php" method="post">
<input type="text" name="id">
<br>
<input type="submit" name="ok" value="送信">
</form>
0755nobodyさん
2006/06/21(水) 01:30:56ID:???$id = $_POST["id"];
とすべきところを
$id = array($_POST["id"]);
とでもしている予感。
0756735
2006/06/21(水) 01:33:54ID:???■1回目の10を入れた場合
Array ( [id] => 10 [ok] => 送信 )
10
■2回目の20を入れた場合
10
Array
Array ( [id] => 20 [ok] => 送信 )
Array ( [0] => 10 [1] => Array ( [0] => 10 ) )
0757nobodyさん
2006/06/21(水) 01:34:13ID:???現在実行しているスクリプト名
(http://localhost/test.php)だったら「test.php」
を出力したいのですが、どうすればよいのでしょうか?
0758757
2006/06/21(水) 01:39:01ID:???0760nobodyさん
2006/06/21(水) 01:40:07ID:???0763nobodyさん
2006/06/21(水) 02:01:38ID:B7JejGVK展開してるのね。了解。
■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>";
}
0764735
2006/06/21(水) 02:24:29ID:???ご説明ありがとうございます。
//セッション『id』がある場合
〜
} //最後から二つ目の}
をコメントアウトしました。そして763さんのコードを追加してみたのですが、
2回目の20を入れた処理で
10
Array
Array ( [id] => 20 [ok] => 送信 )
Array ( [0] => 10 [1] => Array ( [0] => 10 [1] => Array *RECURSION* ) )
このようになります。あまり変わりないような気がします・・。
0765735
2006/06/21(水) 02:27:43ID:???PHPが5.1.4なのですが、あまり関係ないですよね・・。
session_start();もしているからセッションが有効になっているはずだし・・。
0766nobodyさん
2006/06/21(水) 02:28:34ID:???いや、735をいっそのことこうしたらどうかと。
//送信ボタンが押された場合
if(isset($ok)){
$_SESSION["id"][] = $id;
for($i=0;$i<count($_SESSION["id"]);$i++){
print $_SESSION["id"][$i]."<br>";
}
}
$_SESSION["id"]があるかどうかで
何か処理が変わるの?735だと単純に$idを追加すればいいだけのような気がするんだけど。
0767735
2006/06/21(水) 02:49:46ID:???変わり無しです・・。766さんのコードに変更したのですが、
10
Array
というエラーが出ます。環境による問題ですかね。。
0768nobodyさん
2006/06/21(水) 02:53:28ID:???よっしゃ。とりあえずそのファイルどっかに上げてみてみないか?
もしくはそんなに長くないコードならここに貼り付けるか
0769735
2006/06/21(水) 02:55:19ID:???<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>
0770735
2006/06/21(水) 02:57:18ID:???<?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>
何度もお手数おかけします。。よろしくお願いします。
0771nobodyさん
2006/06/21(水) 03:10:26ID:???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"];
を追加した
うまくいってるけど?
0772nobodyさん
2006/06/21(水) 03:11:30ID:???$_SESSION["id"][] = $id;
~~~~~~~~~~~
こういう書き方ってありだっけ?
0773nobodyさん
2006/06/21(水) 03:14:06ID:???[]のことなら、全然あり。最後に追加される
http://jp.php.net/manual/ja/language.types.array.php
0774735
2006/06/21(水) 03:23:08ID:???テストしていただいてありがとうございます。
うちはApache2.0.52とPHP5.1.4ですが、やはりなりません。
Linux+PHP4系のレンタルサーバにファイルをアップしても
同様に、
10
Array
という表示です。どうなっているのか・・。
0775735
2006/06/21(水) 03:26:12ID:???$_SESSION["id"][] = $id;
↓
$_SESSION["id"][] = $_POST["id"];
とすることで、771さんと同じ結果になりました!
ちょっと理由がわからないのですが、変数を$_POSTにしないといけないみたいですね。。
長い間、お付き合いいただき、ありがとうございます。
また勉強します。
0776nobodyさん
2006/06/21(水) 03:27:47ID:???恐らく$idがおかしそうなので、最初に
<?php
session_start();
$id=$_POST["id"];
$ok=$_POST["ok"];
?>
ってやてみたらどうかな
0778nobodyさん
2006/06/21(水) 03:45:25ID:???もう見て無いかもしれないが、よく考えたら
register_globalsがOnなため、$_POSTと$_SESSIONの両方の["id"]が
$idに展開されて変になっていたのではないかと
$_SESSION["id"]を$_SESSION["xid"]にするとうまくいくべ
0779nobodyさん
2006/06/21(水) 05:43:39ID:r7tfflxK0780nobodyさん
2006/06/21(水) 06:20:11ID:???0781nobodyさん
2006/06/21(水) 06:24:08ID:???書くだけw
0782nobodyさん
2006/06/21(水) 06:27:43ID:r7tfflxK何故でしょう? こんな感じです。
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);
}
0783nobodyさん
2006/06/21(水) 06:45:56ID:r7tfflxK0784nobodyさん
2006/06/21(水) 07:00:19ID:???for($i; $i <= $count-1; $i++){
ぱっと見
この2つの行になんだか違和感。
普通はこうかな
if (!($handle = fopen($file, 'w'))) {
for($i=0; $i < $count; $i++){
0785nobodyさん
2006/06/21(水) 07:01:47ID:???0786nobodyさん
2006/06/21(水) 07:03:34ID:???段階を追って確認してみれば?
まず
if (is_writable($file)) {
はちゃんと通過できてるの?
あとぶっちゃけ
$handle = fopen($file, 'w');
の1行だけ実行したら中身空っぽの0バイトファイルになるはずだけどどうよ?
これで0バイトになったら上書き自体はできてるってことだ。
こういうのはシンプルなコードで順次確認が基本だよ。
0788nobodyさん
2006/06/21(水) 07:47:46ID:???0790nobodyさん
2006/06/21(水) 08:02:39ID:???0791nobodyさん
2006/06/21(水) 08:12:35ID:???0793nobodyさん
2006/06/21(水) 08:13:59ID:???0794nobodyさん
2006/06/21(水) 08:32:08ID:???noticeエラーが頻発しちゃうんだけど、これって無視しても特に問題ないよね?
notice出ないように修正することも出来なくはないけど、
すごく無駄なコードが増えちゃうしスパゲティ化するから、
かえって修正しないほうがいい気がしてる。
0795nobodyさん
2006/06/21(水) 08:36:47ID:???全部潰せばより堅牢にはなると思うが、正直なとこ過剰としか思えん。
ちゃんとデバッグできない低脳な人は片っ端から潰した方がいいかもしれんけどな。
0796nobodyさん
2006/06/21(水) 08:39:03ID:???> すごく無駄なコードが増えちゃうしスパゲティ化する
ってのが気になるな。
そんなにあちこちで定義されていないキーを使うってのは、スクリプトの構造自体に問題があるんじゃないかなぁと。
0797nobodyさん
2006/06/21(水) 09:04:22ID:???$value = @$cache[$key];
マニュアル嫁ボケ
http://www.php.net/manual/ja/language.operators.errorcontrol.php
0798nobodyさん
2006/06/21(水) 10:14:05ID:???>>796 あちこち・・・ってほどでもないんだけど、ある一つの処理に関する配列において、
要素の数が場合によって0〜9個まで、まちまちになるのよ。で、それをHTMLテンプレに埋め込んだ変数(配列)に
展開するときに、noticeが出ちゃう。
>>797 エラーの抑制方法はもちろん知ってるわけで・・・ 質問の意図が分からなかったんかな?
0800nobodyさん
2006/06/21(水) 11:06:35ID:???>>796も書いてるが、存在しないキーでエラーが出たり、
それを修正するためにスパゲティコードになる時点で根本的に設計がおかしい
まあ、好きにすれば?としか答えようがないな
0801nobodyさん
2006/06/21(水) 11:08:28ID:???0802nobodyさん
2006/06/21(水) 11:20:48ID:???0803nobodyさん
2006/06/21(水) 11:32:54ID:???0804nobodyさん
2006/06/21(水) 11:44:35ID:NAuR8t7O以下のようにしても動きませんでした。一行ずつ関数書くのは省きたいです。
PRINT"
あかさたな
テスト
りんご
";
0806nobodyさん
2006/06/21(水) 12:00:42ID:???ttp://jp.php.net/manual/ja/function.echo.php
マヌアルは読んだか?
0807nobodyさん
2006/06/21(水) 12:36:15ID:???ttp://www.php.net/manual/ja/language.types.string.php#language.types.string.syntax.heredoc
マヌアルは読んだか?
0808nobodyさん
2006/06/21(水) 12:48:19ID:???りんご
だいすき
ぱいなっぷるも
すき
HTML;
0809nobodyさん
2006/06/21(水) 13:00:52ID:???0810nobodyさん
2006/06/21(水) 13:16:50ID:???0811nobodyさん
2006/06/21(水) 13:17:36ID:???ttp://coronado.s8.xrea.com/php/ref.mail.php
マニュアルをどうぞ。
0814nobodyさん
2006/06/21(水) 13:50:37ID:???あかさたな\n
テスト\n
りんご\n
");
こういうこと?
0815nobodyさん
2006/06/21(水) 14:13:29ID:???(つд`)
おじさんは感動して涙がとまらないよ。
0816nobodyさん
2006/06/21(水) 14:43:04ID:???print nl2br("
あかさたな
テスト
りんご
");
ttp://coronado.s8.xrea.com/php/function.nl2br.php
0817nobodyさん
2006/06/21(水) 15:01:58ID:???多分暇なだけだよ
インデントを使いたいなら、
echo "あいうえお"
."かきくけこ"
."さしすせそ"
."たちつてと";
0818nobodyさん
2006/06/21(水) 17:43:17ID:r7tfflxK1150671220,ddd,eee,fff
1150672450,iii,jjj,kkk
のファイルは、0行目がタイムスタンプになっています。
mktime関数を使っています。
このタイムスタンプで日付が現在に近い順に並べ替えしたいのですが
どうすればいいですか。
0821nobodyさん
2006/06/21(水) 17:52:27ID:???それは3つのファイルの0行目の例か?
それとも行頭がタイムスタンプになっている1つのファイルの各行を並べ替えたいという事か?
0822nobodyさん
2006/06/21(水) 18:19:34ID:???0823nobodyさん
2006/06/21(水) 18:36:55ID:???0824nobodyさん
2006/06/21(水) 18:45:41ID:???0826nobodyさん
2006/06/21(水) 18:48:34ID:???0827nobodyさん
2006/06/21(水) 18:56:09ID:???ケース1 0;
ユーザー関数A
ケース2 1;
ユーザー関数B
ブレイク
HTMLの表示
以上の文で質問です。
ブレイク文の処理で、SUBMITボタン押して$AAAの値を変え、ケース1の処理を動かしたいのですがうまくいかませんでした。
考えられるヒントをどうか与えてください。
はしおった書き方ですいません。
0828nobodyさん
2006/06/21(水) 19:01:40ID:???アップロードしたいのですが
どうすればできますか?
0829nobodyさん
2006/06/21(水) 19:09:07ID:???つまりこうか。
switch ($AAA) {
case 0:
user_func_A(); // 直後にbreak;が無い
case 1:
user_func_B();
break;
}
これだとcase0の時にはuser_func_A()とuser_func_B()を
両方実行する事になるがそれは良いのかな?
あとはフォームデータが上手く$AAAに入っていないとか。
>>828
つ【http://www.php.net/manual/ja/features.file-upload.php】
0830nobodyさん
2006/06/21(水) 19:15:02ID:???を
extract も $foo = $_GET['foo'] もやってないのに
$foo = "bar" となってしまうのはどの設定でしょうか?
0831nobodyさん
2006/06/21(水) 19:26:27ID:???これかな?
http://jp2.php.net/manual/ja/security.globals.php
0832nobodyさん
2006/06/21(水) 19:59:46ID:???register_globals でした。
0833nobodyさん
2006/06/21(水) 21:29:59ID:???0834nobodyさん
2006/06/21(水) 21:46:55ID:???0838nobodyさん
2006/06/21(水) 23:00:36ID:???図なんかに噴出し等で文字を入れることをするとします。
掲示板みたいな感じで誰でも挿入できるとします。
その文字をファイルベースでサーバにログや噴出しの位置情報を保存したとしたら、
部分更新がAjaxのメリットなはずだけど、結局更新は全体的に読み込みなおしですよね?
0839nobodyさん
2006/06/21(水) 23:10:07ID:???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 を
使う方法もある
0840nobodyさん
2006/06/21(水) 23:16:55ID:???状況がいまいち理解できないが、
ユーザーが入力した値をサーバに保存すして
次回更新時のその保存した値で画面を再生成ってこと?
0841nobodyさん
2006/06/21(水) 23:28:28ID:???質問の意味がいまいちイメージし難いんだが。。。
ファイルベースで噴出しの位置情報を保存っていうのはテキストにX=30,Y=50って言う値を
保存するって感じか?
で、噴出し内のコメントも保存しないといけないよな?
@最初にPHPファイルにアクセスした場合、まずPHPが背景画像を表示する。
Aそしてテキストを読んで位置情報を取得する
・・・書いててよく分からんなって北。
そもそも@の段階で表示しなくても言い訳だもんな。Aまで進んで位置情報から
それなりのCSSファイルを作ってやればいい訳だし。
別にajaxを使わなくても出来そうだな。まぁ、普通のJavaScriptは必要だろうけど
0842nobodyさん
2006/06/21(水) 23:31:56ID:???全体を読み込み直ししちゃったらAjaxの意味ないじゃん。
そこをJavaScript使って部分更新するからAjaxなんだろ?
0843nobodyさん
2006/06/21(水) 23:33:24ID:???そんな感じです。
つまり、そのあと噴出しをドラッグで動かせるようにした場合なんかだと、
結局ログファイル全体を配列かなんかで読み込み→PHPの関数で配列を編集→ファイル全体を書き込み→ファイル全体を再読み込み
とまあこんな感じになるんでしょうか。
0845nobodyさん
2006/06/21(水) 23:39:51ID:???結局位置情報はどのタイミングで保存したいんだ?
保存ボタンを作って、ボタンを押して位置情報をDBなりテキストなりに
保存するっていうんならajaxは必要ないよ。
噴出しを動かす部分はただのJavaScriptで実現できる。
0847nobodyさん
2006/06/21(水) 23:41:52ID:???0848nobodyさん
2006/06/21(水) 23:48:00ID:???リアルタイムでの更新をイメージしてた。ドラッグして動かして、移動が終わった時点で更新、と。
>>846
移動させただけなら、そうか、書き込み処理だけで再読み込みいらないか。ごめん。
0849nobodyさん
2006/06/22(木) 00:03:00ID:???動かすたびにサーバー側データも同期を取りたい→それには送信+ページ丸ごと再読み込みってこと?
もしもサーバーへのデータ送信がページ丸ごと再読み込みでしかできなかったら
検索エンジンで使ってるような非同期検索なAjaxは動いて無いじゃない。
バックグラウンドでサーバーに送信→更新→情報取得→ページ部分更新まで問題なくできるよ。それがAjax。
0851nobodyさん
2006/06/22(木) 01:09:27ID:???||``'ー-、_ ``'ー-、_
|| l ``'ー-、_ ``'ー-、_
``'ー-、_ || .l ``'ー-、_ _, -'"l
|| l || l
``'ー-、||, -'"``'ー-、_ ||. l
``'ー-、_ ``'ー-、_ . || l
``'ー-、_ ``'ー|| l
( )ノ ``'ー(д゚;)_ -'"
</13/ <| 1|ヾ'ー-、_
ノ >○
``'ー-、_
0852nobodyさん
2006/06/22(木) 04:11:27ID:4vrB1Nlw<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関数が必ずエラーになってしまうのですが
何故でしょうか?
0853nobodyさん
2006/06/22(木) 04:23:37ID:???0854nobodyさん
2006/06/22(木) 05:24:50ID:???今見てるのは
foreach(○○ as ■■ => △△) {〜〜〜;}という文です。
辞書にも載って無かったです。
0855nobodyさん
2006/06/22(木) 05:48:05ID:4vrB1Nlw自己解決しました!
書き込み用のファイルをうpしてませんでした
0856nobodyさん
2006/06/22(木) 05:48:16ID:???0858nobodyさん
2006/06/22(木) 05:57:06ID:???辞書には書いてないかもしれないが、マニュアルには書いてある
http://jp.php.net/manual/ja/control-structures.foreach.php
0859nobodyさん
2006/06/22(木) 06:04:20ID:4vrB1NlwWarning: 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/
の意味を教えていただけませんか?
0863859
2006/06/22(木) 08:14:17ID:4vrB1Nlw0864nobodyさん
2006/06/22(木) 09:09:18ID:???最近のタイムスタンプは、先頭が繰り上がって、1・・・・になっているが、
何年か前までは、一つ桁が少ない、9・・・・だったからだ。
行ごとそのままソートすると文字列比較になって、以前のタイムである,
9・・の方が昇順で後ろに来てしまう。
0865864
2006/06/22(木) 09:16:34ID:???echo mktime(0, 0, 0, 1, 1, 2000);
これをやってみるといい。
0866nobodyさん
2006/06/22(木) 09:40:11ID:XjfBJY0m0867nobodyさん
2006/06/22(木) 09:47:23ID:???image_combin($image[0], $image[1], IMG_LANDSCAPE | IMG_PORTRATE);
0868nobodyさん
2006/06/22(木) 10:28:45ID:XjfBJY0mすみません、ググってもなかったのですが、何か参照サイトとかありませんかね
0869nobodyさん
2006/06/22(木) 10:56:01ID:???PEARでの参考例
http://www.google.com/search?q=ThinkPlus+USB+Keyboard
PEARを使わずに扱いたいです。よろしくお願いします
0873nobodyさん
2006/06/22(木) 11:15:22ID:???扱うってただの文字列だろ?それを一体どうしたいんだ?
グーグル検索のURL貼ってるが、それも意味わからんし。
まさか、検索の一覧から意図を読み取れ、とか言うんじゃねーだろーな?
ま、単純に整数値に変換してシフトでもすれば?
0874nobodyさん
2006/06/22(木) 11:15:58ID:???PEARでの参考例
http://ns1.php.gr.jp/pipermail/php-users/2005-March/025478.html
0877nobodyさん
2006/06/22(木) 12:30:24ID:???こんなのが欲しかったわけか?
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表記とか知ってるなら、これくらいさくっと作ろうぜ・・・
0878nobodyさん
2006/06/22(木) 12:58:19ID:???METAでもEUCを指定しています
この場合、文字化けする原因て何が考えられますか?
0879nobodyさん
2006/06/22(木) 13:23:29ID:???0880nobodyさん
2006/06/22(木) 13:46:29ID:???0881nobodyさん
2006/06/22(木) 13:47:41ID:???0882nobodyさん
2006/06/22(木) 13:59:04ID:???0884nobodyさん
2006/06/22(木) 14:54:01ID:oCUi25wnfunction test()
っていうユーザー関数をkansuu.phpってファイルに書いてるとして
index.phpでtest()関数をコールするにはどうしたら良いですか?
0885nobodyさん
2006/06/22(木) 14:57:12ID:???require('./kansuu.php');
もしくは
require_once('./kansuu.php');
で
test();
http://jp.php.net/manual/ja/function.require.php
include()でも良し。
0886nobodyさん
2006/06/22(木) 15:17:01ID:oCUi25wnありがとうございます。include()を呼び出すとfatalエラーが出ます。
include 'index.php';と記述しています。
index.phpのなかにもtest()があってkansuu.phpにもtest()と言う関数が記述されています。
その内容は全く違うのですが。kansuu.phpの中でindex.phpのtest()を呼び出すことはできますか?
面倒な質問してすみません。
0887nobodyさん
2006/06/22(木) 15:19:10ID:???0888nobodyさん
2006/06/22(木) 15:20:05ID:???0889nobodyさん
2006/06/22(木) 15:22:05ID:???index.phpの内容
<?php
function test() { }
?>
kansuu.phpの内容
<?php
function test(){ }
?>
0890nobodyさん
2006/06/22(木) 15:46:13ID:???ShiftJISとかいろいろとメタタグで宣言してみれ。それで文字化けがないならApacheの設定とPHPの設定の問題。
0891nobodyさん
2006/06/22(木) 15:47:36ID:oCUi25wn<?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>"
?>
見たいな感じ。
0892nobodyさん
2006/06/22(木) 15:48:49ID:???0894nobodyさん
2006/06/22(木) 15:58:11ID:oCUi25wnたまたま、index.phpに書いてるコードがそのまま使えそうだったので楽しよとしただけです。
関数名変えます。
0895nobodyさん
2006/06/22(木) 15:58:24ID:???そこを敢えて同じ名前で区別する方法は無いかというのが質問の趣旨だよな。
OK、俺には分からんッ!
0896884
2006/06/22(木) 16:00:16ID:oCUi25wn0897884
2006/06/22(木) 16:02:03ID:oCUi25wn一応検索しても出てこないので。スレ違いな質問ですみません。
0898nobodyさん
2006/06/22(木) 16:06:09ID:???聞いている意味がよく分からんが、このスレは普通に携帯からでも読めるぞ。
p2使えばスレ内検索とかもできる。
0899nobodyさん
2006/06/22(木) 16:17:17ID:???携帯サイトに特化したPHPスレってことかな?
そんなスレは無いだろうね。目的と手段の違いだから。
携帯サイトだったら
携帯端末用のWeb制作10
http://pc8.2ch.net/test/read.cgi/hp/1150381091/
とか、
【モバイル】携帯電話向け開発について語るスレ
http://pc8.2ch.net/test/read.cgi/php/1144504375/
あたりへ行ってごらん。
0900nobodyさん
2006/06/22(木) 16:17:57ID:z1rfr09/$fp = fopen($logfilename, "w");
こういうソースがあるとして1.htmが上層フォルダの場合どうしたら良い?
$logfilename=../1.htmにしたらダメだった。相対パスで指定したいんだけど。
お願いします。
0901nobodyさん
2006/06/22(木) 16:20:16ID:???0902nobodyさん
2006/06/22(木) 16:20:47ID:???じゃ駄目なのかなぁ。
0903nobodyさん
2006/06/22(木) 16:20:54ID:???0904nobodyさん
2006/06/22(木) 16:25:10ID:z1rfr09/$logfile="../".PHP_NAME;
で解決しました。
0905878
2006/06/22(木) 16:27:31ID:???偽
全ファイル、エディッターでEUCに統一
METAも全ページ(HTMLページ)
<meta http-equiv="Content-Type" content="text/html; charset=euc-jp">
で統一しているんですがなぜかバグります
0906nobodyさん
2006/06/22(木) 16:30:42ID:???0908nobodyさん
2006/06/22(木) 16:35:19ID:???内部エンコードがEUC、outputがsjisになっている可能性が高い。
metaを書くなら sjisにするか、
どうしてもEUCでブラウザに表示させたいなら、
スクリプト先頭あたりで
mb_http_output('EUC');
ob_start('mb_output_handler');
0909nobodyさん
2006/06/22(木) 17:16:10ID: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>";
}
?>
0910909
2006/06/22(木) 17:19:14ID:4vrB1Nlw110220330,aaa,adoifja,
110220333,adf,agtargg,
110220335,hwr,adfgads,
110220313,gar,argvtta,
110220342,arg,drfgsrg,
110220329,jtr,fjhtsfg,
110220343,tfe,gthrlff,
0911nobodyさん
2006/06/22(木) 17:35:22ID:???ナニがしたいのかわからん
それとforループの回数が1回多い
$old_files .= $files[$i];は文字連結だがソートしたいなら$old_files[$i] = $files[$i];じゃないのか?
0912nobodyさん
2006/06/22(木) 17:45:56ID:z1rfr09/index.php
<?
printf "テスト";
更新.php //index.phpないでこのPHPファイルを実行させるみたいなの
?>
読込みではなくて実行ってのが可能なのかどうか?
わかりにくい説明ですみません。
0913nobodyさん
2006/06/22(木) 17:51:34ID:???0915nobodyさん
2006/06/22(木) 18:06:38ID:z1rfr09/それをincludeしたりするのって実行スピードに置いてはどうなの?
0916nobodyさん
2006/06/22(木) 18:07:41ID:???a.phpからb.phpを実行する例。
遠慮無く1000回ほど試すといいぞ。
a.php:
<?php
require('b.php');
?>
b.php:
<?php
for ($i=1;$i<1000;$i++) {
print "このヴォケが";
}
?>
求めているのがこれでないとしたらget付きURLにLocationで飛ばす、かな。
0917nobodyさん
2006/06/22(木) 18:09:56ID:???何と比較して聞いているのかが理解不能だが、
用のないユーザ関数を大量に読み込ませたりすれば
そりゃ実行スピードは落ちるだろうね。
0918nobodyさん
2006/06/22(木) 18:19:43ID:ylHLo5v5この書き方ってできなかったっけ?
0919nobodyさん
2006/06/22(木) 18:24:11ID:???つ【http://jp2.php.net/manual/ja/function.strstr.php】
0920nobodyさん
2006/06/22(木) 18:30:59ID:???0923nobodyさん
2006/06/22(木) 18:36:09ID:z1rfr09/よく使いそうな関数をファイルにまとめるとして、
よく使うが使わない関数も当然読み込まれてしまうと思う。
それで実行速度が遅くなるならそのファイルから使う関数だけを読み込んだりしたい。
そんなやり方ありますか?
0925nobodyさん
2006/06/22(木) 18:46:24ID:???無料になった Zend Optimizer 3 を入れたら?
0926nobodyさん
2006/06/22(木) 18:52:29ID:???なぜかわからないのですが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にしてみたのですがだめでした)
なぜかわかる方おられましたら教えていただけないでしょうか?
0927nobodyさん
2006/06/22(木) 19:20:54ID:???それとdefineせずにやってみたらどうなる?
というかSQLiteはわからん
0928nobodyさん
2006/06/22(木) 19:41:42ID:???-> この矢印みたいなヤツ意味がわからないです
ググルにも -> はキーワードにならないし
0929nobodyさん
2006/06/22(木) 20:01:18ID:???http://jp.php.net/manual/ja/language.oop.php
0930nobodyさん
2006/06/22(木) 20:11:03ID:???0931nobodyさん
2006/06/22(木) 20:29:10ID:???echo '<iframe src="kousin.php" height=0 width=0></iframe>';
こういうことか?
0932nobodyさん
2006/06/22(木) 20:31:43ID:???ありがとう! もやもやが吹っ切れた
0933nobodyさん
2006/06/22(木) 21:18:13ID:???ありがとうとございます ディレクトリのパーミッションが問題だったようです
/home オーナーroot 700→777
/hotta オーナーhotta 700→777
に変更したら
home/hotta/testが見つかりません といわれなくなりました
file_exists(DB)関数でファイルを読み出すときはapacheのユーザで検索してるのでしょうか?
0934nobodyさん
2006/06/22(木) 21:20:26ID:???違う。
httpdデーモンがPHPのスクリプトを読み込んで実行しているから
apacheユーザーになっているからであって、
file_exists() だけがapacheユーザーで動くわけではない
0935nobodyさん
2006/06/22(木) 21:22:25ID:???正常に動いてるんですが、時々長さが一致せずエラーになります。
サーバの負荷?mbstringのバグ?と悩んでいます。
$data = stripslashes($keyword);
if (strlen($data) != mb_strlen($data) * 2) {
die("引数エラー!".strlen($data).":".mb_strlen($data) * 2);
}
0936nobodyさん
2006/06/22(木) 21:23:37ID:???有難うございます
ということは
何かを参照する関数とかは
すべてhttpd.confに記載されているUser欄のユーザーによって実行されるので
パーミッションはUserにあわせる必要があるということですね
0937934
2006/06/22(木) 21:48:19ID:???0939909
2006/06/23(金) 00:40:32ID: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,
となり、一部が消えてしまいます。
これは、何故なのでしょうか?
0940909
2006/06/23(金) 00:43:09ID:lPdqGX0Zold_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] =
消える理由が分かりません。
少し手を貸していただけたら幸いです。
よろしくお願いします。
0941nobodyさん
2006/06/23(金) 00:47:17ID:???0942nobodyさん
2006/06/23(金) 00:59:03ID:???バグとか以前に作り方が意味不明すぎるんだけど、
なんでわざわざ配列を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";
ってのを含んでいないから。
0943nobodyさん
2006/06/23(金) 01:01:04ID:???頼むから俺の職場には来ないでね^^
0945909
2006/06/23(金) 01:21:39ID:lPdqGX0Z>なんでわざわざ配列を1行に連結した挙句にまた配列に分解してるの?
こんなことしなくても、ソート処理ができるんですか!
そこを教えてもらえませんかぁ>_<
0946nobodyさん
2006/06/23(金) 01:32:32ID:???0947909
2006/06/23(金) 01:38:45ID: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>";
/*-----------------------------------------------------*/
0948nobodyさん
2006/06/23(金) 01:39:19ID:???まぁそういうなって
>>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,
0949909
2006/06/23(金) 01:40:44ID:lPdqGX0Z// 現在のデータを足す
$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>";
}
?>
0950909
2006/06/23(金) 01:48:50ID:lPdqGX0Zす、すごい
勉強になりました。
すごく簡潔に書かれていて、それでいてちょっと$vが可愛いですね//▽//
ありがとうございます!
0951nobodyさん
2006/06/23(金) 01:49:26ID:???0952nobodyさん
2006/06/23(金) 01:50:41ID:???0953nobodyさん
2006/06/23(金) 01:51:26ID:???0954909
2006/06/23(金) 01:56:14ID:lPdqGX0Z新しいスレを立てようと思うのですが
私でも立てられるんですか?
ちょっといって見て来ます。
0956nobodyさん
2006/06/23(金) 01:59:30ID:???事情を分かってるやつがやった方がいくね?
0957909
2006/06/23(金) 02:00:26ID:lPdqGX0Z定型文?を書くのでもう少しお待ち下さい。
0958909
2006/06/23(金) 02:02:00ID:lPdqGX0Zえ;
もう作っちゃいました。
けど、>>2以降はまだ書いてません。
事情の分かる方にパスした方が良いですか?
0959nobodyさん
2006/06/23(金) 02:03:03ID:8iUOatGT0960909
2006/06/23(金) 02:04:25ID:lPdqGX0Zhttp://pc8.2ch.net/test/read.cgi/php/1150995543/
0961909
2006/06/23(金) 02:05:27ID:lPdqGX0Zタイムスタンプじゃないですか?
0962nobodyさん
2006/06/23(金) 02:19:04ID:???なんで実行結果がおかしいんだろ〜。
エラーも起きないし。一体全体どうして〜〜〜〜〜〜〜ってとき
if文で$a=1 とかなってんの!!!wwww
比較は$a==1だっつうの!!=2つは他の言語やりまくってると
たまーにやるよね、うん。
0963nobodyさん
2006/06/23(金) 02:21:16ID:???>よく見たら、スレのアドレスの一番最後の部分って
>タイムスタンプじゃないですか?
そうですね〜(^-^)
0964909
2006/06/23(金) 02:36:35ID:lPdqGX0Z本 ス レ は も う 無 く な り ま し た
って書き込まれてましたT_T
0965909
2006/06/23(金) 02:43:16ID:lPdqGX0Zデータを上書きするときって、どこでfopenするべきですか?
foreachの前でfopenとflockをして、{}の中にあるprintの部分を書き込みに変えるような方法ですか?
0967nobodyさん
2006/06/23(金) 03:07:29ID:???スレ立て乙でつ。
2の本スレはPHP質問スレのこと。くだ質と同じレベルだということで
くだ質に一本化したという経緯
0968909
2006/06/23(金) 03:16:14ID:lPdqGX0Z初めてスレ立てしました!
緊張しました;
>>967
じゃぁ、イタズラじゃないってことですよね
よかったぁ。
新しいスレのテンプレとかは事情というものを知らないので
知ってある方にお任せしたいのですが、誰かいらっしゃいますか?
0970nobodyさん
2006/06/23(金) 03:22:38ID:???とか言われてますけど
PHPってどうしてバカにされてるんですか?
PHPが他の言語に劣っている部分を教えてください。
0972909
2006/06/23(金) 05:09:38ID:lPdqGX0Zまた明日も来たいです。よろしくおねがいします!
>>969
親切に教えてくれてありがとうございましたぁ
0973nobodyさん
2006/06/23(金) 08:27:11ID:???0974nobodyさん
2006/06/23(金) 09:33:29ID:???それまではちゃんと使ってやるのが質問スレの流儀ってもんだ。
0976nobodyさん
2006/06/23(金) 10:08:10ID:???0977nobodyさん
2006/06/23(金) 10:09:27ID:???クライアントローカルのファイルを消せるなら大問題だ
0979nobodyさん
2006/06/23(金) 13:27:30ID:CXSPEY04直接php.iniにはさわれませんし、htaccessを使うと500エラーになります。
スクリプトに直接
mb_internal_encoding("utf-8");
mb_http_input("utf-8");
mb_http_output("utf-8");
などと書いたのですが、状況は変わりません。
ini_setというのも使ってみたのですが、ダメっぽいです。
どなたか解決方法をご存じないでしょうか?
サーバはラピッドサイトというところです。
スクリプトをeucに変えるというのは無しの方向でお願いします。
0980nobodyさん
2006/06/23(金) 13:50:44ID:???0981nobodyさん
2006/06/23(金) 14:09:21ID:CXSPEY04レスありがとうございます。エラーはメッセージは何も出ないようです。
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です。
0982nobodyさん
2006/06/23(金) 14:17:28ID:???ラピッドの人に聞いてみたら?
mb_convert_encodingも失敗するようなら諦めるしか
0983nobodyさん
2006/06/23(金) 14:30:13ID:CXSPEY04レスどうもです。
そうですね。サーバ自体が対応しないっていうこともあり得るとしたら、そうかもしれないです。
ラピッドのサポートにはさっきメールしました。
ありがとうございました。
0984979
2006/06/23(金) 15:46:40ID:CXSPEY04板汚しスマソ。逝ってきます。
0985nobodyさん
2006/06/23(金) 16:16:49ID:???0986nobodyさん
2006/06/23(金) 16:21:37ID:???と威張れる利点
0987nobodyさん
2006/06/23(金) 16:25:38ID:???0990nobodyさん
2006/06/23(金) 17:55:06ID:???webサーバを分散していて、それらのセッションを共有したい時
ネットワークファイルシステム等を使うより管理が楽で、安心感がある。
(NFSで問題が出るってわけでもないが)
0991nobodyさん
2006/06/23(金) 18:33:06ID:???それとも仕様書しこしこ作ってから書き出すの?
規模にもよるだろうけど、webアプリぐらい頭ん中で粗方作って
勢いで書いちゃえーって人のが多そうな希ガス
0992nobodyさん
2006/06/23(金) 18:42:49ID:???もちろん仕様書とかは書く
それ以外の場合は覚書みたいなメモ作ってから作る
仕事以外の時でも簡単に書いておかないと
どんどん仕様変更しちゃって完成できない俺orz
0993nobodyさん
2006/06/23(金) 18:46:52ID:???0994nobodyさん
2006/06/23(金) 18:54:12ID:???もしくは書いてもらう
0995nobodyさん
2006/06/23(金) 19:08:19ID:???けどそんなんばっかじゃないしね
さらに質問、どんなふうな仕様書を書いてんの
最近仕様書かくのとかもろもろイヤで辞めたい病
0996nobodyさん
2006/06/23(金) 19:47:56ID:???この関数はPHPではないのでしょうか?
0997996
2006/06/23(金) 19:52:40ID:???(ソース参照お願いします。)
http://www2.neweb.ne.jp/wd/nobuaki/New_Homepage/okinawa703.htm
0998nobodyさん
2006/06/23(金) 19:54:21ID:???この関数はPHPでは(存在し)ないのでしょうか? ってコトでOK?
この関数はPHPではない、つまりC言語とかJAVAなのでしょうか? っていう風にもとれるから念のため。
ちなみに三角関数系の関数は一式揃ってるよ。
使い方はマニュアル参照。
0999nobodyさん
2006/06/23(金) 20:02:45ID:???\ /
/ ̄ ̄ ヽ,
/ ', / _/\/\/\/|_
\ ノ//, {0} /¨`ヽ {0} ,ミヽ / \ /
\ / く l ヽ._.ノ ', ゝ \ < バーカ! >
/ /⌒ リ `ー'′ ' ⌒\ \ / \
(  ̄ ̄⌒ ⌒ ̄ _)  ̄|/\/\/\/ ̄
` ̄ ̄`ヽ /´ ̄
| |
−−− ‐ ノ |
/ ノ −−−−
/ ∠_
−− | f\ ノ  ̄`丶.
| | ヽ__ノー─-- 、_ ) − _
. | | / /
| | ,' /
/ / ノ | ,' \
/ / | / \
/_ノ / ,ノ 〈 \
( 〈 ヽ.__ \ \
ヽ._> \__)
1000nobodyさん
2006/06/23(金) 20:03:15ID:???10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。