スレ立ては以上です。
では、早速質問どうぞ。
6 :
nobodyさん:04/06/14 15:39 ID:+XeQjlo/
怖くて見れない
普通のカルガモ
9 :
nobodyさん:04/06/14 16:58 ID:6bKGvEI+
>>7 グロじゃない。
むしろ1枚1枚はほのぼのしてるぐらい。
ただね・・・連続で見ると
都会に潜む落とし穴
質問です。
多次元配列の一つ目の階層の要素だけを数えたいのですが、
($array[$i]←この部分の数が知りたいのです。)
count($array)とするとどうも要素がやたら大きくなってしまいます。
(どうやら$array[$i][$e]←ここまでカウントしているようです。)
いい具合の関数はありませんでしょうか?
多次元関数に関する記事があまりなかったもので・・・。
まずテスト用のスクリプトを書いてcountが下層の要素数まで数えている、という根拠を示してごらん。
そしてボクの顔をお食べ
すみません、自己解決しました。。。
$next = ((count($viewdata))+1) / 5;
を
$next = count($viewdata)+1 / 5;
としていたためにむちゃくちゃな数が出ていたのでした。
お騒がせしました。
16 :
名無し募集中。。。:04/06/14 23:33 ID:jS1Q2NuJ
あぷろだ作ってるんだけど、ハードの残量を表示するプログラムってどこかにある?
`du`
関係ないけど、初心者が中級者ぶって妙な略語を使う事って恥ずかしいよね。
>>18 だね。
どいつどいつ?(゚Д゚ ≡ ゚д゚)
ハードの残量
( ゜◇゜)なるほど〜 すぐ上にいたか
disk_free_space('/')
カポコンしゃまキターーーー(・∀・)−−−−−!!!
cgi.f13.aaacafe.ne.jp/~mugen/perlvsphp/mysql_mj/
PHPの内部プログラムに関しては全て高速設計。
出てくるデータ変換もPerl交互の正規表現で対処しているし、
何よりもセッションをファイルではなく、DBサイドでやってしまっている点。
素人がもたつく部分は、全て天才的なやり方が解決してきた。
将来的には箱庭を超えるもんに仕上がればいいと思っています(ぉ。
まともな質問はないのかよ...
>>23 すごいよ、カポコン
これが業務と趣味の違いか・・・!(藁
>何よりもセッションをファイルではなく、DBサイドでやってしまっている点。
これってそんなに大層なことか?
>>23 どこでソースみれんの?自演だからって手ぬくなよ。
>>26 いや、全然すごくないな(藁
めっちゃ簡単に出来るし・・・・。
カポコンは詐欺師みたいなもんだな
常識的な技術を「僕チン凄いことやってるよー」みたいに見せかけて人を騙そうとする所なんか特にね
頭が悪いから詐欺師にはなれないと思うけど
30 :
nobodyさん:04/06/15 10:52 ID:VBE/CSzd
PHPをスクリプトとして使用しているのに
エラーメッセージやワーニングの改行が
<br /> になるのが気に入りません。
どうしたらいいでしょうか?
てかphp.ini弄れば消せる。
33 :
nobodyさん:04/06/15 11:12 ID:lLtRoZvO
; Disable the inclusion of HTML tags in error messages.
html_errors = Off
34 :
nobodyさん:04/06/15 13:29 ID:GnjSLWGD
phpでメールの時間指定のメール送信スクリプトを作ろうと思っていますが、こういう時間指定の処理って、crontabを使わないと駄目なんでしょうか?
いろいろあるけど、cronでダメな理由は?
mod_php環境でApache2へデータを渡す時に、
echoやprintした内容がメモリに蓄積されているみたいで
例えばPostgresqlのラージオブジェクトから数GBのファイルを
出力しようとするとOut of Memoryで死んでしまいます。
というわけで、Postgresqlのラージオブジェクトから
メモリを節約しつつデータを出力させる方法を教えてくだsaina
ソース部分はこんな感じです。
$db = pg_connect(DB_CONNECT);
pg_query($db, "BEGIN");
$dblo = pg_lo_open($db, $oid, 'r');
while ($buf = pg_lo_read($dblo, 4096)) echo $buf;
pg_lo_close($dblo);
pg_query($db, "COMMIT");
pg_close($db);
output buffering機能を使っていたら全部とめろ。
>>37 pg_lo_read_all() を使ってみるとか。
使ったことはないのでどうなるかは知らないけど。
40 :
nobodyさん:04/06/15 14:17 ID:GnjSLWGD
>>35 telnetアクセスができないんですよ。
>>38 php.iniでは
output_buffering = Off
を宣言しており、スクリプト中でも特に変更はしていないつもりです。
output_handlerやzlib.output_compression等も無効にしています。
>>39 pg_lo_read_allで書くと便利で簡単なのですが、
なぜかメモリ使用量が今よりも大きくなってしまうので、現在の方法に変更しました。
>>40 telnetできないレベルだと「いろいろ」もなくなっちゃうんだけどw
つか何ならできるのさ?
43 :
36:04/06/15 14:35 ID:???
>>41名前抜けてましたが、俺です。
バージョン忘れていました、PHP 4.3.6 → 4.3.7、Apache 2.0.49です。
>>36 数ギガバイトをHTTPでやり取りするんですか。
よく分からんが、ob_startで自動flushとか
46 :
36:04/06/15 16:54 ID:???
>>44 そうなのです。
もしかして、httpで1GBを超えるデータは扱えないとか・・・
>>45 バッファリングを行うと、逆にメモリ使用量は増えてしまいますね。
implicit_flushはパフォーマンスが低下してしまうので、デバッグ用のようです。
試してみましたがやはり無理でした。
Apache2のフィルタ機能(複数のモジュールを通すことができる)が怪しい気がするので、
一度Apache1で試してみます。(PHPじゃないじゃんかYp!)
改善したらまた報告に来ます。
できました!
46で「試してみましたがやはり無理でした」と書きながらも、ちょっと気になっていたので
調べてみると、「flushはechoの後でflush()を呼び出すのと等価」ということを聞き、
明示的に指定してみたところうまく動作するようになりました。
(45さん微妙にスマンカッタ)
$db = pg_connect(DB_CONNECT);
pg_query($db, "BEGIN");
$dblo = pg_lo_open($db, $oid, 'r');
while ($buf = pg_lo_read($dblo, 4096)) {
echo $buf;
flush();
}
pg_lo_close($dblo);
pg_query($db, "COMMIT");
pg_close($db);
お答えいただいた皆様ありがとうございました!
多次元配列の出力はどうすればいいのでしょうか?
一次元だとforeach($array as $key => $value)でできたのですが・・・
foreachを二重にするとか。
50 :
48:04/06/15 18:55 ID:???
それが良く分からないんです・・・
$array[]としてもうまくいかないし。。どうすればいいでしょうか
foreach($arrays as $array) foreach($array as $key => $value) ...
という具合ではいかが?
52 :
48:04/06/15 19:40 ID:???
おぉ、感激です
>>51さんありがとうございました。
>>48 多次元なので、
function array_echo ($_array){
static $indent = 0;
foreach ($_array as $key=>$value){
echo str_repeat("\t", $indent).$key."\n";
if (is_array($value)){
$indent++;
array_echo($value);
$indent--;
} else {
echo str_repeat('\t',$indent + 1)."=>$value\n";
}
}
}
っていう関数はどうかな。と思ったけど、var_dump() の方がいいよ。
54 :
48:04/06/15 20:55 ID:???
>>53さん、ありがとうございます。
ですが、1個ずつテーブルに入れて表示しなければならないので
>>51さんの方法で行きます。
結局はforeach文の使い方がわからんかったと
>>55 質問スレで聞いたのだから当然だろう
何調子乗ってるんだ?
57 :
nobodyさん:04/06/15 23:27 ID:gVK53Lr1
保守
58 :
55:04/06/15 23:42 ID:???
糞スレ保守age
>>26 むぅ。カポコン日記には結構ためになる事書かれてるな。
多分、コイツはPHPメーリングもしっかり見てるぞ。
DBのセッションは結構アルゴリズムが人によって違うし、
使う関数も違っていたりするから大層なことだろ。
セッションを語れんでPHP語るなっていう名言があるの知ってる?
大体Javaが本業な奴に間違いは少ない、これ間違いなし。
ただカポコンはもう出てくるな。
>>59 カポコン日記には結構だめになる事書かれてるな。
カポコンネタおよびカポコン自身禁止
>>40 telnetやsshによるシェル・アクセスの可否と
crontab使用の可否は直接の関連性はないよ。
シェルでメンテナンスが出来ないので、
スクリプトのチェックとか面倒な部分もあるけど。
使ってるサービスでcrontabの登録を出来る方法はないの?
コンパネ使うとか、フォームで申請するとか。
>>56 質問スレにくる人でも制御構造など基本文法は最低限抑えておくべきでは?
くだらない質問なのですが
if(A)
と
if(A!=0)
どっちの方がいいのですか?教えてエロイ人
>>65 くだらないと思うなら聞くな馬鹿。
ちゃんと調べてそれでもわかんないなら聞きにこい。
わからんから訊いてる
>>65 少なくても「!=」は...
「!==」か?「!(A=0)」(定数だと意味無いけど)か?
>>65 どっちも同じ結果になるので、どっちでもいいと思う。
コードを短かく書くことを優先するなら前者。
(あとで見てそれとわかるように)「0ではない」という意味を尊重して書きたければ後者。
PEAR のコーディング規約だとどーなんだろ?
false と 0 を違うものとして扱いたいとかゆーことであれば、"===", "!==" とか使う。
>>65 マニュアルの言語リファレンス・制御構造、言語リファレンス・型・論理型を見てみ。
FALSEと見なすものの多さに呆れて、明示的に比較したくなると思われ。
72 :
nobodyさん:04/06/16 15:38 ID:hmUL29ON
文字列を置換したいのですが
ereg_replace str_replace strtr等使っても変換されません。
置換する対象の文字列はarrayの1つを受け取ったものなんですが
これが原因なのでしょうか?
$str=$array[0];
$str=ereg_replace("ア","イ",$str)?
booleanに変換する場合、次の値はFALSEとみなされます。
booleanの FALSE
integerの 0 (ゼ ロ)
floatの 0.0 (ゼロ)
空の文字列、 および文字列の "0"
ゼロを要素とする 配列
ゼロを要素とする オブジェ クト
特別な値 NULL (値がセット されていない変数を含む)
75 :
72:04/06/16 16:00 ID:hmUL29ON
>>74 やってみましたが駄目でした。すいません。
文字コードがEUCっていうのは関係あるのでしょうか?
>>75=72
デフォルトだと内部エンコーディングが使われるので、もし違うなら
mb_regex_encodingで設定。
あってるなら、ちとわからぬ。
ちなみにphp4.2.0以上なので、それ以下なら使えないっぽ。
77 :
72:04/06/16 16:25 ID:hmUL29ON
>>76 すいません。残念ながらEUCであっておりました;;
原因はなんだろう・・
直接 文字を入れた変数になら置換できるのに・・
>>77=72
マテ、配列からちゃんととれているのか?
配列は値が入っているのか?
print_r($array);
print "{$array[0]}";
$str = $array[0];
print "{$str}";
これで全部表示される事を確認したまい。
79 :
72:04/06/16 17:06 ID:hmUL29ON
>>72=78
(;´Д`)?
あー、問題なければその配列の作成部分から取得->置き換え->出力までの流れを書いてみてくれ。
もうさっぱりだ。
すま、流れっつか、スクリプトそのものな。
さてどんな凡ミスが出てくるか。
$arrya[0] とかだったら笑っちゃうぜ? ちゃうぜ?
>>71 if (TRUE==3) echo "TRUE";
で悩んだことがある
echo (int)TRUE;
と違うし・・・・
85 :
nobodyさん:04/06/16 19:02 ID:FlwZGV+n
在庫管理システムをPHP+mySQLで作ってまして
入力フォームから追加して、一覧にするまではできました。
問題は、編集時に文字化けが起こるんです。
list.phpが一覧表で、こんな感じに出力してます。
echo '<td><a href="redit.php?mode=edit&sid='.$row["sid"].'&brand='.$row["brand"].'&item='.$row["item"].'&c_price='.$row["c_price"].">編集</a></td>';
echo "<td> ".$row["sid"]."</td>\n";
echo "<td> ".$row["brand"]."</td>\n";
echo "<td> ".$row["item"]."</td>\n";
echo "<td> ".$row["c_price"]."</td>\n";
redit.phpへ $mode = 'edit' の時編集モードに入り、各値をGETで渡して、
echo '<form action="'.$_SERVER["PHP_SELF"].'?mode=edit&sid='.$sid.'" method="post">';
echo "<font size=\"3\"><strong>編集/削除</strong></font>";
echo '<tr align="center"><th>ブランド名</th><td><input type="text" name="brand" size="30" value="'.$brand.'"></td></tr>';
echo '<tr align="center"><th>アイテム</th><td><input type="text" name="item" size="30" value="'.$item.'"></td></tr>';
echo '<tr align="center"><th>仕入原価</th><td><input type="text" name="c_price" size="30" value="'.$c_price.'"></td></tr>';
echo "<tr align=\"center\"><td colspan=\"2\"><input type=\"submit\" name=\"post_mode\" value=\"編集\">
このように、valueで値をフォームに表示していますが、'ム'とか、ある一定の文字で文字化けが起こるんです。
PHPにも禁止文字ってあるんですかね?
この対処方をどなたか教えて頂けませんでしょうか?
文字コードはeuc で作成していて、サーバーLinuxでeucです。
スマンソ。ソースが化けるのか。
とりあえずphp.iniかhttpd.confの文字設定あたりかな?
88 :
nobodyさん:04/06/16 19:30 ID:FlwZGV+n
>>86=87さん
ご返答ありがとうございます。
さっきのURLのところの
PHP 4.3.0以降、このオプション --enable-mbstr-enc-trans は廃止され、mbstring.encoding_translation に変更となります。HTTP入力文字エンコーディング変換は、 このオプションをOnに設定した場合のみ 有効となります。 (デフォルトは、Offです。)
この辺が関係あるのかなとも思いますが、今は自鯖なんで設定いじれるからいいんですが
サーバーの仕様に関係なく表示させる方法ってないもんですかね?
そのまま処理が問題だとすると
フォームから追加するときに、sjisでSQLに入ってるから、
それをeucで表示しようとして、文字が化けるってことですかね?
でも、リストでは化けないので。。。うーん
phpで特定のページ以外からのアクセスを禁止にしたいんですけど・・
1つ前のページからちゃんときてない場合(直リン、お気に入り等)は見れないようにしたいんです。
どうやるんですか?
最終的なhtml出力はsjisじゃなくてeucなの?
そうならlistのほうもsqlから取った値は派手に化けるかと思うんだけど、、。
listでは化けないのにreditで化けるということは、reditへgetで値が渡ってくる時に、
ブラウザがエンコードした文字列の処理でこけてるということっぽい。
ムが化けたりするってことはブラウザからはsjisで来てるんだろうけど、
mb_detect_encoding()でエンコードが所望のものかどうかチェックしてみたほうがいいかも。
ブラウザからの値を内部エンコに変換する方法としは、iniをいじらないなら、
reditのほうでmb_language() + mb_http_input()で入力値を自動変換したり、
$_getの各値をmb_convert_encodingやjcode.phpで逐一変換してから処理するとか。
91 :
nobodyさん:04/06/16 20:13 ID:BaSzqMZ7
>>85 わからんけど
<a href="redit.php?mode=edit&sid='.urlencode($row["sid"]).'&brand='.urlencode($row["brand"]).'&item=以下略
はどうでしょう。
>>89 ブラウザが送ってくるrefererを見る。
リファラを送る機能の無いブラウザやセキュリティ対策ソフトを入れてるヒトは巻き添えで見られない。
.htaccessなど鯖側でやるものでphpではやらない。
session使えばもう少し複雑なコントロールもできるかな。
>>90-91 まあその辺りだろうな。
91のやり方は変更が少なくていいと思うが、
ユーザから編集後の文字列が渡ってくるわけだから、
どのみちエンコードは変換する必要がでてくることないか?
94 :
72:04/06/16 21:37 ID:hmUL29ON
>>80 遅れてすみません。
$fp = fopen($file,"r");
flock($fp, 1);
$file = fread($fp , filesize($file));
$file=mb_convert_encoding($file,"EUC","auto");
$csv=split("[\n]",$file);
for($i=1;$i<count($csv)-1;$i++){
$array=split(",",$csv[$i]);
$str=$array[11];
$str=mb_ereg_replace("あ","い",$str);
echo $str;
}
こんな感じでしょうか?
$csv=split("[\n]",$file);
これいいの?
>>79本当かな・・
>>94 金払ったほうがいいようにしか見えない。
ログのフォーマットを見ないと無理。
なんか壊滅的なソースだな。
>>94 mb_regex_encoding('EUC-JP'); を入れるとどうなる?
>>94 mb_ereg_replace()の直前でvar_dump($str)してくれ。
データベースの文字コードって、
先のこと考えずに作るなら 取りあえず何にしてる?
DB板行でやってくれ。
>>100 OSがEUCなんでスクリプトもDBもEUCにしてる。
下手な小細工要らないし。スプリクトそのものはWin上で
EUCと改行コードLFで書いているんだけどな。
んだけど、UTF8なFedoraCore鯖がそろそろまわってきそうな悪寒。
文字コードそのものはFTPで転送するときに変換すりゃ済むのだが、
メタタグも書き換えるのは面倒そう。http鯖の設定でしのぐ方が
いいのか?
これからは 先を見越して Unicode? 《季語無し》
質問させてください。
簡単な掲示板みたいのを作っているのですが入力されたテキストを
ファイルに保存する際に1件につき1行で格納したいと思います。
ファイルから読み出して表示する際には改行もありの状態にしたいので
保存・読み込みのそれぞれで、テキスト中の文字を以下のように相互変換して
やれば良いかなと思ったのですが・・・
[CR]←→"\r" [LF]←→"\n" \←→"\\"
下記のコードで、$s1 と %s3 が等しければ、相互変換は可能ということになりますよね?
$arr1 = array("\\", "\r", "\n");
$arr2 = array("\\\\", "\\r", "\\n");
$s1 = "ABC\r\nEFG \1,000";
$s2 = str_replace($arr1, $arr2, $s1);
$s3 = str_replace($arr2, $arr1, $s2);
echo "<pre>" . $s1 . </pre>";
echo "<pre>" . $s3 . </pre>";
ところが $s1が上のような場合は問題なく$s3で元に戻るのですが
$s1 = "ABC\\nDEF\\nGHI\\JKL"
などとすると元にもどりません。
何か間違っているでしょうか。
長文ですみませんが、ご教授ください。
105 :
104:04/06/17 01:00 ID:???
すみません、</pre> のダブルクォートが抜けてますね。
正しくはこうです。
echo "<pre>" . $s1 . "</pre>";
echo "<pre>" . $s3 . "</pre>";
106 :
nobodyさん:04/06/17 02:20 ID:WEWy3iw0
XMLを扱いたくて調べてみたらDOMに辿り着いて
まだ実験的なものとかって書いてあるんだけどじゃあ何を使えっていうんだい?
だれか経験者いない?
> $s1 = "ABC\\nDEF\\nGHI\\JKL"
1. 元データ $s1 → ABC\nDEF\nGHI\JKL
2. 変換 $s2 → ABC\\nDEF\\nGHI\\JKL
3. 逆変換 $s3 → ABC\nDEF\nGHI\JKL
各段階での変数の内容(リテラル)はこうなってるんだと思うが。
1で\\nはエスケープされて改行コードではなく文字列それ自体(ABC\nDEF)として$s1に代入、
2でその\nの\が\\に置換され(ABC\\nDEF)、
3で\\が\に置換される(ABC\nDEF)。
LFは$s1にそもそも入ってないから関係なし、と。
したがってコードはかかれたとおり正常に動作してる。
>>94 ってかなんでfor文を1から始めてるの?
ファイルの一行目は使わないってこと?
配列は0から始まるって事を勘違いしてたとしたら
$str=$array[11];
は
$str=$array[10];
の間違い。って事はない?
>>106 dom関数使えばいいよ。
phpでやろうというならdomかdomxmlかxmlparser(expat)かsimplexmlか、pearライブラリの
いずれかを選んでやるしかない。
110 :
107:04/06/17 02:39 ID:???
>>109 了解しました。
じゃあdomで逝きます。
ありがとうございました。
もうDOM2対応なんでしょ。
なら変更があるといってもよほど妙な機能を使ってない限り
大したことないような。
漏れはSimpleXml関数とXml関数で足りてるからDOMのことば
よう知らんけど。
>>108 csvなら一行目が定義フィールドな可能性はある。
まあイテレータが1から始まる理由にはならんけど。
つーかそれ以前にエラー処理とかflockの定数とかありえない文字コードの指定とか
splitを使ってるとことかキャラクタクラスが\nなとことか""で囲まれた値を考慮してないとか
毎回countしてるとことかfgetcsvを使ってないこととか無意味な代入とか、
ようするに釣りじゃなければなんだってことのほうが重要だと思うけど。
113 :
nobodyさん:04/06/17 02:58 ID:zQROHTgZ
ワラタ
114 :
104:04/06/17 02:59 ID:???
>>107 ありがとうございます。
それが正常にならないのです。
各段階を実際に出力させてみると、以下のようになってしまいます。
(上から$s1 $s2 $s3 です)
<pre>ABC\nDEF\nGHI\JKL</pre>
<pre>ABC\\nDEF\\nGHI\\JKL</pre>
<pre>ABC
DEF
GHI\JKL</pre>
書き忘れていましたが環境は PHP4.3.7 + IIS5.0 です。
115 :
104:04/06/17 03:00 ID:???
たびたびすみません、なぜか1行ずつ空いていますが
実際には空いていません。
<pre>ABC
DEF
GHI\JKL</pre>
ほんじゃstr_replaceの仕様がそうなんだわ。
検索語・置換語が複数渡ってるから、まず
s2の ABC\\nDEF\\nGHI\\JKL が ABC\nDEF\nGHI\JKL に置換されて、
さらに ABC\nDEF\nGHI\JKL が残りの$arr2の置換(\n -> LF)をやって
s3に改行が入るんだろうね。
まあLFを変換した\nも、ふつうに文字として入力された\nとか\\nも区別がつかないので、
出力時どれも改行に逆変換されちまうってことですな。
だからリテラル\nがもとに戻らず改行になってしまう。
\nという文字列を入力できなくするのはナンセンスだし、エスケープを実装するとコスト高なので、
入力される可能性のない文字列に置換して保存するしかないか。
>>116 その通りだが、しかし順番を変えても同じことだぞ。
単純に考えたほうがいい。
質問させてください。
ImageTTFTextを使って日本語を書き込みたいのですがどうも文字化けしてしまうのです。
文字の部分はUTF-8にエンコーディングしているのですが、
サーバーの仕様に依存するのでしょうか?
ご教授よろしくお願いします。
サーバーの仕様?
ハードウェアやosやhttpdのことなら関係ないだろ。
phpのコンパイルオプションやini設定には依存する。
何をしてるのかかかれてない以上マニュアル読めとしか言えないよ。
121 :
nobodyさん:04/06/17 10:35 ID:dLzzZdYX
>>91 ありがとうございます。それでいけました(^^)
122 :
nobodyさん:04/06/17 13:28 ID:mG7yRBZ4
テキストエリアにテキストを読み込んだときにテキストに<br>とあった場合、例えばあああ<br>いいいとあった場合
そのまま表示されてしまいます。<br>を出さずに改行された状態でテキストエリアに読み込みたいのですが
どうすれば良いでしょうか??よろしくお願いします。
<br>を改行に痴漢
124 :
ぺぷし:04/06/17 13:30 ID:t9pcSu9t
PHP+MySQLでBLOBフィールドにバイナリデータとして格納された画像の書き出し。
初めて書き込みさせていただきます。PHP初心者のため、ご教授いただけたら幸いです。
MySQLのデータベースのBLOBフィールドにバイナリデータとして格納してある複数の画像ファイルをPHPでブラウザに全て自動的に書き出すようにしたいのですが、下記のようにDo Whileを使ってフィールドの全データを書き出そうとすると
"Cannot modify header information- headers already sent by output started ..."というエラーになり、画像ではなくバイナリデータのまま
出力されてしまいます。
ちなみに、ループにいれず、クエリで抽出した単一の画像だけを出力する分にはこのようなエラーは出ず、画像を表示することができるので、
ループに入れることで、header情報のContent-typeの指定が繰り返されるのがいけないのだと思うのですが、試しにループの外にheader("Content-type: " . 'image/jpg'); の部分をおいてみるとファイルダウンロードダイアログボックスが開いてしまいます。
ループでの全データ書き出しはできないのでしょうか?
どなたかご存知の方、いらっしゃいましたらお助け下さい。
***********************************************************************
<table border="1">
<tr><td>ID</td><td>Image</td></tr>
<?php do { ?>
<tr><td><?php echo $row_rs1['id'] ; ?></td>
<td> <?php header("Content-type: " . 'image/jpg');
echo "<img src= {$row_rs1['image'] } >"; ?></td>
</tr>
<?php } while ($row_rs1 = mysql_fetch_assoc($rs1)); ?>
</table>
125 :
nobodyさん:04/06/17 13:34 ID:mG7yRBZ4
>>123 理屈はわかるのですが^^;ソースで書くとどんな風になりますか??よろしくお願いします。
126 :
125:04/06/17 13:35 ID:mG7yRBZ4
すみません、お礼言うの忘れてました。ありがとうございます、そしてよろしくお願いします
130 :
nobodyさん:04/06/17 13:54 ID:mG7yRBZ4
>>127>>128 ありがとうございます!
これの反対をすればいいということですかね!?
$s = str_replace("\r\n", "\r", $s);
$s = str_replace("\r", "\n", $s);
$s = str_replace("\n", "<br>", $s);
リンク元URLが /game/index.html からの場合と
/link/index.html からの場合で、出力を振り分けたいのですが、
$gets = getenv{"HTTP_REFERER"};
if ($gets =~ "/game/index.html") {
print ("ゲームから来ましたね");
}
elseif ($gets =~ "/link/index.html") }
print ("リンクから来ましたね");
}
こんな書き方をしても、/link/index.html から来たやつも
全部何故か /game/index.html の方に飛んでしまいます。
分かる方お願いします。
132 :
131:04/06/17 19:09 ID:AJJf+veG
age忘れました
>>130 ここ何日かご苦労な釣りを続けてるのはお前か。さっさと死ねよクズ
134 :
nobodyさん:04/06/17 19:19 ID:H2q6Vd97
$a = "test";
$b = "test";
print $a.$b;
で文字出力させた時、
何故か$aのtestが漢字で文字化けし、
$bのtestは正常に表示されます。
両方とも半角英字で同じ文書なのに、何故最初のだけが
文字化けするのでしょうか?
分かる方居ましたらお教え下さい。
131もだな。
何が楽しいんだか。
つつくと逆効果だぞw>133
つーかまともに答えてる奴がいるのが笑えるんじゃね。
138 :
131:04/06/17 19:27 ID:???
つまり股間はガチガチだってこったな
仕事から帰ってきたら、なんだお前ら!!
>>134も仲間に入れてあげてください
141 :
131:04/06/17 20:10 ID:???
ここって質問しても答えてもらえないんですか?
他行きます・・
ワンパターン脳にも程が無いか・・・
131は文盲ですか?・・・・と聞きたくなる釣りですね
>>131 =~って・・何年前の話だ。ereg使えよw
147 :
131:04/06/17 20:52 ID:???
>>146 意味が分からん。つーかもういいよ。自分で考える。
=~ これってネタの臭いよ。
$gets = getenv{"HTTP_REFERER"};
if (preg("|/game/index.html|",$gets)) {
print ("ゲームから来ましたね");
}
elseif (preg("|/link/index.html|",$gets) }
print ("リンクから来ましたね");
}
はい、どうぞ!
あっ、しまった。$gets = getenv{"HTTP_REFERER"}; これもネタ臭かった。
君の言語は難題?
しつもんさせてください
header('Content-Type: image/jpeg');
imagejpeg($im);
で、イメージを出力させてもjpegにならず、bmpになってしまうのはなぜでしょうか?
ご教授よろしくお願いします。
>>150 釣りキタ━━━━━━(゚∀゚)━━━━━━!!!!!
>>151 漏れも最初釣りかと思ったんだけど、記憶が確かならば
ブラウザがIEだと画像をローカルに保存するときに御丁寧にもBMPに変換してくれたような。
153 :
94:04/06/17 22:01 ID:QhI2MtNB
遅くなってすみません。
>>98 おお、いけました^^ ありがとうございました。
mb_regex_encoding() ではちゃんとEUC-JPとでてるのに・・。
>>99 string(8) "あいうえ" こんなんでました。
>>108 >>112 察するとおりCSVの1行目は使いたくないので1にしてます。
fgetcsv こんな関数があるとは知りませんでした。
その他いろいろな駄目だしありがとうございました^^;
もっと勉強してみます。
155 :
150:04/06/17 22:37 ID:???
>>152 なるほどです!
ネスケで試したらちゃんとjpgになってました。
IEがいけなかったんですね・・・
ありがとうございました
156 :
130:04/06/18 00:01 ID:PKyyDHRx
>>133 釣りじゃないですよ。。
$s = str_replace("\n", "<br>", $s);
これで出来ました!
教えてくださった方達どうもありがとう!
初心者の頃は釣りみたいな質問をしちゃうってことか・・
157 :
104:04/06/18 00:02 ID:???
>>116-118 おっしゃるとおり str_replace では複数の置換を同時に行うと、
置き換えた文字列をさらに置き換えることができてしまうようですね。
結局 preg_replace_callback と str_replace を組み合わせることで解決できました。
どうもありがとうございました。
nl2br使えよ
\n <-> <br> じゃhtmlが見難くて仕方ない
>>158 122をよく見て書き込みましょうね
テキストに<br>とあった場合のこと言ってるんだからそれ使えないよ(w
134
普通にtesttestと出るよ
163 :
nobodyさん:04/06/18 14:34 ID:YdLASFW3
postgresqlとphpで掲示板を作っていまして、"前の10件"、"次の10件"機能を備えたいと
考えているのですが。。
仮に12件のフィールドが合った場合、本来なら次の10件をおすと残りの2件だけが表示されるべき
なんですが、何故か残りの2件のあとにまた1から表示し(8まで)最終的に10件になるまで表示してしまいます。
データベースに直接、select * from db limit 10 offset10;
とすると正常に2件のみが表示されます。
phpのスクリプトは
$con = pg_connect("dbname=datebase user=postgres password=***");
$sql = "select * from database limit 10 offset $page";
$result = pg_exec($sql);
$count = pg_numrows($result);
for ($i=0;$i<$count;$i++)
{
//処理
}
とこんな感じですが$countに10が入ってしまっている状況です。
phpかpostgresql側なのかどちらで適切か解らなかったので、もしスレ違いでしたら
申し訳ないです。
ご教示お願いします。
164 :
nobodyさん:04/06/18 15:17 ID:kjBT0b/w
offsetの値を手で変えたりとか、offset/limitを付けたり外したりだとか
試す事はまだいろいろありそうなんだが
デバッグの仕方を自力で覚えないと一生スキルあがんないよ
167 :
nobodyさん:04/06/18 15:33 ID:YdLASFW3
>>166 すいません、記入しませんでしたが既に試してます。limitをはずすってどういうことでしょう??
168 :
nobodyさん:04/06/18 15:37 ID:YdLASFW3
>>164 if($page=='')
{
$page = '0';
}
.
.
.
if ($page<9)
{
<a href=\"index.php?page=".($page-10)."\">前の10件</a>
<a href=\"index.php?page=".($page+10)."\">次の10件</a>
抜粋しましたがこんな感じです
169 :
nobodyさん:04/06/18 15:38 ID:YdLASFW3
if($page=='')
{
$page = '0';
}
.
.
.
<a href=\"index.php?page=".($page-10)."\">前の10件</a>
<a href=\"index.php?page=".($page+10)."\">次の10件</a>
う゛ぁr_づmp($ぱげ)
print $sql; を試さないのはなぜですか?
172 :
nobodyさん:04/06/18 16:15 ID:kjBT0b/w
>>168 GETで来た$pageの値はどこで受け渡してんの?
>>168 $_GET['page']だったら頃す
174 :
nobodyさん:04/06/18 16:17 ID:kjBT0b/w
そんな予感がしてきたな
どうやら図星だった様だ
質問する以前のレベルだな
177 :
nobodyさん:04/06/18 17:25 ID:WxV310Yf
画像アップロードでアップローダーと表示画面を同じページにしてるのですが、
画像を削除してその後追加すると削除した画像が一度ページに映り、更新しないと後で追加した
画像が表示されません。。画像の削除は別ファイルで行っています。
どうにか画像追加したときにページの更新まで出来ませんか?
178 :
nobodyさん:04/06/18 17:55 ID:w9rleEeT
phpスクリプトと同じディレクトリーにaaaというファイルを作成し、
このディレクトリーにrwxrwxrwxというパーミッションを与えておいて
以下のスクリプトでaaaの中にbbbというディレクトリを作成して、
bbbの中にfileという名前のファイルを作成しようとしているのですが
bbbまでは作成されるもののfileが作成されません。
<?php
mkdir("aaa/bbb");
$OUT = fopen("aaa/bbb/file", 'w');
flock($OUT, 2);
fwrite($OUT, "test");
flock($OUT, 3);
fclose($OUT);
?>
レンタルサーバーでやってましたが、ほかのレンタルサーバーでもダメでした。
どうやらセーフモードで制限を受けているためのようなのですがセーフモードでも
上記の操作を行う方法が他にあるでしょうか?
よろしくお願いいたします。
bbbのパーミッションは?
180 :
178:04/06/18 18:04 ID:???
あ、すいません 書き忘れてました。
bbbのパーミッションはrwxr-xr-xです。
オーナーは自分のアカウントでなくapacheというアカウントになっています。
>>176 明示的にキャッシュをオンにするってどうやるんですか?
<?php
class test {
function type( $type ) {
$stack = array();
print( gettype( $stack ) );
function test( $test ) {
global $stack;
print( gettype( $stack ) .": グローバルにした時の変数の型" );
print $test;
}
test( $type );
}
}
$t = new test;
$success = "成功" ;
$t->type( $success );
?>
としたときに、
gettype( $stack )
がNULLを返さずに、arrayを返すようにするにはどうしたらいいですか?
functionの中にfunctionがあるってアリなん?
そんな事する意味がわからん
おかしい
どう考えてもおかしい
186 :
182:04/06/18 18:30 ID:???
>>184 >>182の文はもとは複雑だったので、簡略化してモデルとして書きました。
本当は上記のfunction typeはXMLパーサーで呼び出されるハンドラ関数なんです。
そして、$stackには現在のXML要素を収めたい配列なんですが、
開始要素、データ、終了要素の各functionで$stackを共有させたいのですが、
できなくて調べていたら、global $stackで共有させると、
データ型が失われて、配列として扱えなくなっているんです…。
ググッてみても、良い参考例がなくて…。かといって、クラス変数にしてもちゃんと
扱ってもらえないので、2日ほどはまっています…。
187 :
184:04/06/18 18:34 ID:???
自分の中では、クラス->メソッド->ユーザー定義関数としての
class->function(XMLパーサ)->function(XML処理部分の関数)は成り立つのかと
思ったんですが…。
各function(XML処理部分)を別クラスにまとめた方がいいんでしょうか?
グローバルスコープに変数stackは存在していないから、
global $statck; がnullになるのは当然。
存在しない変数のnull以外の型情報が返る事はありえない。
190 :
189:04/06/18 19:39 ID:???
なのでデータ型が失われているわけではないよ。
>>189 それはわかっているし、定義をしているけれど、
クラス内のメソッド内で定義した変数をグローバル変数にして
メソッド内のユーザー定義関数からグローバル変数を参照できない場合、
どうしたらいいのかっていうことを知りたいんだ…。
再利用制なんか考えずに、ひとつのファイルにまとめちゃえばいいんだろうけれどさ。
> メソッド内で定義した変数をグローバル変数にして
初歩の初歩すぎて書くのば馬鹿馬鹿しいが、出来ません。
どうやればできると思ったんだ?
グローバル変数を呼び込んでそれを書き換える。
プログラミング言語のスコープ概念を知りましょう。
> メソッド内のユーザー定義関数からグローバル変数を参照できない
さっきも書いたがグローバル変数は参照できる!
ユーザー定義関数はグローバルスコープでやる!
ユーザー定義関数はメソッド内で定義できない。
クラス概念が分かってないようだが、xmlパーサー関数のクラス粒度が
分からないならpearのxml_htmlsaxを読むと勉強になる。
関数ないで定義したらローカルスコープになるのが当たり前だろ。
こいつも釣りだな。
functionがパーサーならclassは何だよw
クラスの振る舞い定義の中に振る舞い定義があるとはw
ハライテー
最近釣りなのかマジボケなのか判断に悩む質問多杉
ファイルを分けるかどうかはクラスとも変数ともスコープとも関係ない。
クラスはともかくスコープが分からなきゃハンドラかけんだろ。
それはわかってる、と言いながらその前の指摘を無視して終わりのない話を
はじめてるあたり、やや釣り的な特徴が出てると言えるな。
198 :
187:04/06/18 22:08 ID:???
>>193 >> メソッド内で定義した変数をグローバル変数にして
> 初歩の初歩すぎて書くのば馬鹿馬鹿しいが、出来ません。
> どうやればできると思ったんだ?
単純に、メソッドとして定義したfunctionに入れ子にしたfunctionが正常に動作したから。
> クラス概念が分かってないようだが、xmlパーサー関数のクラス粒度が
> 分からないならpearのxml_htmlsaxを読むと勉強になる。
クラスとPEARの繋がりを不思議に思ったけれど、実際に Parser.php を読んで
オブジェクト内部でXMLパーサを使用する場合には、
xml_set_object
を利用しないといけないのね。
どうもありがとう。
他はバカばっかだな。
>>182 $stackをグローバル変数にする意味あるの?
class test {
var $stack;
function type( $type ) {
$this->stack = array();
// 以下略
}
}
みたいにすればいいだけの話では。
>>193 単純に、メソッドとして定義したfunctionに入れ子にしたfunctionが正常に動作したから。
なんでネストした関数が動作するとローカルスコープの変数をグローバル化できることになるのか分からん。
これが出来たらスコープもそうだが関数型プログラミングの存在意義そのものもない。
xml_set_objを使えばナビゲータビリティを双方向化できるが、ハンドラクラス内でハンドラをコールする側を
呼べるようになることと、グローバルスコープの変数を参照することとはまるで関係がない。
(ハンドラに特化したクラスのなかでパースするというのも奇怪なクラス関係じゃないか・・・)
しかもparser.phpってPear::XMLのでしょ?
>>193のいうhtmlsaxは全く別のパッケじゃなかったっけ。
君たち会話が成り立ってませんよ。
202 :
nobodyさん:04/06/18 23:35 ID:+ev/OK60
どうもありがとうって言ってるんだから、四方万事解決だろ?
もういいんじゃない。
header("Cache-control: public");
ですよね?
だけどjpgで保存できませんyo
file_get_contentsを使ってhttp経由でデータを取ろうとした。全部はいらないので部分的GETをやろうと思った。
stream_context_createでhttpのheaderに Range: bytes=256-\r\n を追加してコンテクストリソースを作った。
よしということで、file_get_contents('
http://example.com/example.html', null, $context); とやってみたんだけど、
Warning: file_get_contents(
http://example. . . ): failed to open stream: HTTP request failed! HTTP/1.1 206 Partial Content
というエラーがでてデータが取れない。
206が返っているからサーバは問題なく処理したようなのだが、
となるとphpが206応答をハンドリングできないということなのだろうか。
結局ソケットストリームでちまちまとやることになったのだが、上の疑問は残った。
コンテクストを使った部分的GETは出来るぞ、とかトリビアがあれば希望。
205 :
204:04/06/19 06:14 ID:???
追記。
TCPパケット見たらやっぱりデータの受信自体には成功してる。
なんだろう。PHP 5.0.0RC3なんだけど、RCだっつーのにバグかな、、。
>>178 いろいろやってみたけど今はあきらめた。
>>204 Reads entire file into a string
sscanfで
$date = "2004-06-17 12:00:00";
sscanf( $date, "%s-%s-%s %s:%s:%s", &$Y, &$M, &$D, &$H, &$m, &$S );
print( $Y.$M.$D.$H.$m.$s );
を
20040617120000
として出力したいんですが、
2004-06-17
と出力されます。いろいろ試してみた結果、日付に含まれる「-」が原因だとわかったのですが、
意図した出力にするためには、どうしたらいいのかわかりません。
sscanfのリファレンスを見ても、何も書いていないので、
おそらくフォーマット文字列と関係あるとは思うのですが…。
ある時間とある時間との比較を行いたいのですが(具体的には、DBへの変更期限を設けるという機能をつけるのですが)
どういう方法が一般的でしょうか?
期限をDBへ保存するので、その数字を見たときにすぐ分かるようにもしたいので
time関数以外でしたいのですが。
今のところ、date('YmdGis')の形式の数字を比較という方法を思いついたのですが、ほかに一般的な方法ありますか?
>>210 DBではTIMESTAMP型で記録しておけば、取り出したときにはPHPの文字列型に
なっているはずだから、それを strtotime() で数値 (UNIX epoch からの
通算秒)に変換するとか。
212 :
vv:04/06/19 22:12 ID:???
クラスをまとめた.phpファイルをrequireして読み込むと
Echoしていないのにブラウザにクラスの内容が表示されてしまいます
require ("/class.php");
とすると
class userclass { var $name; var $region・・・
という風にブラウザ上部にクラスの内容が表示されてしまいます
これって何??
<?php
?>
で囲んでる?
>>208 $date = "2004-06-17 12:00:00";
print(date("YmdHis", strtotime($date)));
215 :
212:04/06/20 00:15 ID:TK4JxxLi
囲んでなかった・・
須磨祖
216 :
208:04/06/20 00:54 ID:???
>>214 ありがとう。今実行して動作確認を行って、意図した結果になりました。
ところで、
>>209のsprintでどうやったら、意図する結果になるんですか?
思いつく限り、やってみたんですが、実行結果と意図が違うのですが…。
217 :
208:04/06/20 00:56 ID:???
If you wanna go for Secret Page.
You should press Tablator ten times,
...And EnterKey! :-)
220 :
vvv:04/06/20 04:56 ID:???
連想配列にクラスオブジェクトを入れてシリアライズしたいんですけど
無理なんでしょうか?
class userclass{
var $name;
var $address;
}
$class=new userclass;
$class->name="名前";
$class->address="住所";
$value["20040620"]=$class;
$s = serialize($value);
$fp = fopen($path, "w");
flock($fp,LOCK_EX);
fputs($fp, $s);
flock($fp,LOCK_UN);
fclose($fp);
>>220 展開先でデータを展開する前に同じクラスを宣言する必要がある。
222 :
vvv:04/06/20 11:22 ID:???
いや、それが展開する前の
保存自体ができんのよ
$pathを設定してないとかいうオチじゃないのん?
うちでは上のスクリプトに$pathを設定したら動いたよ。unserializeも確認済み。
224 :
220:04/06/20 12:49 ID:???
↑その通りのオチだった
痛すぎた スマソ
225 :
nobodyさん:04/06/20 13:19 ID:e+KlAhh1
, - ' ゙ `` ‐ 、_,,,,,
,r' /=ミ
/ 彡ll',''´
. / 彡lll
!-- .、 ,、、、、,,, 彡lノ
l,,,,,__ / ___ 'r''゙ヽ
. |`゙'' ./ `'゙'''" .〉,l |
|. ,' //
. ',. ,' , r'
. ゙, ゙'ー ‐` l |
゙、''゙ ,,、二''‐ ノ l、
''''''''7'ヽ ''' / /`〉`゙T''''''''''
l ` 、,,,,、- ' " / /.| |
. | | .l i / ./ | |
| | | l / ./ .| |
. | | | l / / | |
| | | ', / / l .l
【ゴールデンレス】
このレスを見た人はコピペでもいいので
10分以内に3つのスレへ貼り付けてください。
そうすれば14日後好きな人から告白されるわ宝くじは当たるわ
出世しまくるわ体の悪い所全部治るわでえらい事です
質問させてください。
例えば掲示板の本文($msg)の中のJsky絵文字($E> 等)だけに
htmlspecialcharsを施したくない場合はどうすればいいでしょうか。
>>209 お前は和訳できんのか?
file_get_contentsはファイル全体を読み取る関数、断片を読み込めるハズがないだろ
228 :
nobodyさん:04/06/20 16:02 ID:6Dgt7SHl
php+gdでJPEG画像を表示させようとしています。
$im2 = ImageCreateFromJpeg("test.jpg");
header("Content-type: image/jpeg");
ImageJpeg($im2);
ImageDestroy($im2);
というphpファイルにアクセスしてブラウザに表示させようと
しているのですが、うまく表示されません。(IEだと壊れたイメージ
アイコンになる)
ImageJpeg($im2,"o.jpg");
としてファイルに書き出して、そのファイルにアクセスすると
ちゃんと見れます。
なんか原因わかりますでしょうか。
OS: linux
PHP: 4.1.2
apache: 1.3
GD version: 1.6.2 or higher
となっています。
PHPはこの先生きのこることができますか?
>>227が痛すぎるんだけど、さすがに釣りですよねw
実体より言葉を重視する種族の出身なんだろ、未開の。
しかしデータの受信に成功してるという部分が読めてないことを考え合わせるとマニュアル権威言霊主義かな。
ファイルが何なのか分かっていないらしいから、一般的なデータ構造についてはまだググってないと見える。
アンチマニュアルのあつまるこのスレではかなりの希少思想者だと言える。
とりあえずエラーを吐いてるのはfile.cではなく別のソース部分だよ、とヒントを与えてみるが、さて。
232 :
nobodyさん:04/06/20 19:08 ID:QviSJ75H
馬鹿か。わざわざ邦訳済みのマニュアルの英語版を持ってきて
和訳できんのかなんていってるんだからただの糞厨房にきまってんだろ。
しかもファイル全体を読み込むからとか言語障害くせーぞ。
すげー無駄だわ。
>>228 スクリプトは問題ないし、GDのバージョンかなあ。
どうだろう。geleralの方ではバージョンでこけてるような報告はなかったけど。
つーかRedhat?
あれにデフォルトでのってるphpを使うといろいろ苦労が絶えないらしいね。
234 :
204:04/06/20 20:16 ID:???
>>207 >>231が少し書いているが、これは本質的にはfopenの問題なのでfile_get_contents()だけじゃなく、
fopenのhttpラッパーをとるhttpアクセスすべて(要するにコンテクストをつかったもの)で起こる。
因みに、本家のバグリポートはこの問題の修正には極めて消極的で、
あきらめるしかないようだった。
荒れぎみなのでこの話はこれで終了ということにしてほしい。
以上。
235 :
nobodyさん:04/06/20 20:32 ID:Uv3J3abe
PHP 4.3.7を使っています。
バッチファイルからローカルでPHPを処理するプログラムを書きました。
ファイル名の一括置換プログラムなんですが、
foreach($rename as $var){ //$renameは置換条件を記した配列
$n = $newfilename;
$newfilename = preg_replace("/$var[0]/i","$var[1]",$newfilename);
if($n != $newfilename) print "$n\n"; //四行目
}
として、preg_replaceで文字置換を行っているんですが、
日本語ファイルの場合、必ず ー(伸ばす音) が ・ に文字化けします。
四行目では、preg_replaceを通す前と通ったあとが違う場合に変化を表示させようと
したのですが、改名条件にはまったく ー を入れてないのに、
文字が変わってしまいます。
本バージョンで、文字化けなどのバグは報告されたりしてるんでしょうか
ググったら前のバージョンでの文字化けの情報があり、 ←参照
ttp://jp.xoops.org/modules/newbb/viewtopic.php?viewmode=flat&order=ASC&topic_id=1998&forum=11&move=next&topic_time=1063857527 php.iniの設定をいじってはみたのですが変わりません。
バグじゃなくてただの設定ミスだね。
キチンと質問文かけば偉い人が教えてくれるかも。
設定しなくても文字コードさえ合わせれば正しく置換できると思うけど、
そうなるとphpの問題じゃなくなるか。環境しだいですな。
自己解決するに15カノッサ。
ところでphpの日本ユーザ会ってアクティブにやってんの?
まるで話を聞かないんだが。
googleの検索順位ではいつのまにかphp研究所を抜いてるね。
239 :
nobodyさん:04/06/20 22:00 ID:PqNZ37ce
printやechoや<?php ?>の外側の標準出力への出力を
スクリプトの途中で
いろんなファイルにリダイレクトしたいのですが
どうしたらよいですか?
240 :
228:04/06/20 22:12 ID:???
>>232-233 どうも。結局原因不明のままファイルに書き出すように
仕様変更しました。
ちなみにDebian (woody)のパッケージ物でした。
本番環境は自分のいじれない環境なので、自力コンパイル
することもできず。。
241 :
235:04/06/20 23:01 ID:Uv3J3abe
設定となるとphpの設定かwindowsの設定かどちらなんでしょうか
文字コードはphp.ini で
mbstring.language = Japanese
mbstring.internal_encoding = EUC-JP
mbstring.http_input = auto
mbstring.http_output = SJIS
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.substitute_character = none
にあわせたんですが、どこの設定を見直せばいいのでしょう
参考の参考ていどでもアドバイスがいただければお願いします
>>240 >PHP: 4.1.2
この頃のPHPでoutput_handlerにmb_output_handlerを使っていると、
Content-Typeを見ずに画像もコード変換するので画像が壊れるんだが
(phpinfoのロゴまで壊れてくれる)、その現象じゃないのか?
そうか、php をやるならまず apache をいれなアカンのか。
>>243 そんなことはない。確かにメジャーな組み合わせだけどね。
Webサーバ用インターフェースはCGIも含めて色々あるし、CLI(コマンドライン)版もある。
>>244 じゃあ Hello World ! 表示はどうやるの?
>>245 php -r 'echo "Hello World !";'
foo@bar[~]% php -r 'echo "Hello World !";'
PHP Warning: Unknown(): Unable to load dynamic library '/usr/lib/php/extensions/mysql.so' - libmysqlclient.so.12: cannot open shared object file: No such file or directory in Unknown on line 0
orz
(;´Д`)????
>>249=247?
>>247のエラーは、php.iniにauto_prepend_fileを設定してあるんではないかと。
外しているかもしれんが。
設定してあったとしても、そういうエラーが出るのは不思議だが、
使ったこと無いので、わからんぽ。
>>241 winの文字コードからスクリプト内で扱っている文字コード(euc-jp)に
コンバートして、書き込み時は逆変換すればおkと思われ。
$ php -r 'echo "Hello World !";'
Error in argument 1, char 2: option not found r
Usage: php [-q] [-h] [-s] [-v] [-i] [-f <file>]
php <file> [args...]
-a Run interactively
-C Do not chdir to the script's directory
-c <path>|<file> Look for php.ini file in this directory
-n No php.ini file will be used
-d foo[=bar] Define INI entry foo with value 'bar'
-e Generate extended information for debugger/profiler
-f <file> Parse <file>. Implies `-q'
-h This help
-i PHP information
-l Syntax check only (lint)
-m Show compiled in modules
-q Quiet-mode. Suppress HTTP Header output.
-s Display colour syntax highlighted source.
-v Version number
-w Display source with stripped comments and whitespace.
-z <file> Load Zend extension <file>.
できないヽ(`Д´)ノ
>>252 php --version してみろ。多分それはCGI版だ。
CGI版だった。CLI版にするにはどうやったらいいのかわかんない
255 :
nobodyさん:04/06/21 00:39 ID:rIRMytTY
PHPのインストールでGDが有効になってくれません。
zlib libjpeg libpng GDをインストールした後、
./configure --with-zlib-dir=/usr/local/lib --with-gd --with-jpeg-dir=/usr/local/lib --with-png-dir=/usr/local/lib
make
make install
としたのですが、
なにか他にやることがあるのでしょうか?
OS: linux
PHP: 4.3.6
apache: 1.3
> なにか他にやることがあるのでしょうか?
FAQ を読むこと
257 :
235:04/06/21 02:16 ID:U3ATJTTU
>>251 アドバイスありがとうございます。
それってphp.iniの設定ですよね?
今色々調べながら苦戦中です。文字コードを変えたら
日本語がまったく表示できなくなったりして
>>256 一応PHP.net等のFAQは見てみたのですが、参考になりそうなのがなさそうでした。
見つけられないだけかもしれません。
PHP付属のがあるので、GDは特に自分ではインストールする必要がなかったのでしょうか
>>257 iniの設定であわせてもいいし、251にあるようにスクリプト内で変換してもいい。
phpで参照する場合には、内部エンコードに合わせ、最終的な出力時にはwinの
コードにあわせて変えればいいだけ。
必要なことは全部マニュアルに書いてあるので、他は色々調べる必要なし。
http://www.php.net/mbstring 要するに内部エンコとwinのエンコが違うなら、当然一手間かける必要があるということ。
文字コードはいつまでもついて回るので自分で分かったと思えるまでやったほうがいいのです。
260 :
257:04/06/21 03:19 ID:U3ATJTTU
>259
何度もすみません、ご指定のページを自分でも見つけてやってはみたのですが、
もとのphp.iniに追加モジュールのphp_mbstring.dllをsystem32に追加して
追加モジュールを受けるように php.iniのその行の;をはずしました。
あとは例2にあるようなEUC-JP ユーザ用のphp.iniの設定に直せばいいんですよね
php.iniはそのページの設定どおりに変更したはずなんですが、どうしても
伸ばす音が文字化けが消えないのですが、他にいじるところはあるのでしょうか
preg_replaceでもmb_ereg_replaceでも変わらないのですが・・・
よくわからないけど、ソースをeucで書くなら、euc-jpは*nixのコードなんで
windowsから受け取ったらeuc-jpに、windowsに渡すときはsjisにコンバートかければよいかと。
mb_convert_encoding($string, 'euc-jp', 'sjis');みたいな感じでつ。
あれ、windowsってunicodeになったんだっけ?
まあそのへんは適当に(^^);
263 :
nobodyさん:04/06/21 04:38 ID:t8xSnGRb
12345という文字列(UCS2)をurlencodeで変換した後、GETやPOSTで値を渡そうとすると上手く受け取れません。
渡す前の中身は "%001%002%003%004%005" なのですが、これを$_GETや$_POSTで拾おうとすると
"\01\02\03\04\05\" という文字列に変わってしまっています。
これを元に戻す、もしくは上手く拾う方法は無いでしょうか?
264 :
263:04/06/21 09:55 ID:???
解決しました。
stripslashesでした。
266 :
228:04/06/21 11:45 ID:???
>>265 やっとgd入りました、ほんとありがとうございます
>>216 文字フォーマットが分からんつーからパディング指定子などの
説明があるページを貼った。
>>247=249
libmysqlclient.so.12 をPHPがロードしようとして、
見付からなくて止まってるんだな。
find /usr -name libmysqlclient.so.12 で探して、
見つけたディレクトリを /etc/ld.so.conf に書き加えて、
ldconfig しとけ。
基本な事で申し訳ないですが質問を..
umask(0);
if(mkdir("/hoge/hoge", 0707)) {
...
} else {
...
}
これで同名のディレクトリが存在した場合に
Warning: mkdir(/hoge/hoge): File exists in /***/result.php on line --
と、警告がでてしまいます(処理は流れきっているぽい)
できればこの警告を表示させたくないのですが
なにか対処方法はありますでしょうか
基本な事で申し訳ないですが質問を..
umask(0);
if(mkdir("/hoge/hoge", 0707)) {
...
} else {
...
}
これで同名のディレクトリが存在した場合に
Warning: mkdir(/hoge/hoge): File exists in /***/result.php on line --
と、警告がでてしまいます(処理は流れきっているぽい)
できればこの警告を表示させたくないのですが
なにか対処方法はありますでしょうか
>>271 umask(0);
if(!file_exists("/hoge/hoge") && mkdir("/hoge/hoge", 0707)) {
...
} else {
...
}
でどぅ?
単にエラー表示したくないのなら
error_reporting(0);
エラー制御演算子でいいんじゃね?
漠然とした質問で申し訳ないのですが、phpMyAdminのSQLからは実行出来るのに
PHPからmysql_queryするとエラーが出る場合、SETする文字に問題があるとは
想うのですが、どんな文字が原因となっていると考えられるしょうか?
mysql_query($query)の部分をecho $queryで出力してC&PでphpMyAdmin
のSQLで実行すると成功します。文字コードも関係しているのでしょうか?。
>>275 query投げる前が間違ってんだろ
connectしっぱいしてんじゃねーのか?
277 :
275:04/06/22 10:53 ID:???
mysql_affected_rows() || mysql_query($query) || die('err');
と書いていたせいでした。お騒がせしましたm(_)m。
>>276 アドバイスありがとう^^
278 :
nobodyさん:04/06/22 16:04 ID:5HQSlaav
データベースから取得してきた値(配列)を全ユーザ、全ページで共有して使いたいんですが、
セッション以外に格納できる良い場所はないでしょうか?(毎回ページアクセスするたびにDBにアクセスされたくないため)
どうぞ -> rwxrwxrwx buff.dat 0byte
280 :
nobodyさん:04/06/22 16:47 ID:uF7//6+H
自分のアドレスを取得する方法を教えてください
>>280 役所に行って住民票をとってこい。
それか、もちっと「アドレス」を正確に説明して味噌。あと「自分」も。
察してやれよ
じゃあifconfigでいいか
1.自分のグローバルIPが知りたいなら
診断君へ逝く
もしくはLAN外で、<?=$_SERVER['REMOTE_ADDR']?>
または、
>>281 2.プライベートIPが知りたいなら
LAN内で<?=$_SERVER['REMOTE_ADDR']?>
もしくは、Windowsだったら、ipconfig
Linuxだったら、
>>285 3.メアドが知りたいなら
ISPに聞く。
4.住所が知りたいなら
>>283 たぶん…3かな。
>>239 出力バッファに貯めておいて横取りしてファイルに出力する。
<?php
ob_start();
?>
(ここでいろんな出力)
<?php
$file = fopen('ファイル名','w');
fputs($file, ob_get_clean());
fclose($file);
?>
289 :
nobodyさん:04/06/23 12:22 ID:gFRZUYHb
Perlでの $ENV{'HTTP_REFERER'}
は、PHPではどうやるのでしょうか?教えてください、お願いします
290 :
nobodyさん:04/06/23 12:23 ID:gFRZUYHb
環境は
PHP5.0β4
Apache2.0.48
です。
質問です。
csvファイルのアップロードをするのに、fgetcsv関数をつかってるんですが
excel2000で"," をという値で保存したcsvファイルをアップロードすると,"と読み込まれます。
これは仕様でしょうか?
PHP Version 4.3.6を使っています。
よろしくお願いします。
292 :
うんこ:04/06/23 12:40 ID:???
293 :
うんこ:04/06/23 12:42 ID:???
>>291 excel2000で保存したcsvファイルをテキストエディタで見れば
問題は解決すると思います
$a に入っているのが 数字かそうでないか を判定したいんだけどどうすれば
297 :
nobodyさん:04/06/23 14:20 ID:qX+B9Isg
>>297 is_numericは正確に言うと数値かどうかの判断だがなぁ。
>>298 うんにゃ。数値または数値文字列であるかの判断。
マヌアル嫁
<INPUT NAME="unko" VALUE="<?= urldecode($_GET['unko']) ?>">
これで文字列に \ を入力すると どんどん増えていきます (バイバイン級)
どうしたらいいでしょうか
送信前にJavaScriptでurlencodeしなきゃだめ?
>>301 <INPUT NAME="unko" VALUE="<?= stripslashes($_GET['unko']) ?>">
栗まんじゅう
function bybyne ($kurimanju) {
$kurimanju = $kurimanju * 2;
return $kurimanju;
}
307 :
301:04/06/23 15:55 ID:???
>>302 ありがとう
でも新たな問題が!
" を入力できないっす
まあこれはあきらめようかな
無理っぽいし
>>307 お前、脳味噌あるか?
ちっとは自分で頭使って考えろや
309 :
301:04/06/23 16:11 ID:???
>>308 まあそうなんだけどさ
VALUE="<?= urlencode(stripslashes($_GET['unko'])) ?>"
ってやってもだめだったし
preg_replace("/\"/","\\\"",$dpreg) でもだめだった
そもそも"\""という表記がだめっぽだし
シングルクオーテーションで囲えばいいんだけど
今度はそのシングルクオーテーションが入力できなくなるし
もうおっぱいおっぱいなんですよ
310 :
301:04/06/23 16:12 ID:???
>>309の $dpreg は stripslashes($_GET['unko']) と思ってくだちい
311 :
nobodyさん:04/06/23 16:15 ID:jqDhu+uC
>>309 VALUE="<?= urlencode(htmlspecialchars(stripslashes($_GET['unko']))) ?>"
312 :
301:04/06/23 16:27 ID:???
>>311 サンクスコ
urlencodeはいらなかったっす
313 :
nobodyさん:04/06/23 20:26 ID:15bnd+/J
>>313 変換したくない時は変換しないようにスクリプトを書けばよいよい
>>313 方法は色々あるけど、件のソースのようにswitchで
切り替えてるなら、caseの中でそれぞれのサイトに合わせて
$key←$_POST["keyword"]の処理をしたらいいでそ。
最も、各サイトのurlとか変換処理の有無なんかは
配列かなんかで前の方で設定を集約するのがスマートやね。
316 :
nobodyさん:04/06/23 20:42 ID:15bnd+/J
317 :
nobodyさん:04/06/24 11:14 ID:Ig3nklaT
経験豊かな皆さんに質問です。
昔のPHPはGETやPOSTなど区別する必要が無いと効いています。
例えば、
$_POST["giko"] : 10
$_GET["giko"] : 20
$_COOKIE["giko"] : 30
$_SESSION["giko"] : 40
のような場合のときに、
echo $giki
とすると何が表示されるのですか?
そんなコーディングはしちゃダメが正解。
区別する必要が無くても区別しなきゃ不味いだろう
>>317はやった事無いからシラネ
>>317 $gikiは定義されてないから何も出ない
320に補足すると、「register_globals = On」な環境だと
variables_orderで指定した優先度の高い(右側)ものが入る。
通常の$_SERVER[]と同じ。
ああ、PHPの設定で変わるもんだから、仮にPOSTが無かった
時にはGETでという処理を書くときも、システムの動作に
依存させないで、ちゃんとコーディング上で処理しないと駄目。
# register_globalsはコードの中でini_setできないし
register_globals = Onの時に使ってたスクリプトを
register_globals = Offで使おうとしてこうやった事あるw
$key = array_keys($_REQUEST);
$i = 0;
while(isset($_REQUEST[$key[$i]])){
${$key[$i]} = $_REQUEST[$key[$i++]];
}
それはextractを知らなかったってところに笑えばいいんだよね?
てか、import_request_variables
セキュリティのことを考えると書き直したほうがいいんじゃないかな、と苦笑すればいいんだよね?
327 :
317:04/06/24 17:36 ID:???
ありがとうございました。
自分ではそのようなかき方はしないのですが、
頂いたソースがそのように書いたものでしたので。
ある関数の使い方を確認するためにPHPのマニュアル見てたら
@function_name で呼出してる例があって
探したんだけど@についての説明を見つけることができませんでした
@つけるとどうなるんですか?
メールが出せます
330 :
nobodyさん:04/06/24 22:26 ID:WjPQG3mJ
おまいら、申し訳ないですがよろしくお願いします。
phpのソースをプレーンテキストとして表示させるにはどうしたらよいでしょうか?
apacheの設定なのか拡張子をtxtに変えただけでは、プレーンテキストとして表示してくれません。
よろしくお願いします。
>>330 Apacheの設定次第
よくあるのは.phpsとか
>>330 IEのtext/plainをHTMLとして表示するステキ仕様ってオチは無しの方向でよろ。
せっかくshow_sourceてな関数があるのでそっちを使えば便利なのに。
parse errorが出た時に重宝してる。
334 :
nobodyさん:04/06/24 23:05 ID:WjPQG3mJ
>>333 ほーほー
どうもありがとう。調べてみます。
336 :
nobodyさん:04/06/25 00:13 ID:QzuvB6xt
>>336 「@readfile()という名前でコールされない限り、 エラーメッセージが表示されます」
だそうです。
338 :
nobodyさん:04/06/25 11:22 ID:ydrfhQOC
初歩的な質問なんですが
ファイルに書き込むときはfwriteとfputsのどちらがいいのでしょうか。
教えてください。よろしくお願いします
ちょっと便乗質問
echoとprintの決定的な違いってなんでしょうか
マニュアル読んだけどわかりませんでした
echo $a,$b
print $a,$b (だめ)
でも
print "$a$b"; はできるよ?
その話っていつも「男は黙ってecho」で終わっちゃうんだよね
>>343 それだと引数としては1個。print $a.$bと等価。
PHP4.2.2です
phpinfo() の出力結果を横取りしてファイルにでも落としたいんだけど
どうしたらいいかな
echo "hoge" > /dev/null
351 :
346:04/06/25 18:24 ID:???
>>350 できた!
<? ob_start(); phpinfo(); fwrite( fopen("unko.html",'w'), ob_get_contents() ); ?>
352 :
nobodyさん:04/06/25 18:28 ID:76ADPduI
Perlでの正規表現ってPHPでも使えますか?
$sub =~ s/^Re://g;
$sub =~ s/\[\d+\]\s?//g;
$com =~ s/<br>/\r> /ig;
PHPで使えないんであればどう書き直せばいいのか教えてくださいm(_ _)m
$sub =~ s/^Re://g;
$sub =~ s/\[\d+\]\s?//g;
$com =~ s/<br>/\r&gt; /ig;
こうでした……
preg_matchとか
gはallだなぁ
356 :
352:04/06/25 19:08 ID:???
355さんありがとうございます
マニュアル調べたりしたんですけど、Perlがよくわからなくてできませんでした_| ̄|○
はじめまして。
phpでhead.txtを取得してスレッド一覧を表示するプログラムを作っています。
head.txtの内容はご存知かと思いますが、「9999999999.dat<>スレタイ(数)」という感じになっています。
「9999999999.dat」と「スレタイ(数)」はsplitで分割できたのですが、そこから「スレタイ」と「数」を取得するにはどうすればいいのでしょうか?
今は、
「(」で分解して、配列の最後を取得し、「)」より前を取得して・・・→数
「(」より前を最後を除いて連結・・・→スレタイ
とやっているのですが、これだと処理に時間がかかりそうな気がしてしまいます。
正規表現などで簡単にやる方法はないのでしょうか?
どなたか教えてくださいm(__)m
358 :
357:04/06/25 19:19 ID:???
sageてしまったorz
>>357 preg_match('`^(\d+)\.dat<>(.*)\((\d+)\)$`', $line, $match);
こんな感じでは?
[1] スレッドID、[2] スレッドタイトル、[3] レス数
>>357 俺もそういうの作ったが、なぜsubject.txtを読みに行かない?
それで1行毎に<>でsplitして表示すればいいじゃん
>>357 ケツから最初の"("をサーチ。そこから")"まで、もしくはケツの1つ前の範囲がスレ数。
スレ名称は頭から、ケツから最初の"("の手前の範囲。そのままだと多分
スレ名称とスレ数の間にセパレータのスペースが入ってると思うけど。
しかし、subject.txtは鯖ごとに微妙に作りが違うというというワナ。
>>357 というか、それsubject.txtだろ
head.txtはそんなことかいてない
>359
できました。
ありがとうございます!
>360、>362
subject.txtの間違いでした。
すいませんm(__)m
phpとjavascriptの連携をさせたいのですが、可能でしょうか。
具体的にはjavascriptにて取得した画像サイズなどの情報をphpへ
渡したいのです。
<img>タグを使う方法以外で何かありますか?
>>365 可能。javascriptでPOSTするデータを
作ってformで送ってやればよい。
><img>タグを使う方法以外で何かありますか?
?
どうもー。
POSTするってことは、
ページの遷移があるってことですか?
>>367 そうですよ。html+Javascriptのhttpdとの通信手段は
自ずとそんな感じ。別フレーム切ってユーザが見ている
コンテンツのページは遷移してないように見せるのは
最近PHP-usersにも話題が出てましたね。
ActionScriptとかjavaアプレット、ActiveXなんか
使うと別ですけど。(それも話題に上がってたかな)
369 :
239:04/06/26 01:26 ID:???
どうもです
>>368 あー、やっぱりそうなっちゃいますか。
配布したいので、やっぱり
imgタグからphpを呼び出してgetで渡した方が
良さそうですね。
ありがとうござい真下。
こんにちは
おたずねしたいことかあります。
Cpanelってありますよね??
これをPHPなどでプログラムを作り、自動登録システムって可能ですか??
>>375 全然やり方わかんないすよ。。
どうすればいいかも。。。汗
>>377 画像"ファイル"のサイズならHTTPヘッダで取れるけど、
画像のサイズはURLからは無理。URLのファイル(画像)を
取得して、PHPの画像系の関数で画像のサイズを取得する。
pearの SmartIRCで $irc->setUseSockets(true);すると
WARNING: couldn't load the socket extension
って怒られるんだわ
けど PHP Ver 4.3.4で Sockets Support: enabled は確認済み
対処法plz
>>380 IRCSmart.phpを見てみると、extension_loaded('sockets') に失敗して
なおかつ dl('socket')にも失敗した時にそのメッセージが出るから、
get_loaded_extensions でほんとにロードされてるか確認して、、、
ん、dl("ファイル名")じゃなかったっけ?
>>384 フォーロthx.
結論は Socket.phpが apache->PHPからの呼び出しではロードされ,
コンソールから $php hogeでは呼び出されないといったものでした.
つまらないミスを調べさせてしまって正直すまんかった.ありがとう >384
386 :
nobodyさん:04/06/26 19:34 ID:plBi49aM
while(mysql_fetch_array())でSQLデータを取り込んでるんですが
後ろレコードからデータを読む場合はどうすればよいのでしょうか?
>>386 キモイやり方がお好みならmysql_data_seek()を使えばいいけど、
真っ当なやり方ならSQLの段階でorder byを設定すりゃいい。
つーかSQLの勉強をやり直した方がi..うわなにすんだやめr
388 :
nobodyさん:04/06/26 21:51 ID:jyZGtADG
jcode.phpみたいなやつでUnicodeからGB2312 か big5への
変換コードってありませんか?
>>388 知らない。ただjcode(LEではない方)弄って
GB2312とbig5の変換表を入れてやれば作れると思う。
あれ、中身は変換式/テーブルそのものだから。
CJKを参考にすればOK
PHPにて、抽選プログラム作るのって可能ですか??
確率も指定出来て、一日に一名のみ当選するようにしたいのですが、
可能でしょうか
>390
可能です。
> 確率を指定
$rate = 0.5
> 一日に一名のみ当選
lottery.dat みたいなファイルを作る。
日付のデータが入ってる。
1. lottery.dat を読む
2. 現在の日付を調べる
3. もし lottery.dat に入っていた日付と、現在の日付が違っていたら
3-1. 抽選を行う(srand(), rand())
3-2. 現在の日付を lottery.dat に書く
もし日付が同じだったら、抽選を行わない
質問です。
C の構造体のデータをバイナリとして持ってきて、
その構造体にアクセスしたいのです。
読み出しは unpack() を使うとできるのですが、
書きこみは pack() 関数を使うと、「一部のデータだけ書き換え」することができません。
一部のデータだけ書き換えする上手い方法はないでしょうか。
(何万件ものデータにアクセスするため、できるだけ速いアクセスがいいのですが)
なにかご存知の方、ご教授ください。
393 :
392:04/06/27 22:34 ID:???
自己解決…。
substr_replace() を使うことにしました。
データの該当部分を pack() した後、
substr_replace() で該当部分を書き換える、という具合です。
394 :
nobodyさん:04/06/27 23:17 ID:zkNM2hBA
MySQLにはいったTEXTデータを読み込むと
改行が反映されないのですが、
どうすれば改行されるようになるでしょうか?
395 :
nobodyさん:04/06/27 23:30 ID:Ba+8mIiM
ファイルに「能」や「表」などのダメ文字を書き込ませると、
「能\」や「表\」のように、語尾に\記号がついてしまいます。
これを回避する方法はないでしょうか?
ご存知の方教えてください、宜しくお願いしますm(__)m
超頻出質問のために
>>400がテンプレを作ります。
分かったよ、確かに俺は馬鹿だ。
テキストファイルを表示するときに、
HTMLとして表示されているため、改行が行われないんだ。
当たり前だな。で、どうすれば改行されるんだ?
preタグ使うと横スクロールするようになるんでこれではちと困るのだが。
399 :
nobodyさん:04/06/28 00:06 ID:bkEAVbgz
PHPでメルマガ配信プログラムを書いていますが、
mail関数で、DBに登録されているメールアドレスに
送信済みのフラグをたてながら一件づつ送信するプログラムなのですが
ループが早すぎてサーバーが処理しきれないのは問題があります。
ループの間隔をおくのも確実とは言えません。
過負荷にならない程度にメールを配信するには
どういった方法が挙げられるでしょうか?ご教授ください。
毎度レベルの変わらない釣りにテンプレを作る意味はなし。
反応してる奴と2人でさしつさされつ完結していて欲しい。
>>398 せっかく答え書いたのに... ・゚・(つД`)・゚・
>>401 ああ、ゴメンよ。
これ関数だったんだ、気づかなかった。
ありがとう。
質問なのですが、PHPからLinuxのシェルコマンドを動かす場合どのようにすればいいのでしょうか?
よろしくお願いします。
404 :
nobodyさん:04/06/28 09:28 ID:WEBa9e2h
>>403 exec();
system();
passthru();
shell_exec();
``;
いやいやWindows上のPHPからLinuxのシェルコマンドを動かしたいのかも知れんぞ
('A`)
test
407 :
nobodyさん:04/06/28 12:50 ID:WEBa9e2h
IDがWEBだった。ヽ(´ー`)ノ
>>407 そのIDをWeb製作板で出してくれてたなら、、嗚呼。
ヌッ(・∀・∀・)ホッヘー
Smarty を久々にバージョンアップした所、動作が変わって対処に悩んでまつ。
定義されていないテンプレート変数、例えば {$hoge} に assign が無ければ、
以前はスキップしてくれたのですが、バージョンアップ後は
>FATAL .. Undefined index hoge
とエラーを吐いています。
いちいち {if isset($hoge)} と囲うのも鬱陶しく、どう対処すべきかな〜、と。
# Smarty の設定かと思いマニュアル見直しましたが適当な設定は見あたらず。
# $smarty->undefined = NULL とかも試しましたが変化無しでした。
Perl互換の正規表現/置換(preg_replace)についての質問です。
%に挟まれた文字列(%test%)から%を取り除き、
それをキーとする要素を連想配列から取り出して出力したいのですが、何も表示されません。
もしよろしかったら、教えていただけると幸いです。
<?php
$template = "%test%";
//%に挟まれた文字列にマッチ
$pattern = "/(\%)(.+)(\%)/";
//置換用配列
$replacement = array("test" => "キタ━━━━ヽ(゚∀゚ )ノ━━━━!!!!");
//このままだと、%を取り除いた文字列を表示
//"$2"の部分を$replacement['$2']や$replacement[$2]、$replacement['\\2']などとしてみましたが、ダメでした。
echo(preg_replace($pattern, "$2", $template));
?>
#一応全角スペースでインデントしました。よろしくお願いします。
411 :
410:04/06/28 14:58 ID:???
あ、環境を書くのを忘れていました。。。
OS: Windows XP SP2 RC2
Server: Apache 2.0.49
PHP: 5.0 RC3
モジュールとして動かしております。
$replacement["test"]ならいけると思うんだがそれじゃあかんの?
あ、ごめん。俺何言ってんだ。
ソース斜め見しただけでレスしてました。
>>412 そうなんですが、htmlファイルでテンプレートを作って、%で囲まれた文字列を置換して出力したいんですよ…。
キーもtestだけではないので、
str_replace("%test%", $replacement["test"], $template);
などとしてもやはり複数行になってしまいますよね。
できることなら一行にまとめたいのですが…。
415 :
409:04/06/28 15:06 ID:???
417 :
409:04/06/28 15:07 ID:???
人いないんじゃなくて Smarty 使ってる人がこのスレにいないのか _| ̄|◯
流れたら pear スレの方に逝ってきまつ、、
使ってる俺がアドバイスするが、逝くならsmartyスレだろ。
>>418 あら、、専用スレあったの知りませんでした。
取り敢えず過去ログ見に逝ってきまつ。
ありがd
420 :
410:04/06/28 15:19 ID:???
>>415-416 なるほど…。
まだまだ理解できていないようでした。
Parserから勉強しなおすことにします。
ありがとうございました。
%をグループ化して参照可能にする意味は多分ないだろう。
422 :
415:04/06/28 15:23 ID:???
パーサーって何でつか。。(´・ω・`)
エスケープする意味もなさげ
424 :
410:04/06/28 15:28 ID:???
>>421-423 Σ(´д`ノ)ノ
ちょっとeval()とか見ながらひぃひぃ言ってました…。
小学校から勉強しなおしてきます。。。
<?=変数名?>で記述しているファイルをincludeしたまへ。
>>422 paserの日本語表記。多分耳で聞くとパーザ[ー]
〃∩ ∧_∧
⊂⌒( ´・ω・)くpaserは何語表記なんだろう...
`ヽ_っ⌒/⌒c
428 :
422:04/06/28 16:17 ID:???
>>426 そうでつか。添乗してくれるおねーさんの事じゃないんでつね (´・ω・`) 残念でつ。
今日本屋で見たWebDesigningという雑誌のPHPのコーナーでアンケート集計スクリプトが紹介されており、
誰かが投票するたびにYYYYMMDD-HHIISS.txtという形式でファイルを生成して書き込むという仕組みでした。
この場合1秒間に複数の投票があったら対応できないので明らかにまずいんじゃないかと(排他処理でなんとか
なるかもしれませんが)と思います。
素直に1ファイルに追加書き込みしていった方が後で集計するのも楽だと思いますが。
>>430 スクリプトを見てみないと分からないけど上書き処理で前のデータが消えるんだろうね
それより閲覧する場合は投稿分のファイルを全部オープンする気だろうか・・・
ログを生成して保存してるのかなぁ
1つのスクリプト内でMYSQLに頻繁にアクセスする場合、その都度
mysql_connect('localhost:3306','id','pass');
と、みなさんは書いてますか?
classやfunction内でmysql_connectを書いてるのが美しくない気がしてならない
>>431 美しい美しくない以前にリソースの無駄遣いのような...
グローバルスコープで$my = mysql_connect();して
関数やクラス内でglobal $my;するとかではだめっすか?
PEARのDB_DataObjectのソースが参考になるかと。
>>431 書き込もうと思ったファイルが存在したら、乱数秒待機させるとか。
>MYSQLに頻繁にアクセスする場合
単一コネクションで済む場合は、普通コネクションは使いまわしだわな。
コネクション張るのにコスト(PHPの場合は少なくて済んでるけど)が必要だから。
434 :
nobodyさん:04/06/28 19:17 ID:l4cOKm4n
くだらない質問ですが、よろしくです。
index.php
<?php require("hogehoge.inc");?>
<? echo $hogehoge_1;?>
hogehoge.inc
$hogehoge_1=123456
とすれば123456と返ってくると思うのですが。
これを
$_GETを使って
ttp://127.0.0.1/index.php?main=1 もしくは
ttp://127.0.0.1/index.php?main=2 index.php
<?php require("hogehoge.inc");?>
<? echo $hogehoge_$_GET['main'];?>
hogehoge.inc
$hogehoge_1=123456
$hogehoge_2=78910
などで呼び出せないものでしょうか。
<? echo $hogehoge_$_GET['main'];?>を
<? echo $hogehoge_{$_GET['main']};?>
にした場合、夢だったのか呼び出せたように思えたのですが、、(2日ほど寝ていないので・・)
わかる方よろしくお願いします。
仕事がすすまねぇ
今日はもうやめるか
echo ${'hogehoge_'.$_GET['main']}
俺個人的には可変変数は気持ち悪い。。。
>>436 うぉ〜〜ありがとうございます!
できました!(ノ_・。)
とてもうれしいです!
今夜はゆっくり眠れそうですw
<(_ _)>
最近MySQLに書き込むとき10回に一回ぐらい割合で
文字化けするようになったのだが、
どんな原因が考えられますか?
昔は全然なかったような気がするだけどなぁ、なんでやろ。
440 :
nobodyさん:04/06/28 21:37 ID:O2HF8evS
Webサーバとは別にあるメールサーバからメールを送信したいのですが
php.iniのSMTPの内容をそのサーバ名に指定してもメールが送れません。
mb_send_mailでもmailでも戻り値はTrueです。
また、Webサーバからはちゃんとtelnetでそのメールサーバにつないで
メールを送ることはできていますがPHPで送信しても
ログにも残っていないんでデータが渡せていないっぽいんですが・・
他にも設定しないといけないところがあるのでしょうか?
>>440 マニュアルのmail関数のあたりに詳しく書いてあるのだけど、
Windows版の場合はメールサーバに渡してくれて、
それ以外の場合はsendmailプログラム(not サーバ)に渡してくれる。
鯖OSを書いてないから勝手にirixだと仮定して話を進めるけど、
mail()がtrueになってるってことは、Webサーバのメールプログラム(ややこしいな..)を
呼び出していてそこで溜まってるんじゃないかな。
で、解決方法はと言うと、Webサーバのメールサーバ設定をきちんとするか、
メールサーバとsocket通信をするか、くらいかな。
442 :
nobodyさん:04/06/29 00:49 ID:zFB2Z8eM
Cookieについて質問させて下さい。
<?php
setcookie("bbs_name",$_POST['name'],(time()+60*60*24*30),"","",0);
?>
<html><head><title>掲示板</title></head><body>
<form action='このファイル自身' method='post'>
<input type='hidden' name='action' value='regist'>
名前<input type='text' name='name' value="<?php echo $_COOKIE['bbs_name'] ?>">
<?php
if ($_POST['flags'] == 'return') {
echo "<input type=submit value=[" . $_POST['return'] . "]に返信>\n";
echo "<input type=hidden name=ress value=" . $_POST['code'] . ">\n";
} else {
echo "<input type=submit value=書き込み/更新> <input type=reset value=リセット>\n";
}
?>
以下、記述が続きます・・・
上記の記述でサブミットボタンを押し、1回目に更新した時には、
名前入力欄に前回入力した内容が表示されるのですが、
2回目に更新をかけると、全て消えてしまうのです。
いったい何が原因なのか、わかる方、ご教授下さい。
>>442 submitボタンを押して更新しているから大丈夫っぽだが、
前後の取り合いが判らんので、念のため、
if($_POST['name']) {
setcookie("bbs_name",$_POST['name'],(time()+60*60*24*30),"","",0);
}
ってするとどうなる。
#どうなる。って聞きながら今日はもう寝る。l
444 :
nobodyさん:04/06/29 01:51 ID:2uVjJIh2
他は出来たんですが、フォームからデータを送り、それを処理するスクリプトを書くという問題おしえてください!
--------------------------------------------------------------------------------
送信側でりんごとみかんとどっちか選ぶ選択肢があって、
処理側でりんごとみかんをどっち選んだかの結果を表示し、
かごの中にはりんごは今 個です
かごの中にはみかんは今 個です
と表示させたいのですが、どうしてもできないんです。。
セッション関数、formタグのinputを使ってもいいみたいなんですが・。・・
/⌒彡 /⌒彡
/ 冫、) / 冫、)
/ ` / / ` /
/:::::::::::\ /::::::::::::;\
//:::::::::::: l | //´|::::::::::::l |
//|::::::::::::/| |
>>444 // /::::::::::::/| |
U |::::::::::/. U ↓ U |::::::::::/ U
|::::||::| | | /⌒ヽ/ |::::||::|
| / | | | / ´_ゝ`) | / | |
// .| | / __ ,/ // | |
// | | | / | | // | |
U U U U U U
446 :
nobodyさん:04/06/29 02:00 ID:2uVjJIh2
<html>
<head>
<title>課題</title>
</head>
<body>
<center><h2>ワークシート4</h2></center>
<form action = "worksheet4.php"method = "POST">
<center>
お名前<input type="text" name="username">
<br>
メールアドレス<input type="text" name="mail">
<br>
郵便番号<input type="text" name="bango">
<br>
住所<input type="text" name="zyusyo">
<input type="submit" name="submit" value="登録!">
<br>
<input type = "hidden" name ="product" value="Apple"><br>
<input type = "submit" value = "かごに入れる">
<input type = "hidden" name ="product" value="Orange"><br>
<input type = "submit" value = "かごに入れる">
</center>
</form>
</body>
</html>
というふうにしたんですが、オレンジとりんごを選択するタグって何をつかうんですが?
447 :
nobodyさん:04/06/29 02:08 ID:9Mhdwhm6
質問です。
fgetcsvには文字化けするという問題があります・・・。
fgetcsvに相当する関数を自作すれば良いと言われましたが、
そんな事できませんです。
だれか fgetcsvに相当する関数作った事ある、知っている
という方 教えて下さい。
> fgetcsvには文字化けするという問題があります・・・。
へぇ、初耳。
> fgetcsvに相当する関数を自作すれば良いと言われました
ext じゃなくて PHP によるユーザー定義関数の自作、でしょ。
余裕で可能。
正規表現についてなのですが、掲示板にURLが張られた際に
ereg_replace("(https?|ftp) 〜〜
上記のようにURLを判定し、文字列をリンクするよう置換しています。
これに当てはまらない場合でよく見かける直リンク避けの「ttp」から始まるものも
違う文字列に置換したいのです。
ereg_replace("(ttp) 〜〜
このようにしてしまうと上に書いた通常リンクのものと衝突してしまいますし
ereg_replace("(^ttp) 〜〜
このようにすることでそれらの問題は回避でき、望みの動作をするのですが
本文の一番最初にURLが記載されないといけないので不都合です。
例えば 「あいうえお
ttp://hogehoge/」 という投稿があった際にも
置換処理を行いたいのですが、いい方法はないでしょうか?
>>447 >fgetcsvには文字化けするという問題があります・・・。
>fgetcsvに相当する関数を自作すれば良いと言われましたが、
その話が話題になったところで回答出てるだろ。
人づてで聞いたなら、聞いた人に訊け。
>>449 httpやttpが単語だってことを肝に命じてください
>>449 それら2つの違いを見比べれば、
hでは無い文字の次にttpが続く文字列 という条件に気づきそうなものだが?
>>449 とりあえずオライリー・ジャパン「正規表現デスクトップリファレンス」でも買っとけ。
良書だよ。
>>451 おっぱいソングの変な外人の声が聞こえてきたよ…
>>447 何ができないの?プログラムを作ったことがないのか?
0.前処理(ファイルオープン、DBトランザクション開始とか)
1.1行読み込む
2.ファイルエンドまで繰り返す
3. 読み込んだバッファをカンマ(,)をセパレータにして区切る
4. (必要に応じて、フィールド数が想定したものと違っていたらerrorとする)
5. (必要に応じて、フィールド後のチェックを行う)
6. (必要に応じて、DBテーブルに格納してもいいかも)
7. 1行読み込む、2のループへ
8.後処理(ファイルクローズ、DBコミットとか)
※1、フィールドのダブルクオート(")囲みを想定している場合、3.の処理でダブルクオート(")を
取り除く処理が必要、データ中にカンマ(,)ダブルクオート(")を許す場合はさらに複雑
※2、フィールド中に改行を許す場合は2.7.のと読み込み処理にも工夫が必要
>>455 > ※1、フィールドのダブルクオート(")囲みを想定している場合、3.の処理でダブルクオート(")を
> 取り除く処理が必要、データ中にカンマ(,)ダブルクオート(")を許す場合はさらに複雑
> ※2、フィールド中に改行を許す場合は2.7.のと読み込み処理にも工夫が必要
この条件が満たされないと、CSVを読み込めるとは言えないでしょう。
>>456 別にたいした事ではないと思うが・・・。初心者?
>>452 この方法で対処できました。有難うございます。
>>456 ところが、用途が限定されていれば、1行読んでカンマで切り分けるだけすむ場合も良くあるよ。
必要ないなら、わざわざ汎用的なCSV読み込みプログラムを作る必要もない。
どっちにしろ
>>457の言う通り、大した事じゃない。
ああ、最近php-usersで流れてたfgetcsvの文字化けネタを
引っ張ってきたのかと思ってスルーしてたよ
>>460 いや、たぶんその人じゃないのかな?ファイルのコード変換してからやることにした
とか言った手前、もう訊けなくなったんじゃ?
462 :
nobodyさん:04/06/29 16:45 ID:8D9V5eyp
正規表現置換で、うまくいかないので教えてください。
+という文字が2回以上続いた場合、+一個にしたい。
+++→+
++→+
+→そのまま
正規表現スレにあるリンク集読んで調べろ。
質問の仕方もどうにかしてくれ。
最近PHPを勉強し始めたのですが、ちょっと困ってます。
Apache1.3.28とPHP4.3.7でオフラインでやっているのですが、html内に記述したPHPが実行されなくて
困ってます。
PHP単体だと問題なく動作します。
例えば、
//----------------
<?php print "テスト"; ?>
//----------------
これで **.phpとすれば問題なく表示されますが、
//----------------
<html><body>
<?php print "テスト"; ?>
</body></html>
//----------------
これだと何も表示されません。
何が原因として考えられますか?
インストールには下記のサイトを参考にしました。
ttp://www.dream-seed.com/server/php_apache.html
>>464 下の方のファイル名は **.phpですか?
それとも**.html or **.htm ですか?
466 :
464:04/06/29 17:18 ID:???
あ、すいません。
書き忘れてました。
下の方は **.htmlです。
あははははは。
ちょっと気の利いた人間なら、
>>465を読めば、
拡張子を.phpに変えてみようかな、とか思うものだが。
phpマニュアルでは.php以外のaddtypeについても触れられている。マニュアル最強。
PHPで携帯の固体情報の取得について質問させてください。
imodeはutnで問題無く取得できたのですが、
ezwebではうまく取得できません。
サブスクライバIDを取得すればいいというのは分かったのですが、
実機(auのwin)で検証してみると、「表示できません(未対応)」
というようなエラーがでてうまく動きません。
プログラムの書き方が間違っているのでしょうか?
プログラムは以下です。
if( ereg( "UP.Browser", $_SERVER['HTTP_USER_AGENT'] ) )
{
$headers=getallheaders();
$post['sub'] = $headers['x-up-subno'] ;
}
よろしくおねがいします。
$_SERVER['HTTP_X_UP_SUBNO']
えっと、初歩的な質問で申し訳ないです・・・
}else if(! is_numeric($YEAR) or is_numeric($MON) or is_numeric($DAY)){
print "<CENTER>生年月日を正しく入力してください。<BR>";
print "ブラウザの「戻る」で前のページにお戻りください。</CENTER>";
と、やってみたのですが、生年月日に半角数値を入力しても
「生年月日を正しく入力してください。」と表示されます。
これはいったい何が原因なのでしょうか?
>>472 初歩的というかだな・・・まあいいや
とりあえず面倒くさいんでcheckdate使っとけ
>>472 そもそも、$YEARだのなんだのにホントに値が入っているのか確認汁。
>>472 書 い た コ ー ド を よ く 見 直 せ
久々にこのスレ見てるけど、前に比べてさらに悪化してるよ、ママン _| ̄|◯
ちょっと試してみるか考えてみれば分かるだろうに、、全員釣り?
476 :
470:04/06/29 20:02 ID:???
>>471 ありがとうございました〜!
無事取得できました!
477 :
472:04/06/29 20:02 ID:???
タグはこれでつ
<TR>
<TD bgcolor="#0000ff" align="center"><FONT size="2"><B><FONT color="#ffff00">生年月日</FONT></B></FONT></TD>
<TD bgcolor="#ccccff"><FONT size="2"><INPUT size="5" type="text" maxlength="4" name="YEAR" VALUE="<?php echo
$YEAR ?>">年<INPUT size="5" type="text" maxlength="2" name="MON" VALUE="<?php echo $MON ?>">月<INPUT size="5" type="text" maxlength="2" name="DAY" VALUE="<?php echo $DAY ?>">日<BR>
生年月日を入力してください。</FONT></TD>
</TR>
>>472 ついでに、
if (条件式1 or 条件式2 or 条件式3)
{
処理
}
となっている場合、条件式 1 から順に真か偽をチェックし、
ある式が真を返した時点で残りの式のチェックをスキップし処理に入る。
これで見直してみそ。
それでもわからんかったら条件式を最初の一つだけにして、その後徐々に増やしながら確認してみろ。
>>472 タグはこれでつじゃなくてさ、、、
プログラムは正しく動いている。
おまいの意図した通りではなく、おまいの書いた通りそのままに。
あとついでに
> ブラウザの「戻る」で前のページにお戻りください
こんな処理組むのやめて、、キャッシュ効かなかったら入力全部飛ぶぞ。
QuickForm とか適当なライブラリ使うか入力値の継承しような。ちゃんとサニタイズしろよ。
480 :
nobodyさん:04/06/29 21:06 ID:szUQP7IW
PHPのjcode.phpsみたいな変換ライブラリの韓国語版ってないでしょうか?
韓国語文字のutf-8コードからiso-2022-krへの変換等を行いたいんですが。。
PHPのバージョンが4.2なので、mbstringが韓国語をサポートしていません。
どなたかご存知の方がいらっしゃったらよろしくお願いいたしますmm
>>480 あるよ。
ぶっちゃけ韓国のPHPコミュニティで訊くのが先
#前にも中国語版の似たようなの探してる人がいたけど。
482 :
nobodyさん:04/06/29 23:09 ID:bB0o4iTw
すいません。質問です。
渡された引数のファイルの更新を行うスクリプトがあるのですが、
30人程が更新を行う際に同じスクリプトを30人で使うのと、
引数を使わないで30個の専用のスクリプトを用意するのではリソースは変わりますか?
about.php?page=5
等として、about.phpを呼び出したときに、
about.phpから?以下のクエリを取得する方法はありますか?
('A` 釣り?
>>482 まずボトルネックが何かだろう。課題に対して解決の求め方が間違っている。
>>483 赤マンモスでも読んで一から勉強しる。
他の知識も欠落しているだろうから本かソース読んだ方で総合的に学習した方がいい。
485 :
483:04/06/30 00:03 ID:???
あ、みっけた。
オメーよりはぁ〜〜
俺の方がぁ〜〜
スキルあるよ?
>>484
確かに質問のレベルが急激に下がりつつあるな。
それだけPHPの間口が広がったと取るべきか。
新人さん変遷を語るの図
488 :
nobodyさん:04/06/30 02:09 ID:FZovrSyI
>>481 どうもありがとうございます。
あるだろうことはなんとなく分かるんですけどね。。
コミュニティよく分かりません。。
PHPファイル名だけでも分かればありがたいですが。
釣りの質問の方がレベルが高くて回答しがいがあるかもな
単なる低レベルな質問なんだか、そのレベルに合わせた釣りなんだか
判断付かん質問がマジ質問だったりする
掲示板で人に質問する前にすることがあるだろうと小一時間(ry
echo "小一時間"; ひさびさきいたー
echo "小一時間"; //ひさびさきいたー
echo "> 小一時間";
echo "ひさびさきいたー ";
$小 = "小":
$一 = "一";
$時 = "時";
$間 = "間";
for($i = 0;;$i++)
{
if( !( $i % 2 ) )
print "<br>";
print "小一時間";
}
echo urldecode("%BE%AE%B0%EC%BB%FE%B4%D6");
498 :
こませ:04/06/30 14:33 ID:???
echo gzuncompress("\x78\x9C\xEB\x5F\xD3\xF1\xAA\x6F\x5E\xD7\x15\x00\x16\xF0\x05\x38");
変数を途中で作れるけど、作れないようにしたい。
どうしたらいい?
for($i=0;$i<4;$j++){
↑こういうのを防ぎたい
>>499 無理
過去MLで、変数は宣言必須に... って案も出てたけどなぁ。
>>499 どうでもいいけどなんで$j++なんだ?
502 :
499:04/06/30 15:34 ID:???
>>501 $iと$jのタイプミス のサンプル
つまり、こういうタイプミスを事前検出する手段
まあ事前じゃなく実行時でもいいけど
とにかくこういう自動変数が認められるせいで
バグが増えてしまうのをなんとかしたいポヨ
>>501 だから、そういう間違いをおこさないような仕組みない?って聞いてるんだよ。
#!perl
use strict;
見たいなやつよ。
デバッグ慣れしてきたら typo で困ることもそうそう無いが、、
と言いつつさっき options が optoins になっていて 5min くらい迷ってた orz
まぁでもいちいち変数宣言なんてやっとられん罠。
>>503 全部 $vars['var_name'] とか配列に放り込んでおいたら E_NOTICE で警告出る。
そんな変態スクリプトもどうかと思うが。
>>503 オマイは質問の次のレスさえ読まないのかと小一時間(ry
そんなんだからキーミスをするのだと小(ry
php.iniの設定で変更できる形ででもあれば便利なんだけどなぁ。
506 :
503:04/06/30 15:48 ID:???
perlでやっててちょっとphp触ってみようか、とテスト環境に入れたりしてたんだけど、
そうなんだ、phpってそういう自主規制の仕組みがないんだ。
なんかちょっと大きいやつの開発むかないんだね。
perlだってuse strict;つけないなんて考えられんもんな。
無駄なデバッグに時間とられたくないし。
507 :
499:04/06/30 15:52 ID:???
冷静に考えると、宣言なしの変数利用を否定するということは
連想配列の要素追加なんかも否定しなきゃならなくなるのかも・・・
むずかしい
typoより分岐でバグる事の方が多いはずだけど
>>506 > なんかちょっと大きいやつの開発むかないんだね
探せばいくらでも事例やオープンソースのプロジェクトはあるワケだが。
いくつもの考え方が並列して成り立ちそれぞれに価値がある事を解しない香具師は一生 Perl の世界に閉じこもっとけ。
と釣られてみる。
510 :
nobodyさん:04/06/30 16:26 ID:bmKP74+o
投稿時の空欄をチェックするスクリプト書いたんですが
評価して下さいませ
<?
$r_a=array("name"=>"名前","tel"=>"TEL","email"=>"E-mail","age"=>"年齢","comment"=>"P
R","ginkou"=>"銀行名","siten"=>"支店名","namber"=>"口座番号","meigi"=>"口座名義");
while(list($key, $val) = each($r_a)) {
if(!$$key){$re .="${val}がありません<br>";}
}
if($re){echo"$re";exit;}
?>
error_reporting(E_ALL);
じゃたりない?
512 :
nobodyさん:04/06/30 16:32 ID:bfdTVs9y
初歩的な質問ですが・・・
'".$id."'
これがどういう意味なのかわからないのですが
どう解釈すればよいのですか?
>>512 <?php
$id = 1;
$str = '".$id."' ;
print $str;
?>
これで満足か?
>>510 HTML_QuickForm 使うと幸せ。
>>512 解釈も何も、シングルクオートで囲んだ場合は、そのまま文字列なのだが
はじめまして。質問させてください。
サーバー上のファイルをダイアログを出してダウンロードさせようとしています。
現在
a.php : ダウンロードするファイルを指定するスクリプト
b.php : a.phpからPOSTされた情報でダウンロードを実行するスクリプト
という構成です。
b.phpでheader指定やらreadfileやらして実際にダウンロードはできています。
お聞きしたいのは、a.phpだけでダウンロード処理を実行できないか、ということです。
a.phpでダウンロード実行するとブラウザ上でのロケーションは変更されず、
ダウンロードダイアログが表示されるようにしたいのです。
(今はb.phpが空っぽの状態で開いています)
header関数は、その前に空行を含むいかなるHTTP出力を含めてはいけない
とのことで、このような構成になっているのですが、なんとかできないでしょうか?
おまいらちょっといいですか。
error_reporting の影響範囲について伺いたいのですが、
set_error_handler によりユーザー定義のエラーハンドラ関数をセットすると error_reporting の設定に関係なくあらゆるレベルのエラーからエラーハンドラがコールされています。
これは仕様なのでしょうか。
エラーハンドラ関数の中でエラーレベルを識別し、処理をしろって事でしょうか、、
環境
WindowsXP PHP 4.3.4
FedoraCore1 PHP 4.3.7
sample1 -- 意図した通りに動作 (未定義のインデックスによるエラーはレポートされない)
--
$_error_reporting = error_reporting(E_ALL^E_NOTICE);
$array = array();
print $array['hoge'];
--
sample2 -- error_reporting の内容にかかわらずエラーハンドラがコールされている
--
$_error_reporting = error_reporting(E_ALL^E_NOTICE);
set_error_handler('myErrorHandler');
$array = array();
print $array['hoge'];
function myErrorHandler($level, $errstr, $errfile, $errline)
{
print "[$level] Line:$errline -- $errstr <br>\n";
}
--
>>516 a.phpだけでできるけど、見た目は今と変わらないかもね
if (isset($_POST["〜"])) {
>>518 途中で送信してもうた
a.phpをこんな感じにすれば
if (isset($_POST["〜"])) {
元々のb.phpのスクリプト
exit;
}
元々のa.phpのスクリプト
変数宣言の話だけどE_NOTICEを付ければいいんじゃないの?
521 :
517:04/06/30 17:37 ID:???
>>520 すいません、もう少しヒントくれると嬉しです、、(´・ω・`) 変数宣言でマニュアルくぐっても何も出ずなので、、
>>521 レスありがっつぉございます。
やっぱexitしないといけませんですかぁ。
a.phpに複数ファイルを並べておいて、
順に落とせるようにしたいんですけど・・・
523 :
516:04/06/30 17:41 ID:???
あ、間違えた。
>>519さんでしたね。
強引にロケーションを戻すしかないかな。
>>510 糞コードで口座とか言ってるあたり、餌が安すぎるよなぁ。
>>522 何悩んでるのかよく分からんが、下のを実行しても「geko」が表示されることは無い。
(POSTだと長くなるのでGETで代用した。)
<?php
if(isset($_GET[file]) && $_GET[file] != ''){
header("Content-disposition: attachment; filename= test.txt");
header("Content-Type: application/octet-stream");
readfile($_GET[file].".txt");
}
?>
<html><body>
<a href="a.php?file=a">download</a>
<?php
if(isset($_GET[file]) && $_GET[file] != ''){ print "<p>geko</p>"; }
?>
</body></html>
526 :
517:04/06/30 17:58 ID:???
527 :
516:04/06/30 18:16 ID:???
>>525さん
あ、あれ・・・このサンプルでまさに意図していた通りの動きですよ?
強烈に何かを間違えている予感。
自分とコードを見つめ直します。
528 :
516:04/06/30 18:36 ID:???
うぅっ。できました。えらい勘違いでした。申し訳ないです。
>>519さんので正解だったんですね・・・
スレ汚しすいませんでした。
>517
その通り。
>PHP の標準のエラーハンドラは完全にバイパスされることに注意して下 さい。
>error_reporting() の設定は影響せず、どの ような場合でもユーザが設定した
>エラーハンドラがコールされます。ただし、この場合でもハンドラで
>error_reporting() のカレントの値を読み、適当に動作させることは可能です。
と、PHP マニュアルの set_error_handler 関数のページに書いてある。
530 :
517:04/07/01 01:27 ID:???
>>529 ありがとうございます。
見落とし杉、、_| ̄|◯||
http://jp.php.net/manual/ja/function.set-error-handler.php にあるように
error_reporting(E_ALL);
set_error_handler("myErrorHandler");
をしても Parse error や Fatal error を捕まえられないわけですが、
どうしても捕まえたいです。別の方法、もしくはよいアイディアはないでしょうか?
# ob_get_contents() して Parse error などの文字を preg_match() させようとも思いましたが
# ユーザ側の入力で万が一でも Parse error と入力した場合も捕まえてしまいますし…。
>>531 そのページ内をparseで検索してみると、サンプルコードっぽいのが載ってるよ。
でもなんか強引すぎるような.....
>>532 ありがとうございます。
ob_* を使って「error</b>」で検索する方法や eval() ですよね。
eval() は怖いし、ob_* は万が一マッチしたら、という不安や、
長時間処理の時に ob_flush() が使えないのが困り者です。
PHP5 になったらプログラム全体を try ... catch で囲むとか…。
うーん。引き続き妙案募集です。
初歩的なことを聞いてすみません。
PHPでチャットを作ろうと思っているんですが、
発言内容をログファイル(log.txt)に
↓のように<>で一つの発言ごとに区切って保存してある場合
------ log.txt ------------------------------------------------
名前0 : メッセージ0<>名前1 : メッセージ1<>名前2 : メッセージ2<> ・・・・
---------------------------------------------------------------
次のように配列に代入するにはどうしたらいいですか?
$a[0] ‥‥ "名前 : メッセージ0"
$a[1] ‥‥ "名前 : メッセージ1"
$a[2] ‥‥ "名前 : メッセージ2"
:
:
$fp = fopen("log.txt", "r");から先がどう書いていいのかが分かりません。
よろしくお願いします。
>>534 fgetsで1行読み込んで、explodeで分割。
536 :
534:04/07/02 00:20 ID:???
>>535 それはこういうことでしょうか?
$a = explode('<>', fgets($fp));
そいでもってデバッグのお約束print_r($a)を使うと、
あらまっ、奥さまっ
538 :
nobodyさん:04/07/02 01:53 ID:6/QnGsWt
オクサマッ534ミタ?( ´д)ヒソ(´д`)ヒソ(д` )アラヤダ
PHPでは文字列および1行の長さに制限は無いが、
デバッグとかでそれをファイルに書き出して見ようとすると
非常に見づらいので、適当に改行が入るフォーマットにするのが普通
ではないかと思ってみる
>>534 <>のかわりに改行で区切ったほうが楽だと思う。
それだと$a = file('log.txt');で終わり。
生のログファイルも見やすい。
汎用的なログイン機構を模索中なんだけど、模範解答ってある?
とりあえず認証成功したらユーザIDをセッションに保持するのを
書いたんだけど、動くんだけどどうにもしっくりこないです。
状況に応じて最適解は変わるってのは百も承知だけど
なんというか、基本的な部分だけに毎回車輪の再開発するのも
ちょっとイヤンな感じで。
PEAR::Auth とか LiveUser は?
544 :
nobodyさん:04/07/02 20:57 ID:proF8LyP
$a="[任意の長さの任意の文字列]●[任意の長さの任意の文字列]";
で最初の●より後に▲があったら全て×に置き換えたい(最初の
●のあとに再び●が出てくることも、出てこないこともある)
↑こういう変換をしたいのですが、どうしたらよろしいでしょうか?
かなり複雑なことをしないと無理ですか?
>>544 preg_replaceやereg_replace使えばできそうだけど?
546 :
544:04/07/02 21:45 ID:proF8LyP
>>545 ●より後の、▲以外の文字をそのまま残すということが可能でしょうか?
547 :
544:04/07/02 21:52 ID:???
ああ、preg_replaceでならできそうですね。
やってみます。
ありがとうございました。
548 :
nobodyさん:04/07/02 21:57 ID:6Y75o+Jb
$new_text = nl2br($_POST[text]);
$fp = fopen("data.txt",a);
fwrite($fp,$new_text);
fclose($fp);
と改行コードを<br />に変換して出力したところ、<br />には変換されているのですが、改行されてしまっています。
代わりに str_replace("\n","<br />",$_POST[text]);とやっても同じでした。\r\nでもだめです。
>>544 preg_replace_callbackのほうが適任のような。
>>548 Windowsでは$fp = fopen("data.txt", "ab");としないと
テキストモードでファイルが開かれ、fwrite/fputsするたびに改行が入るわけだが、
OSは何をお使いで?
550 :
549:04/07/02 22:23 ID:???
自己レス。"ab"の件は記憶違いだったかも・・・。
551 :
548:04/07/02 22:31 ID:???
サーバはLinux(Vine2.6)です。プログラム作成・入力はWindowsです。
スクリプトはEUCを使用しています。
552 :
548:04/07/02 22:32 ID:???
abでもだめでした。
553 :
544:04/07/02 22:41 ID:proF8LyP
>>549 ありがとうございます。
難しそうですが、やってみます。
554 :
548:04/07/02 22:50 ID:???
なぜか、出来ました。
str_replaceで。
555 :
544:04/07/02 23:16 ID:proF8LyP
$a = preg_replace_callback ( "/^.*●.*▲.*$/" , "/^.*●.*×.*$/" , $a ) ;
return $a ;
こんな感じでやってみたら「第二引数が足りない」という趣旨のエラー
メッセージが出たのですが、どうしたらいいんでしょうか?
preg_replace_callback 関数の第二引数に他の関数かなにかを入れ
ないといけないのでしょうか?
556 :
549:04/07/02 23:34 ID:???
557 :
544:04/07/02 23:45 ID:???
>>556 どうもすいません。ありがとうございます。
>>556 "最初の●より後に▲があったら全て×に置き換える" ということなので、それでは
$a = 'test●▲●▲';
の時にはうまくいかないような・・・。
単純な置き換えだったら、preg_replace_callback() を使わなくても e オプションを使えば
いいような気がするので、以下のような感じでどう?
$a = preg_replace("/^(.*?●)(.*▲.*)$/e", '"\\1" . str_replace("▲", "×", "\\2")', $a);
マルチバイトを考慮したら mb_ereg_replace() を使うといいと思うけど。
$a = mb_ereg_replace("^(.*?●)(.*▲.*)$", '"\\1" . str_replace("▲", "×", "\\2")', $a, "e");
>>558 なるほどー。そういう手がありましたか。
自分はマルチバイトを含む文字列をトリッキーな置換するときは
UTF-8決め打ちでpreg_replace_callbackでuオプションを使ってますが
将来mb_ereg_replace_callback関数ができたらそっちも使ってみたい。
あとpreg_*でUnicodeプロパティーのサポートも希望したいですね。
DoCoMo/2.0 YYYY(c10;serXXXXXXXXXXXXXXX;
こっからserXXXXXXXXXXXXXXXだけを取り出したいのだがどうすればいい?
問題はYYYYが必ず同じ長さではない。
つまりser以降指定の文字数を得たいのだが…
>>560 すぐ上で正規表現がでてきてるのに、そんなこと聞きますか...
正規表現を使うまでもない。文字列関数で
>>561 スマン、正規表現でがんがったんだがさっぱりわからん、、、。
>>562 それも考えてみたんだが問題が。。。
FOMA
DoCoMo/2.0 N2001(c10;serXXXXXXXXXXXXXXX; iccxxxxxxxxxxxxxxxxxxxx)
PDC
DoCoMo/1.0/X503i/c10/ser***********
こんな風に違うんだよな…。
さらにVodaなんか
http://www.dp.j-phone.com/dp/tool_dl/web/useragent.php J-PHONE/4.0/J-SH51/SN************ SH/0001a Profile/MIDP-1.0 Configuration/CLDC-1.0
Ext-Profile/JSCL-1.1.0
全部に対応する正規表現を書くより
機種によって振り分けた方がいいんじゃな?。
>>563 正規表現の書き方がわからんのなら、正規表現スレで抽出条件を詳しく書いて聞けばいい。
とりあえずDoCoMoの分だと、serに続く文字列で ; もしくは行末までって条件でいいのなら
(ser[^;$]+)
566 :
てふてふ:04/07/03 11:22 ID:Upkf89lK
すみません。質問です。phpdev5をwindowsXPにインストールして
日本語の文字化けがおきてる方っていませんか?
私も文字化けおきまくったのでPHPは捨てました。
568 :
nobodyさん:04/07/03 16:52 ID:wzmmIfWr
PHPで、自分のファイルの文字コードを参照するいい方法はありますか?
そのままファイル自体を読み込んで調べるしかないのでしょうか?
ファイルを読まずして文字コードを知れるか?
*参照*する以上、読まざるを得ないね。
*自分の*ファイルなんだから、PHPでそのファイルを読まなくても知る術はあるけど。
571 :
nobodyさん:04/07/03 18:33 ID:n3s5B9BG
>>571 読めなかったら勉強するか翻訳サイトでも利用しろ
>>568 $encoding = mb_detect_encoding(file_get_contents($_SERVER['SCRIPT_FILENAME']));
574 :
>>571 です:04/07/03 21:50 ID:n3s5B9BG
>>573 うおーっ、ありがとうございます!!mm
mb_detect_encodingですか、勉強になりました。
576 :
nobodyさん:04/07/04 00:34 ID:fnOHrUgA
jcode.phpを使ってメールフォームを作ってるんだけど、
届いたメールの題名が文字化けします。
題名部分は $title = JcodeConvert("題名", 0, 3); で、
文字コード指定は1,2,3どれも化けます。
環境は、Win XP Pro + Apache + PHP4.2
どこがいけないの?
573の思考レベルと575の反応に驚愕した。
脳ミソの変わりにくらげとか入ってないか調べたい。
>>576 メールの件名は特別だから。
詳細をググって調べるべし。
↓と同じ感じでjcodeつかってできるようにがんがれ。
$title = "件名";
$title = "=?iso-2022-jp?B?" . base64_encode(i18n_convert($title, "JIS")) ."?=";
579 :
576:04/07/04 01:49 ID:???
>>578 以下2行の追加で直りました。
$title = base64_encode($title);
$title = "=?iso-2022-jp?B?" . $title . "?=";
ありがとうございました!
>>573は釣りだろ。間違ってはいないけど、
「100円のものを1000個買いました。全部でいくらですか」
という問題を100を1000回足して答えを出すのに近いな
例えがおかしい。
釣りか?
なぜネストの話が
つーかALUでは加算の繰り返(ry
$encoding = mb_detect_encoding('美乳');
美乳コードキタ━━━━━━(゚∀゚)━━━━━━!!!!
<?php
$LV3 = $LV2 - $LV
$STR3 = ($STR2 - $STR) / $LV3;
$CON3 = ($CON2 - $CON) / $LV3;
$DEX3 = ($DEX2 - $DEX) / $LV3;
$INT3 = ($INT2 - $INT) / $LV3;
$LUCK3 = ($LUCK2 - $LUCK) / $LV3;
$CHA3 = ($CHA2 - $CHA) / $LV3;
?>
↑
Parse error: parse error, unexpected T_VARIABLE
と出るのでしょうが・・・
T_VARIABLEというのは何でしょうか?
>>584 $LV3 = $LV2 - $LV
セミコロンがないです。
だぁぁ!しまった!こんな初歩的なミスを・・・
>>585様有難うございます><
587 :
584:04/07/05 16:09 ID:???
教えて君すみません・・・
Division by zero in とはどういう意味なのでしょうか・・・ガクガクブルブル
0で割っただろ!
それくらいの英語読め
あれ?おかしいな・・・
$LV2に8、$LVに4入れても同じエラーが・・・
LV3の中身を確認しながら実行しれ
確認の仕方はマニュアル読んで調べろ
if($LV2 = 0 or $LV = 0){
print "レベルが入力されていません。";
}else if($STR2 < $STR or $CON2 < $CON or $DEX2 < $DEX or $INT2 < $INT or $LUCK2 < $LUCK or $CHA2 < $CHA){
print "入力した値がおかしいです。";
}else{
}
これを使ったあと全部に0が入ってた〜(なぜだ
if($LV2 = 0 or $LV = 0){
もし$LV2=0で$LV=0なら じゃないんですか!?
☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
★ ☆
☆ 質問者が返信する時は名前欄に「最初に質問したレス番号」を入れろ ★
★ ☆
☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
>>595 お前はアホか・・・
$LV2=0、$LV=0にして
>>584の計算をしてみろよ
>>595 "で"でつなぐならand
日本語の勉強もしなさい
>>584 比較演算子が間違ってますよ
くだらねー
>>593 <TITLE><TITLE>
を
<TITLE></TITLE>
とすれば解決。
何が原因が分からない時は問題の絞込みってやつをするといいyp。
今日はおもしろいですね
>>595 if文の時は == にしないとダメなんじゃなかったっけ??
>>603 if文というよりも、比較演算子'=='と代入演算子'='は別物。
一時間後でかぶるなYO ヽ(`Д´)ノ ウワァァン!!
おい!もまいら!
unexpected T_IF
ってなんだYO!
今日は変なやつが一匹紛れ込んでるな。
>>607 ファイルに保存されないぽ
これのエラーを直せたら教えてやる
if($action == "action"){
if(($NAME != "") && ($COMMENT != "")){
$NAME = htmlspecialchars($NAME);
$MAIL = htmlspecialchars($MAIL);
$COMMENT = htmlspecialchars($COMMENT);
$COMMENT = nl2br($COMMENT);
$COMMENT = str_replace("\r", "", $COMMENT);
$COMMENT = str_replace("\n", "", $COMMENT);
$input_msg = implode(",", array($NAME,$MAIL,$COMMENT,$time,$host));
$message = file($data);
$fp = fopen($data, "w"); //書き込みモードでファイルを開く
rewind($fp);
fputs($fp, "$input_msg\n");
if($data_max <= sizeof($message))
$msg_num = $data_max - 1;
else
$msg_num = sizeof($message);
for($i = 0; $i < $msg_num; $i++){
fputs($fp, $message[$i]);
}
fclose($fp);
unset($message);
}
}
610 :
609:04/07/05 21:30 ID:???
スマン、普通にアホなミスしとったわい・・・
fputs($fp, "$input_msg\n");
これで保存したんだがデータが上書きされる・・・
611 :
nobodyさん:04/07/05 21:43 ID:dk5OZx2a
setcookieで書き込みはできるんですが
消す場合はどうしたらいいのでしょうか?
>>610 >$fp = fopen($data, "w");
あなたの書いた通りに動いているだけです。
PHPマニュアルのfopenのページをご覧あれ。
CGIでフレームがないけどフレームみたいなページできたよね?
あれってPHPでもできんのけ?
>>609 >fputs($fp, $message[$i]);
上書きされるのはwriteでファイル開いてるんだから当然として
とりあえず改行コードが抜けているぞ。
>>615 JavaのSiteMeshみたいな?
できるかできないかでいえば「できる」けど書くのが面倒なら
そのCGIに任意のHTMLやPHPスクリプトを読み込ませてもいいんじゃない?
プロキシみたいなもんで、ブラウザの代わりにURIにアクセスして
レスポンスボディをレイアウトし直したり、リンクのURIを書き換えたりしてるだけだと思うから。
T_VARIABLE や T_IF の意味がわからない人は
「PHP まぬある 付録 P. パーサトークンの一覧」
ttp://www.php.net/manual/ja/tokens.php を読んでけれ。
"Parse error: parse error, unexpected T_VARIABLE" などという
エラーが表示された場合は、「私ってば PHP の構文解析をして
いるパーサですが、あなたの書いたソースを読んだら構文解析
に失敗しますた。予期せぬ位置に変数が表れたわよ。」と読む。
大抵の場合、パースエラーの出た変数の手前に問題があって、
セミコロン忘れてますた。括弧を閉じ忘れてますた。とかそういう
ことだたーりする。
だと思う。
619 :
618:04/07/05 22:04 ID:???
「誤」
>大抵の場合、パースエラーの出た変数の手前に問題があって、
「正」
大抵の場合、パースエラーの出たイ "トークン" の手前に問題があって、
マチガエタ。サヨウナラ。サガサナイデクラハイ。
掲示板の多重投稿拒否はクッキー使わないとムリかな?
>>620 多重投稿"ミス"なら、投稿履歴と照らし合わせて
「多重だったら」という処理をすることでもいい。
投稿履歴にはhiddenでユニークな投稿キーを埋め込んでおいて、
それを履歴リストに残して多重チェックするのが普通かな。
履歴リストの分量や、Webブラウザのキャッシュに入力フォームが
残らないようにするとか、細かいところは工夫してください。
form action="{$_SERVER['PHP_SELF']}"型の掲示板スクリプトで、
投稿後にリロードして再投稿するミスを防ぐなら、header("Location {$_SERVER['PHP_SELF']}")
で同一ページに飛ばすテクもある。
624 :
620:04/07/05 23:58 ID:???
>>622-623 難しそうだったので表示と書き込みをPHPごとにわけますた・・・
あり><
625 :
620:04/07/06 00:16 ID:???
それみろ馬鹿タレ供
>>625 phpworld/というアカウントにワラタ
随分と大きく出たものだw
winXPでApache2+phpモジュールな環境を作ろうと思ってます
すでにApache2はインストール済みなのでPHP4.3.7のWinバイナリをインストーラーの方でe:\phpにインストール
http://www.php.net/manual/ja/install.apache2.php に従って
php4ts.dllをwindows/system32に移動
LoadModule php4_module e:/php/sapi/php4apache2.dll
AddType application/x-httpd-php .php
をhttpd.confに追加しましたがApacheを起動しようとすると
Apache.exe: module "c:\php4build\snap\sapi\apache2filter\sapi_apache2.c" is not compatible with this
version of Apache (found 20020628, need 20020903).
Please contact the vendor for the correct version.
というエラーが出てしまいます。
そもそも c:\php4build\snap\sapi\apache2filter\sapi_apache2.c なんでパスは存在しないのです
LoadModuleの部分をコメントアウトするとApacheは起動します
原因に心当たりのあるかたいらっしゃいますか?
php4.3.7 Apache2.0.43です
>>630 >Apache2.0.43
が古くて、最近のSAPIの仕様とは違ってるんじゃないの?
Apche2.0.50+PHP4.3.7でやってみな。
for文を用いてIDチェックしたいんだが
for文から抜け出すことは可能だろうか・・・
男ならPHP5だろ。
txtファイルなどに変数を書き込んで、phpで読み込む事は出来ますか?
includeだとphpファイルの変数しか読み込めないので、txtファイルの中の変数を読み込みたいのです。
よろしくお願いします。
>>635 txtファイルは
<?php
$baka = "試せ";
?>
これをincludeしてみ
638 :
630:04/07/06 10:56 ID:???
>>631 インストーラバージョンをインストールしてたのが原因でした・・・。
英語ちゃんと読んでませんでした
レスどうもです
うーん
普通に<?phpとか書いてない txtファイルを読み込んで
その中に入ってる$hoge とか言う変数を読み込みたいのです
640 :
638:04/07/06 11:05 ID:???
すみません。解決しました
ありがとう641 637 636
解決しました(^^
643 :
nobodyさん:04/07/06 12:04 ID:Rny+MH6z
▼index.php
<html>
<body>
<?php
print ("<a href = 'get.php?a=5'> Get</a>");
?>
</body>
</html>
▼get.php
<html>
<body>
<?= print($_GET['a']) ?>
</body>
</html>
上記のコードで、index.phpからget.phpへ移動すると、
ブラウザには「51」と表示されてしまいます。「5」と表示したかった
のですが、原因がわかりません。おわかりの方がいましたらご教授
お願いします。
>>643 <?php print($_GET['a']) ?> ではないの?
645 :
nobodyさん:04/07/06 12:14 ID:NBQAU1O/
<
646 :
nobodyさん:04/07/06 12:15 ID:NBQAU1O/
<
647 :
nobodyさん:04/07/06 12:15 ID:5MCxUUr8
<?= print($_GET['a']) ?>
を
<?php print($_GET['a']) ?>
では?
>643
質問の要旨とは関係ないけど、二重引用符と単一引用符を
入れ替えた方が良い。
どこに問題があるか見極めるには、静的な HTML を書いて、
get.php を呼びだしてみたりするとか。
とりあえず、index.php で生成される HTML を良く眺めることを勧める。
649 :
643:04/07/06 12:28 ID:mpLQA1tZ
できましたm(__)m
みなさん、レスどうもです。
<?php print($_GET['a']) ?>が正しいようでした。
>>648 二重引用符と単一引用符を入れ替えてみました。
ソースを見るとこちらのほうがよさそうですね(実はあまり意味がわかって
いませんが・・)
それにしても1時間くらい悩んでいたので助かりました。
ありがとうございました。
なるほど、printはTUREを返すのか。
TRUE... orz
652 :
alvi:04/07/06 13:14 ID:A6zHoUWt
ど忘れしてしまったので教えて下さい。
includeされるファイル
function.php
と
実行する(function.phpをincludeさせる)ファイル
main.php
があるのですが、
万が一main.phpではなくfunction.phpにアクセスされた時にはfunction.phpがエラーを舶用に
htaccessは使わずにファイル名で判定できた筈だったのですが変数を忘れてしまいました。
function.phpをmain.phpに読み込んで$_SERVER["SCRIPT_NAME"]
とするとmain.phpになってしまいますが、これをfunction.phpと表示させる変数は何であるのか
教えて下さい。よろしくおねがいします。
<?=?>は出力だ。
<?="あいうえお"?>と<?php print "あいうえお"?>
は同じ結果が得られるわけだな。
>>652 何を訊きたいのかよく分からないんだけど
>>653 <?=[var]?>は<?php echo[var]?>のエイリアス。
<?="あいうえお","かきくけこ"?>はできても
<?php print "あいうえお","かきくけこ"?>はできない
658 :
alvi:04/07/06 14:28 ID:A6zHoUWt
簡単に言うと、
includeするファイルがあり、そのincludeされるファイルをincludeするファイルのなかで使用する為に
includeされるファイルへ何を書くとそのincludeされるファイルのファイル名を取得できるのでしょうか?
>>656 今、外出する直前で確認出来ないのですが、__FILE__ですか?
phpinfoでは分かりませんでした。(include等は使っていない為)
> <?php print($_GET['a']) ?>が正しいようでした。
こんな答え方をしている時点で、何も理解していない、理解する気もないって感じだな。
>>658 ごめんどういう意味かぜんぜん分からない。includeするほうをA、されるほうをBとして説明してくれないかな?
include($file)でincludeされた$fileのファイル名が知りたいと言っている
のだと想うのだが、そんな関数ありましたっけ?
ふざけた質問申し訳ないんだが
HTMLタグの<TD>〜</TD>の中にPHP構文を入れるとエラー出るのか?
>>658 ぜんぜん簡単に書かれてないぞw
includeされた場合はmain.php、直接動かした場合はfunction.phpで切り分けできるでしょ?
何か問題でも
665 :
662:04/07/06 15:45 ID:???
<?phpが<? phpになってた_| ̄|○
おい、質問なんだが
計算結果が4になるんだがこれを4.00と表示したい
こんな時どうするか教えやがれぬるぽ
>666
$値 = 4;
$桁 = 2;
echo number_format($値, $桁);
668 :
666:04/07/06 16:26 ID:???
マニュアル嫁よ。。。
夢は長く見させてあげようよ。。。
マニュアルなんて読むかボケェ
お前らがマニュアル引き係じゃぁ
と思っている輩が質問してる訳です
まぁ、確かにそんな風な質問が多いなぁ。
<?php
ob_start();
?>
<html>
<head>
<title>ログイン</title>
</head>
<body>
<h1 style="font-size:14pt;text-align:center;">
ログインtest
</h1>
<hr />
<form method="GET" action="index.php">
<table border="0" align="center">
<tr>
<th align="right">ユーザ名:</th>
<td>
<select name="id">
<?php
$db=mysql_connect("COMPUTER","root","root");
$rs=mysql_db_query("test_db","SELECT * FROM scheusr");
while($aryCol=mysql_fetch_array($rs,MYSQL_ASSOC)){
print("<option value='".$aryCol['id']."' ");
if(isset($id)){if($id==$aryCol['id']){print("selected");}}
print(">".$aryCol['nam']."</option>");
}
?>
</select>
</td>
</tr>
676 :
675:04/07/06 18:24 ID:???
<th align="right">パスワード:</th>
<td>
<input type="password" name="passwd" size="10" />
</td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="submit" name="sbm" value="ログイン" />
<input type="reset" value="取消" />
</td>
</tr>
</table>
</form>
<?php
if(isset($_GET['sbm'])){
print("if通過した");
$sql="SELECT * FROM scheusr WHERE id='".$id."' AND passwd='".
crypt($passwd,"ZZ")."'";
$rs=mysql_db_query("test_db",$sql);
if(mysql_num_rows($rs)==0){
print("<script language='JavaScript'>");
print("window.alert('パスワードが間違っています');");
print("</script>");
print("$rs");
}else{
$aryCol=mysql_fetch_array($rs,MYSQL_ASSOC);
header("Location: hello.php?id=".$id."&nam=".urlencode($aryCol['nam']));
}
}
print("</body></html>");
ob_end_flush();
?>
677 :
675:04/07/06 18:24 ID:???
scheuserがテーブルで
id主キー
passwd
namです
テーブルに登録されているパスワードが入力されたときに
他のページに飛ぶようにしたいのですが、
パスワードが一致するようにならないみたいなんです。
どのように変えたらいいでしょうか?
よろしくお願いします。
そんなお前にもerror_reporting(E_ALL)とvar_dump()
PIのキモさ爆発
丸投げっすか
変数の中身が文字列か数列かを判断する場合はどうすればよいでつか?
${file_name} = "test.csv";
header("Content-disposition: attachment; filename=${file_name}");
header("Content-type: application/octet-stream; name=${file_name}");
でcsvをダウンロードさせているのですが、なぜかNetscape(7.1)だけ
「test.csv.php」を開く になります。(中身は正常なcsv)
IE、Mozilla、Operaでは問題ないのですが、どなたか解決された方おられますか?
↑$file_name = "test.csv";
の間違いです。
685 :
alvi:04/07/06 21:59 ID:A6zHoUWt
本当に説明が下手ですみません。
前提
・A = main.php
・B = function.php
・Bには直接アクセスされたくない。だからといってhtaccessは使わないとする
・AはBをincludeする
いや、口で言うのは分かりづらいのでソース書いて実行した物をを付けます。
<?php
#A = main.php
include'function.php';
print_r($ABC);
?>
<?php
#B = function.php
$ABC[] = __FILE__;
$ABC[] = $_SERVER["SCRIPT_FILENAME"];
?>
そして、A = main.phpの出力結果は
Array
(
[0] => /home/****/public_html/function.php
[1] => /vhome/****/public_html/main.php
)
お騒がせしました。
>>656さんの仰った方法で解決です。。
if ( __FILE__ == $_SERVER["SCRIPT_FILENAME"]) die('Forbidden!');
というコードが欲しかったのです。ありがとうございました。
688 :
nobodyさん:04/07/07 02:38 ID:+x8AlGbL
phpで 改行\n を含む変数の指定行(例えば10行目)に 別の変数を挿入したいのですが
どうしたらいいでしょうか?
output_bufferingがデフォルトで有効になっているサーバーって
結構あるものでしょうか?
また、ob_start();〜ob_end_flush();を使用した時の処理速度は変数
に放り込んでechoした時の処理速度と比較してどちらが早いの
でしょうか?
>>680 よけいなタグを取ることもできないとこを見ると、完全に丸投げですな
692 :
nobodyさん:04/07/07 11:10 ID:HKrq5OGL
すんません、php専門のウェブ雑誌ってありましたよね?
URLをどなたが教えて頂けないでしょうか?
>>688 if($i=="10"){$hensu = $kochinohensu; }
もし10行目になったらコッチの変数にするよ。
なんか自演宣伝ぽい
>690
$ time php -r 'ob_start();for($i=0;$i<1000000;$i++){echo "hoehoe";}ob_end_flush();' > /dev/null
real 0m7.346s
user 0m7.200s
sys 0m0.150s
$ time php -r 'for($i=0;$i<1000000;$i++){echo "hoehoe";}' > /dev/null
real 0m13.534s
user 0m12.800s
sys 0m0.730s
逐次書き出すより、ob_* を使用して「イッキ出し」した方が処理は早くなるようですよ。
>675
crypt($passwd,"ZZ");
の結果と、対象のテーブルの値を見比べてください。
698 :
694:04/07/07 12:02 ID:???
>>695 言われるかなとは思った。
まぁ俺は俺で別のアフィリエイト ID もってるし、そもそも PHP|architect はあまり好きじゃないんで。。
最近はそうでもないかも知れないが、前までは業務用の堅実な記事が大半で面白みが無かった感じ。
>>696 こうやってテストするのですね。勉強になりますm(_)m。
私の環境ではphp -rというオプションが存在しないみたいなのですが、
これは環境によるのでしょうか?。
$ time php -r 'ob_start();for($i=0;$i<1000000;$i++){echo "hoehoe";}ob_end_flush();' > ./null
Error in argument 1, char 2: option not found r
real 0m0.186s
user 0m0.121s
sys 0m0.015s
$ time php -r 'for($i=0;$i<1000000;$i++){echo "hoehoe";}' > ./null
Error in argument 1, char 2: option not found r
real 0m0.471s
user 0m0.105s
sys 0m0.015s
$ time php -r 'for($i=0;$i<1000000;$i++){$k .= "hoehoe";}echo $k' > ./null
Error in argument 1, char 2: option not found r
real 0m0.171s
user 0m0.112s
sys 0m0.015s
>>694 1000円位するのか。高いような・・・
>699
CLI 版の PHP には acndefhilm"r"svwz というオプションを使用できる。CGI 版はわからない。
速さを求めるなら、出力制御するか、変数に格納して一発出力なのかな。
で、
ob_* を使うとメモリ使用量が違うらしい。
$ php -r 'ob_start();for($i=0;$i<1000;$i++){echo "orz";}echo memory_get_usage();ob_end_flush();'
orzorz...53736
$ php -r 'ob_start();$s="";for($i=0;$i<1000;$i++){$s.="orz";}echo $s, memory_get_usage();ob_e
nd_flush();'
orzorz...57136
$ php -r '$s="";for($i=0;$i<1000;$i++){$s.="orz";}echo $s, memory_get_usage();'
orz...16040
ちなみに、
$ php -r 'ob_start();echo memory_get_usage();ob_end_flush();'
52896
<?
$exp[1] = 2;
for ( $i = 2 ; $i > 100 ; $i++ ){
$X = $exp[$i-1];
$Y = $i;
$Z = 3*(floor($i/10)+1);
$exp[$i] = $Z * $Y + $X;
print $exp[$i];
}
?>
HTMLに表示されないです。
分かる方いませんか?
703 :
702:04/07/07 15:10 ID:???
スマン、解決・・・
不等号反対だた
(;´Д`)
うんこー
チャットを作る!
最低限入れる機能(評価:極小)
自動リロードする
表示は10行程度
入れたい機能(評価:普通)
いわゆる普通のチャットシステム
自動リロードの間隔が選べる
表示の行数が選べる
入室画面がある
切断者(ブラウザを閉じた奴)は退出させる
発言者の名前がわかる
あったらいいな機能(評価:極大)
チャット中にファイルをUP・交換ができる
709 :
706:04/07/07 17:28 ID:???
作ってぇ☆
オネガイオネガイ☆
>>700 金が無いなら元になっている雑誌(英語)は安い。
http://www.phparch.com/ 自分は先に英語読んでたクチだが、結局日本語版だけにした。
少なくても自分がやるより翻訳の品質と時間コストが安いため。
定期購読方式だと割り引きになるし、毎月買わされるんじゃなくて
購入が選べるので、そっちの方がお勧め。過去の号もそこから充当できるし。
他の有名どころでは
http://www.php-mag.net/ 紙のメディアでも出版されている(最近はPHP|architectも) が、
昔取り寄せが上手く出来なかった。今はどうかしらんけど。
インプレスが発行予定の雑誌っていつ発売だっけ。
初稿原稿の締め切りはもう過ぎたようなので、今月末ぐらい?
ファイルを監視して新しく追加された行を読み込む
Unix系の tail のような機能を作りたいんですが
だれかそういう関数をつくっテイル人いますか?
山田君、一枚持っていって
>>711 php-mag、トラブル多いけどそれなりに届くよ。でも高いのよね。
PDF エディション出てるので、今ならそっちお勧めする、
腹を切って死ぬべきである
>>713 PHPのみじゃ監視は無理だからcronとか使えばいいんじゃないのけ。
行が追加されることまで分かってるならどうとでもできるだろうが・・。
トリガなしで汎用的に監視がしたいならFam関数+αだろう。
719 :
nobodyさん:04/07/07 20:56 ID:H1YWjpHJ
文字エンコードですが
ソース内で
mb_http_output("UTF-8");
mb_internal_encoding("UTF-8");
で指定してもサーバ側が別だとエンコードされません。
ソース内の指示よりphp.iniの方が優先順位が高いのでしょうか。
>>719 mb_http_outputはphp.iniで
output_handler = mb_output_handler
となっているか、ob_start('mb_output_handler')してからだろ。
mb_internal_encodingやmb_http_inputは既に読み込まれている
スプリクトや$_POST,$_GETの文字エンコードは変換されない。
721 :
nobodyさん:04/07/07 22:22 ID:uCG1B5VO
初心者な質問ですみません。
SESSIONを使って買い物カゴ的なものを作りたいのです。
・formのラジオボタンで選択したほうの商品名を表示する
・選択した回数に応じて個数を加算していき、それを表示する。(表示ページから入力ページには戻れるようにしてある。)
上記のようなものを実現するにはどのようにしたらよいのでしょうか?
抽象的な表現でもうしわけありませんが、是非よろしくお願いします・・・。
>>721 そこまで決まってるなら後はスクリプトを書くだけなのだが...
サンプルが欲しいなら「ショッピングカート php セッション」あたりでググってみたら?
723 :
nobodyさん:04/07/07 23:13 ID:H1YWjpHJ
>>720 つまり ob_start() 使うとエンコーディング出来ないって事ですか
724 :
720:04/07/07 23:29 ID:???
>>723 逆。
php.iniでoutput_handlerを指定していない場合は
ob_start('mb_output_handler')としないと、出力時にコード変換は行われない。
実際、mb_output_handlerを使った変換はしたこと無いので、
大外ししているかもしれんが。
> ソース内の指示よりphp.iniの方が優先順位が高いのでしょうか。
マニュアルになんて書いてあるか知ってて言ってるんだろうな。
出力をバッファリングしたものをコンバートしてるって知ってて言ってるんだろうな。
726 :
nobodyさん:04/07/08 00:22 ID:YCLF39oi
phpで掲示板を作成しているのですがform method post で取得した文字列をlog.txtというファイルに書き込むところまではうまくいったのですが
過去の書き込みが消えてまったく新しいtextが出来上がってしまいlogとして使い物になりません。
ファイルにもともと書いてあった文章は残して追記するにはどうしたらよいのでしょうか?
またそれぞれの要素をファイルから変数に読み込ませるのはどうするのが最も効率がよいか教えてください。
$name = $_POST['name'];
$title = $_POST['title'];
$fl=fopen("./log/log.txt","w+");
fwrite($fl,$name,$namelen);
fwrite($fl,",",1);
fwrite($fl,$title,$titlelen);
fwrite($fl,",",1);
〃∩ ∧_∧
⊂⌒( ´・ω・)くぜんぶマニュアルのfopenに書いてあったでつ
`ヽ_っ⌒/⌒c
728 :
721:04/07/08 00:40 ID:VIhri8TS
うーん、見てみたけどよくわからない・・・。
ラジオボタンのvalueに各々、<? echo $_SESSION["商品名"]++; ?>を入れてみて実行してみたところ、
両方同時に増えていってしまうし・・・。うわーん・・・。
日記は他所で書け。
730 :
nobodyさん:04/07/08 03:02 ID:YCLF39oi
いくつかの掲示板のログファイル(dat)を見てみたのですがキホン的には各要素をカンマで区切っているだけですよね。
phpでそれぞれ区切られた要素を取り出すにはどのようにしたらよいのでしょうか?
たとえば書き込み本文に半角カンマなどが使われていた場合はそこで間違えて区切ってしまったりするのではないのでしょうか?
たとえば本文で 私は,〜〜です。と言う書き込みがあった場合「私は」と「〜〜です」の二要素に分かれてしまうのではないかと心配しています。
$const=readfile("./log/log.txt");
このようにファイル全体を呼び出したあと具体的にはどのような関数を使ってわければよいのか、ぜひともアドバイスをお願いいたします。
釣れますか?
もうね、phpBB 使えと、もしくは osCommers か OpenBazaar 使えと。
もしくはしっかりコード見て盗めyo!
>>721 なんて仕事でやってるんだろう、、それで自分の書いたコードに責任持てるのかと。
734 :
nobodyさん:04/07/08 06:27 ID:YCLF39oi
$fp = fopen("./log/log.txt", 'r');
// 終端に達するまでループ
while (!feof($fp)) {
// ファイルから一行読み込む
$line = fgets($fp);
// 読み込んだ行を出力する
print $line;
// <br>の出力
print "<br>\n";
}
この作業を逆に行うにはどうしたらよいのでしょうか?(log.txtの一番下の行から順番に出力させたい)
>>730 CSVファイルの構成も知らないの?
PHP以前の話だよボケ
>>734 fileで読んでリバースかけてforeachとか
マニュアル読まずに書き込むなよボケ
r;ァ'N;:::::::::::::,ィ/ >::::::::::ヽ
. 〃 ヽル1'´ ∠:::::::::::::::::i
i′ ___, - ,. = -一  ̄l:::::::::::::::l
. ! , -==、´r' l::::::/,ニ.ヽ
l _,, -‐''二ゝ l::::l f゙ヽ |、 こ
レー-- 、ヽヾニ-ァ,ニ;=、_ !:::l ) } ト
ヾ¨'7"ry、` ー゙='ニ,,,` }::ヽ(ノ チ
:ーゝヽ、 !´ " ̄ 'l,;;;;,,,.、 ,i:::::::ミ
::::::::::::::::ヽ.-‐ ト、 r'_{ __)`ニゝ、 ,,iリ::::::::ミ
::::::::::::::::::::Vi/l:::V'´;ッ`ニ´ー-ッ-,、:::::`"::::::::::::::;゙ , な!
:::::::::::::::::::::::::N. ゙、::::ヾ,.`二ニ´∠,,.i::::::::::::::::::::///
:::::::::::::::::::::::::::::l ヽ;:::::::::::::::::::::::::::::::::::::::::::/ /
::::::::::::::::::::::::::::::! :|.\;::::::::::::::::::::::::::::::/ /
738 :
692:04/07/08 09:03 ID:BnTCTIrC
>>694 ありがとうございます。というかここもうちょいちゃんとSEOやってくれ…
[php マガジン]でも[php (ウェブ)雑誌]でもひっかからんからどうしようかと思いました。
マニュアルむず
$_REQUEST['url']に存在するページはEUC-JPなのですが、
$codeにはUTF-8が返って来てしまします。この結果に
従いmb_convert_encodingすると拾得ページが文字化け
してしまうのですが、どうしたら良いのでしょうか^^;。
if ($file = @fopen($_REQUEST['url'],'r')){
if ($file) while(!feof($file)) $page .= fgets($file,4096);
fclose($file);
}
$code = mb_detect_encoding($page);
$page = mb_convert_encoding($page,'EUC-JP',$code);
741 :
740:04/07/08 10:15 ID:???
>>740 mb_detect_order() でエンコード検出リストを確認してみたら?
php.ini で
mbstring.language = Japanese
にして Apache を再起動するとか、スクリプトの最初に
mb_language('Japanese');
を入れてみるとうまくいくかもしれない。
詳しくはマニュアルで。
> というかここもうちょいちゃんとSEOやってくれ…
> というかここもうちょいちゃんとSEOやってくれ…
> というかここもうちょいちゃんとSEOやってくれ…
是非
>>738 の会社からアシアルに売り込みにいって、顛末記でも書いてくれ。
マニュアルしょぼ
748 :
740:04/07/08 11:47 ID:???
>>742,743,744,745
以下の方法にする事にしましたm(_)m
先にUTF-8で認識されてしまったのが問題みたいでした。
これから、あちこちのページでもテストしてみたいと想います。
貴方のページにもきっと・・・^^w。
$page = @file_get_contents($_REQUEST['url']);
mb_detect_order('eucjp-win,sjis-win,UTF-8');
$code = mb_detect_encoding($page);
マニュアル使えてる奴はネ申!
あんな親切なマニュアル無いと思うけどね
いい本教えてくれ
赤マンモスでも読め
pdfで無料配布してるから
「赤マンモス pdf」でぐぐれ
マニュアルみたいな本を
PHP のマニュアルの目次の関数リファレンス。
アルファベット順なのがちょっといや。
Math、 BCMath と GMP 関数 なんかは「数学関数」っていう分類
を作って、そこに列挙してほしい。
DB 関連の関数なんかも別に括っておいてほしい。と思たりする。
PHPのマニュアルはほんと便利だよな
欲を言えばfunction searchのほかに
googleではないサイト内検索がほしいが
$_SERVERとか検索するときに困る
757 :
nobodyさん:04/07/08 13:41 ID:Bp5irib3
PHPのなかに
<?xml version="1.0"?>
この記述を入れるとエラーが出てしまいます。
どのように回避したら良いでしょうか?
<?php ?>
>>756 win なら chm、
うにっくすならどうにでもなる
ってのでどうよ
760 :
nobodyさん:04/07/08 14:00 ID:axDKGDjf
PHPの命令でhttpサーバーの403エラーや404エラー等を起こす方法を教えてください。
>>760 まずはどうやったら出来そうか自分の見解を書けよ
header("Location:
>>760 is fool");
PHPってサーバーに自分で追加した環境変数の取得できるの?
>762さんのを実行するとNot Foundが出るようになりました。ありがとうございます。
>>757 普通に出力。
<?php echo '<?xml version="1.0"?>' ?>
>764
phpinfo() を眺めればわかるかも。
768 :
764:04/07/08 16:02 ID:???
うーん、phpのグローバル変数じゃ、
最初から設定されている変数しか取得できないのかなぁ。
>768
「最初から」の意味がよくわからないんだけど。CLI だと以下のようになる。
$ OTL=9 php -i | grep OTL
OTL => 9
_SERVER["OTL"] => 9
_ENV["OTL"] => 9
前から思ってたんだが
>幸せになれるかと思います。
この表現キモイ
772 :
764:04/07/08 16:57 ID:???
ごめんなさい、質問があいまいでした。
Linux上で
# export TEST=1234
として
php上でTESTと言う名前を指定して、
1234という数字が取得できるかが知りたかったんだ。
>772
とれる。$_SERVER か $_ENV に格納されているはず。
$ export TEST=1234
$ php -r 'echo $_ENV["TEST"];'
1234
>>770 過去ログ見たけど、
> 幸せになれるかと
なんて発言見あたらないyo!
775 :
770:04/07/08 17:24 ID:???
誤爆スマソ
MLスレに書くつもりだった
>>773 $_ENVかgetenv()でとれるのは確かだけどモジュール版の場合は
httpdを起動させたユーザーの環境変数が引き継がれるので
サーバー起動と同時にhttpdを立ち上げる設定の場合は無理ぽ。
>777
なるほど、httpd の起動スクリプトに環境変数を書いておけばいいのかな。
で、764 さんは環境変数を読み込んで何をしたいのか気になります。
779 :
764:04/07/08 17:50 ID:???
みなさん、ご助言いただきありがとうございました。
サーバー起動時にモジュールApacheを立ち上げてていたので、
それが問題になっていたようです。
>>778 バッチ処理で発生した日時データの必要部分を環境変数に保存し、
それをPHP側で利用しようとしていました。
>779
環境変数じゃなくてファイルに書きこむのではだめですか?
781 :
nobodyさん:04/07/08 22:29 ID:YCLF39oi
$_POST['text']; が
test
test
test
test
以上のような改行を含んだ文字列の場合最終的には
test<br>test<br>test<br>test<br> このような形へと変更したいのですが
$text = $_POST['text'];
$text = nl2br($text);
$text =rtrim($text);
以上の処理では
test<br />
test<br />
test<br />
test<br />
このように改行コードが取り除かれていないような形になってしまっています。
どのようにすればよいのでしょうか?
>>781 SJISと改行コードでぐぐれ
後は考えろ
783 :
nobodyさん:04/07/08 22:52 ID:YCLF39oi
str_replaceで解決でした どうもです
>>784 これ開いた時からずっとFDDがガリガリ音鳴らしてる。何なのこれ?
788 :
nobodyさん:04/07/09 14:06 ID:rjBtiSrj
Web上の任意のページからHTMLファイルを読み込んで
その中の<a>タグのHREF属性にあるURLを取得したいのですが
HREF属性は相対URLで書かれている可能性もあるため、上手く処理できず困っています。
HTML中の相対URLを絶対URLに変換するにはどうすればよいのでしょうか?
790 :
nobodyさん:04/07/09 14:37 ID:rjBtiSrj
>>788 すみません、どの板で質問するのが適切なのでしょうか?
PHP関連はこの板かと思ったのですが・・・
(・∀・)ニヤニヤ
parse_url() でプロトコルとホストとパスを取得して
httpやftpで始まっていなかったらそれらとくっつける。
始まっていたらそのまま利用する。
./ や / で始まっていたらその部分を削除して、
../ で始まっていたら先ほど取得したパスを ../ が連続する分遡るようにパースしてくっつける。
こんな感じか。
( ´,_ゝ`)プッ
正規表現で一発さ!
そんなことより最近、電動ナナシさそを見かけないけどどこいったんだろう。
下手な自演だなぁ
PHPを最近お勉強してるのですが?ってなんですか?
$year = (!isset($year)) ? date("Y") : $year;
上の?の意味がわかりません。
どなたかご教授よろしくお願いします
>>796 PHPに限らず他の言語でも利用出来るものもあるんだが、
if( !isset( $year ) ){
$year = date("Y");
}else{
$year = $year;
}
と同義な。
798 :
nobodyさん:04/07/09 17:01 ID:9qX+1d8A
すいません、phpdevを使ってWindows2000php4.23を入れたのはいいんですが
php.iniを編集して
;extension=php_mbstring.dll
を有効にすると
プロシージャ エントリ ポイント spprintf がダイナミックライブラリ php4ts.dll から見つかりませんでした。
Unable to load dynamic library '*****php/extension/php_mbstring.dll'-指定されたプロシージャが見つかりません。
と。上記の2つのメッセージが2回づつ出て、php_mbstringも有効になりません。
extension_dir =の指定は間違っていなくて、php_mbstring.dllも確実にあるのですが・・・
検索しても分からずお手上げ状態
800 :
nobodyさん:04/07/09 17:55 ID:/g6zLd9Z
800ついでにこれもあまり言語に依存しない質問です
ある数値が奇数か偶数かを調べるのに一番最適な方法って何でしょうか?
現在は数値を2で割って余りがあるかどうかで判別してます
同じと思うが
print ( $n % 2 ) ? "奇数": "偶数";
その質問で何が最適かというのは、結構言語に依存する話だと思うんだがどうだ?
そうですね。ではphpでお願いします
804 :
797:04/07/09 18:14 ID:???
print ( $n & 1 ) ? "奇数": "偶数";
$a = 12345678901234567;
print $a&1?'奇数':'偶数';
print $a%2?'奇数':'偶数';
うちの環境じゃ両方とも偶数と吐きやがる
806 :
800:04/07/09 18:20 ID:???
>>804 なるほど、ビット演算子を使うんですね
今までややこしいから使わなかったんですけど、それでやってみます
ありがとうございます
807 :
797:04/07/09 18:27 ID:???
>>805 オーバーフロー対策もしろと。・゚・(ノ∀`)・゚・。
$a = '12345678901234567';
print preg_match("/[13579]$/",$a)?'奇数':'偶数';
奇数だ。文句あっか?
810 :
yoshi:04/07/09 22:15 ID:UYWtgnDg
w2k上でiisを動かしwebを立ち上げていますが、
web上にエクセル文書(.xls)を置きhtmlの中で
リンクを張りダウンロードできるようにしています。
とくにパスワードなどは何も設定していないのですが、
このファイルをIEからダウンロードしようとすると
IDとパスワードの入力をうながすダイアログが
表示されるという現象が起こっています。
これは何故なのでしょうか?
希望する動作としては何もダイアログなど表示されずに、
ダウンロードできることなのですが。
よろしくお願いします。
$a = '12345678901234567';
print preg_match("/[^02468]$/",$a)?'奇数だ。文句あっか?':'偶数だ。文句あっか?';
$a="(´∀`)";
は偶数らしいです。
>>811 カポコンファンは黙っていない。バグってるぞ!!!
<?php
$a = 1e99;
print preg_match("/[^02468]$/",$a)?'奇数だ。文句あっか?':'偶数だ。文句あっか?';
?>
815 :
nobodyさん:04/07/10 01:42 ID:89QqCOpO
>>815 実際にアクセスするまで分からない。
ディレクトリならサーバのレスポンスコードが教えてくれる。
HTTP/1.0 301 Moved Permanently
Location: /を付加したパス
>>818 ../../a/../a/../../b
とかに対応できますか?
820 :
nobodyさん:04/07/10 09:31 ID:9IEmUTDP
ディレクトリにある画像ファイル一覧を表示したいのですが
このときあるサイズ以上の大きさには表示させないようにできますでしょうか?
<IMG>タグのwidthやheightで指定すると小さい画像もそのサイズに拡大されてしまうので・・
821 :
820:04/07/10 09:46 ID:9IEmUTDP
えっと自己レスです。
getimagesizeでいけますね、すみません。
たとえば、
1,りんご,200円
2,みかん,100円
3,ぶどう,500円
(data.txt)
というファイルがあったとして
「2,みかん,100円」
を表示させるとしたら、
$lines = file("data.txt");
print $lines[1];
というように出来ると思うのですが、
「みかん」だけを表示させるとしたらどうすればいいか分かりますか?
$lines = file("1.txt");
$ary = fgetcsv($lines[2],1000,",");
print $ary[1]
まず行を読み込んで、カンマ区切りで読み込むというのを考えたのですが、
これはfgetcsvの機能的に無理みたいでした。
ありがとうございます
fgetcsvがfopen()、 popen()、fsockopen()以外では使えないことはわかったんですが、
結局のところどうすればいいんでしょうか
fopenでオープンして、ポインタを2行目に持っていって
fgetcsvを使えればいいと思うんですが、そういうことはできますかね
>>819 こんな感じかな。
<?php
function 絶対URL($現在のURL,$相対URL){
$p=array('@/\.(?=/|$)@', '@^(.+//.+)/(?!\.\./)[^/]+/\.\.(/.*|)$@e');
$r=array('','preg_replace($p,$r,str_replace(\'\\\\"\',\'"\',\'\\1\\2\'))');
return preg_replace($p,$r,substr($現在のURL,0,strrpos($現在のURL,'/')+1).$相対URL);
}
$a='
http://aaa.co.jp/bbb/ccc/ddd/eee/fff';
$b='././../.././././a/../a.a/../a/b/../../../b/.';
print "$a\n$b\n";
print 絶対URL($a,$b);
?>
$hosts = array('hoge','moge');
array_map('deny_host',$hosts);
function deny_host($str){
$host=gethostbyaddr($_SERVER['REMOTE_ADDR']);
if( mb_ereg($str,$host) ){
echo "<html>\n<head>\n<title></title>\n</head>\n<body>\n</body>\n</html>";
exit;
}
}
このようなアクセス拒否(というか空白を表示する)スクリプト使ってるんですが
自分でもちょっとトリッキーかな、と思ったりするのですが普通はどうしてますか?
.swfファイルからFlashの画面サイズを取得することはできますか?
まぬあるより
> PHPのイメージ関数により JPEG、GIF、 PNG、SWF、 TIFF、JPEG2000イメージの 大きさを知ることができます。
>>827 ブラウザでswfファイルを開いてウィンドウの大きさを変えてごらん。どういうことか分かっただろ?
>>824 できる。
fopen() で開いてから fgetcsv() で1行目を読んで無視しして、再度読み込んだら2行目。
>>826 わざわざ array_map() を使う意味がわからない。
普通に以下のように処理したら駄目なのか?
$regex = 'hoge|moge';
$host = gethostbyaddr($_SERVER['REMOTE_ADDR']);
if (eregi($regex, $host)) {
exit;
}
>>824 explode使わないのは理由があるのか?
1,"みかん,リンゴ","500円"
とか""で括られたデータも扱いたいなら
Stream_Var使え。
require_once('Stream/Var.php');
stream_wrapper_register("var", "Stream_Var");
$lines = file('fruits.dat');
$fp = fopen('var://GLOBALS/lines/2', 'r');
$fruit = fgetcsv($fp, 1024);
print_r($fruit);
fclose($fp);
PEARって結構使われているものなのですか?
どのサーバーでもたいがいインストールされてるのかなぁ
>>834 ふむふむ・・・そういうものだったのか
全部、自分で書いてて気づかなかった^^;
変数の中身が半角整数時のみTRUEしたいのですが、
is_numericを使うと数値しか判断されないんですよね?
半角英数字を判断する命令文はあるのですか?
>>836 とりあえずpreg_matchでも使っとけ
index.php?mode=abc
このように取得して処理する場合 $_GET['mode'] でよいのは分かるのですが
index.php?abc
として処理をさせたい場合、どのように記述すればよいのでしょうか?
PATH_INFOから取得汁
>>832 PEAR を使うのも悪くないけど、今回のような場合は使わなくても簡単にできるような気が・・・。
質問者はあまり考える気はなさそうなのでどうでもいいけど。
$line = 2;
$fp = fopen('data.txt', 'r');
while (--$line) fgetcsv($fp, 1024);
$fruit = fgetcsv($fp, 1024);
fclose($fp);
print_r($fruit);
842 :
834:04/07/10 21:02 ID:???
>>840 あー、、流れ読んでなくて 833 が独立した質問かと思ってた。
PEAR 使わなくても一緒なら使わなくていいやね。
$valが空白の時にはisset($val) || と$val || で判断しないといけないですよね
変数毎に2行書くのはなんか嫌だなと・・・・
php.iniのdisplay_errorsはoffにして気づかない事にするべきかなぁ
みなさんは変数毎に両方のチェックをしていますか?
>>839 なぜ$_SERVER['QUERY_STRING']じゃないのか
>843
!empty($val)は?
perlでいつも@ARGV使ってたから、
PHPでも$_SERVER["argv"]使ってる。
PHPのページで訪問した人のIPアドレスを調べたいのですが、どうやればできますか?
うm
849 :
847:04/07/11 00:48 ID:???
すみません・・
$_SERVER['REMOTE_ADDR']でできますね・・。
ところでGDってGIF使えるようになったの?
ぶっちゃけ、もうGIFって使えなくても問題なくない?
php スクリプトの中からwebサーバにgetリクエストを出して、
ファイルに保存するのにはどうしたらいいですか?
`wget www.hoge.com/file`;
という行を、wget を使わず、phpの機能だけで実現したいのです。
$val = '<!--abc-->';
$val = ereg_replace("<!--([0-9a-z._-])-->","\\1",$val);
の「>」がマッチ出来ないのですが何故でしょうか?
>>858 abcとしたいのなら、
$val = ereg_replace("<!--([0-9a-z._-]+)-->","\\1",$val);
861 :
名無しさん@そうだ選挙に行こう:04/07/11 17:26 ID:0oJHpIPm
PerlのInline系モジュールみたいに
PHP内でPerlのコードを記述することは可能でしょうか?
どうしてもPHP使いたくないもんで。
よろしくお願いします。
`perl -e ""`;
863 :
名無しさん@そうだ選挙に行こう:04/07/11 18:19 ID:fHFfT4lG
ブラウザからリクエストを受け取った後、
echo('今から処理します');
と返して、httpコネクションを切ってから
重たい処理をさせたいのですが、
どうやったらhttpコネクションを切れますか。
httpはコネクションレスです
867 :
名無し募集中。。。:04/07/11 21:56 ID:/oo9N7Gm
コンパイル結果をメモリにキャッシュする無料ソフトって
どれが一番いいの?
【北海道】<?=鈴木?>@<?=ムネオ?>【不死鳥】
> コンパイル結果をメモリにキャッシュする無料ソフト
そんなもの存在しません。終了。
>>867 性能で言うならAPC, PHPA, MMCacheの中ではMMCacheが良いと思う。
対応しているアーキテクチャも多いし。
ただ現在は開発が停止中なので最新のPHPと組み合わせて使うにはちょっと不安がある。
まれにスクリプトを更新したとき期待通りに動かなくなって、
/tmp/mmcahe-*を削除したら直ったりするので。
開発再開を期待して待ちましょう。
>>869,870
知らないなら余計なことは言わない方が...
いや、意図はくみ取れるけどな、、
釣りか?
いっそ PHP 自体使うなと言いたい。
>>871 それ全部ライセンスで 「無料」 でなければならないとは定められていない。
メモリ上に直接キャッシングを行うのって、MMCache だけだと思ってたけど、
APCやPHPAもそうなの?
874 :
nobodyさん:04/07/12 00:49 ID:qiJhhqFo
875 :
nobodyさん:04/07/12 05:45 ID:Q0IoRcBp
ヒアドキュメントで複数行表示したいのですが、うまくいきません。
<?php
print <<<EOF
古池や
蛙飛び込む
水の音
EOF;
?>
このソースで 古池や蛙飛び込む水の音 と一行につながって表示されてしまいます。
どの変が間違っているのでしょうか。php4.3.7です。
876 :
nobodyさん:04/07/12 06:49 ID:c+JkP+le
$aryCnt=file("./".$datname[$l],1);
print($aryCnt[1]);
の出力結果が
2 test2 title2 degree2 2004 7 10 23 40 mail2 home2 1 0 1 test2 uchi-mmkmldegej
なのですがこの文字列に対して
list($num[$j],$name[$j],$title[$i],$degree[$j],$year[$j],$month[$j],$day[$j],$hour[$j],$minute[$j],$mail[$j],$url[$j],$mem[$j],$lang[$j],$br[$j],$text[$j],$host[$j],$browser[$j])
=explode("\r",$aryCnt[1]);
以上の処理でここの変数に値を格納したいと考えているのですが何故かうまくいきません。
ファイルへの書き込み形式は
fputs($fl,$Cntary,$Cntarylen);
fputs($fl,"\r",2);
fputs($fl,$name,$namelen);
fputs($fl,"\r",2);
fputs($fl,$title,$titlelen);
fputs($fl,"\r",2);
fputs($fl,$degree,$degreelen);
fputs($fl,"\r",2);
・・・・・
出力結果は以下のとおりです。
print(count($title)); →1
print_r(array_values($title)); →Array ( [0] => )
どこに問題があるかご教示ください。よろしくお願いします。
>>875 ブラウザ出力のソースを表示させると、改行されてませんか?
textとして改行していても htmlとして解釈した場合には改行されません。
878 :
nobodyさん:04/07/12 10:20 ID:ntR1QL+F
<input type='text' name='hoge' value='foo1'>
<input type='text' name='hoge' value='foo2'>
一つのフォームで同じnameの値をPOSTでCGIに渡すと、受け取った値には
'foo1 foo2'と入ります。
これを<textarea>内に表示させてると'foo1 foo2'が表示されますが、
コピー&ペーストをすると'foo1'だけしかペーストされません。
foo1とfoo2の間に区切り文字が入っているのでしょうか?
これを一つの値としたいのですが妙案がありましたらご教授ください。
879 :
878:04/07/12 10:31 ID:???
すみません。
散々調べた後に質問したのですが、検索を続けていたら解決方法を見つけました。
区切りに\0が入って値が渡されることを見つけました。
お騒がせしました。
>>876 fputsで、長さを指定するのをやめろ。
>>877 875です。その通りでした。ありがとうございました。
882 :
nobodyさん:04/07/12 18:57 ID:sEDp1Uf0
copy関数を使ってファイルをアップロードしたいのですが
日本語名のファイルが化けてしまいます。
日本語を使う方法ってなにかありませんでしょうか?
copy関数を使ってファイルのアップロードってどうやってやるんですか?
885 :
nobodyさん:04/07/12 19:33 ID:c+JkP+le
>880
fput長さ指定なしにしましたが何も変わりませんでした・・・・
>>885 $title[$i],
$jの間違いでしょ?
887 :
nobodyさん:04/07/13 02:37 ID:AiceQq3q
プログラミング初心者です。
formから入力したマルチバイト文字のデータをphpにとおすとき、
shift_jisの場合は、0x5cの関係で文字化けが発生してしまいますよね。
そのため、euc-jpでformに入力する必要があると思うのですが、
最終的には shift-jis でデータを送りたいのです。
この場合、一体どのような方法を取ればいいのでしょうか?
euc-jpでform入力後、jcode.php 等でeuc-jpからshift-jisに
変換するというのが一般的な方法なのでしょうか?
他に方法はありますでしょうか?
よろしくお願いしますm(__)m
>>887 ・mb_convert_encoding関数による方法
・jcode.phpを使う方法
・mb_output_handler関数による方法
・mbstring.http_outputの設定で行う方法
それぞれの利点/欠点を比較して採用を考えましょう。
> プログラミング初心者です。
こういう余計な前置きは嫌われるからヤメロ
ひろゆきじゃないのか?
>894
ラム爺タソ、乙。
自作自演?
>>884 0.3.4 なら eclips のプラグインマネージャから直でインストール出来た気がする (うろ覚え
そっちからなら取れるかも知れないし、まぁ試してみては。