【PHP】質問スレッドpart19【php】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
04/07/16 07:12ID:KvHeypq/・新規質問の方は上げてください。age進行でお願いします。
・質問する際には環境も明記。
・正しい日本語で分かりやすく。
・レスがつかないからって逆切れする厨お断り。
・解決しなくてもこたえてもらったら礼を。
■本家
http://www.php.net/
■日本 PHP ユーザ会
http://www.php.gr.jp/
■PHP マニュアル
http://www.php.net/manual/ja/
■PEAR マニュアル
http://pear.php.net/manual/ja/
過去スレ, 関連スレ等>>2-4
抜けているものがあったら補足願います
0207nobodyさん
04/07/21 05:10ID:/GR6B3Fpありがとうございました。
解決いたしました。
何でああいう思い込みをしていたのか自分でも想像がつきません。
おそらくどこかのサンプルページを真似て書いたつもりだったのでしょうが、お恥ずかしい限りです。
済みませんでした。
0208nobodyさん
04/07/21 09:18ID:???0209nobodyさん
04/07/21 09:26ID:???0210nobodyさん
04/07/21 09:36ID:???オッス!昨日からの書き込み
http://pc5.2ch.net/test/read.cgi/php/1089929550/131-209
0212nobodyさん
04/07/21 09:42ID:???function b($val){
echo $val;
}
}
$obj = new a;
$obj->b('test');
ではなく、もっと短くfunction bを呼び出す方法はないでしょうか?
0213nobodyさん
04/07/21 09:57ID:???0214nobodyさん
04/07/21 10:01ID:???ここを見ていたのですが、$str='a7'でも半角英数字
だと判断されてしまします。
本当に半角英数字のみを判定する場合は
'^[0-9]+$'で良いのでしょうか?
if ( ereg("[0-9]+", $str) ) {
echo "半角数字のみ!";
} else {
echo "不正なデータ(値なしも含みます)";
}
0216nobodyさん
04/07/21 10:05ID:???てか、半角「英数字」を判定したいのか半角「数字」のみを判定したいのか
よく分からんのだが。とりあえず「^」と「$」をつけなされ。
0217nobodyさん
04/07/21 10:06ID:???phpかperlで、mallocを実現することは出来ないでしょうか
0219214
04/07/21 10:15ID:???半角数字だけであれば、'^[0-9]+$'で良いのですね。
0220nobodyさん
04/07/21 10:28ID:???こんなのでも ereg は TRUE だったりするし。
ereg("^[0-9]+$", "1\0test");
0222nobodyさん
04/07/21 12:38ID:???readfile()を使いたいって事は、ダウンロード先を教えたくなかったり、ロックしたりとかしたいということ?
ダウンロードする回数にもよるけど、かなりのCPU使用率になるよ。(一瞬だけど)
連続してダウンロードされると、サーバによっては止められる可能性も高い。
一回、自分のPCで試してみな。
0223nobodyさん
04/07/21 12:40ID:???今、SQLiteを使ったスクリプトを書いていてふと思った・・・
0224nobodyさん
04/07/21 12:44ID:???0225nobodyさん
04/07/21 12:44ID:???俺の使ってるphp+mysqlな参考書は
htmlspecialchars()しか触れてないぞう。
・・勉強してきます。。
0226nobodyさん
04/07/21 12:49ID:???とりあえず>>188のサイトをよく読んで
「サニタイズ」「SQLインジェクション」「クロスサイトスクリプティング」辺りでぐぐってみ
0228nobodyさん
04/07/21 13:11ID:???あっ入力チェックはきちんと行うとして、、
0229nobodyさん
04/07/21 13:13ID:???SQL発行時はバインド
この2つしかやってません
0230nobodyさん
04/07/21 14:08ID:???crypt使ってですよね?
0231nobodyさん
04/07/21 14:30ID:???cryptとか使ってないです
0232nobodyさん
04/07/21 14:49ID:???0233nobodyさん
04/07/21 15:17ID:???教えてください
0234nobodyさん
04/07/21 15:18ID:/GR6B3Fpfor($i=100;$i>=0;$i--)
{
require_once("res.inc");
$text[$i]=preg_replace_callback(
"|>([0-9]+)|",
"henkan",
$text[$i]);
print($text[$i]);
}
rec.inc の中身
<?php
function henkan($matches)
{
return "<a href=#$matches[1]><P title=$text[$i]>>".$matches[1]."</P></a>".($matches[2]);
}
?>
イメージ的にはこのように レス番号文字列にカーソルを合わせるとそのレス内容が表示され、
かつクリックするとそのリンクへ飛ぶという形にしたいのですが res.incないで$text[$i]が取得できません
文頭にrequire_once("right.php");としても結果は変わりませんでした。どのようにすればright.php内の
$text[$i]が取得できますか?ご教授くださいお願いします。
0236nobodyさん
04/07/21 15:47ID:???aタグの中にpタグを包含していいのか?
どうせなら aタグにtitleを書きゃいいじゃないか。
そんで、その程度ならpreg_replaceで十分だろ。
0237nobodyさん
04/07/21 15:49ID:???Pear
http://pc5.2ch.net/test/read.cgi/php/985665522/
0238nobodyさん
04/07/21 15:49ID:???0239nobodyさん
04/07/21 16:42ID:???md5が手軽でいいかと
0241nobodyさん
04/07/21 17:10ID:???HTTPヘッダのステータスをPHPのスクリプト内部から設定したいんだけど
どうしたらよろしいのでしょうか?具体的には、STATUSを500に設定したいのですけど。
header()関数あたりになにか入れればいいのでしょうか?
0243nobodyさん
04/07/21 17:37ID:???含まれるみたいなのですが、これはPHP4の時からそうなっていた
のでしょうか?
今まで気づかなかっただけか・・・^^;。
0245nobodyさん
04/07/21 18:37ID:???0247nobodyさん
04/07/21 18:51ID:???ttp://jp.php.net/manual/ja/security.php
0248nobodyさん
04/07/21 18:55ID:???PHP4でも含まれていたはずだけど、今まで無かったのなら↓これの所為では?
ttp://jp.php.net/manual/ja/ini.sect.data-handling.php#ini.variables-order
0249nobodyさん
04/07/21 18:57ID:???つか去年はどうして出れたんですか?
0250nobodyさん
04/07/21 19:02ID:???Part2 : http://pc.2ch.net/php/kako/1003/10032/1003283567.html
Part3 : http://pc.2ch.net/php/kako/1013/10139/1013919792.html
Part4 : http://pc.2ch.net/php/kako/1022/10229/1022999539.html
Part5 : http://pc.2ch.net/php/kako/1031/10317/1031721334.html
Part6 : http://pc5.2ch.net/php/kako/1038/10389/1038988518.html
Part7 : http://pc5.2ch.net/php/kako/1044/10444/1044478561.html
Part8 : http://pc5.2ch.net/php/kako/1050/10502/1050249148.html
Part9 : http://pc5.2ch.net/php/kako/1057/10579/1057947512.html
Part10: http://pc5.2ch.net/php/kako/1064/10641/1064104114.html
part11: http://pc5.2ch.net/php/kako/1067/10676/1067635640.html
part12: http://pc5.2ch.net/test/read.cgi/php/1070639208/
part13: http://pc5.2ch.net/test/read.cgi/php/1073291978/
part14: http://pc5.2ch.net/test/read.cgi/php/1076163015/
part15: http://pc5.2ch.net/test/read.cgi/php/1078592587/
part16: http://pc5.2ch.net/test/read.cgi/php/1081267619/
part17: http://pc5.2ch.net/test/read.cgi/php/1084781699/
0252nobodyさん
04/07/21 20:29ID:???0253nobodyさん
04/07/21 20:57ID:???0255nobodyさん
04/07/22 02:00ID:???0256nobodyさん
04/07/22 02:03ID:???header("Content-Type:text/plain");
$str1 = "http://end.com/マルチバイト";
$str2 = "マルチバイトhttp://end.com/";
if( mb_ereg("^マルチバイト",$str1) ){
print("\$str1 Hit : ^マルチバイト\n");
}
if( mb_ereg("^マルチバイト",$str2) ){
print("\$str2 Hit : ^マルチバイト\n");
}
?>
/* output
$str2 Hit : ^マルチバイト
*/
0257203
04/07/22 02:29ID:???遅れましたがとんくすです。
試しにレンタルしてる鯖でこっそり試してみたら小さいファイルだったら大丈夫そうですが、
RLimitCPUなんかよりもreadfileしたファイルがサイズ制限みたいなのを受けて落ちてきませんでした。
いろんな設定があるもんだなと思いました(自分apacheの設定深くはしらんので…)。
汎用性のあるものを作りたいので諦めました。また他の方法考えてみます。ありがとでした。
0258nobodyさん
04/07/22 03:07ID:???ttp://www5a.biglobe.ne.jp/~inano/jancode.html
というのは見つけたのですが、45/49で始まるもの以外も使うので
汎用的に使うにはちょっと難しい感じです。
どこかに転がっていないでしょうか?
0259nobodyさん
04/07/22 04:33ID:???<?
include("var.php");
include("format.php");
?>
とすればうまく表示できるんですけど
var.phpの方がいろいろ増えてvar-tarou.php、var-hanako.php、var-hiroyuki.php
みたいになった時、そのファイル名をテキストファイルvar.txtに1行ごと書いて
<?
$data = file ("var.txt");
for ($i=0;$i<3;$i++) {
include("$data[$i]");
include("format.php");
}
?>
とやったら
0260nobodyさん
04/07/22 04:36ID:???途中で送ってしまった・・・
それでこれでは間違ってるようなのですがどうすれば
var.txtに書いたファイル名を1行目から表示していけるか誰か教えてください。
あ、データベースは使えません。
0262nobodyさん
04/07/22 04:56ID:???0263234
04/07/22 05:19ID:O8WfHKX6$string = $text[$i];
$pattern = "|>([0-9]+)|";
$replacement = "<a href=#\${1} title=$text[\${1}]>>\${1}</a>";
print preg_replace($pattern, $replacement, $string);
前と同じような段階までは進むのですが title=$text[\${1}] やはり同じくこの部分で引っかかってしまいます。
エラーメッセージは
Parse error: parse error, unexpected T_CHARACTER, expecting T_STRING or T_VARIABLE or T_NUM_STRING
$textないをクオーテーション等でくくってみてもうまくいかず、アドバイスいただけたらと思います。
0264ちなみに
04/07/22 05:27ID:O8WfHKX6title=$text[10] 等書いてもその部分はコメントが出されません。
$text[10]には当然値は入っているのですが・・・
0265nobodyさん
04/07/22 06:16ID:???preg_replace_callbackを使って、コールバック関数内でglobal $text, $i;を宣言すればいい。
(元のfor文がグローバルスコープにあるのが前提だけど)
クラスを使えば変数のスコープに悩まされずに済む。
・・・それ以前にa要素のtitle属性に全文をぶち込もうという蛮勇のほうが問題と思うが。
しかもstrip_tagsもhtmlspecialcharsもかけずに。
ポップアップさせたいのならCSSとJavaScriptで対応した方がいいよ。
p2のソースとか参考にしる。
0266nobodyさん
04/07/22 08:11ID:???<?
$data = file ("var.txt");
for ($i=0;$i<3;$i++) {
include(rtrim("$data[$i]"));
include("format.php");
}
?>
>>263
$string = $text[$i];
$pattern = "|>([0-9]+)|e";
$replacement = '"<a href=\"#${1}\" title=\"" . htmlspecialchars($text[${1}]) . "\">${1}</a>"';
print preg_replace($pattern, $replacement, $string);
0267nobodyさん
04/07/22 11:32ID:???http://www.mribti.com/barcode/sample.php
バーコードのことは良くわかんない。
で、上のはブラウザ上でさくっと試せます。
あ、QR コード描きたいなぁ。と、ふと思った。
0268258
04/07/22 12:01ID:???そこも見つけてはいたんですが、JANコードに対応してないんですよ。
って、>>258で書きたいバーコード書いてませんでしたね。
JAN13 を書きたいんです。
そこだけ GD::Barcode で逃げるしかないかなぁ。ちょっと悔しいですが。
0269nobodyさん
04/07/22 12:22ID:IcVwk4jf$str = "<br />\n<br />\n<br />\n<br />\n<br />\n";
$str = mb_ereg_replace("^<br />", " <br />", $str);
print($str);
で、なんで下のようになるのよ。
<br />
<br />
<br />
<br />
<br />
本当に困ってます。お願いします。
0271nobodyさん
04/07/22 12:40ID:???こうしたいのかな。
$str = mb_ereg_replace("^<br />", " <br />", $str, "m");
それにしても、PHP マニュアルにマルチバイト正規表現のオプション説明は目立たない・・・。
0272nobodyさん
04/07/22 12:45ID:???GD使ってるなら JpGraph使えば?
ttp://www.aditus.nu/jpgraph/jpg_barcodes.php
0274軟式PHP
04/07/22 13:10ID:???0275nobodyさん
04/07/22 13:18ID:???0276nobodyさん
04/07/22 13:25ID:???緊急で困っています。
PHP4.0.6+IE6を使って開発しています。
何故か急にセッションが効かなくなりました。本当にいきなりです。
配列変数をセッションで保存しているのですが、例えば
$nm[0]〜$nm[10]まであるとして、配列に値を代入します。
$nmをセッション宣言して次のページに移動したときに
$nm[4]〜$nm[6]まで保存されてなく、他のは保存されているといった不可解な状態になっています。
$nmをモニタリングしたところ、移動元のページの最後では値は残っているけど、移動先のページの最初では
すでに値は消えているといった状態です。セッション宣言した配列変数の一部分だけ消えてしまうといった現象です。
ちなみに会社内の他のPCでは正常動作しています。自分のPCでは開発していて突然このような状態になりました。
また以前開発したモノも、その当時は正常動作していたのですが、試しにテストしてみたらそちらでもセッションが効かなく
なってしまっていました。
何か原因とかわかるでしょうか?
0277nobodyさん
04/07/22 13:31ID:???0279Imo ◆.jC7ANgFY.
04/07/22 13:46ID:???でついでにPHPAとか入ってるんじゃない?
そのときにはいったんPHPAのキャッシュを消すべし。
違ったらスルー
0280276
04/07/22 13:56ID:???試しにOPERA7でやってみたら正常に動作しました。
PHPAは入れていません。
0285nobodyさん
04/07/22 14:25ID:???!ereg(HP_BASE_URL,$_SERVER["HTTP_REFERER"])を
preg_match('/HP_BASE_URL/',$_SERVER["HTTP_REFERER"])
に書き換えようとしたのですが、preg_matchの方では定数が
上手く使えない様です。'/'.HP_BASE_URL.'/'
でもダメでした。preg_matchでは定数を利用する事が出来ない
のでしょうか?
0286269
04/07/22 14:50ID:???動きました。ああ、あなたは神です。アリガトン
>>271>>273
行頭改行に を入れたいんだよ。
でも、うちが使ってるサーバーではならなかったんだよ(;´д`)
0288nobodyさん
04/07/22 15:14ID:???0289nobodyさん
04/07/22 15:23ID:ZtAuJUSe$filepath = $save_dir2 . $filename;
$filebyte = FileSize($filepath);
$filekb = $filebyte/1024;
$filett = $filett+$filekb;
}
これでディレクトリの中のファイル容量を計算していて、これはこれで動くのですが
その後に
while ( $filename = $up_dir->read() ) {
$filepath = $up_dir2 . $filename;
$filebyte = FileSize($filepath);
$filekb = $filebyte/1024;
echo "<img src=\"$filepath\">".$filekb;
}
と、画像一覧を表示させようとするとエラーがでます。
最初の構文の最後に、$save_dir->close();を入れるとエラーはでませんが
画像もでてきません。
$filenameを2度読み込んでるからでしょうか?クマった・・
0290nobodyさん
04/07/22 15:24ID:ZtAuJUSeあぁ・・間違った。。訂正です・・
while ( $filename = $save_dir->read() ) {
$filepath = $save_dir2 . $filename;
↓
while ( $filename = $up_dir->read() ) {
$filepath = $up_dir2 . $filename;
すいません。
0293nobodyさん
04/07/22 15:58ID:???0294nobodyさん
04/07/22 16:09ID:???JpGraphが対応してるのは知らんかった。
2次元も作ったことあるけど仕様がカチッと決まってるし、
ゼロ作っちゃっても大したことないです。
決まった画像を並べて結合するだけですから。
読み取りは一般的なスキャナで図形として読み取って、
そこから補正かけて解析するのは、この手の扱いに慣れてないと
面倒かもしれん(そしてQRコードが良く出来ていることに気づく)
0295nobodyさん
04/07/22 16:09ID:???>$replacement = "<a href=#\${1} title=$text[\${1}]>>\${1}</a>";
単純にこの行で $text[\${1}] を展開しようとしているだけなんじゃ?
後方参照を展開しつつ、配列も展開するにはe修飾子を使うしかないかも。
とりあえず$text[]はサニタイズ済みだとすれば、
$string = $text[$i];
$pattern = "|>([0-9]+)|e";
$replacement = '"<a href=\"#$1\" title=\"$text[$1]\">>$1</a>"';
print preg_replace($pattern, $replacement, $string);
こうかな?つーかこれ、結構危険な気が・・・
0296nobodyさん
04/07/22 16:12ID:???$hoge = "a:\yamada";
$hogeを"a:\suzuki"に置換したい場合どうしたらいいでしょうか?
\が入っているとereg_replaceでうまく置換できませんでした
よろしくお願いします
0297296
04/07/22 16:19ID:???0298nobodyさん
04/07/22 16:48ID:???$regtimeが他の書き込みと重複する事ってない?
0300nobodyさん
04/07/22 16:57ID:???2ちゃんみたいにアクセス数が多けりゃカブりまくりだけど
お前の所みたいに月に1件くらいの書き込みなら心配ないんじゃないの?
0301nobodyさん
04/07/22 17:05ID:???0303nobodyさん
04/07/22 17:33ID:ZtAuJUSe_| ̄|円
0304nobodyさん
04/07/22 17:52ID:???PHP 側から見たファイルパスと Web 側から見たファイルパスは違うので画像が表示されないのは当然。
HTML で出力されたソースを見て画像の正しい位置を出力するようにしてみたら?
0305nobodyさん
04/07/22 17:58ID:ZtAuJUSeえーと、下の画像一覧表示の構文だけなら問題無く表示できます。
エラーの内容からすると、2回目のwhile ( $filename = $save_dir->read() ) {
が呼び出された時に呼び出しエラーがでてるみたいです・・
0306289
04/07/22 18:03ID:ZtAuJUSewhile ( $filename = $up_dir->read() ) {
$filepath = $up_dir2 . $filename;
$filebyte = FileSize($filepath);
$filekb = $filebyte/1024;
$filett = $filett+$filekb; //ファイル容量計算
}
〜この間にhtmlが入って〜
while ( $filename = $up_dir->read() ) {
$filepath = $up_dir2 . $filename;
$filebyte = FileSize($filepath);
$filekb = $filebyte/1024;
echo "<img src=\"$filepath\">".$filekb; //画像一覧
}
と。readを2回行っています。
どちらか一つならエラーはでず、思惑通り表示されます。
0307298
04/07/22 18:03ID:???ここのURLにもあるでしょ
time関数が!
■ このスレッドは過去ログ倉庫に格納されています