このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
PHP使いが優しくコメントを返しますが、
お礼はPHPの布教と初心者の救済をお願いします。
PHP Home Page
http://www.php.net/
いや、いいけどさ。 需要あったのかしらん。
「くだすれ」って何?
phpから、添付ファイルを送信する方法を教えてください
ord()で日本語もちゃんと変換させる方法教えてください そのままだと1byte目を変換し、後を無視してしまいます
8 :
nobodyさん :2006/06/18(日) 16:19:10 ID:??? BE:459380148-
入力 <?php $str = "サーバサイド技術"; print(mb_convert_kana($str,"KV")); $data = $str; print(mb_convert_encording($data,"EUC-JP","Shift_JIS"));?> 出力 サーバサイド技術 Fatal error: Call to undefined function mb_convert_encording() in C:\Program Files\xampp\htdocs\4.2.php on line 8 設定が間違っているのでしょうか?
>>8 "Shift_JIS"を"SJIS"にしたらどうなるかな?
>>8 スペルミスだろ
×mb_convert_encording
○mb_convert_encoding
11 :
nobodyさん :2006/06/18(日) 17:26:43 ID:??? BE:775203269-
>>9 >>10 ども。
両方試してみました。
入力
<?php
$str = "サーバサイド技術";
print(mb_convert_kana($str,"KV"));
$data = $str;
print(mb_convert_encoding($data,"EUC-JP","SJIS"));?>
出力
サーバサイド技術悉鴫写酌悉軸柴酌オサスム
mb_comvety_kana()とmb_convert_encoding()がうまく動作していない様子です。
13 :
nobodyさん :2006/06/18(日) 20:16:04 ID:??? BE:43967096-#
>>12 文字コードをSJISに指定したら正しく表示されました。ありがとうございます。
ただ、mb_convert_encoding()がどうもうまくいきません。IEで文字コードをSJIS
にエンコードすると化けてしまいます。一方でEUC-JPにエンコードすると"サーバサイド技術"
と化けずに表示されます。よーするにmb_convert_encoding()がうまく動いてないかと。
ブラウザが絡んでくると、出力と、ソースの文字コードを揃えないと 化けるって聞いたよ。 アパチが内部で勝手に文字コードを揃えちゃうらしい。
いや、あのさ。 <?php $str = "サーバサイド技術"; print(mb_convert_kana($str,"KV")); // (1) $data = $str; print(mb_convert_encoding($data,"EUC-JP","SJIS")); // (2) ?> これがちゃんとSJISで書かれているとしたら$strの文字コードはSJISだよね。 つまり(1)はSJISで出力される。 一方(2)はEUC-JPに変換してから出力している。 (1)が文字化けせずに読めている状態で(2)が化けるのは当たり前じゃん。 出力した文字コードが違うんだから。 "悉鴫写酌悉軸柴酌オサスム"つーのはEUC-JPで出力された"サーバサイド技術"を SJISとして読んだ時に起こる文字化け。 上の出力をEUC-JPとして読んだ場合は"?T?[?o?T?C?h?Z?pサーバサイド技術"となる。 自分でSJISからEUC-JPに変換させといてうまく動いてないなんていちゃもん付けるなよ。 mb_convert_encoding()は完璧に動いてるよ。
16 :
5 :2006/06/19(月) 10:00:39 ID:???
>>6-7 わかりにくい説明ですいません。
日本語文字列のascii値?を返してほしいんです
ord("a") -> 97
ord("あ") -> 12354
ord(" ") -> 32
ord(" ") -> 12288
>>16 良く分かんないけど、要はこういう事かな。
<?php
get_ascii("a");
get_ascii("あ");
get_ascii(" ");
get_ascii(" ");
function get_ascii($str) {
print "\"{$str}\" => ";
for ($num = 0; $num < strlen($str); $num++) {
print ord(substr($str, $num, 1));
}
print "\n";
}
?>
get_ascii()はこうでも良い。
function get_ascii($str) {
print "\"{$str}\" => ";
$array = str_split($str);
foreach ($array as $value) {
print ord($value);
}
print "\n";
}
でもSJISでもEUC-JPでもUTF-8でもうちではその値にはならないんだよねえ。
うーん、俺には分からないな。 PHPの下らない質問スレ行って聞いてくだちぃ。 つーかもうこのスレ落としても良いよね?
20 :
12 :2006/06/19(月) 23:14:52 ID:??? BE:34196876-#
>15 すみません。逆でしたね。 mb_convert_encoding($data,"SJIS","EUC-JP")); にしてみました。 結果は… サーバサイド技術三舗参爪?Z orz
>>20 おまいは俺をおちょくって遊んでいるのか?
そのスクリプトを書くのに使った文字コードと
それぞれのprint()で出力された文字列の文字コードを全部メモしてから
>>15 を215万回読み直してそれでも分からなかったらもう諦めろ。
UTF-8で書かれたphpからmailコマンドでメールを送信すると文字化けしてしまいます。 文字化けを防ぐ方法を教えてくだすれ
>>25 なんで本家マニュアル張らないの?
アフィ厨?
このスレでこのサイト知ったんだけど検索が楽じゃない? それに、本家だと全然関係ない関数にマッチしない? あと、本家だと異常に重いことあるし…。 実は一番いいのは文字サイズが大きいことだけど、 アフィ厨の片棒は担ぎたくない。
>>26 ザッと見た限りアフィはなさそう。
マニュアル調べたくてググると
数年前から更新してないサイトが上位に出るから、
最新版が更新されるならいいことだと思うけどね。
>>28 | 数年前から更新してないサイトが上位に出るから、
ああ、そうだね。
ちゃんと回答してるし、ガンガレ!!
UTF-8が見られないブラウザってありますか? 今までシフトJISを使ってきたのですが、今後はUTF-8にしようと思うのですが・・・
31 :
nobodyさん :2006/07/01(土) 17:57:13 ID:V+Wur+Sg
クラスはどういう場合に使おうと思うもの?
>>30 あるけど無視してよい古いブラウザだから UTF で OK.
Google は UTF だけど問題になってないでしょう?
>>31 ありとあらゆる場合に.
33 :
お助けください・・・ :2006/07/01(土) 22:36:11 ID:w8UJhqAk
SQLServer 2005 ExpressEditionにつなげようとすると 5秒くらい待ってから Warning: mssql_connect(): Unable to connect to server: となってしまいます。 ・SQLサーバ認証+Windows認証 ・構成マネージャでTCP/IPを有効化 IPアドレスを正しく変更 した上で、 mssql_connect('localhost,1433','<USERNAME>','<PASSWORD>') mssql_connect('<IPADDRESS>,1433','<USERNAME>','<PASSWORD>') mssql_connect('<HOSTNAME>,1433','<USERNAME>','<PASSWORD>') mssql_connect('localhost/SQLEXPRESS','<USERNAME>','<PASSWORD>') mssql_connect('<IPADDRESS>/SQLEXPRESS','<USERNAME>','<PASSWORD>') mssql_connect('<HOSTNAME>/SQLEXPRESS','<USERNAME>','<PASSWORD>') みんな失敗します。 何か他に設定がいるのでしょうか。。。
34 :
nobodyさん :2006/07/04(火) 10:01:43 ID:q1Np2u8U
PHP5とJPGraph2を使っています。 レーダーチャートのタイトルは日本語化できたのですが、 軸の項目が日本語化できません。 いい方法がありましたら教えてください。
35 :
nobodyさん :2006/07/04(火) 13:46:21 ID:EIKaYV2N
販売元にまったく同じ質問したことある $graph->axis->SetFont(FF_MINCHO); $graph->axis->title->SetFont(FF_MINCHO); $graphの生成後に↑の両方が必要らしい。 試してみれ
36 :
34 :2006/07/04(火) 14:46:14 ID:q1Np2u8U
>>35 できました。ありがとう〜。
Axis->Setfont〜でとまってたからできなかったようです。
37 :
34 :2006/07/05(水) 19:21:10 ID:1sMbSjJr
グラフは日本語でちゃんと表示されるようになったんですが・・・ 1、グラフを描画するPHPの前にタグがあるとグラフ描画PHPが文字化けする 2、ならば仕方がないのでグラフを先に表示して御託はあとから述べるスタンス に変更するためにグラフ描画PHPの後ろにタグを置いたら、グラフしか表示されない という不具合に当たりました。 何とか上手くやる方法がありましたら教えてください。 よろしくお願いします。 //チラ裏 ヘルプにあるようにHTMLからPHPを呼び出すとグラフが描画されないし・・・ ApacheとかPHPの不具合・・・? //チラ裏終了
38 :
nobodyさん :2006/07/05(水) 21:03:19 ID:iNEqShr6
すんません。PDOでSQLiteを使いたいので、php.iniに pdo.dsn.hoge="sqlite:ほにゃらら〜 というのを記述したいのですが、ほにゃららの部分を どのように記述したら良いかわかりません。 FC5、PHP5.1.4です。 Windwosならc:\hoge.dbみたいにするところなのでしょうが、 /にあるhoge.dbを pdo.dsn.hoge="sqlite:/hoge.db" と書いてもPHPからアクセスできませんでした。 よろしくお願いいたします。
>>37 よくわかんないけど、グラフ作って画像を送信するんじゃないの?
よくある画像カウンタみたいな感じ。
だから、HTML吐くphpなスクリプトを作ってその中でグラフ出力の
phpをimgタグで呼ぶてな感じじゃね?
例
a.phpとかa.html
<html><head>........<body>
<img src="b.php?hoge=piyo">
...
b.php
<?php
ナンチャラ
$graph->Stroke();
?>
b.phpはグラフを書いて「画像」として送信するだけ。
それかa.phpでグラフをどこかに作って(例えば./hoge.jpg")
それを<img src="./hoge.jpg">とかにするとか。
#画像を送っているのなら、画像を送る前にHTMLを送るとheaderが変だし
画像の後にHTML送ってもたぶん無視じゃないか?
40 :
nobodyさん :2006/07/16(日) 02:16:28 ID:RWw+XpFz
超初心者が勇気を持って書き込みます。 どの板でも絶対にかけないと思ってココに書きます。 あるアップローダからDLしたファイルが「PHPファイル」ってものでした。 中身は画像だそうですが、クリックしてもメモ帳になってしまい、 更にサイズが大きくてメモ帳が固まってしまいます。 どうしたら見れるのですか? 教えてくださいおねがいします。
>>40 板違い&スレ違い。
拡張子を変えればいい。もし分からなかったら「拡張子」でググれ。
42 :
PHP男爵 ◆SWtzLesEmM :2006/07/16(日) 12:24:45 ID:3GUcmNlY
>>40 君は勇者だ!
(リアルの世界でも積極的に生きて欲しい。)
解説しよう!
ダウンロードして、デスクトップに「hoge.php」というファイルがあるとする。
hoge.phpのファイル名を変更して、hoge.jpgにしたり、hoge.gifにして、ペイントとかで開いて見たら、何か画像が表示されるかも!?
で、うまく開いたらその画像がどんなものだったか報告するように。
以上
小数で範囲を指定して乱数を作りたいのですが、可能でしょうか。 rand()とかだと整数しかつかえないので、他に方法はないものかと力を貸していただきたく・・・。 ※例:1.8〜2.4の間で乱数を出す。
45 :
43 :2006/07/17(月) 12:52:32 ID:???
ああ・・・肝心なことわすれていたorz 割ればいいんだったw ありがとうございます! もひとつすみませんが、クッキーについてお聞きしていいですか? <php /*Cookie*/ setcookie("lv","$lv",time()+604800);/*レベルの記憶*/ setcookie("job","$radio",time()+604800);/*主職業の記憶*/ $cookie = "lv"; "job"; ?> これをHTML記述前に入れて、"lv"と"job"はフォーム名です。 ちなみにjobはドロップダウンボックスのoptionに名前をつけています。 この状態でクッキーを取得してくれません。 何度もお邪魔してすみません。 お時間許していただけましたら赤ペン先生お願いいたします・・・。
> この状態でクッキーを取得してくれません。 確認方法は?
47 :
43 :2006/07/17(月) 13:45:25 ID:???
ラジオボタンのひとつにcheckedをいれて、違うところに入れておく。 本来ならそこだ!と記憶して欲しいのですが、checkedにもどってしまいます。 これがいけないのでしょうか。
1 クッキーが発行されていない 2 1.はしてるが、取得していない 3. 2.はしてるが、利用していない 4. 3.はしてるが、利用の仕方が正しくない 確認すべきことが色々あると思うが。
HTMLの直前にというのが、 <?php setcookie('a', 1); ?> <HTML> <BODY> echo $_COOKIE['a']; </BODY> </HTML> という意味なら、そりゃ無理でしょ。
50 :
43 :2006/07/17(月) 15:19:15 ID:???
>>48-49 先生
<?php
/*取得*/
$lv = $_POST["lv"];
$radio=$_POST["job"];
/*Cookie*/
setcookie("lv","$lv",time()+604800);/*レベルの記憶*/
setcookie("job","$radio",time()+604800);/*主職業の記憶*/
?>
<html>
-中略-
<body>
<input type="text" name="lv" size="4" value="<?php echo($lv) ?>">
<input type="radio" name="job" value="A" checked>A<br>
<input type="radio" name="job" value="B">B<br>
<input type="radio" name="job" value="C">C</td>
バッチリBODY内にechoかいてましたorz
ここでどうすべきか・・・
51 :
43 :2006/07/17(月) 15:20:14 ID:???
ちなみにPOST部分ですが、$_COKKIEで値をとろうとして フォームがまっさらになってしまいました。なんでだろう
<?phpの次の行に、 echo nl2br(print_r(%_POST, true)); echo nl2br(print_r(%_COOKIE, true)); exit(); と書いて何が表示されるかをみてみ。
>>52 うは、%_POSTじゃなくて$_POST,
%_COOKIEじゃなく$_COOKIEな。
54 :
43 :2006/07/17(月) 17:54:24 ID:???
/*Cookie*/
if ($lv != "") {
setcookie("lv",$lv,time()+604800);/*レベルの記憶*/
setcookie("job",$radio,time()+604800);/*主職業の記憶*/
}
if ($lv == "") {
$lv = $_COOKIE["lv"];
$radio = $_COOKIE["job"];
}
として・・・
>>52 先生。値はちゃんと残ってます^^
でもラジオボタンがcheckedに戻ってしまう理由が思い当たりません・・・。
ちなみにそれをはずして読み込んでも、ラジオ自体はまっさらorz
PHPさん!もう許して>p<;
PHPは悪くないお。 $radioに値は入っていても使ってないでしょ? 適当だけどこういう風に使ってやらんと。 <input type="radio" name="job" value="A" <?php ($radio == 'A' ? 'checked' : ''); ?>>A<br> <input type="radio" name="job" value="B" <?php ($radio == 'B' ? 'checked' : ''); ?>>A<br> <input type="radio" name="job" value="C" <?php ($radio == 'C' ? 'checked' : ''); ?>>A<br>
56 :
43 :2006/07/17(月) 19:03:08 ID:???
そうか、そういう入れ方があった。 「LV」とおなじechoのさせかただと、どこにvalueいれていいのかわからなかったんだった。 <?php ($radio == "A" ? "checked" : ""); ?> このまま入れれば大丈夫でしょうか? ちなみに「: ""」この部分の意味がわかりません。
>>56 悪いけど試してない。
三項演算子はifと同じだよ。
if ($a == true) {
echo "true";
} else {
echo "false";
}
は三項演算子を使うと以下のようにかける
echo ($a == true ? "true": "false");
""は何も出力しないって事。
開発(実験)環境あるんだから試しなさいw
58 :
43 :2006/07/17(月) 22:04:17 ID:???
早速応用してみました。 $radio=$_POST["job"]; /*ラジオボタンにチェックつけさせるために新たに変数追加*/ $checked[0] = " checked"; $checked[1] = " checked"; $checked[2] = " checked"; -以下HTML部- <input type="radio" name="job" value="A"<?php print $checked[0] ?>>A<br> <input type="radio" name="job" value="B"<?php print $checked[1] ?>>B<br> <input type="radio" name="job" value="C"<?php print $checked[2] ?>>C これでやっとチェックつけれるようになりました・・・。 ひとまず計算機完成。 みなさんありがとうございました!いい勉強ができました;;
ちなみに、浮動小数点は精度が低いから計算とかは全部整数でやって、表示のときだけ小数にした方がいいよ
>>58 いいのかそれで?
いや本人が良いというなら良いんだが。
61 :
43 :2006/07/17(月) 23:27:28 ID:???
>>59 先生
ご指摘ありがとうございました!
>>60 もっといいソースか・・・拙い頭ゆえ思い浮かばないなw
参考がありましたら、是非紹介願いたく。
以後名無しに戻りますね。
62 :
nobodyさん :2006/07/18(火) 16:49:54 ID:eTqE8Qoy
現在、PHPで構築されているBBSのようなシステムがあります。 海外からの宣伝コメントがあまりにも多すぎるため、それを何とかしなければなりません。 かと言って海外からの接続を遮断すると、正常な業務にも支障が出てしまいます。 PHP未経験者です。他の言語は少しかじった程度。 「お前が一番コンピュータ詳しいから」とかいう素敵な理由で、そんなヤツに任せるなよマイ上司。 なお、PHPのバージョンは「4.4.1」らしいです。 変数 $message に、POSTメソッドで送信されたコメントの本文が保持されています。 とりあえず、WebのPHPリファレンスと睨めっこして、 if ( mb_detect_encoding ( $message ) == "ASCII" ) という方法を取ってみました。 幾つかのパターンを入力してみましたが、想定通りには動いているような気がします。 ですが、初心者ゆえこれで正しいのかすら分かりません。 もっとスマートな方法、こういう場合の定番などありましたらお願いします。
>>62 アルファベット使用圏限定でこんなのもある。
strlen($message)==mb_strlen($message)
だったら宣伝。
>>63 なるほど。
バイト数と文字数を比較するんですね。
65 :
nobodyさん :2006/07/18(火) 18:24:47 ID:JssOWqeV
PHPでメンバ認証をした後、セッションにメンバ名を保存してメンバページ内目次が 出てきて、掲示板に書いたりいろいろやった後、目次に戻るボタンを押すとメンバページ 目次に戻るプログラムを作っています。 メンバ認証後、メンバページ目次の時点ではセッションを保持しているのですが、 (セッションIDと保持しているデータを出力して確認しました) そこから別のページに飛ぶとセッションが消えてしまいます。 (セッションIDと保持しているデータを出力しようとしたら空白になっていました) Session_destroy等はしていないのにセッションIDが消えるということはありうるのでしょ うか?(接続が切れたとかいうこともないはずなのですが・・・) またこのパターンを回避する方法を御教授下さい。 そもそもSession_destroyするか接続を切断するまではセッションは保持されているものであると いう考え方が間違っているのでしょうか? 環境は WinXP Apache2.0.54 PHP5.0.2です。
1、タイプミス 2、$_SESSION = array()しちゃった 3、別のホストにとんでる 4、気のせい
67 :
65 :2006/07/18(火) 20:01:55 ID:JssOWqeV
>>66 1、タイプミス>目次ではちゃんとSessionIDを表示できた部分をコピペなのでタイプミスは
ないようです。
2、$_SESSION=array()もなさそうです。
3、Localhostから出ていないのでそれもなさそうです。
4、ぶっ(笑) 気のせい違います。
Localhost内だけどリンクで飛ぶと駄目なのかな・・・。
0、session_start()をわすれてる
69 :
65 :2006/07/18(火) 23:56:55 ID:JssOWqeV
>>68 正解orz。
1個目のPHPにSESSION_START()書いてあってセッションはサイト内のほかのページとデータが
やり取りできるようにするためにあるんだからって思って書いてなかったとです。
解決しました。ありがとう〜。
71 :
nobodyさん :2006/07/19(水) 11:20:53 ID:IBxFZpVL
送信ボタンを押した後自動でリロード(表示しているページを再度読み込む)方法はないでしょうか? 現在のユーザ名とユーザ名変更用のテキストボックスがあって、変更ボタンを押すとユーザ名が 変更されるというものを作っているのですが、ボタンを押すとテキストボックスに入っている文字で データベースは変更されるのですが、現在のユーザ名の場所が変更前のユーザ名になったままです。 HTMLの<form action〜〜>で現在のページを読み込むという処理を試したのですが、処理的には ボタン押す>移動する>DB変更>終了 と動いているみたいでDBは変更されますが、現在のユーザ名は変更前のものになってしまいます。 望む動きは ボタン押す>DB変更>移動する=現在のユーザ名が変更後になって表示 なのですが、いい方法はないでしょうか?
72 :
71 :2006/07/19(水) 12:18:10 ID:IBxFZpVL
事故レス。 処理の一番最後にヘッダを入れたら解決できました。 ・・・ヘッダの前にはほかのタグや空白があっちゃダメって書いてあったけど・・・。
.htmlなら、ブラウザにキャッシュされてたんじゃないかな?
74 :
71 :2006/07/19(水) 18:02:10 ID:IBxFZpVL
.phpしか使ってないんだよね。 ・・・不思議だ。
phpの出力がバッファリングされてないなら、header('location:〜')を 呼んだ直後にブラウザ側はページが変わるかも。 でも、DB変更が間に合わないって、あるのかな?
76 :
nobodyさん :2006/07/20(木) 18:14:20 ID:sQrhvX8x
2文字のカントリーコードから 国名文字列と国旗画像を生成するクラスって PHP の標準的なライブラリに用意されていましたか?
77 :
nobodyさん :2006/07/20(木) 18:14:31 ID:wL12H3C9
アンケート入力フォームを作っています。 入力に不備があるときはJavaScriptで警告ダイアログを出すようになっているのです が、警告ダイアログが出た後にはちゃんと入力してあった部分が消えてしまいます。 送信ボタンを押すと入力された内容をPOSTしてその中身が空のときはダイアログを 出す仕組みなので、$_POSTからデータを書き戻してやればいいと思ったのですが、 いい方法が浮かびません。 〜mofu.php〜 <form name="inform" action="mofu.php" method="post"> <p align="left">生徒氏名(姓) <input type="text" name="FirstName" value=""> 不備があって戻ってきたときこのテキストボックスのvalie""にボタンを押す前の状 態(POSTが持ってるからそれを書き込む)方法が知りたいです。 よろしくお願いします。
78 :
nobodyさん :2006/07/20(木) 19:40:28 ID:mpmc+iKK
レンサバに簡単な(会員の登録と会員情報が変更できて 会員特有の情報に会員のみがアクセスできる程度のサイト) 会員制サイトを構築しようと思います。 セキュリティ パフォーマンス 構築の容易さ ではperlとphpはどちらがいいでしょうか? (作成者の言語スキルは両方素人とします。)
79 :
nobodyさん :2006/07/20(木) 21:40:10 ID:sQrhvX8x
>>78 Pythonがいいんじゃね?
2択ならPHPかな。
フレームワークとアクセラレータは必須だけど。
82 :
nobodyさん :2006/07/21(金) 01:48:55 ID:8lmGSvy2
PHPEclipse プラグインを探しているのですがどうしても見つかりません。 どなたか、どこでダウンロードできるのか教えてくださいませ。
85 :
nobodyさん :2006/07/21(金) 07:35:13 ID:u9FD8hv+
$a = each($_GET); print $a[0]; ってやってました。
86 :
nobodyさん :2006/07/21(金) 10:49:35 ID:qSIZRUWY
文字コードがShift_JISでテキストボックスに入力した文字をPOSTしたとき、 カタカナの”ソ”が入っていると、”ソ”が”ソ¥”になってしまいます。 ほかの文字では大丈夫(全角のカタカナ以外の入力を拒否するようになっています) なのですが、原因が分かりません。 どなたか分かる方がいましたら御教授ください。
>>86 仕様
if (get_magic_quotes_gpc()){
return stripslashes($message);
}
88 :
nobodyさん :2006/07/21(金) 12:25:52 ID:u9FD8hv+
IRI を扱う為のクラスって提供されていますか? 標準 or PEAR で。
89 :
nobodyさん :2006/07/21(金) 13:32:22 ID:qSIZRUWY
>>87 PHP.iniの
magic_quotes_gpc = On
をOFFにしたら解決できました。
ありがとう〜
90 :
nobodyさん :2006/07/21(金) 15:32:15 ID:sMd75oCW
functionとclassの違いがさっぱり分かりません。。 class使わなくても(functionだけでも)オブジェクト指向的な部品ごとの作成ってできるように 思うんですが、やっぱり違うもんなんでしょうか? オブジェクト脳の方、詳しくお願い致します。
class というからには、学校のクラスをまず想像してほしい。 class myClass { private $生徒数 private $担任; private $学級委員; private $美化委員; }
>>90 クラスが所持している function は、
そのクラスを操作する場合に便利な関数が多々用意されており、
なおかつ、そのクラス以外では使いどころがない関数が多い。
オブジェクト指向を考えるには、PHPより、JavaScript で考えてみるとよい。
94 :
93 :2006/07/21(金) 16:36:52 ID:???
たとえば、substr PHP ではグローバルに substr という関数が用意されているが、 JSでは、string クラスのメンバ関数として用意されている。
95 :
93 :2006/07/21(金) 16:39:36 ID:???
>>90 ただの function は、
そのスクリプト全体を1つのクラスと考えてみると、そのクラスの関数ということもできるわな。
ある程度書くことをまとめてから投稿して欲しいもんだ!
97 :
nobodyさん :2006/07/21(金) 17:09:14 ID:u9FD8hv+
>>96 それじゃタダの掲示板じゃん。2chぽくない。
そうだね。プロテインだね。
99 :
nobodyさん :2006/07/21(金) 17:49:24 ID:CoGe325O
windows apache2 php5 oracle10 apacheの文字コードはソース・出力共にEUC oracleはSJISです この環境だと、php内でoracle関数を使って何かする場合 $conn = oci_connect('id','pw','db'); $sql = mb_convert_encoding("SELECT id,name FROM emp",'SJIS','EUC-JP'); $stmt = oci_parse($conn,$sql); oci_define_by_name($stmt,mb_convert_encoding('id','SJIS','EUC-JP'),$ret_id); oci_define_by_name($stmt,mb_convert_encoding('name','SJIS','EUC-JP'),$ret_name); $dbresult = oci_execute($stmt); while(oci_fetch($stmt)){ ... と、こんな感じで一旦SJISにしてやらなきゃ駄目だと思うんですが、 ↑と同じ要領で、バインド変数というものを利用しようと勉強中なのですが上手くいきません $conn = oci_connect('id','pw','db'); $sql = mb_convert_encoding("INSERT INTO emp ('id','pw') VALUES (:wk_id,:wk_pw)",'SJIS','EUC-JP'); $stmt = oci_parse($conn,$sql); oci_bind_by_name($stmt,mb_convert_encoding(':wk_id','SJIS','EUC-JP'),$tmp_id); oci_bind_by_name($stmt,mb_convert_encoding(':wk_name','SJIS','EUC-JP'),$tmp_name); $tmp_id = "testid"; $tmp_name = "testname"; $dbresult = oci_execute($stmt); ... 全部SJISで統一するか、oracle内部の文字コードをEUCに変えるくらいしか僕には解決策思いつきませんorz アドバイスよろしくお願いします
全部SJISでおk ソース中で、「ソー」など書くとき気をつけたり、 正規表現使うときに \ かませれば大丈夫
101 :
99 :2006/07/22(土) 13:04:21 ID:Fs0pSL8X
>>100 サン
レスサンクス
ふむふむ「ソ」でのエスケープ処理云々を忘れなきゃSJISでも特に問題はなさそうですね
別のくだすれでも上がってましたが、
ソースでSJIS用いるのって公式には推奨されてないんですよね?うーん
文字コードこのままでバインド変数利用するってのは無理なんでしょうか・・・
無理ではない ただ、推奨されていないのにはそれなりに理由があるわけだから 非推奨環境を使うのなら、何らかの問題を抱えることは 覚悟しておけってことだ
≪前の5件 |1| |2| |3| 次の5件 >> こんな感じでページ送りしたいのですが、参考になるソースをおいてる サイトありますか?
104 :
nobodyさん :2006/07/22(土) 16:57:11 ID:gk79Zqps
106 :
nobodyさん :2006/07/22(土) 18:21:46 ID:Arzj07HM
>>103 それくらい自分で考えようぜwww
中卒の俺ですら思いついたぞwwww
107 :
sage :2006/07/23(日) 12:56:20 ID:R5nK9VH4
PEARをインストールして、Cache_Liteに挑戦中です。(PHP5.1.4) $params=array("cacheDir"=>"./tmp/","lifeTime"=>7776000); $MyCache= new Cache_Lite_Function($params); $f_data=$MyCache->call("f_data",$f_cls,$f_id); こんな感じで作成した関数キャッシュを、lifeTimeが切れる前に無効にしたい 場合はどうやるんでしょうか? remove で指定するとは思うんですが...。
>>107 それくらい自分で考えようぜwww
中卒の俺ですら思いついたぞwwww
109 :
107 :2006/07/23(日) 14:20:10 ID:???
中卒の僕ですがわかりました。 Cache_Lite_Function::drop() なんてのがあったのね。 自己レス御免。
110 :
99 :2006/07/24(月) 18:12:19 ID:???
>>110 OracleでSJISを使ったのは何か思惑があったの?
Oracleの管理ツールのしがらみとか?
>>99 で自分で書いてるように、データを取得したり挿入、更新する際に
文字コード変換かければ良いだけ。
どれくらいの負荷になるかは分からんが余分なオーバヘッドである事は
確かだから、統一できるなら統一した方が良いんじゃない?
手間に見合う効果があるかは環境しだいなんでなんとも。
112 :
nobodyさん :2006/07/25(火) 09:29:17 ID:0Poswc1D
>>111 社内の環境がすべてwindowsなんです。特に意図とかは無くてデフォルトだったというだけで(汗
EUCだと他のテスト環境と共存出来ないのが心配ですが・・・仰るとおりOracleの内部コードをEUCにする方向で
いってみまっす
113 :
nobodyさん :2006/07/27(木) 13:35:13 ID:wCnmBkp+
インデックスなしの配列の中身(要素数は不定)の中身をダブルコーテーションでくくりつつ カンマ切りする方法を教えてください。 array_map("disp",$allArray); function disp($str){ $string= "\"".$str."\","; $strc=","; rtrim($string,$strc); echo "<br>"; print_r ($string); } 何か上手くいかない・・・OTZ
こうな。 $str = implode('","', $allArray); この後$strの前後から2文字づつ切ればいい。
116 :
115 :2006/07/27(木) 13:44:20 ID:???
間違った。 $str = '"' . implode('","', $allArray) . '"'; でいいな。
117 :
99 :2006/07/28(金) 18:31:34 ID:???
しつこい言われそうですが報告しておきます PDO使ったら普通にいけましたコレ。 PHPソース:EUC、HTTP出力:SJIS、ORACLE:SJIS $dsn = 'oci:dbname=hoge;charset=JA16EUC'; $user = 'hoge'; $pass = 'hoge'; $db = new PDO($dsn,$user,$pass); $stmt = $db->prepare("SELECT empid,empname FROM emp"); $stmt->bindColumn('empid',$ret_arr['id'],PDO::PARAM_STR); $stmt->bindColumn('empname',$ret_arr['name'],PDO::PARAM_STR); $stmt->execute(); while($stmt->fetch(PDO::FETCH_BOUND)){ $ret_arr['id'] = $ret_arr['id']; $ret_arr['name'] = $ret_arr['name']; } $stmt = null;
>>117 報告ありがとう
きっとその書き込みは後世で役に立つであろう・・・
定義済み変数を使って現在のファイルのあるディレクトリまでのファイル名を含まない絶対パスってどう書けばいいんですか?
質問につきageます
dirname(__FILE__)
そのような関数があったとは全く知りませんでした。 本当にありがとうございます。
124 :
nobodyさん :2006/08/01(火) 08:56:49 ID:W3yf98Bx
ほんとうにありがとうございました
125 :
nobodyさん :2006/08/01(火) 16:06:50 ID:E6FJ2WAY
JpGraphのような別PHPファイルにデータを渡すにはどうしたらいいですか? グローバル配列変数みたいなものを探しています。
渡す必要は無いかと
>>126 グラフ表示のサンプルを見ると
<img src='graphtest.php'>
のようにグラフを表示する為に専用のPhpファイルをリンクしてありますので
本体phpからグラフphpにデータを渡す必要があると思うのですが。
逆に考えるんだ メインスクリプトからPHPファイルにデータを渡すのではない。 メインスクリプトからPHPスクリプトを利用してやるのだと
>>127 そういうことね。
おれはクエリストリングかセッション変数を使ってる。
131 :
nobodyさん :2006/08/02(水) 22:03:52 ID:B9yKSglg
宜しくお願いします。以下のようなphp(post.php)なのですが、保存先のtest.txtのエンコードもUTF-8にしたいのですが、どのようにすればよいでしょうか?? <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body bgcolor="#FFFFFF" text="#000000"> 内容を書き込み送信 <br> <form method="post" action="post.php"> <input type"text" name="contents" value="" size="50" maxlength="256"> <br><br> <input type="submit" name="submit" value="送信"> </form> <br>
132 :
nobodyさん :2006/08/02(水) 22:05:24 ID:B9yKSglg
<?php $filename = "test.txt"; if(isset($_POST['submit'])){ print("投稿内容: ".$_POST['contents']); $file = fopen($filename, "w"); flock($file, 2); fwrite($file, $_POST['contents']); flock($file, 3); fclose($file); } ?> </body> </html>
mb_internal_encoding か mb_convert_encoding でも使え
135 :
134 :2006/08/02(水) 22:58:32 ID:???
RFM
137 :
131 :2006/08/03(木) 02:32:59 ID:N4ArK+AW
<?php $filename = "test.txt"; ['contents'] = mb_convert_encoding(['contents'], "JIS", "UTF-8") if(isset($_POST['submit'])){ print("投稿内容: ".$_POST['contents']); $file = fopen($filename, "w"); flock($file, 2); fwrite($file, $_POST['contents']); flock($file, 3); fclose($file); } ?> としてみたのですが、できません。。。。。 どうしたらいいの・・・・・??
そもそもスレ違いかもしれないけどごめんなさい。 PHP勉強しようとして apache_2.2.3-win32-x86-no_ssl.msi でまずApache入れようとしたら インストールウィザードにPlease wait.とか言われたまんま進まないんですけど。 何が問題なんでしょう。 WinXP SP2, Celeron D 341。 これじゃせっかくPHPで何か書いても動作チェックしようがない…
それと借りてる鯖のPHPは4.3.11らしいですけど 手元のバージョンも合わせたほうがいいですか? 普通に最新の5.1.4入れようとしてますけど。
まずネットにつなげ
>>138 そもそもWindowsのPHPは、まだApache2.2には対応していなかったと思う
2.0と2.2の変更点の一つにモジュールについてあったな、そういえば。
143 :
138 :2006/08/03(木) 11:55:57 ID:???
2.0.59に変えても同じ反応です。 Apache HTTP Server 2.0.59 Setup is preparing the Installation Wizard which will guide you through the program setup process. Please wait. でいつまで経ってもNextが押せません。
144 :
131 :2006/08/03(木) 12:12:14 ID:???
自己解決しました。 ini_set("mbstring.internal_encoding","UTF-8"); って入れたらできました♪
どなたかアップローダーの仕組みを教えてください
>>145 アップローダ以外の普通の掲示板とかのスクリプトはわかるのか?
だったらフリーなPHPソースであぷろだ置いてるところあるから
そのソースを読め
147 :
nobodyさん :2006/08/04(金) 15:52:28 ID:v3M2GCi5
>>145 フォームで入力した文字を送信すると文字がHTTPプロトコルに則って
送信されるでしょ。アップローダの場合のファイルはその仕組みと同様に
ファイルを半角文字に変換して送信して受け側でもとのファイルに戻して
やるのが仕組みだ。
「・ソ・ソ」
>>145 セキュリティホールの温床になりやすいから気をつけろよ
>>148-149 IE 使ってない?
文字コードを UTF とかにすると見れるね。
先月かな、WindowsUpdate してから IE の
文字コード判定がおかしくなってない?
152 :
nobodyさん :2006/08/04(金) 19:19:20 ID:IwZUdvMW
入力した2chのスレの
>>1 を表示させるにはどのようにすればいいですか?
154 :
nobodyさん :2006/08/05(土) 02:15:26 ID:JIFCC4LF BE:506734676-2BP(0)
携帯のサイトを作ってるんですが、 携帯ではセッションの「SID」は使用できないんでしょうか? 1・ログインフォーム(login.php)でIDとパス入力 ↓ 2・フォームの値を同ファイル(login.php)に送信、検証 ↓ 3・OKならセッション値に代入、別ファイルに飛ばす header("Location:./nextfail.php?SID"); ↓ 4・以降、セッションでID・パス持ち回し。 ウェブサーバに載せて、パソコンからなら問題なく動作するのですが、 携帯(FOMA)からだとセッション値が持ち運べていないようです。 上記の2の同一ファイルへの送信は ・フォームアクションでSID付加 $login = "./login.php?SID"; <FORM ACTION="<?=$login?>" METHOD=POST> ・HIDDENでセッションID送信 $ssna = session_name(); $ssid = session_id(); <INPUT TYPE=hidden NAME="<?=$ssna?>" value="<?=$ssid?>"> の両方を試してみましたがダメでした。 セッションを使用する場合は全てのファイルでセッションIDを GET(POST)受け取りをするしかないんでしょうか? 尚、クッキー・register_global共にOffでも、パソコンからは動作しました。
ケイタイではクッキーは使えないと思っておいたほうがいい use_trans_sid でぐぐって吉。
156 :
nobodyさん :2006/08/05(土) 06:03:09 ID:JIFCC4LF BE:579125568-2BP(0)
use_trans_sid=1でした。 use_cookieはon、 use_only_cookieの欄はなし。 なのに header("Location:./nextfail.php?SID"); の文末SIDを受け取ってくれない・・・。 echo SID; で表示するとちゃんとPHPSESSID=IDの形で収まってるし、 HIDDEN属性のは受け取ってくれてる。 どうやらSIDが展開されないのが問題みたいです・・・。
""の中で定数が展開されるわけないだろ 因みにLocationは絶対パスを指定するのがHTTPのスペック
158 :
nobodyさん :2006/08/05(土) 06:53:43 ID:JIFCC4LF BE:434344166-2BP(0)
ヽ、 ヽ ヽ 、 ヽ
)ヽ、_,,,..._ ヽ、_, げえッ───────!!!
iー-、::_: `、ゝ_,,- ノ ( ) 、 )
ノ::`ー_-_ノ ノ ノ_,-"イ / ` 、ノ `i ( l
,-、 |::::.ヽ _。ヽ:: /_。フ' |ノ ヽ、 i、 ノ
|6`i/:::. ,,-.―'' /i|.ー-、. |
ヽ ::: i :: ⌒ : |
ヽ`l | :: /ニ`i /
`|:. ヽ、 i_,,,、/ / ,へ___
,|:::._ヽ___/ _//`ー--、ニ=--―,
| ̄ ̄ ̄ ̄||| ̄| / / / __  ̄ ̄`¬
 ̄ ̄ ̄ ̄ ̄○ ̄ ̄ヽ | // / /「""の中で定数が展開されるわけないだろ 」
6時間悩んだ結果が・・・。
>>155 様
>>157 様
大変お世話になりました。
PHPファイル計300個全修正してきます・・・。
159 :
nobodyさん :2006/08/05(土) 10:29:32 ID:hzy3ErJp
PHPって空文字もnullも同じ扱い? $hoge = ""; とやっても、($hoge == null) はtrueとなるようですが。
$hoge===''
163 :
160 :2006/08/05(土) 12:17:40 ID:???
えと、はっきりとnullか空文字かを区別したいときは is_null()をつかって、nullか空文字どっちでも条件trueで良い場合は if ($hoge == null) もしくは if ($hoge == "") で判定しちゃって大丈夫ですか?
>>163 $hoge が 0 のときも真になるから気をつけるように
'0' は当然偽になるけど
ドコモの携帯で utn を送っているかどうか確かめる関数とかありますでしょうか?
>>165 さすがに標準ではないぞ
$_SEVER['HTTP_USER_AGENT'] の文字列を解析するのがいいのではないだろうか
>>166 やっぱないですか^^;
ser以下の文字列の有無で判断することにします。
ありがとうございます。
168 :
nobodyさん :2006/08/06(日) 20:15:57 ID:9paIrv1I BE:434344649-2BP(0)
携帯にmb_send_mailでメールを送ると、 半角文字以外すべて「?」になる文字化けしてしまいます。 phpファイル自体はsift_jisです。 mb_convert_variablesでsift_jis() で変換しても同じ文字化けでした。 日本語化する mb_language("ja"); を外すと「・」に変換されます。 何が原因なのでしょう?
170 :
161 :2006/08/07(月) 08:19:36 ID:???
するーされたぽ(´・ω・
171 :
nobodyさん :2006/08/07(月) 12:16:00 ID:K1n5iRST BE:675646087-2BP(0)
IPの最後を削りたいんですが (「210.153.84.12」なら最後の「.12」を削って210.153.84という値を取得したい) 場合によって1〜3桁になるので桁指定で削れません。 $end_ip = strrchr($_SERVER["REMOTE_ADDR"],"."); $end_ip_num = strlen($end_ip); $ip3 = substr_replace($_SERVER["REMOTE_ADDR"],"",-1,$end_ip_num); こんな感じで、非常に周りくどいですが strrchrで文字列を抜き出し、桁を数えてから削ろうとしてみました。 しかしstrrchrの戻り値が、echoなどで表示は出来るのですが変数に収めることがでいません。 何かいい方法はありませんか?
>>171 dotでexplodeして最初の3個をdotでimplode
174 :
nobodyさん :2006/08/07(月) 13:33:26 ID:K1n5iRST BE:120651825-2BP(0)
strposで後ろからドットを検索して、substrもいいな
>>174 ちなみにそういうのをやるときは、関数を作った方が便利だぞ。
function my_addr_cut ($addr){
$ar = explode('.' $addr);
if (count($ar) > 3){
return $ar[0].'.'.$ar[1].'.'.$ar[2];
}
}
とやっておいて、
$ip3 = my_addr_cut( $_SERVER['REMOTE_ADDR'] );
177 :
nobodyさん :2006/08/07(月) 20:38:09 ID:OuBXfFXq
一部のWikiの様に[[リンク先の名前|リンク先のURL]]でリンクが貼れるようにしたいんですけど、どうすればいいですか?
>>177 1.パーサから自作
2.正規表現関数を使う(preg_replaceとか)
text_wiki
納期まにあわえんぇあd
>>180 納期って本気を出し始める日のことじゃ?
デバッグを開始する日だろ
仕様書を書き始める日だろ。
例外処理とif文による分岐の違いをサンプルコード付きで わかりやすく説明してください。
その違いが分からないのはある意味凄いな
例外処理って try catch のことだろうけど よほど、テクニカルなことをしない限りは違いはあまりない ただ、ある状態になった後の処理を一箇所にまとめられるという 利点が try catch にはある if (!$this->foo()) { $this->printError(); return false; } if (!$this->bar()) { $this->printError(); return false; } こんなのが、 try { $this->foo(); $this->bar(); } catch (Exception $e) { $this->printError(); return false; } になる これ以上の使い方をしたいなら、自分で使って慣れるほうがいい
188 :
185 :2006/08/09(水) 11:10:53 ID:???
>>186 そんなに褒められると照れますよ。
>>187 if文で書くよりもすっきりした感じになりますね。でも、それ以外には
例外処理の利点がいまいちはっきりしないので、慣れるまでもっと自分
で使ってみることにします。
レスありがとうございました。
>>185 例えば実数のルート(平方根)を求める関数を作ることを考えてみろ。
引数はdouble, 返値もdoubleにしたいはずだ。
しかしその関数に-5とか入れたらどうなる?エラーを起こしたことを知らせるしかない。
下手にdoubleで答えも返せないし、しょうがなく投げるのが例外で、
それを捉えるのがtry catchだ。
つまり、if elseとtry catchはまったくの別物。
まじめに思い出したら float sqrt ( float arg ) なんてのがあったな。 if ($foo >= 0){ $bar = sqrt($foo); }else{ $bar = 0; echo "error"; } とするか try{ $bar = sqrt($foo); }catch(Exception $e){ $bar = 0; echo "error"; } だな。見た目は似てるけどtry catchの方は一回2行目でエラーが発生してて それを無理矢理正常なふりをしようってのがcatch文。
191 :
185 :2006/08/10(木) 23:24:47 ID:???
>>189 >>190 つまりは、あらかじめ値を検査して値が正しい場合に実行するとき
に用いるのがif文。値が正しいかはわからないけど、とりあえず実
行して、うまくいかないときの処理を用意しておくのが例外処理。
・・・というように理解しました。多分これでいいはず。
おふたりとも、レスありがとうございました。
>>191 >とりあえず実行して、うまくいかないときの処理を用意しておくのが例外処理
ちょっと補足。
例外はあくまで例外が起きたときに使うもの。 異常が発生したときに起きるのが例外。
ファイルやらネットワーク関係の処理では、機械やユーザや相手の都合次第で
正常終了したり異常終了になったりするわけで、そういった異常を拾うもの。
書きやすいからって多用してると、想定内のエラーなのか、予期しないエラーなのか
判別できなくなるから止めたほうがいい。 普通、例外の復帰って重いし。 (phpの実装はしらんが)
まーphpだったらそんなに気にする必要は出てこないだろうが、他人にソース見られたときに
「うわーこいつアホだな」 と思われないように、頭の片隅に入れといて。
193 :
_ :2006/08/11(金) 18:12:39 ID:abMDzR7z
phpで ×時間後にプログラムを実行したり ×時から×時間ごとにプログラムを実行する方法 ってあるでしょうか? Imageタグを呼び出す方法が良いかと思うのですが その先が分かりません
>>193 それは、phpの範疇ではありません。
それぞれの環境が持っている、スケジューラーやデーモンを利用するしか
ありません。
linux 系の場合は crontab というデーモンでできます。
195 :
_ :2006/08/11(金) 19:10:07 ID:abMDzR7z
>>195 crontab 自体は設定にそって実行ファイルを動かすだけ
まずは、crontab 自体の設定の仕方を覚えた方がいい
そのサイトにあるようなものは別にいらない
普通に crontab を使えばいい
197 :
_ :2006/08/11(金) 19:19:46 ID:abMDzR7z
>>196 良くわからないのですが
contrab の使用を禁止しているレンタルサーバーも結構あるようなので
できれば使いたくなかったのですが
現実としてどうなんでしょうか?
教えてください
198 :
_ :2006/08/11(金) 19:21:28 ID:abMDzR7z
>>196 良くわからないのですが
contrab の使用を禁止しているレンタルサーバーも結構あるようなので
できれば使いたくなかったのですが
現実としてどうなんでしょうか?
教えてください
199 :
_ :2006/08/11(金) 19:22:52 ID:abMDzR7z
ブラウザが変ですよと言う 表示がでて二重投稿になってしまいました すみません
>>198 現実としては、PHP単体では無理
>>195 のやつは、誰かがアクセスするたびに実行されるだけなので
特定の時間後にきっちに動かすというのは無理
かなり、アバウトでいいなら pseudo-cron でもいいけど
202 :
_ :2006/08/11(金) 20:01:50 ID:abMDzR7z
遅れてしまいました。
>>200 イメージタグで呼び出してやるので実際に時間のずれがあるのはわかります
>>201 PHPSPOTにも載ってたんですね
そこに書いてある流れはだいたい分かるんですが
/*config section*/
以外の部分で何を設定すればいいのかなどわかりません
もしかしたら具体的な内容になってきたかもしれません。すみませn
>>202 >このサイトに書かれていることも分からないのなら、
>もっとはじめから学んだほうが良い
204 :
_ :2006/08/12(土) 23:27:19 ID:wVHES/N8
>>203 そこのサイトに書かれてる事はわかっても、
そこのサイトに書かれてる内容だけで
全部理解できなかったと言うことです
フォーム入力データのhtmlエンティティ化とDB登録についてなんですが、 ちょっとパニクってきました。 アドバイスいただければ嬉しいです。 ・流れ 入力画面→確認画面→完了画面と遷移します。 入力画面で入力したデータをPOSTで確認画面に、確認画面から完了画面へは hiddenフィールドで渡します。(完了画面でDB登録) 入力修正のときは、確認画面のhiddenフィールドに入力データを入れ、入力画面にデータを戻します。 (入力画面では、そのデータを受け、初期表示に利用) 良く分からないのは、 ・hiddenフィールドにもhtmlspecialcharsをかました方が良いんでしょうか? 例えば、<input type="hidden" name="memo" value="<?=htmlspecialchars($memo)?>"> phpのマニュアルでは、セキュリティ上、hiddenにかましているようなのですが。。。 ・その場合、hiddenから受け取ったデータはhtmlエンティティ化されますが、 そのデータをそのままDBに登録するのはどうなんでしょうか? 例えば、&などは「&」の形で登録されちゃいますが。。。 いろいろ調べてみましたが、DB登録時には、なるべく素のデータを登録するのが、 望ましいという記事もあり、迷っています。 それとも、hiddenでデータ受け渡しするんでなく、セッションを使うべきなのでしょうか?
206 :
205 :2006/08/16(水) 23:20:10 ID:???
すみません。上記の、 &などは「&」の形で登録されちゃいます・・・のところは、 &などは「アンド記号amp;」 という意味です。
>>205 inputタグに書くHTMLエンティティはPOST送信時に復号される
208 :
205 :2006/08/17(木) 00:44:43 ID:???
>>207 どうもありがとございます。
簡単なプログラムで確認したところ、何事もなく復元されていました。
どうも、頭の中でごちゃごちゃ考えすぎていたようです。
恥ずかしい。。。
ありがとうございました。
しかし、PHPマニュアルのそれらしいところを見たのですが
POST送信時に復号される話は見つかりませんでした。
私の探し方が悪いのでしょうか?
PHP初心者です。 PHP+MySQLを使用し、登録者以外からの書込み拒否する為 名前とパスワードが一致すれば、書込みできるようにしたいのですが、 名前とパスが正しくても、書込みできません。 現在の設定は MySQLのテーブルに、投稿者の名前を記録するフィールド名=name 投稿者のパスワードを記録するフィールド名=pass と設定した状態で 投稿者の名前=NAME、投稿者のパスワード=PASS、としてPOST属性で送信し 以下を受取側のファイルの一部にしてパスワード確認しています。 //↓から extract($_POST); mysql_connect('localhost','root','HOSTPASS'); mysql_select_db('TABLE'); $sql= "select * from FIELD where name = $NAME"; $result = mysql_query($sql); $row = mysql_fetch_array($result); $PASS = $row[pass]; if($pass != $PASS){ echo "パスワードが違います。"; } else{ 以下書込みプログラムが続く //ここまでが受取側の一部 どこがが間違っているのでしょうか? ご指導宜しくお願いします <(_ _)>
>>210 すばらしく、ザルなスクリプトだが、サンプルという好意的に解釈しよう
まずは、問題を切り分けろ
1.$PASS には期待している文字列が入っているか
2.$row['pass'] には本当に期待している文字列が格納されているか?
3.仮に $row['pass'] = $PASS; として書き込みプログラムが動くか
1.が駄目なときは前の入力画面がおかしい
パラメータ名などを確認
2.DB に本当にレコードが存在するか確認
ない場合は SQL 文が間違っている可能性がある
直接 MySQL のクライアントを立ち上げて試してみる
3.分岐がちゃんと動いているか確認
動いているときは、書き込みプログラムがおかしい
このどれもが期待通りに動いているのなら
もう一度書き込んで見てくれ
そのときは、本当に使っているソースを貼って
DB の接続に必要なパラメータは消していいから
212 :
nobodyさん :2006/08/17(木) 22:20:04 ID:U0Bacn/n
>>211 あ、悪い。間違えた
誤)
3.仮に $row['pass'] = $PASS; として書き込みプログラムが動くか
正)
3.仮に $row['pass'] = $pass; として書き込みプログラムが動くか
>>210 nameって予約語じゃなかったっけ、予約語ならバッククォート
あと値もクォートしましょう
where `name` = '$NAME'
214 :
210 :2006/08/18(金) 10:20:32 ID:???
>>211 詳しい説明ありがとうございました。
誤作動の原因としては、
1のパラメータの送信値が間違っていたことです。( ´,_ゝ`)フッ
nameを送るつもりがidを送信していました・・・orz
ここを手直ししたら、自分的には思った通り動きました。
ところで、ベテランの方に質問なんですが、
スクリプト作成の経験がまだ半月位なので、
今回のようにデバックでメチャメチャ頭抱えてます。
問題発生時の解決法ののポイントとしては、
>まずは、問題を切り分けろ
とありましたが、その他に「コレに気をつけろ!!」ってのありますか?
ありましたら、またご指導お願いします <(_ _)>
>>213 レスありがとうございます。
>>214 気をつけろというのは、たくさんあるが、
ある程度までは try and error で慣れるほうがいい
デバッグで使えるのは
var_dump();
print_r();
など、特に var_dump() は型も一緒に表示するから初心者は特に重宝するだろう
机上デバッグの癖を付けるのはいいことだとは思うが、
それは最低限の知識と経験がないと、不必要に時間をかけるだけだろう
そこそこ慣れて xdebug というような PHP のデバッガーを使うようになると
さらに楽になる
>>208 結論としては、
「細かいこと考えずにhiddenにもエスケープ関数かましといててOK!」
ってこと??
それを書かないと他の初心者の参考にならないよ。
携帯電話って、JavaScriptは使えなくて、PHPとPerlは使えるんですか? これらはどこで処理されているのですか??
218 :
_ :2006/08/18(金) 21:36:53 ID:qJB64gmd
自分も初心者ですが PHPやPerlはサーバーで処理され Javascriptは簡単に言うとあなたのPCで処理されるので Javascriptを利用する場合はPC(携帯)の環境により実行結果が異なります
サーバサイドとクライアントサイドを わかりやすく説明していただけませんか??
>>219 中学レベルの英語も理解できないなら氏んだほうがいいと思う。
222 :
nobodyさん :2006/08/18(金) 22:25:23 ID:0rSuveav
サーバーサイドは、サーバー側の機能やマシンで処理される情報。 クライアントサイドは、ユーザー側がブラウザやマシンの機能で処理する情報って ことだとオレは、思いこんでるけどまっがってるかな? JAVA,CGI,PHPとかは、サーバーサイド。 html,JavaScript,Flashアクションスクリプトとかは、クライアントサイド。
PHPやPerlはサーバーで処理され Javascriptは簡単に言うとあなたのPCで処理されるので Javascriptを利用する場合はPC(携帯)の環境により実行結果が異なります
224 :
210 :2006/08/19(土) 08:46:56 ID:???
>>215 少しレス遅くなり、スマソ
var_dump();は初めて見た関数だったので、PHPエディター早速でF1しました。
便利そうですね
でも、print_r();がF1で出てこなかったのはなぜだろう?
デバッガーとかの存在も初めて知ったよwww
xdebugもメチャ便利そう!!
いい情報に感謝します。
226 :
nobodyさん :2006/08/19(土) 19:52:08 ID:rwxCztmB
BBQ入れたいんですがどこらへんに入れれば良いのでしょうか? function host_chk(){ $host = getenv("REMOTE_HOST"); $addr = getenv("REMOTE_ADDR"); if($host == "" || $host == $addr){ $host = @gethostbyaddr($addr); } $deny = split(",", deny); while(list(,$value) = each($deny)){ $value = str_replace("*",".*",$value); if(eregi($value,$host) || eregi($value,$addr)){ error("アクセス不可"); } } }
好きなところに入れたらいいんじゃないの
適当に入れると表示されなくなるので それで制限らしきところから弄れるかなと思いまして
229 :
208 :2006/08/19(土) 22:14:54 ID:???
>>216 すみません。仕事でバタバタしていました。
結論としては、
「こまかいこと考えずに、hiddenにもエスケープ関数かませてOK」
だと思います。(むしろかませるべき。)
遷移先にて、$_POSTで受けた値を確認しましたが、
htmlspecialcharsでエスケープした値が、自動的にもとの値に
復元されていました。
209さんが言うように、PHPの仕様だと思います。
(マニュアルの「第 56章PHP と HTML」の「1. フォームから、もしくは URL から値を渡す場合には・・・」を
読むと、そういうニュアンスのことが少し書かれていました。)
&amp;→&の変換はhtmlの仕様(文字実体参照) phpがやってくれるのは%26→&の変換
e-word(
http://e-words.jp/ )のような、
印刷用ページ編集機能をPHPで実現するにはどのように書いたら良いでしょうか?
HTMLのフォームでデータの受け渡しをして、PHPファイルでデータを蓄積するイメージです。
考え方でも良いのでヒント頂けないでしょうか・・。
HTMLのフォームでデータの受け渡しをして、PHPファイルでデータを蓄積するといいんじゃないかな?
234 :
nobodyさん :2006/08/21(月) 00:14:46 ID:OxXNX8LD
>>231 つまりe-WordsみたいにWeb表示用と印刷用の2種類の表示がしたいってこと?
ただ単に内容(説明文等)をなんでもいいからファイルに記述して、
Web表示用と印刷表示用の二つのPHPファイルから読み出せるようにすればいいんじゃないの?
css使う方が楽ちゃうんか?
>>234 レスありがとうございます。
Web表示用は別のデータベース関係のCGIで処理を行っているので、その内部にFORMタグを設置、
それを印刷表示用のPHPでデータを受け取る形にしたいんです。
受け取った時の、クッキーを用いてデータを蓄積させていく方法をご教授いただけないでしょうか?
内容が書き換えられてしまうんです。
<form action="test.php">
<input type="hidden" name="data1" value="$data[1]">
<input type="hidden" name="data2" value="$data[2]">
<input type="submit" name="submit" value="追加">
</form>
↑$data[1],[2]の部分はCGIの処理でデータが入ります。
↓PHP側はデータを受け取るのですが、クッキー&蓄積で戸惑ってます。
<?php print $data1; ?>
237 :
231 :2006/08/21(月) 01:20:44 ID:???
238 :
nobodyさん :2006/08/21(月) 10:54:05 ID:OxXNX8LD
なんでクッキーが必要なのか分からない フォームでデータ受け渡しして表示するだけじゃないの?
超基本的な質問なんだけど・・・orz if($a != ""){以下を実行する} と if($a <> ""){以下を実行する} この2つは、「$aが空白ならば、以下を実行する」でいいよね? あと、 if($a != $b){以下を実行する} コレは、「$aの値と$bの値が同じならば、以下を実行する」だよね? 上の分岐文が3つとも、オレの期待した分岐になってくれないんで 誰か助けて下さい。 ちなみに、「$a、$b、$c、$dの値が全部Eとなっている時」に $a = $c; $b = $d; echo "$a"; echo "$b"; if($a != $b){ echo "$a"; echo "$b"; echo "以下を実行する"; } とテストしたら 「EEEE以下を実行する」 と表示されてしまう オレ間違ってるのかな???
>>239 ファイルから読み込んだ値だと改行がくっついて
見た目は同じでも中身は違ったりするけどね
>>239 >この2つは、「$aが空白ならば、以下を実行する」
アホ。真逆だ。「$aが空白ではないならば」だ。
>$aの値と$bの値が同じならば、
これも真逆。同じ「でない」ならば、だ。
基礎から勉強し直せウンコくん。
var_dump($a, $b, $c, $d); でもはさんでみたらw
243 :
239 :2006/08/21(月) 13:38:29 ID:???
>>240 MySQLから読み込んだデータなんだけど、
MySQLの場合も改行がくっつく事あるのですか?
データ記録の仕方では、改行がついてないとは思うのですが・・・
>>241 >アホ。真逆だ。「$aが空白ではないならば」だ。
まったくその通り・・・orz
239での書き込みがミスですwww
糞まみれのオレだけど
「$aが空白ではないならば」に読み替えて、
教えてくれ〜
244 :
239 :2006/08/21(月) 13:39:11 ID:???
連投です もう少しだけ、239を補足 239のスクリプトは、パスワード識別の為の部分なんですが、 $cはフォームで書込みされ、POST属性で受け取ったパスの値、 $dはMySQLに記録されいた値を呼び出したパスの値として 「$c、$dの値が両方Eとなっている時」に $a = $c; $b = $d; if($a == ""){ echo "パスを入力して下さい。" exit; } echo "$a"; echo "$b"; if($a != $b){ echo "$a"; echo "$b"; echo "パスが違います。"; exit; } 以下、パスが認証されたとして、メインプログラム実行 とテストすると「EEEEパスが違います。」と表示され、 「EEEE」と表示されてる事から、 if($a != $b)が機能してないと推測したんだけど 何故???誰か助けてぇぇぇぇ
通学途中の女子高生のミニスカートが風でまくれあがってパンツがみえてしまうようなPHPを教えてください。
>>245 マ板に質問してみては?
あそこ、デスマーチで頭いかれている人多いから、なかなかナイスな回答がくるよw
マ板?
>「EEEE以下を実行する」 >と表示されてしまう そのプログラムなら、その動作結果で正しいわけだが。 つまりお前が間違っている。
249 :
nobodyさん :2006/08/21(月) 16:58:14 ID:OxXNX8LD
こういう基礎的な論理式から理解できてないと逆にどう言ったらいいか困る
250 :
239 :2006/08/21(月) 18:13:38 ID:???
>>248 、
>>249 オレが間違っているっていう事は、認識しているのだが
どう間違っているのかがわかっていないオレ・・・orz
オレの頭の中の思考もコメントで付け足しするので
どこでオレの思考回路が間違っているのか教えて欲しい
$cはフォームで書込みされ、POST属性で受け取ったパスの値、
$dはMySQLに記録されいた値を呼び出したパスの値として
「$c、$dの値が両方Eとなっている時」に
$a = $c; //$cはEなので、$aの値はEになる
$b = $d; //$dはEなので、$bの値はEになる
if($a == ""){ //$aの値はEだから、空白ではない
echo "パスを入力して下さい。" //だからここは回避される
exit; //ここは今は関係ない
} //ここも今は関係ない
echo "$a"; //間違ってるみたいだから$aを表示、$aはEになってる
echo "$b"; //間違ってるみたいだから$bを表示、$bはEになってる
if($a != $b){ //$a、$bの値は共にEだから、ここから回避されるはず
echo "$a"; //Eと表示された・・・工エエェ(´Д`)ェエエ工
echo "$b"; //Eと表示された・・・工エエェ(´Д`)ェエエ工
echo "パスが違います。"; //表示された・・・工エエェ(´Д`)ェエエ工
exit; //直前の3行がEと表示されたから、メインプログラムに行かないのは分かる
}
以下、パスが認証されたとして、メインプログラム実行 //本当はここになるはずなのに・・・ショボン
実行結果は「EEEEパスが違います。」となる。
上のスクリプトでオレが期待しているのは
「EEメインプログラムを実行」と表示されることなのに・・・
>>250 もしそのコードでそういう結果になるのなら、
$aと$bの中身が違うとしか考えられないわけだが。
if($a != $b)
を
if($a !== $b)
にして試してみれば?
242は華麗にシカトですか?
253 :
nobodyさん :2006/08/21(月) 19:41:21 ID:OxXNX8LD
254 :
239 :2006/08/21(月) 20:10:01 ID:???
>>242 レス遅くなってスマソ、
243の後でPHPマニュアル見たけれど、初心者なので
var_dump()の解説見たけど、理解できなかったんだよ・・・orz
それで後回しにしてしまったら、忘れてた。
今から他のサイトも見て検証してみる。
>>254 兎に角var_dumpで吐かせれば結果は出るだろうが
256 :
nobodyさん :2006/08/21(月) 20:34:32 ID:LbhS4bpH
こんにちわ。グーグルアドセンスって、どうやってページテーマにあった 広告を出してきているのでしょうか。 恐らくJavascriptだけでは、不可能だと思うので、PHPなども使用していると思うのですが、PHPが動かない フリーサーバー等でも サイトテーマにあった広告を出せるのが不思議でしょうがいないです。 ご存知の方いらっしゃいましたら教えてください。お願いします。
>>256 GoogleAdsense(に限らず配信型広告は大方)JavaScriptで、Googleのサーバにある広告データをもらってきている。
つまりプログラムはGoogleのサーバで動いているということだ。
258 :
239 :2006/08/21(月) 20:57:00 ID:???
var_dumpでやってみたよ 一部オレの勘違いがあった^^; 250では、$a = $c と置き換えていたが、$cをそのまま、突っ込んでいたよ でも、影響はないと思われたので var_dump($b, $c, $d); とやってみたら string(4) "0000" string(4) "0000" string(4) "0000" と出たよ よくわからんけどどう?
>>239 var_dump($b, $c, $d);
なんで$aが無いのか・・素直じゃないねぇ
てかプログラムやるの無理じゃない?
261 :
nobodyさん :2006/08/21(月) 21:48:21 ID:LbhS4bpH
>>257 >>259 ありがとーです^^
見てもわからないんですよね。グーグル側のjsファイルを見てもjsスクリプトしか
記述してないんです。
こちら側のJSファイル(グーグルから貼り付けるように言われたJSファイル)を ME.js
グーグル側のjsファイルを Google.js と仮定します。
ME.js は Google.js を読み込むものである。
Google.js には DBと連携させる何かしらのPHPが書かれている。
ME.jsを読み込んだこちらのファイルは、もしPHPが動かないサーバーでも、
結局はグーグル側でPHPを動作させてこちら側のJSに結果を渡しているから
動くんですよ
と言う解釈で宜しいでしょうか。
>>258 そういう勘違いを他でもしてるんfだろ
ここに書いたサンプルコードだけでは分からんよ
PHP4とPHP5の互換性ってどんなもんなの? PHP5の入門書で勉強し始めたんだけど、本番環境がPHP4だから恐ろしい。 気をつけるべき事とかあれば教えてください。
>>264 オブジェクト指向構文はPHP5から追加されたものが非常に多い
関数の引数が違うこともある
とりあえず、いきなり本番環境は止めてくれ。
ローカルでPHPのテスト出来る環境作って、そこでテストしろ
>>265 ありがとー。
引数の違いがあるのは痛いorz
テスト環境は自宅鯖で他人の作ったPHP動かす為に5.04が入ってるので大丈夫?です。
それ以降だと動かないモノがあるんで・・・
4と5って両方いれるの無理そうだし入れ替えるわけにもいかないし
困ったもんだ。
俺はmod版の4とCGI版の5を入れてテストしてる。 5メインにしたいけどなかなかそうもいかないのが辛い。
俺はCで4と5の切り替え用プログラム書いて使ってる
バージョン互換性がとても低いのがPHPのウリだからしょうがない。
270 :
42歳 :2006/08/31(木) 03:53:00 ID:Z0sApiUa
http://f4.aaa.livedoor.jp/~muni/sc0403.html#sche を使って予定表を作りました。便利でキレイなんですが、
これのデータである
/data/200608.dat
を読み込み 今日の内容だけを表示する 超簡単(そうな)プログラムがかけません。
openfile();を使ったらいいというのだけがわかるんです。
dat の中身は
ちなみに
$maxno,$ctgno,$stamp,$putm,$putd,$week,$puthou,$putmin,$tit,$com,$timeflag,$settim,
となっており、
4,1,-1,08,16,3,,,お盆休み,,1,1150783667,
というようになっています。
最初がIDで、カテゴリーナンバー、次はログ並べ替え用スタンプ で、月、日、曜日、時間、分、タイトル、内容、というのはわかるんです。
日付とタイトルだけを抜き出して表示するにはどう書いたらいいんでしょうか?
絶対できそうだと思ったけど、脳がパンクしました。
272 :
42歳 :2006/08/31(木) 04:07:33 ID:Z0sApiUa
273 :
42歳 :2006/08/31(木) 04:14:09 ID:Z0sApiUa
fileopenではなく。 fopen() でした。
274 :
42歳 :2006/08/31(木) 04:37:09 ID:???
真剣に教えてくださる方を探しております。メールをください。 お礼は少しですが必ずさせていただきます。
>>266 Apacheを2つ入れるって手があるなぁと>両方いれる
276 :
nobodyさん :2006/08/31(木) 07:21:44 ID:at/JVgVZ
>>270 ,をキーにsplitで区切った配列の該当要素を使うだけ
277 :
nobodyさん :2006/08/31(木) 09:05:40 ID:slzMI+G6 BE:579125568-2BP(0)
278 :
42歳 :2006/08/31(木) 12:41:18 ID:???
正規表現がわからないならexplode見れ
>>278 $data = "a,b,c,";
$line = explode(",", $data);
foreach($line as $key => $value) print('$line['.$key.'] == '.$value.'<br>');
これで分かる?分かったら今凄く貧乏なのでお金ください。
282 :
42歳 :2006/08/31(木) 14:20:51 ID:???
fgetcsv() なんてのがあるんですか? でもデータは /data/200608.dat なので Loadtextfile() とかで呼び出して、 if($today==date()); で検索をかけて… というようなことを考えて すみません。 ムリです。 誰かメールください。 マジに払います(そんな大金は払えないが)。 これがわかったら、今後やっていけるような気がする。 ムリか。
>>280 はやったのか?スルーしてんじゃねぇよ社会のゴミ。
284 :
42歳 :2006/08/31(木) 14:56:50 ID:???
$dataを宣言するにも、それが /data/200608.dat に入ってるでしょう。 で、最初に date() で日にちを 2006 と8に分けて、そのデータがあって、 しかも 15日だったら 今日のが表示される… って そういう条件が2つあると無理って感じで・ あきらめたほうがいいだろうか。
斉木由美という子を知ってるが、42歳じゃない
286 :
42歳 :2006/08/31(木) 15:01:18 ID:???
explode() については ゲットしました!! わかった〜 うれし〜。というのがあります。 ありがとうございます。 ゴミと言われてもしかたない。
287 :
42歳 :2006/08/31(木) 15:04:48 ID:???
42なです。 PHP改造しかしたことない。 10日で覚えるを一応読みましたが、まったく役立ってなかったなと。
>$dataを宣言するにも、それが /data/200608.dat に入ってるでしょう ファイルから読み込んで変数にぶちこむ部分を分かりやすいように改変してるだけでしょうw
>>285 奇遇だな、俺も知ってるが42歳じゃない
好きだったんだけど苗字かわっちゃった
>>284 >>286 何を言いたいのか理解に苦しむ
とりあえず
> 日付とタイトルだけを抜き出して表示するにはどう書いたらいいんでしょうか?
これはできたってことか?
>>289 そうです。それはできそうだなと思いましたが…。
誰か全部書いてください。 というか、自分でやりたいような気もするが、
ここで挫折したら、全部挫折しそうだ。
そもそもムリだったんだろうか。
> 誰か全部書いてください。 それを挫折とは呼ばないのか?w
挫折だが金で解決して、学ぶ予定。
へぇ〜それが挫折じゃないなんてw とってもプラス思考なんですね。
>>288 ソウナンデスケド… がんばって本読みながら今夜もやってみますが。
気になってたまりません。 このスレが。 仕事手につかん。
>>290 1) まずdate()から年と月を取得する
2) 該当するファイル(例:dat/200608.dat)が存在するかチェックする
3) あったらfgetcsv()でも使って配列$dataにでもぶち込む
4) $dataをループ処理でもして日付とタイトルを書き出す
5) ループしてる最中に今日の日付にマッチするのがあったら
他の変数($todayData)にでも格納しておく
6) 格納しておいた今日のデータ($todayData)を書き出す
やりたいことはこういうことか?
一つずつクリアしてゆけ、さもなくば好きなだけ挫折しれ
あとは知らない
>>296 そういうことです。 意味は完全にわかるけど、書けるだろうか。
こんな簡単なサンプルプログラムがない。 サンプル命できたもので、基本的にはわかってないなと昨日から実感しとります。
1)の date() から年と月を取得するところから、
$Month=date(M); とかでいいんでしょうか?
そういうレベルなんですけど。
これは私にはムリだと思います。
>>297 だからそれを一つずつ試しながらクリアしていけばいいじゃん
>これは私にはムリだと思います。
そう思うならあきらめなさい
誰かバイトして
300 :
nobodyさん :2006/08/31(木) 15:51:02 ID:ntBbHdNQ
どなたか助けてください。
http://www.cgis.biz/script_web_cart/ ここで配布されているショッピングカートのphpを改造中で、
販売データをcsvに書き出す処理があるのですが、
購入商品の数だけcsvの行が増える仕様になっています。
1度の注文につき、どれだけの数の商品を購入しようが、
1行だけにしたいのです。
(販売商品データはcsvでは必要がないため、書き出さないようにしています)
多分この辺が怪しいと思うのですが...
「data_sell.php」のダウンロードcsvヘッダーの設定のあとの行から
$csv_head = mb_convert_encoding($csv_head,'SJIS','EUC-JP');
echo $csv_head;
for($i = 0; $i < count($log_all); $i++){
$log_array = split(",",$log_all[$i]);
for($j = 0; $j < count($log_all_i); $j++){
$log_i_array = split(",",$log_all_i[$j]);
if($log_array[0] == $log_i_array[0]){
$log_all[$i] = rtrim($log_all[$i]);
$log = $log_all[$i] . $log_all_i[$j];
$log = mb_convert_encoding($log,'SJIS','EUC-JP');
echo $log;
}
このどれかをいじればいいのじゃないかと思っているのですがどうでしょうか。
そんな単純じゃないだろうとは思うのですが、誰かお願いします。
たぶんこれではわからないのではないでしょうか? 私だったらCSVデータをアクセスかなんかで引っ張って加工したらいいんじゃないかと思うんですけど。 エクセルでもいいけど。 ごめん。超初心者が何を言う。
302 :
nobodyさん :2006/08/31(木) 16:17:38 ID:ikYjbt78
初心者です。 PHPをインストールしてapacheを起動するとエラーになってしまいます。 Cannot load C:/php/sapi/php4apache2.dll into server: \x8ew\x92\xe8 \x82\xb3\x82\xea\x82\xbd\x83\x82\x83W\x83\x85\x81[\x83\x8b\x82\xaa \x8c\xa9\x82\xc2\x82\xa9\x82\xe8\x82\xdc\x82\xb9\x82\xf1\x81B C:/php/sapi/の下にphp4apache2.dll はあるんですがなんででしょうか? ちなみに windowsXP apache2.2.3 PHP4.4.4 です。 すいませんが、わかる方おしえてください。
>>299 このスレで質問してる部分だけでいいならアルバイトって形で代行しても良いですよ^ω^
というか金ないのでやりたいですw
305 :
nobodyさん :2006/08/31(木) 16:44:15 ID:ikYjbt78
>>302 です。
すいません。解決しました。
PHP5 に変更して、apache2.2 用のDLLをダウンロードして解決しました。
apache2.2 用のDLLをダウンロードしていれないとだめみたいです。
1日、なーんにもできなかった・・・・
>>305 辛いですよね…。私なんか夜が夜でないですよ。最近…。でも、それを楽しむ人間性が必要なのだと。
こりゃこりゃ、そんなへたな釣りでアドレス収集してんじゃないよw
>>301 お前、一回氏んだほうがいいんじゃない?
メールは来ないの? 自分でやるのか…。
>>310 これ以上ログ流すのやめてもらえませんか?^^
それとこれだけいろんな人が教えてくれたのに「自分でやるのか…。」は失礼だと思いますよ
どーみても釣り。そのアドレスの主に嫌がらせしたいんだろ。主に通報するよう言っておくから、おうちで警察くるの待ってなさい。
警察出てきたらいなくなったw
315 :
42歳 >>271 :2006/08/31(木) 22:34:27 ID:Z0sApiUa
お陰様でよい出会いがありました。これから幸せに暮らします。 さようなら。
>>272 金払気うならPHPプロ!で質問すればいいと思う。
317 :
42歳 :2006/09/01(金) 00:24:57 ID:+wXqiG2u
いや そんな大金じゃないから。 でも、とっても親切に教えてもらって、今後の研鑽になりました。 また教えてください。 こちらのログも決してムダにせず、私の血となり肉となります。 早速今夜も眠れない。
>317は PHPプロ! を知らないに25zeev
>>315 慌ててメアド欄を消してももう遅いよwww
お前は警察に逮捕されるだろう。
まあ、しょぼいストーカーか、陰湿な嫌がらせか、とにかくタイーホだねwww
もしタイーホされたくなければ、今すぐ自分の実名を名乗って謝罪しといたほうがいいんじゃない?
妙に伸びてると思ったら。 どうでもいいからもう42関係のレスやめろよ。
321 :
42歳 :2006/09/01(金) 14:17:34 ID:+wXqiG2u
322 :
nobodyさん :2006/09/05(火) 16:47:55 ID:rnjtfRTm BE:144781643-2BP(0)
>>322 $myURL=str_replace($_SERVER['DOCUMENT_ROOT'],"
http:// ".$_SERVER['HTTP_HOST'],$_SERVER['SCRIPT_FILENAME']);
こうゆうこと?
外してるかもしれんし、もっとスマートな道がある気もする
>>277 define('SCRIPT_URL', (empty($_SERVER['HTTPS']) ? 'http' : 'https').'://'.$_SERVER['SERVER_NAME'].$_SERVER['SCRIPT_NAME']);
PHPでセッションを登録し、別のPHPのファイルにformで移動すると SESSIONが保持できません。 SELFで自分に戻るとSESSIONの中身は取れているのですが、 何が考えられるでしょうか? ちなみにSESSIONをセーブして中身をみていたら、 別のページに移動したときに2個目のセッションが作成されていました。
327 :
nobodyさん :2006/09/07(木) 10:28:51 ID:fMyB6iZL
PHPで2次元配列で、 for($i = 0 ; $i < 5; $i++){ for($ii = 0 ; $ii < 5; $ii++){ $arr[$i][$ii]=1; }} print "$arr[3][3]"; の様な事をしたいのですが、出力される値がArrayしか出なくて困っています。 2次元配列を簡単に組めるにはどうしたらいいのですか?
>>327 print_r() または var_dump()
少しはマニュアルを検索しろウンコ野郎!!
>>327 print $arr[3][3];
or
print "{$arr[3][3]}";
>>327 ""で括ってどうするんだ、お前は・・・
331 :
nobodyさん :2006/09/09(土) 02:41:28 ID:C6V07CE/
下記の様な配列があるとします。 要素[1]さんの状態は[2] 要素[3]さんの状態は[4] 要素[5]さんの状態は[6] [配列ary] array ( [0] => ココカラ [1] => Aさん [2] => 元気 [3] => Bさん [4] => まあまあ [5] => Cさん [6] => 空元気 ) ここからCさんの状態を調べるスクリプトを書いてみたのですが for( $i=1; $i<5; $i+2) { if(strpos($ary[$i], 'Cさん')==false) { } else { $j = ++$i; $status = $ary[$j]; } } 何故かこうすると動かず、for文の$i+2を$i++に変更すると正常に動きます。 そもそも$i+2という記述はおかしいのでしょうか?教えてください。
>>331 とりあえず他は知らんけど、 $i+2 は $i+=2とか
名前と状態に等しいものが無いという前提でarray_search()
$j = array_search("Cさん",$ary);
if ($j != false) {
echo $ary[++$j];
}
な感じ
print "htmlのソース";みたいに全てするのと、必要なところだけ<? phpのプログラム ?>みたいな 感じで記述するのでは負荷等は変わってくるのでしょうか?
>>331 若干ズレた答えだけど
Array(
[Aさん] => 元気
[Bさん] => まあまあ
[Cさん] => 空元気
)
とか
Array(
[0] => Array( [name] => Aさん [status] => 元気 )
[1] => Array( [name] => Aさん [status] => そこそこ )
[2] => Array( [name] => Bさん [status] => 空元気 )
)
にしたほうがわかりやすいかもしれないね、うん
335 :
331 :2006/09/09(土) 05:53:34 ID:C6V07CE/
>>332 ありがとうございました。
+=2で美味くいきました。
アドバイス頂いてからマニュアル見直してみたんですけど、$i+2だけだと代入しないんですね。
試しに
for( $i=1; $i<7; ($i=$i+2))
こうしてみたところ、これでも期待通りの結果が得られました。
あ、あとarray_serchという関数ありがとうございました。初めて聞く関数だったので今後の参考にします。
#只、今回は状態に同一の値が入る可能性があるので、やめときました。
>>334 そうですね。Array[0]に不必要な値もある事ですし、ちょっと綺麗にしようと思います。
何はともあれ、これで眠れそうです。ありがとうございました。
336 :
nobodyさん :2006/09/09(土) 06:16:44 ID:PgI2vPCa
PHPでlat.txt、lon.txtから緯度(lat)、経度(lon)を取り出して、 google mapに反映させたいのですが、 うまくgoogle mapに反映できません。 多分、PHPで読み出したデータをjava script側にうまく 渡せていないと思うのですが、よくわかりません。 すみませんが、ご教授お願いします。 ソースの主要部分を抜き出します。 <?php $handle = fopen ("lat.txt", "r"); $lat = fgets($handle, 1024); fclose($handle); $handle = fopen ("lon.txt", "r"); $lon = fgets($handle, 1024); fclose($handle); ?> function onLoad() { map.setCenter(new GLatLng( $lat , $lon ),4); marker = new GMarker(new GPoint( $lat , $lon ), markeropts); }
>>333 まあ、よっぽど大きなサイズでない限り、どちらの方式でも
無視できる程度の負荷の差しかないと思うけど。
ただ、ソースの見通しの良さとか考えると、前者のほうがオススメ。
>>336 function onLoad() {
map.setCenter(new GLatLng( <?php echo $lat ?> , <?php echo $lon ?> ),4);
marker = new GMarker(new GPoint( <?php echo $lat ?> , <?php echo $lon ?> ), markeropts);
}
かな
339 :
nobodyさん :2006/09/09(土) 10:38:32 ID:/+q9xMfe
>>339 AddType application/x-httpd-php .php
341 :
nobodyさん :2006/09/09(土) 10:48:47 ID:/+q9xMfe
>>440 それは追加しました。
でも「LoadModule php5_module c:/php/php5apache.dll」を書くと
アパッチが再起動できなくなってしまいます。
バージョンは
PHP-5.1.6
Apache-2.2.3
を使ってるんですが、
これよりも前(といってもPHP5)の解説サイトを見ながら設定しても上手くいかないもんなんでしょうか。
342 :
339 :2006/09/09(土) 10:51:23 ID:???
>>440 でなく
>>340 でした。
あとsage忘れてました、すみません。
寝ずにやってて頭に血が上りつつあるので
耳鼻科行ってクールダウンしてきます。。。
windowsかな? apache2.2.x を使っているなら Apache2.0.5x に変える どうしてもapache2.2.xを使いたいならPHP5.2.xをさがす
344 :
nobodyさん :2006/09/09(土) 11:32:26 ID:38GEQ8NE
>>341 php5apache.dllはApache1.3用のdllだ
でPHP5.1.6(Win32)にはApache2.2用のdllは同梱されていない
>>377 とんです。前者でいこうかと思います。
ありがとうございました。
347 :
339 :2006/09/09(土) 13:09:02 ID:???
>>343-344 耳鼻科が思いのほか混雑していて返事遅れてしまいました。
原因はまさにそれですね!
Apacheを変えたらできました。
素早い正確な本当にどうもありがとうございました。
>素早い正確な本当にどうもありがとう ひどい日本語だな・・・
PHPじゃなくて正規表現の話題になってしまいますが・・・ A[=aaa]BC[=bbb]DEF[/=bbb]GH[/=aaa]IJK などと言う文字を A<span class="aaa">BC<span class="bbb">DEF</span>GH</span>IJK という風に正規表現で置換したいんですけれども、 $text = eregi_replace('\[(.+?)\]','<span class="\\1">', $text); としてもうまく出来ません・・・ どうしたらよいでしょうか。よろしくお願いします。
何で実行速度的・セキュリティ的にpreg系に劣るereg系正規表現関数を使うヤツが多いんだ? マニュアルにも書いてあるだろうに。
pregですか、、、 あらやる面でeregに勝っているようなので、使ってみることにします。 ・・・でもうまく動かないorz
=いらなくね?
下記のスクリプトを実行してもエラーになります・・・readが未定義って 言っているようですが書いてるし原因が分かりません。 ご指摘をお願いしますorz PHPのバージョンは 5.1.6 です。 <?php class Hoge { public function __construct( $path = NULL ) { if( !is_null( $path ) ) { read( $path ); } return; } public function read( $path = NULL ) { /*! ファイル読み込み処理を実装する予定。 */ return; } } $hoge = new Hoge( 'test.txt' ); ?> エラー内容 Fatal error: Call to undefined function read() in N:\sample.php on line 8
356 :
355 :2006/09/10(日) 14:08:22 ID:???
「On line8」は投稿用に改行のみの行を消したためずれています。 read( $path );の行がline8です。
357 :
355 :2006/09/10(日) 14:09:33 ID:???
ゴメンなさいずれてなかったorz
出来ました。迷惑掛けて申し訳ないです。
あ、上は349です。すいません。
361 :
355 :2006/09/10(日) 14:40:55 ID:???
しかし355の場合、メソッドごとに$pathを引数にしなくともメンバ変数を作ってそれを使えばいいんじゃないか? どっちが良いのか、どちらにすべきかは知らないけど。 誰か詳しい人教えてくれ。
363 :
355 :2006/09/10(日) 18:49:47 ID:???
>>362 >メンバ変数を作ってそれを使えばいいんじゃないか?
ファイルパス(メンバ変数)をglobalにする必要がないと思ったので
newもしくはread時に渡すようにしています。
>>363 ちょっと待て
メンバ変数のことを勘違いしてないか?
365 :
363 :2006/09/10(日) 22:43:21 ID:???
てっきり下記のようにしたら?ってことだと思ったんだけど。。(´・ω・`; class Hoge { public $filePath; /*コンストラクタは省略*/ public function read() { /*$this->filePathのファイルを読む*/ return; } } $hoge = new Hoge(); $hoge->filePath = 'data.txt'; $hoge->read(); メンバ変数=$filePathのことで、パブリックな$filePathにパスをセットして read()を呼べば引数にパス渡さなくてすむって意味だと思った。。
366 :
363 :2006/09/10(日) 22:47:54 ID:???
>ファイルパス(メンバ変数)をglobalにする必要がないと思ったので globalじゃない…publicですたorz
>>366 んじゃprivateにすれば?
・・・というのは置いといて、
コンストラクタで引数で渡してメンバ変数に代入したり
あるいはファイル名登録用のメソッドを作ったりしてもいいよね。
というか355の方法じゃクラスにしてる意味が全く無くない?
368 :
366 :2006/09/11(月) 00:35:35 ID:???
>>367 >んじゃprivateにすれば?
情報の後出しのようでもうしわけありません。
エラーの確認用のHogeクラスでは省略していますが実際使おうとしている
クラスではprivate $filePathを持たせています。
引数無しでread()を呼んだ場合に$this->filePathのファイルを読み直します。
>コンストラクタで引数で渡してメンバ変数に代入したり
コンストラクタのなかでreadまでやるからreadのなかでメンバ変数に
代入するようにしているのですが、、コンストラクタ(ファイルパスのセット)と
read()は分けた方がいいのでしょうか。
>あるいはファイル名登録用のメソッドを作ったりしてもいいよね。
read()とファイルパスのセットを分けた方が良いのであればそうします。
どちらがよいのでしょうか。
369 :
nobodyさん :2006/09/11(月) 15:31:35 ID:9vOMCYca
PHPでformlから値を貰うときに$_POSTを使うのは分かるのですが、 $_POST["hoge"]=$_SESSION["mofu"]; みたいに直接代入という 方法ってプログラム上アリですか?無しですか? この方法で確かにちゃんと動くけど明らかに使い方は間違ってるような 気がする($_POSTはformからのデータを貰う為のものと思っているから) のです。 なぜこんなことをしたのかと言うと、前画面で入力したデータを ターゲットのフォームに初めから入れておきたいが、ターゲット画面で 入力エラーを検知した場合は、そのエラーの箇所を空白にし、他の入力 箇所は保持したいのです。 ターゲット画面でsubmitをしたとき、呼び出される画面はターゲット画面で、 入力にエラーが無い場合はHeaderで次画面に飛ばすのです。 分かりにくい表現で恐縮ですが皆様の考えを教えてください。
普通にアリでしょ
>>369 $_POSTに代入っていうのは気持ち悪いね
動くんだろうけど確かに使い方は間違ってる
他の変数に代入するんじゃだめなの?
どうせサニタイズするんだったら$_POSTそのまま使うんじゃないし
372 :
nobodyさん :2006/09/11(月) 18:08:47 ID:qCpJYXXZ
画像をリソーズにするには、どうすればいいんですか? $img = file_get_contents('画像のURL.jpg'); echo imagesx($img); としてもエラーが出てしまいます。
それはファイル関数。イメージ関数を使う。
374 :
nobodyさん :2006/09/11(月) 21:31:19 ID:9vOMCYca
正規表現でカタカナと数字以外の入力を禁止する処理を作りました。 if(ereg("[^0-9ア-ンー0-9]",$_POST["kanaName"])){ echo "全角カタカナと数字以外禁止"; } しかしこれだとヤ以降(50音順)がカタカナと認識されません。 よい方法があったら御教授願います。
×御教授願います。
>>369 設計を根本的に見直そう。
$_POSTで受け取った値は必ずスクリプト内で
別の変数に代入してから計算なりアウトプットなりするクセをつける。
そんで、エラーを検知した場合は、最初の画面に戻して、
どういうエラーがあったのかを表示して再入力させるべき。
もちろんこの時、エラーがなかった項目については値を保持して、
フォームに既に入力されてる状態にしてあげること。
377 :
374 :2006/09/12(火) 14:25:02 ID:FIxGk3KG
>>375 何か問題でも?
教授=プロフェッサーだけじゃなくて知識等を与える事って意味もあるはず
だから知識を与えて欲しいと願うのはダメ?
それはさておき正規表現の問題が解決できません。
ア-ンーとしてあるのにガ等の濁点やァ等の拗音(だっけ)がマッチしたりしてます。
どうやったら解決できるでしょうか?
>>374 ,377
自分のレベルが糞より低い位置にあるんだから、バカに徹して頭を垂れているべきだ。
それが世渡りつーものだ。
で、そんなもん正規表現じゃねー!!恥ずかし過ぎ!つか、笑った。
もし、sjisなら片仮名文字は
\x83[\x40-\x96]
バカだから文字コードの事も考えていないよね?
仮名文字を使って正規表現とか言うのだから。
> 仮名文字を使って正規表現とか言うのだから。 そこでmb_eregですよ!
381 :
374 :2006/09/12(火) 15:10:12 ID:FIxGk3KG
>>379 なるほど サンクス 今度からそうするよ。
他のアドバイスはスルーかよ
>>374 のレベルだとご教示では足りんからご教授というのもあながち間違いではない気がする。
384 :
374 :2006/09/12(火) 15:57:14 ID:FIxGk3KG
>>378 実際に組むとき\x83[\x40-\x96]はカタカナだから
if(!(ereg("^\x83[\x40-\x96]",$_POST["kanaName"]))){
echo "全角カタカナと数字以外禁止";
}
としてみました。
全角カタカナ以外はこれで入力できなくなりました(数字も入らなくなっちゃったけど)
その後mb_eregを使ってみました。
if(!(mb_ereg("^[0-9ア-ンー0-9]",$_POST["kanaName"]))){
echo "全角カタカナと数字以外禁止";
}
こうすると数字も弾かれないので後者を使うことにしましたがァィゥェォとヴが弾かれるので
if(!(mb_ereg("^[0-9ア-ンーヴァ-ォ0-9]",$_POST["kanaName"]))){
echo "全角カタカナと数字以外禁止";
}
これでテストした結果、今のところは期待通りになっていると思います。
ありがとうございました。
>>382 手ぇ遅いので試すまで待って・・・
>>383 正解。
385 :
382 :2006/09/12(火) 16:12:37 ID:???
>>384 いや、せかしてしまってすまない、早漏だった
動いておめでとう
>>384 オマエ、本物のバカだな基礎とか基本とか全部飛ばしているな
仮名文字を使うなつーてるのにバカだから使うし
$baka = $_POST["kanaName"];
if(!ereg("\x83[\x40-\x96]",$baka) || !ereg("\x82[\x4F-\x58]",$baka)|| !ereg("[0-9]",$baka)) echo '全角カタカナと数字以外禁止';
>>387 俺も宗教的な理由で仮名文字は使わないな
別におかしくないし、sjis環境なら使わないほうがいいし
それ以前にmbって・・・まーいいや。
>>386 まぁ超初心者用だし・・・。
これからに期待あげ
> それ以前にmbって・・・まーいいや。 そこが大事だろ! おれみたいな初心者に教えてくれよ
>>391 本当に宗教的な理由としか言い表せないだろう
mdで仮名文字(2バイト文字)が使えるからと安易にいたければ使えばいいかと
もし、自分が宗教的な物に気付けばどこかで仮名文字は捨て去る事となるから
但し、生涯教えて君や初心者を通すなら気付かず使うことととなるだろう
それはそれで良いと思う。
日ry
394 :
391 :2006/09/12(火) 17:59:17 ID:???
>>392 プログラムコードには極力日本語を含まないようにしてる
理由は単純に気持ち悪いからだ
でも実際にどんな問題がはらんでるかが知りたい
・「マルチバイト」そのものがあまり信用できないからアスキーコードを使う
・PHPのmbまわりが信用ならない
・環境設定によって左右されるようなコードを書くべきでない
いろいろ考えてみた あたってたらそう言ってくれ
あたってなかったら調べてみたりするから
2バイト文字で問題・・・Windows上で文字コードEUCのスクリプト内で 日本語を含んだパスを指定して「ファイルが読めない。」と悩む私が昔 いました。
日本語の文字コードが乱立してるのがいけないんだ!! RFCとかが統一すりゃいいんだ! そしたら「宗教的」なヲタたちが啓蒙普及活動をしてくれる。 そしてプログラミングにおける日本語の問題も全て解決する。
宗教的確信を持って「無理」と思う
何のためのUNICODE
399 :
nobodyさん :2006/09/13(水) 18:06:28 ID:fd+xBvUi
pearをインストールしていますが、上手くバージョンアップできません。
参考にしたサイト
http://www.y2sunlight.com/ground/?PHP5.0%2F6.PEAR%A4%CE%A5%A4%A5%F3%A5%B9%A5%C8%A1%BC%A5%EB OSはWindowsXP Pro PHPは5
このサイトに従ってインストールしていたらpearのバージョンが1.3.1になっていました。
しかしサイトの画像で見るとバージョンは1.4.6、最新は1.4.11なので、
pear install pear としてみるとインストール済と言うことでスキップされました。
アンインストールしてからならインストールできるだろうと思い、
pear uninstall pear としたら、pear.bat自体がなくなってしまいました。
最新バージョンの1.4.11をインストールする方法を教えてください。
//pear download-allとするとXML error at line 1, check URL
Invalid return payload: enabling debugging to examine incoming payloadと出るのは仕様ですか?
400 :
399 :2006/09/13(水) 18:40:21 ID:fd+xBvUi
PHPのバージョンをあげたら1.4.9になったのでこれで良しとします。 騒がせて巣万個
401 :
nobodyさん :2006/09/13(水) 19:37:08 ID:ny0rhUNk
よくやった
ははは
てst
404 :
nobodyさん :2006/09/13(水) 20:15:13 ID:qvwVE6Hq
質問です。 例えば $a が 2ちゃんねる だったら、 あいうえお かきくけこ さしすせそ $b が 3ちゃんねる だったら いろはに ほへと ちりぬる って表示するようにして、 $a=2ちゃんねる $b=3ちゃんねる だったら あいうえお いろはに かきくけこ ほへと さしすせそ ちりぬる と表示するようにしたいんですが、 どのようにすればいいでしょうか?
>>404 if ($a == "2ちゃんねる" && $b == "3ちゃんねる") {
echo "あいうえお いろはに" . "<br />\n";
echo "かきくけこ ほへと" . "<br />\n";
echo "さしすせそ ちりぬる" . "<br />\n";
} elseif ($a == "2ちゃんねる") { // A
echo "あいうえお" . "<br />\n";
echo "かきくけこ" . "<br />\n";
echo "さしすせそ" . "<br />\n";
} elseif ($b == "3ちゃんねる") { // B
echo "いろはに" . "<br />\n";
echo "ほへと" . "<br />\n";
echo "ちりぬる" . "<br />\n";
}
こうではなくてAの出力とBの出力を合成して表示したいという意味であれば、
$str['a'] = array("あいうえお", "かきくけこ", "さしすせそ");
$str['b'] = array("いろはに", "ほへと", "ちりぬる");
if ($a == "2ちゃんねる" && $b == "3ちゃんねる") {
for ($n = 0; $n < 3; $n++) { echo $str['a'][$n] . " " . $str['b'][$n] . "<br />\n"; }
} elseif ($a == "2ちゃんねる") {
for ($n = 0; $n < 3; $n++) { echo $str['b'][$n] . "<br />\n"; }
} elseif ($b == "3ちゃんねる") {
for ($n = 0; $n < 3; $n++) { echo $str['a'][$n] . "<br />\n"; }
}
といった感じに配列でも使わないと多少メンドイことになる。
406 :
nobodyさん :2006/09/14(木) 04:55:29 ID:w1P9D6Nk
ヒント配列
407 :
nobodyさん :2006/09/14(木) 13:39:34 ID:RcWvZ0xR
Apache2.0.54
PHP5.0.2
pear1.3.1を使っています。
<?
include_once "Mail.php";
echo "メール送信テスト<br>";
$recipients = '
[email protected] ';
$headers['From'] = '
[email protected] ';
$headers['To'] = '
[email protected] ';
$headers['Subject'] = 'テストサブジェクト';
$body = "ようこそバーボンハウスへ\n この1杯は奢りだからまず飲んで落ち着いて欲しい\n ごめん、またなんだ。\n";
$mail_object =& Mail::factory('mail');
$result = $mail_object->send($recipients, $headers, $body);
if (PEAR::isError($result)) {
echo"DEAD END";
die($result->getMessage());
}
echo $result;
?>
としたところ、メールは送受信できるのですが、$headers['From']と$headers['Subject']の内容が表示
されません。
メール送信が出来るならPEARやPHP、Apacheの設定ではないと思うのですが・・・。
どうやったら$headers['From']と$headers['Subject']の内容が表示できるでしょうか?
408 :
nobodyさん :2006/09/14(木) 13:41:58 ID:RcWvZ0xR
追記 $bodyは表示できます。 PHP5.1だとちゃんと表示できるのですがPHP.iniのExtensionのMySQLコメントアウトをはずしても PHP.infoでMySQLが使えるようになってないので断念しました。
PHPにwantarray(perl関数)と同じ物ってないですか? 探しているのですが、見あたらなくて
410 :
nobodyさん :2006/09/14(木) 17:45:56 ID:pPxPgU+d
PHPスレで質問していいのか迷いましたが・・・ <?php $cmd=$_POST['cmd']; if($cmd!=null) echo $cmd; ?> こんなPHPのソースがあって、 ここにtelnetで接続し POST /index.php HTTP/1.0 Content-Length: 5 cmd=1 と言うテキストファイルを送信しました。 確かに200OKと正常にヘッダが返ってきたのですが、 帰ってきて欲しいのは、1と言う文字です。 それが帰ってこないのですが、どうしてでしょうか? HTTP関連も調べたのですが、何が原因かわかりません。
411 :
nobodyさん :2006/09/14(木) 17:59:41 ID:iFbFyD2f
PDOにもPEAR::DBの「autoExecute」みたいに 自動的にSQL文を組み立ててくれる機能はありますか?
> if($cmd!=null) if($cmd!==null)
>>410 ヘッダに返ってくるのは仕様です。
なんらおかしくありません。
>>410 はヘッダ”しか”帰ってこないから困ってるんだろ。
ちなみに、それは、
Lengthだけじゃなくて
ContentType: application/x-www-form-urlencoded
を送信してないから。
これで、とりあえずは1と帰ってくるよ。
418 :
帰ってきた42歳 :2006/09/16(土) 01:15:26 ID:yXjwnh9n
Smarty を使って フォームを作りましたが、config.phpの指定には、 m01 => array(label => 'お名前', formtype => 'text', opt => array('size' => '40', 'maxlength' => '220', 'style' => 'ime-mode:inactive')), という感じであるのですが、ここを自動的に日本語入力に指定することはできないものですか? テンプレートでいじるのでしょうか?
419 :
帰ってきた42歳 :2006/09/16(土) 01:16:27 ID:yXjwnh9n
わかりました。 今、冷静に見て… すみません。 ime-mode が i-modeに見えていました
サーバ"から"ファイルをPOSTでアップロードするコードを書いてるんですけど うまくアップロードできません。 $handle = fopen ("fugahoge.tgz", "r"); while (!feof ($handle)) { $buffer = fgets($handle, 4096); $dataf.= $buffer; } fclose ($handle); $curl = curl_init ($posturl); curl_setopt ($curl, CURLOPT_POST, 1); curl_setopt ($curl, CURLOPT_POSTFIELDS,"&filename=".urlencode($dataf)); curl_exec ($curl); curl_close ($curl);
途中で投稿しちゃった。 こう書いたのですがうまくいきません。 おしえてください
>>420 PEARのHTTP_Requestをつかったら?
423 :
nobodyさん :2006/09/17(日) 04:45:08 ID:7OIeS9Or
echo "書き込み"; $fp = fopen('aaa.txt','w'); fwrite($fp,$f_raw); fclose($fp); こんな単純な書き込みなのですが、 何故かaaa.txtと言うファイルが書き出されません。 ルートディレクトリにもカレントディレクトリにもありません。 なにかphp.iniに設定すべき所があるのでしょうか? それとも、プログラムミスなのでしょうか?
fopenに失敗した場合は、E_WARNING レベルのエラーが出る筈なんだが。
助けてください。。。 とある理由でPOSTで数M(10M以下)のデータを送り fopen、fwriteで書き出しするプログラムなんですが・・・。 完了に2分以上掛かる上、UNIXマシンでtopコマンドうつとCPUは80%くらいを食っています。。。 こんなもんなんでしょうか? 転送自体はローカルでテストしてるんで、問題ないんですが・・・・。 それとも、メモリが少ない設定になってる為等でしょうか? どちらにせよ。POSTされた数Mのデータを高速にファイルに書き出す方法を探しています。 よろしくお願いします。
<?php
require_once("XML/RSS.php");
$rss=new XML_RSS("
http://manabekawori.cocolog-nifty.com/blog/index.rdf ");
$rss->parse();
?>
<h2><?php print(mb_convert_encoding( $rss->channels['title'],"EUC-JP","auto")); ?>
</h2>
<?php foreach($rss->items as $item){ ?>
<?php print(date(($item['dc:date']))) ?> <a href="<?php print($item['link']); ?>" target="_blank">
<?php print(mb_convert_encoding($item['title'],"EUC-JP","auto")); ?>
</a><br>
<?php }
?>
と書くと
2006-09-17JST00:41:11+09:00 夫婦別姓制度はまだなのか
2006-09-13JST22:46:23+09:00 おやすみ投稿か
2006-09-08JST00:08:49+09:00 カッチカチやぞ
2006-08-31JST22:40:11+09:00 エロかわ…?
言う風に表示されるのですが、
JST00:41:11+09:00の部分を削りたいのですが、
どうすれば宜しいか分かる方いらっしゃいましたら宜しければ教えていただけると幸いです。
explodeでJを指定して[0]をprintしてやればいいかも。
429 :
nobodyさん :2006/09/17(日) 15:59:12 ID:X/s21ZZr
すみません、Linux上でfindを実施してphpの拡張子がhitした場合に、 行頭に#!/usr/bin/php5を一括挿入するスクリプトを 作成したいと思いますが、どのように書けばよろしいでしょうか? --スクリプト(パイプで渡せばいいと考えましたがこの先はどうした方がよいでしょうか?) find * -name *.php |
こんな感じで出来なかったっけ? 出来なかったらゴメン % php < `find * name php `
Sqliteで扱うデータで、デスク容量をカウントするのがあって ギガとかになるので、バイト単位だと 1073741824B=1Gなので、INTEGERだと格納出来ません。 こういう用途だと、どうすればいいのでしょうか? SQiteは型非依存だと聞いたのですが、型を指定しなければ良いと言う事でしょうか?
SQLiteスレ行けといいたい所だが、 バイト単位でだと、扱うのはあまり好ましくないから。 どうせギガレベルなら、メガ単位で管理すれば?
細かくデータ量を管理したいなら class DataSize{ private digitGigaByte; private digitMegaByte; private digitKiloByte; private digitByte; /* 以下メソッド定義 */ }; とかやって自前のクラスと操作メソッド作ったほうがいいんでない?
434 :
nobodyさん :2006/09/18(月) 05:50:35 ID:0wioqDk7
質問です mkdir('dir', '0600'); など、パーミッションを指定できるメソッドで作成したファイルやディレクトリが、この設定が反映されません。 具体的には、上の例の場合、411のパーミッションのdirと言うディレクトリが出来上がります。 何か設定すべきところがあるのでしょうか? 一切の書き込みが出来ないので、何も出来ません。。。
mkdir('dir', 0600); だめだったらごめんね
空行を含んだファイルを $fi = file("aaa.dat"); で読み込んでから、 空行を抜いて表示したりしたいのですが、 やりかたがわかりません。 for ($i=0;$i<9;$i++) { if ($fi[$i] != "" ) { print "$fi[$i]<br>";} } 「""」のところを「\n」で試したりしましたがだめでした。 どうすれば良いのでしょうか。
>>436 $fi = array_map('rtrim',file('aaa.dat'));
for ($i=0;$i<9;$i++) {
if ($fi[$i] != "" ) { print "$fi[$i]<br>";}
}
っていうか、そういうメソッドがあったような・・・
>>436 $fi = file('aaa.dat');
foreach($fi as $value){
if(trim($fi) == '') continue;
出力処理
}
>>438 一々突っ込むほどのことではないかも知らんが、メソッドは一般にクラスのメンバ関数のことだと思うぞ。
if(trim($fi) == '') continue; → if(trim($value) == '') continue; な、勿論。
441 :
nobodyさん :2006/09/20(水) 09:19:03 ID:HL0PU+Ol
質問お願いします。 MySQLに予め登録したテキストを呼び出してmb_send_mailで配信というのを やりたいんですが、改行なしになってしまいます。 改行を入れたい所に\nを入れてDBに登録したんですが、うまくいきません。 何を使えば改行が入るでしょうか?
443 :
nobodyさん :2006/09/20(水) 14:42:19 ID:HL0PU+Ol
>>442 PHPスクリプトの改行コードはLFに統一してるんですが、MySQLにも何か改行コードを
指定するんでしょうか?
444 :
442 :2006/09/20(水) 15:00:36 ID:???
>>443 以下のコードをmb_send_mailの直前に入れて試してごらん。
$bodyってのはメール本文ね。MySQLから取り出したテキストを$bodyに入れて。
$body = str_replace("\r\n", "\n", $body);
$body = str_replace("\r", "\n", $body);
クロスサイトスクリプティング対策についてなんですが、 掲示板を作るとして書き込むときに fwrite($datafile, "<pre>".$_POST['message']."</pre>"); としてみたらJAVASCRIPTも無効化されてるしいいような気がするんですが、<pre>で囲んだ程度ではやはり駄目でしょうか?
446 :
nobodyさん :2006/09/21(木) 17:29:08 ID:JVGPXujg
session_unset(); session_start(); と宣言しているページがあります。 ユーザにデータを入力させ、action=""としています。 $_POSTの内容は保持されて$_SESSIONの内容だけ削除というのは 標準の動きなのでしょうか? 確かに$_POSTの内容は残り、$_SESSIONの内容はクリアされているような 挙動はしているのですが、別の環境(作成はWinで稼動はLunuxとか)に持っていっても 同じように動くのでしょうか? 日本語が不自由っぽくて恐縮ですが教えてください。
>>445 文章に</pre>があったらどうなる?
>>445 XSSというのは実際にHTMLとして出力するときに問題になるのであって、
fwriteにはまったく関係ない。
そして専用の関数(htmlspecialcharsなど)があるんだからそれを使え。
>>446 環境変えても問題ないと思う
(Lunuxでググったら10,300件・・みんなtypoしまくってるんだなぁ・・・。)
450 :
nobodyさん :2006/09/22(金) 00:35:07 ID:7CvFXbdS
SQlite使ってるのですが sqlite_escape_stringで"などクエリの作成時に問題の出る文字を\"に置き換えられているのですが 文字列をSQLiteで取り出す時も残ったままなので、\"の文字が表示されてしまいます。(出力先はブラウザではないので・・・) これを戻そうと$res=str_replace('\"', '"', $res);こんな事をやりましたが、うまく行きません。 残ったままです。 どうにか戻す方法はないのでしょうか?
phpでmysqlのデータベースにアクセスするプログラムを作成したのですが、 以下のエラーが出ています。 Fatal error: Call to undefined function mysql_connect() in /usr/local/www/data-dist/index.php on line 9 このエラーは、おそらくmysqlで提供しているphp向けの関数mysql_connnectが 認識できていないのではないかと考えていまして、 おそらく、php側の設定の追加が必要だと思うのですが、 具体的に何をやればいいのでしょうか? ちなみに環境は以下の通りです。 ■OS FreeBSD 5.4 ■phpのバージョン $ pkg_info | grep php php5-5.0.3_2 PHP Scripting Language (Apache Module and CLI) ■mysqlのバージョン $ pkg_info | grep mysql mysql-client-4.1.10a Multithreaded SQL database (client) mysql-server-4.1.10a Multithreaded SQL database (server) よろしくお願い致します。
>>452 ビルドの時にMySQLの組み込みを指定したか。
FreeBSDなんだけど、 PHPのmail関数使うのに、ポート空ける必要ないよね? 昔Linuxでやった時は要らなかったはず・・・ 何故か外部にメール遅れない・・・ ググったらその手の質問は多いのに、どこも解決策が書いてませんでした・・・。
>ググったらその手の質問は多いのに、どこも解決策が書いてませんでした・・・。 あるあるwww 横槍ばっかになるんだよな、mail使うヤツだとおせっかいが沸くからw ちなみに、ググったなら気づいてると思うがsendmailの問題であってPHPの問題じゃないから 解決したいなら、該当スレ当たれ。 あと、メールサーバーへ接続しての送信なんだからポート開放は不要 厳密にはサーバーといっても、サーバークライアントモデルのクライアントの相当する機能だから。
フォームから入力された値を確認ページに表示させ、 その後、送信ボタンでメール送信します。 確認ページでは、$_postデータにforeachでhtmlspecialchrasをかませ、 &などの文字がエンティティ化されるのはいいのですが、 メールで送った文字も&と表示されてしまいます。 メールでは&に戻して送りたいのですがどうすればよろしいでしょうか?
メールで送った文字もアンド記号amp;と表示されてしまいます、です。
>>456 バカかお前は。
$_POST変数をそのまま丸ごとforeachでエスケープかけてるんなら
メールでもエスケープされたままになるのは当たり前だろ。
HTML表示用変数とメール原稿用変数を分けて、それぞれ$_POSTから格納しろ。
そしてそれぞれ適切な処理を施せ。
POSTの受信速度に影響が出そうな設定ってありますか? 同じスペック、同じバージョンのサーバーなのに、レンタルサーバーでは8Mのファイルの受信に8秒 一方自宅やその他の自分の設定したサーバーでは1分の状況です。 ローカルホストで実験しているので、回線の速度の問題ではないと思うので、何か設定でもあるのかと疑っています。 ApacheやLighttpdなど色んなサーバーに変えたりしても同じなので、PHP側の設定を疑っています。
>>425-426 でも話出てるが、PHP5のPOSTは遅い。
ちなみにfopen()などファイルオープンではなく、POSTである。
ためしにPHP4にしてみ。
多分片方の速いってサーバーは4だろ。
うちもファイルのアップロード数十倍伸びて唖然としたクチ
>>459 両者のPHPやApacheのバージョンも書かないと。
初心者です。 POSTで、次のページに送って表示させると文字化けが。 両方のページをEUC-JPで保存してるのに何でですか? mb_detect_encodingで、その送られた値を見ると、SJISになってしまっています。 教えてください。
462です。 formで、enctype="multipart/form-data"で上記の値を送信しているのですが、 このenctypeを外すと、普通にEUCで表示されます。 ファイルをアップするとSJISに勝手に変わってしまうのでしょうか? どうすればいいのでしょうか、教えてください。
PHP5は糞だったのかw
jpgの画像をアップしても、JPG、PNG、GIF形式以外の写真ファイルは登録できません、と表示される 何でだ? $ext = array("JPG","GIF","PNG"); if(is_uploaded_file($_FILES["uploadfile"]["tmp_name"])){ $fileinfo = pathinfo($_FILES["uploadedfile"]["name"]); $fileext = strtoupper($fileinfo["extension"]); if(!in_array($fileext, $ext)){ $errors[] = "JPG、PNG、GIF形式以外の写真ファイルは登録できません"; }
上のじゃない。こっちです。 if(in_array($fileext, $ext)){ print "aaa!"; }else{ $errors[] = "JPG、PNG、GIF形式以外の写真ファイルは登録できません";}
解決した。単にtypeミスだ。 しかし、タイプミスほど腹が立つものねぇ。
小一時間悩みまくってtypoとかあるあr
甘いな
Sqliteなんですが、 $query="INSERT INTO user_uniq (mail,pass,uniq) VALUES('$_mail','$_pass','$uniq')"; こんな感じにすると、メールの@マークで怒られます。 Warning: sqlite_query() [function.sqlite-query]: unrecognized token: "@" 今まで、これでやって、普通に動いてきたし 今も別のコードで、この方法で動いているのですが、何か特別な変化があると、挙動が変わるのでしょうか?
事故解決しました。 単なるミs
>>452みたいに /usr/local/www/data-dist/index.phpと絶対パスが見えてしまうのとmysql使ってるってのを隠したいが、エラーに成っても隠せる方法無いの? このままじゃ運用につかえない。orz
っ XXXII. エラー処理およびログ記録関数
try{} catch {} して catch {} でログに書き出すとかする。画面には出力されないはず。 でもFatal Errorは無理だったような気が。
>>474 パースエラーが出るような状況で運用にするなよ
リナクスのバージョンアップ、アパチのバージョンアップ、マイSQLのバージョンアップ、PHPのバージョンアップ パースエラーが出ない保証なんて無いよ。 複数台で負荷分散してたりすると、phpスクリプトがダウンロードできたりして楽しい状況。 まあ上場したミクシもパールスクリプトがダウンロードできるミスをやらかしたけど。
一応あれ保存してるwww
クレクレ!!!
mixiってmod_perlで動いてるんだろ? ちょっと見てみたい。
>>477 >複数台で負荷分散してたりすると、phpスクリプトがダウンロードできたりして
どうして負荷分散するとスクリプトがダウンロード可になるの?
負荷分散と直接関係あるの?
テスト環境を整えずにバージョンアップするなってこった。
483 :
483 :2006/09/25(月) 15:10:08 ID:???
tanaka→CSVファイル一行分のデータ yasuda→キーワードが入った配列 Function Search_Pattern($tanaka,$yasuda) { for($loop = 0;$loooop < count($yasuda);$loooop++) { if($yasuda[$loooop] == "") continue; if(!ereg($yasuda[$loooop],$tanaka)) return 0; } return 1; } yasudaさんはフォームに入力されたキーワードなんだけど、 「ー」をフォームに入力すると、 >Warning: ereg() [function.ereg]: REG_EBRACK in /xxx/xxx/xxx/xxx.php on line xx て、エラーが出てしまう。調べてみると、 「Shift-JISじゃだめだEUCにしろ」みたいなことらしいのだけど、 意味がよく分からないです。 HTMLのヘッダー部分を直しても、何も起きないし、 <meta http-equiv="content-type" content="text/html; charset=EUC"> ファイルをEUCにして保存して、アップしたら文字化けしました。 CSVのデータ内容の都合上「ー」は避けて通れないので、 どうしたら良いか教えてください。よろしくお願いします。
484 :
nobodyさん :2006/09/25(月) 16:03:14 ID:zOMXhHPD
PHPでアップローダー作ってるのですが、 動画をアップロードして、その動画のサムネイルも ウェブ上に表示される方法に関して、 詳しく書かれた専門書があればお勧めいただければありがたいです。
>>484 そんな本は無い。
それくらい自分で実装方法が思いつかない&調べられない、という
レベルなら、諦めたほうがいい。
いや、あきらめるな調べろ
いや、あきらめたりもしくは調べろ
いや、根気良く質問し続けろ
ほう、動画のサムネイル表示か。 やったことないから俺は分からない。だからちょっと面白い。 よし、やってみよう。
yahooで「php 動画 サムネイル」で検索したら1番上に出てきたけど。 ffmpegってエクステンションがあるみたいね。 わりと分かりやすいドキュメントもあるし。 調べるってことをしないのかね・・・
491 :
483 :2006/09/25(月) 22:30:14 ID:???
2バイト目が正規表現の特殊文字と一致するのが原因?らしい?? むむむ……??
>>491 charset=euc-jp じゃない?
493 :
491 :2006/09/25(月) 22:40:59 ID:???
回答どうもありがとうございます。 指摘箇所を修正したのですが文字化けしました。 「そこを直すだけ」だとだめなんでしょうか・・。
んー [ php.ini ] mbstring.language = Japanese mbstring.http_input = auto mbstring.http_output = EUC-JP っていうか今483のコード目通したけど、明らかにおかしいから文字コード以前にそれを直すべき。 for文の変数がおかしい。eregの使い方間違ってると思われる。あと、一般的にFunctionはfunctionで。
回答どうもありがとうございます。 ですが、回答の内容が理解できません。(頑張って調べてみますが) 明らかにおかしいとのことですが、 取り敢えず「ー」を検索キーワードにしなければ正しく動作してます。
いやいや、これじゃ$yasuda[0]取れてないじゃん。
内部・出力・スクリプト・CVSファイル・POSTされたデータ のエンコーディングは全部EUCか? tanaka と yasuda にする意味が分からん。 どうせ意味を持たない名前の変数なら hoge とかにした方が分かりやすい function Search_Pattern($key, $csv) { foreach ($csv as $line) { if($line == "") continue; if(!mb_ereg(mb_convert_encoding($line,"EUC","SJIS"), $key)) return 0; } return 1; } まぁあれだ、エスパー的に考えると多分POSTされたデータがSJISだからEUCに変換すれば通るんじゃないか 2バイト目が\x5Cな文字を受け取ると失敗する
あ、申しわけない。$loopの"o"の数は無視してください。 それは、間違いです。 実際は、全部$loooopです。
書いた後で思った。 $tanakaって分割されたCSVの一行なのに、$lineって変だな
500 :
483 :2006/09/25(月) 23:24:18 ID:???
>>497 さんに指摘されて、全てのファイルを見直したら、
CSVファイルがShift-JISになってたので、ECUにしたら、
「ー」の検索結果が上手く表示されました。感動!
普段使ってるHTMLエディターがそういう設定ないので、
あんまり気に止めてなかったことでした。
mb_convert_encodingとか見たことないこと書いていただいたので、
それも参考にしてみたいと思います。
それでは、皆さん、ご迷惑お掛けしました。
頑張りまーす。
PHP5のPOST処理が遅いって、このスレで何度か出てたので調べてみた。 PHP/4.3.11 PHP /5.1.6 で、両方Apache/2.0.53で動かした。 ソースは $file=$_POST['FILE']; $fp = fopen('testfile', 'w'); var_dump(fwrite($fp, $file)); fclose($fp); echo "OK"; こんな単純な処理、 んで、5Mちょうどに作ったランダムな文字を埋め込んだテキストデータを送ってみた。 PHP5側が32秒、PHP4側は3秒 …なんだろう、この差は('A`) ちなみに、php.iniは新たに排除された物以外同じ。 POSTに関連するような項目は無いはず。
こ・・このあり得ない程の差は一体どこが問題なんだ・・・
セキュリティ耐性の向上でいろいろチェックでもしてるのでは? バッファーオーバーフロー対策だけでもかなりのオーバーヘッドが発生して処理速度が落ちると思う。いちいちサイズチェックしてる訳だし。 プロファイル取って精査してみると原因が分かるかもね。
504 :
501 :2006/09/26(火) 02:12:00 ID:???
関係ありそうなのといえば magic_quotes_gpcだろうけど これを無効にしても変わらんね。 まぁ、チェックはこれだけではないと思うので、オプションでいじれない範囲になるのかな
>>501 のソース
最初ファイルの書き出しの所でオーバーヘッド起きてるんだと信じ込んでたが
$file=$_POST['FILE'];
の直後に、echo 'OK';exit();
やっても、OKが返るまでに相当時間がかかる。
さらに、$file=直前の一行目に書いても同じ。
ちなみに、俺はWindows版のPHPで試したが、その場合PHP4/5ともに30秒くらいかかった。
んで、FreeBSDマシンもあるので、
>>501 とほぼ同じマシンで試したら、4/5ともにほぼ同じ30秒くらい。
ところがどっこい、xreaのPHP5採用鯖とPHP4採用鯖で試したら、2秒で完了した。
同じく外部で借りてる鯖で試してもそんなもん。
この2つの共通点はLinuxって事だな。
俺の結論としては、4/5の差じゃなくて、OSの何かの差だと思うんだが・・・。
PHP.iniファイルは当然あわせてるし、他に考えられん。
>>505 を見ると、俺にはハードウェアの違いに見えるんだが…
Windows版はGUI立ち上がってるからCPUパワーが一段階下がる。
何となくお前のFreeBSDマシンはメインマシン下がりの1世代か二世代前のマシンな希ガス
POST処理って何気にCPU食うからな。URLエンコードやmagic_quotes_gpcの有無に限らず結構チェックが多いから
そりゃ素人が作った鯖と、それで飯食ってるプロが建てた鯖とでは違うと思うが。 xreaはRAID搭載ジーオン鯖だったりしないか?
getimagesizeで、警告がでるときとでないときがあるのですが、どうしてですか? if(getimagesize($_FILES["upfile"]["tmp_name"])){ $errors = "画像形式のファイル以外は登録できません"; } 空のjpgをアップすると、警告と$errorが表示されます。 でも、テキスト形式のファイルをjpgにして、アップすると、 $errorは表示されるのですが、警告は表示されません。 マニュアルには、 filename のイメージにアクセスできない場合、もしくは有効な画像でない場合、getimagesize() は FALSE を返し、E_WARNING レベルのエラーを発生させます と書いてあるのですが、どうしてでしょうか? もし、よろしければ、教えてください。
>>508 ファイルがアクセス可能であればE_WARNINGはでないようだ
マニュアルのミスだね
>>507 POSTで受信する段階ではRAIDとか関係ないでしょ
>>508 マニュアルのミスっすか!
ありがとうございます!!
phpで構造体(c言語でいう、structに相当するもの)を表現するには、 通常どのようにするのでしょうか?
配列かオブジェクト使え
514 :
nobodyさん :2006/09/28(木) 09:41:40 ID:vmB3T9I4
>>505 文字コード何にして送ってる?
FreeBSDは、EUC/ECU-JPだから
その変換作業がオーバーヘッドになってると思われ。OSの差が本当に原因なら
日本語扱わないなら文字コードは関係ないよ。latin1相当だ。
誰かFreeBSD環境とLinux環境を切り替えれる人が
>>501 のソースを実行してみりゃわかる話。
OSレベルで差が出るとは思えんが・・・
>>501 が同一マシンで実行したのなら、何かOSの差異に問題があるんだろうな。
でも、PHP4と5だろ・・・、うちじゃ差は無かったよ。FreeBSDマシンだがどっちも同じくローカルで30秒ほど
本当に一桁で完了なんてすんの?
流石にこのマシンLinux入れるわけにはいかないので試せないけど、もしそういう結果が出るなら乗り換えてしまいたいかも・・・
517 :
nobodyさん :2006/09/28(木) 11:47:29 ID:la8GqmPx
echoとprintが両方使えるのですが、どちらを使う方が良いのでしょうか?
殆ど同じだから好みで使い分けていいよ。 ただし、どちらかに統一するように! void echo ( string arg1 [, string ...] ) int print ( string arg ) >戻り値 ・echo は戻り値がない NG : echo echo echo echo "hoge"; ・print は常に1を返す OK : print print print print "hoge"; → hoge111 >引数 ・echo は「,」(コロン)で区切った文字列を連結して出力する事ができる echo "hoge", "hage", "hige"; → hogehagehige (普通にドットで文字列連結できるからあんまり意味ないけど、違いって事で)
・・コンマなのになぜコロンと書いてるんだろうか・・・ orz
聞いてくれ!みんな! ming居れたいんだけどコパーイルエラーでちゃう。 dbl2png.c:31: error: 文法エラー が "png_uint_32" の前にあります 等のエラー make[2]: *** [dbl2png] エラー 1 make[2]: Leaving directory `/usr/local/src/ming-0.3.0/util' make[1]: *** [utils] エラー 2 make[1]: Leaving directory `/usr/local/src/ming-0.3.0' make: *** [all] エラー 2 ming のアーカイブをダウンロードし、展開して ming-0.3.0.tar.gzとming-php-0.3.0.tar.gz 他にも居れないとダメん? make エラー 糸冬 OS:CentOS4.2 Apache1.3.3+modssl PHP4.3.11 Postgres7.2.2 色々調べたがイマイチグット来るものが中田・・・。
522 :
nobodyさん :2006/09/28(木) 18:13:15 ID:ESgbH1eM
曜日選択のPHPを作っています。 mofu.phpにはチェックボックスに月〜土まであり、submitすると、mofu.phpで判定を行います。 <input name="ShopOpenW[]" type="checkbox" id="ShopOpenW[]" value="月" <? if(in_array("月",$_POST['ShopOpenW'],TRUE)){echo "checked"; } ?>>月 としたのですが、チェックが入っていない状態でsubmitすると、 Warning: in_array() [function.in-array]: Wrong datatype for second argument と怒られます。 でもチェックを入れた状態でsubmitするとWarningも出ないし、期待通りチェックボックスにチェックが ついたままの状態になります。 このWarningをつぶす方法を教えてください。
>>522 まぁ、一つの方法としてはエラーレベル下げるとか。
524 :
522 :2006/09/28(木) 18:28:24 ID:ESgbH1eM
チェックボックスに1つもチェックが付いていない=空のデータ、
つまり配列じゃないぞゴルァというエラーであると思ったので、
if($_POST["ShopOpenW"]==""){
$_POST["ShopOpenW"]=array();
}
として空白のときは空の配列になるようにしました。
期待通りの動作にはなりましたがなんか正統な方法じゃないような
気がするのでもっといいアイデアがあればお願いします。
>>523 あえてエラーレヴェルは下げない方向で・・・
ヘタレなので別の部分で対処すべき不具合も見えなくなっちゃうかも
なので・・・。
ログイン後のユーザーページを表示させるのに、セッションを使っているのですが、 これはセキュリティ的にやはり危ないのでしょうか? というのも、現在、パスワードなどの認証後、$_SESSION["userid"]= $userid みたいな感じで、 値をいれ、各ページでその値が空でなければ、$_SESSION["userid"]の値を元に、 個々のユーザーのデータを抽出して、表示させています。 ただ、$useridはDBからそのまま持ってきた値を使っています。 だから、会員ナンバー1の人はその$useridが1となってます。 これは、すごい危険ですかね? もし、よろしければ、どういった管理をすれば良いのかアドバイスをください。 宜しくお願いします。
>>524 <? if($_POST['ShopOpenW']){echo "checked"; } ?>
じゃ、ダメ?
>>525 login_idっていうの作って見れば?
わたしはUserId.liginIdでハッシュをつくってるけど
まぁ、ログイン時にDBを更新しないといけないけどね・・・
528 :
522 :2006/09/28(木) 19:06:14 ID:ESgbH1eM
>>526 配列に入ってるから無理やり引きずり出さないと使えないと思ってたのに、
こんなにスマートに使えるなんて・・・。
知りませんでした、勉強になります。
>>527 ありがとうございます。なるほど、そうしたほうが良さそうですね。
でも、初心者の自分にはちょっと面倒そう。。
でも、そんなこと言ってられないっすよね!
ありがとうございます。
でも、普通はそんな感じで管理するのですかね?
530 :
522 :2006/09/28(木) 19:12:13 ID:ESgbH1eM
>>526 1個だけチェックのときは上手くいったけど
全部同じように処理したら1個チェックをつけただけで
全部のボックスにチェックが付いちゃった。
びっくり〜(●o●)
>>530 えーまじでぇー
中に'月'って入ってるか見ないとダメか!;
>>529 めんどくさかったら
login_idだけでもいいんじゃない?
さっきからオレ一人しか答えてないような気がするが。
>>530 受け取って表示するプログラムってどんなん?
534 :
530=522 :2006/09/28(木) 19:38:21 ID:ESgbH1eM
>>533 お店が開いてる曜日をチェックするセクションを作ってます。
ただ営業時間とかお店の名前(読み方をカタカナで)とかいろいろ
あって、お店の名前のカタカナ項目にカタカナ以外が入ってたりとか
しないかをチェックしています。
で、カタカナ項目にエラーがあるのにチェックした曜日が消えちゃダメ
なので、前に入力された情報を保持する方法を考えています
やっぱり曜日はセットで保持するべきだと思って、チェックボックスの
項目を配列でまとめています。
>>532 もっとめんどくさがって、$useridに数回、endodeした値を
セッションに入れるじゃ、セキュリティはダメですかね!?
すいません、質問ばっかして><
>>534 でけた。
表示。
$day_arr=array("dummy","月","火","水","木","金","土");
for($i=1;$i<count($day_arr);++$i){
echo '<input name="ShopOpenW['.$i.']" type="checkbox" id="ShopOpenW['.$i.']" value="'.$day_arr[$i].'"';
echo "> ".$day_arr[$i];
}
受取
$post_data = $_POST['ShopOpenW'];
$day_arr=array("dummy","月","火","水","木","金","土");
for($i=1;$i<count($day_arr);++$i){
echo '<input name="ShopOpenW['.$i.']" type="checkbox" id="ShopOpenW['.$i.']" value="'.$day_arr[$i].'"';
if(array_search("$day_arr[$i]",$post_data)) echo "checked";
echo "> ".$day_arr[$i];
}
これでDo?
>>535 直接useridを持ち歩かなければいいしょ!
なんらかの方法でハッシュ化とか別の物を使用するとかすれば
538 :
530=522 :2006/09/28(木) 20:13:59 ID:ESgbH1eM
わーお すごいのきたー。 これ使わせてもらいまっす。 ありがとうございました〜。
539 :
530=522 :2006/09/28(木) 20:17:18 ID:ESgbH1eM
>>535 自分はユーザIDをセッションで保持することには余り抵抗が無いです
(単にドヘタレなだけだけど)。
ユーザIDとパスワードの両方を持ってるとまずいけどユーザIDだけなら
いいのでは?
あとはSQLインジェクションとかに気をつけて仮にユーザIDがばれても
悪さされないようにするのがいいと思います。
スレ汚しすまんとです。
>>537 ありがとうございます!!!
じゃあ、当面は大丈夫だろうと、数回encodeして頑張ってみます。
もっと、勉強してからlogin用のフィールドを作り、ハッシュ化したりします。
本当にありがとうございます。
$useridを総当たりすると楽しいことができそうな悪寒。
>>540 ぅぉーがんばれー
そして、俺のMingに対しては誰も突っ込んでくれないんだな;;
もうちょっと文献探して見るかー。
やっぱ、エンコードじゃ危ないっすかね〜。。 Ming、頑張ってください。 mingでflash作るなら、普通にflashで作ったほうが自分には早いので!笑
>>525 その処理のどこが危険なのか、サッパリ意味がわからん。
$useridはPOSTされた値じゃなくて、DBから取った値なんでしょ?
だったら、それをセッション変数に入れて使っても、何の危険も無い。
SQLインジェクション云々などと頓珍漢なことを言ってるヤツもいるけど、
セッション変数とSQLインジェクションは全く関係ないし。
>>541 なんてかなりバカで、$useridを総当りとか言ってるけど、
セッション変数を総当りする(総当りに任意の値を格納していく)ことなんて出来ないし。
やっぱりさー、多分セッションとクッキーの違いって分り辛いじゃん。
勘違いしても、まぁ、しかないなかなぁ と思ったり思わなかったり。
でだ、そうなってくるとセッションって見れるん?とか不安を持ったりするんじゃないかな。
だとすると。ああ言う心配がでるのかと。
まぁ、レベルを下げた視野をで物事見ないと難しいよね。
>>541 に関してはナンセンス・・・。
>>546 そうか!
>>525 はセッションとクッキーを混同してんのか!
セッション変数も、クッキーに格納した値と同じように
ユーザが中身を覗いたり改ざんしたり出来る…などと思い込んでるのかな?
うーんと、セッションはサーバに保存されて、 クッキーはブラウザ?、ユーザーのほうに保存されるって感じの認識かな。 $useridが簡単な値だと、セッションハイジャック、CSRFが簡単にされたり、 されたときが危険、なのかなぁって思って。
>>548 「$useridが簡単な値 → セッションハイジャック、CSRFが簡単にされる」
…などという無茶苦茶な論理構造をどうにかしろボケ。
どういう根拠でそんな100%間違ったこと言ってんだお前は。
スクリプト内の変数$useridに入れる値が簡単だろうが複雑だろうが、
セッションハイジャックやCSRFが発生する可能性とは全く関係ないことだぞ。
それからお前はIDを出せと言ってるだろうがチンカス。
>>548 セッションハイジャックされた時点でおわり
idが簡単とかいう問題じゃない
パスワードを暗号化してても認証後にハイジャックされたらパスワード関係ないし
みんなツンデレだなぁ ちゃんと説明しといて貶す! やるねぇ セキュリティに関して考える事はいい事じゃないかーヽ( ´ー`)ノ がんばれー(*・ω・)
>>521 ヒント:CVS
私もコンパイルうまくいかなかったっけど、CVSの落としてきてCent3.7上で成功してるよ。
dependは、re2cとflex(GNUのやつ)だけだったはず。[@うちのLinux]
ちょっとまえにCent3.7でコンパイルさせたののSPECの該当部分。
BuildRequires: zlib-devel, perl,bison,libungif-devel,libpng-devel
Requires: libungif,libpng
セッションidの総当たりも結構被害大きいよね。 鯖の負荷が高くてサービス不能攻撃が先に成立するけど。
うちは普通にパスワード認証だよ。 3階間違えたら、画像の文字列を入力させられるよ。
>>555 なるほど、自動登録だけじゃなくて、総当りも防げるか・・
>>556 ログイン時の失敗回数をカウントして画像の文字列入力などをさせることと、
セッションID総当り攻撃を防ぐこととは何の関係もないぞ。
総当りってのはログイン通過後のセッションIDを探る攻撃なわけで、
ログイン通過「前」の認証部分における制御は全く関係ない。
ところで、セッションID総当りって、パスワード(通常8〜12文字程度)総当りよりも
確率の低い(時間のかかる)攻撃であって、実際にはありえないだろう。
セッションは、状況によっては比較的容易に固定させることが可能だから恐いんだがな
ジーオンクアッドでフレッツプレミアム1Gbpsなら毎秒数万セッションぐらい生成攻撃できると思うけど? 確率は低いと逝っても0じゃない以上、時間をかければ突破できる悪寒。 ログチェックとかで頻繁に検出して対処するしか無いと思う。
>>558 PHP標準のセッション使ってれば、まず通常考えうる時間内では無理。
さらに言えば、セッションIDをこまめに変更する仕組みをスクリプトに組み込めば良い。
>>559 そんなアホな攻撃、別の段階で検知されるだろう。っていうか検知すべきだろう。
検知してない鯖も多い罠。 変更する仕組みのデバッグが大変で、ほぼ固定が現実だと思う。
チャンとチョンのIPからのアクセスを排除すれば、とりあえずOK(w
>>561 >変更する仕組みのデバッグが大変
大変じゃないよ。PHPにはセッションID再生成専用の関数があるんだから。
だからセッションIDとあるフィンガープリントを結びつけておいて、
フィンガープリントが異なったらセッションハイジャックが起きたものと見なし、
その時点でセッションIDを再生成し、異なるフィンガープリントでやってきた訪問者(おそらくクラッカー)の
IPを一定時間拒否すればよい。
>>563 使いにくそうなシステムだなw
無駄にクラッカー認定されまくりな悪寒
>>564 どこが使いにくいのか具体的に指摘してみろっつーのボケ。
お前ずっと難癖つけてばっかりだけど、何も具体的なことが言えないんだな。
フィンガープリントには通常のブラウズでは変更されないような値を元に設定しておくので、
無駄にクラッカー認定されることはありえない。
お前のようなバカ頭で考えると、無駄に認定されまくり…の方法しか思いつかないんだろうな。
566 :
nobodyさん :2006/10/01(日) 14:18:02 ID:DeMI3pkc
$timestamp=mktime(0,0,0,10,1,2006); $date1=date("Y年n月j日",$timestamp); $date2=date("j,n,Y",$timestamp); print($date1); print($date2); ?> このprintの部分、反映されると$date1と$date2が改行されず くっ付いてしまうんですが、どうしたら改行できますか?
printは自動的に改行を付けてくれないから。 自分で改行を付けるヨロシ ・テキストとして -> \n を追加 ・HTMLとして -> <br>を追加
if(!$a == $b) と if($a !== $b) の結果が違います。 この意味の違いは教えてください。
569 :
nobodyさん :2006/10/01(日) 15:31:12 ID:DeMI3pkc
>>567 print($date1);<br>
print($date2);
?>
こういう感じですか?それだとエラーが出てしまうんですが。
>>569 ・・・?!
まさかそう来るとは思わなかったわ・・
そりゃPHPの中に<br>書いちゃったら構文エラー吐くに決まってる。
print($date1 . "<br>");
>>568 最近似たようなの見たな
571 :
570 :2006/10/01(日) 16:22:50 ID:???
> 最近似たようなの見たな
ん、どうやら前スレぽいな
>>568 例えば
$a = 1; // 数値
$b = "1"; // 文字列
// 暗黙の型変換を許容した比較
$a == $b // true (暗黙の型変換で文字列が数値に変換され比較される)←暗黙の型変換
$a != $b // true ($a と $b は等しくない)
!$a == $b // false (演算子の優先順位により、先に!$aが評価され「0」になる)←演算子の優先順位
// 型変換を行わないより厳密な比較
$a === $b // false (型も比較する。この場合、文字列と数値なのでfalse)←型を含めた比較
$a !== $b // false (↑に同じ)
572 :
570 :2006/10/01(日) 16:26:49 ID:???
ぁ、$a !== $b は true だったな。書き間違えてるわ
perlのuse strict;みたいな、未宣言の変数を制限する方法ってないんですか? error_reporting(E_ALL);を使っても $hege = 2;//hogeのタイプミス みたいなのは駄目ですよね?
>>573 その先で$hogeを使った時に警告してくれる
>>574 なるほど。
でも、
$hoge = 3;
何かの処理。
$hege = 2;//hogeのタイプミス
みたいな感じで$hogeも使ってると、エラーも出ないですよね。
これはもうPHPはこうだ。って感じでなれるしかない感じですかね。
>>575 PHP5ならE_ALL | E_STRICTで使われていない旨の警告をしてくれるかもしれん。
が、そもそもPHPは変数の宣言は出来ないからどうしようもないというのが実情。
>>576 なるほど。とりあえず、PHP5の環境ではE_STRICT試してみます。
いまんとこPHP4使ってるので、気をつける。って感じで頑張ります。
>>575 のときは
hegeは未宣言ってnotice出るんじゃないのか
ああごめん、代入するのは出ないのね。 っていうかそれが宣言に相当するのね
phpって、セミコロンがついてないだけで、画面真っ白になるのですけど、 どこかのログにエラーとか出てくれないのですか?
鯖の設定
583 :
nobodyさん :2006/10/01(日) 21:26:55 ID:DeMI3pkc
>>570 >print($date1 . "<br>");
あの、これもエラーになってしまうんですが。
584 :
nobodyさん :2006/10/01(日) 21:41:18 ID:DeMI3pkc
あれ?F5で更新を連打してたら、改行が成功しました。すみません。
大量にセッション張られて、フィンガープリントのチェックで鯖落ちしてサービス不能攻撃受けそうだな(w
>>585 みたいなバカを見てると、本当にこの国の未来が思いやられるな。
たぶん覚えたての単語を使いたいだけなんだよ。
子供が夜11時に2chに書き込んでる姿、親はなんとも思わないのかな?
すみません・・・携帯弄ってるようにしかみえないもので・・・・
>>585 の母です。
このたびは息子が覚えたての言葉を使いたいがあまり、
生半可な知識で余計な書き込みをしてしまいました。
>>585 にはきつく言っておきますので、みなさんお許しください。
591 :
nobodyさん :2006/10/03(火) 21:24:34 ID:nl5vMJY+
前回カタカナと数字のみ入力という質問をしました。 ぱっと見、ちゃんと動いているように見えたのですが、 カタカナとマッチングしない文字の組み合わせで入力すると、 マッチングしないにもかかわらず、処理が通ってしまいました。 $_POST["hoge"]="アんたなんかにエレクチオンが分かるっていうの"; if(!(mb_ereg("^[0-9ア-ンーヴァ-ォヵヶ0-9]",$_POST["hoge"]))){ echo "カタカナと数字以外禁止"; } $_POST["hoge"]="アんたなんかにエレクチオンが分かるっていうの"; これが通ってしまいます。 今はpreg_match_allを使っているのですが、これは上手く通す処理が記述できません if(!($y=preg_match_all("/0-9/",$_POST["ShopNameKana"]))){ とすると数字だけ通す処理になりません。最終的には全角カタカナと半角数字、全角数字 以外を弾く処理にしたいのですが、どうしたらいいか御教jもといご教示下さい。
前回に何と言われたか覚えてるか?
文字コード処理しないと無理な悪寒。
つか、preg_match_allの使い方を根本的に間違えてるような気が…
phpからmysqlに接続して load data local infile "./new_data.csv" into table my_table(以下略 を実行すると、 fail sql: The used command is not allowed with this MySQL version と表示されるけど、これってphpの問題?、それともmysqlの問題? mysqlコマンドから問題無く読み込めるのでmysqlは無実っぽいけど?
まずはエラーメッセージを和訳してそこから考えられる原因を列挙してみよ。
mysqlコマンドからは、 load data local infileコマンドが実行できるのに、 phpからは load data local infileコマンドが実行できないのはなぜかってことだろ。 同じ鯖でバージョンが違うってことも無いし、コマンド実行権が違うことも無い。
599 :
591@携帯で改行ずれてそう :2006/10/04(水) 09:17:36 ID:b45YYBRX
対象はwindowsのみなので、文字コードはシフトJISにしています。 サーバはLinuxだけど、PHPもHTTPDもシフトJISにしてあります。 日本語をプログラム内に含めるなとの指摘は自分がまだそれに違和感を覚えるほど テクがないのと、mb_使えばいいって発想でとりあえず保留 (ソースにはコメントアウトして記載してあるけど 通すべき文字列まで弾かれるので保留が正しい理由)。
>>599 preg_matchにてsjis文字コードを指定振り分けして通す
だが、sjisを使う限り確実とは言えない
これはmbに関して振り分けしても同じ事が言える
どちらにしろ、一般利用ならば気にする事でも無いが
つか、アンタに言っても自我を通して文字指定を頑なに通すから無駄なんでしょうが
601 :
599 :2006/10/04(水) 09:52:57 ID:WY3OniKc
>>600 SJISにしとけばとりあえずいいんじゃない?っていう初学者的発想です。
mbとSJISがダメなのか・・・。
ありがとうございます。ちょっと調べながら考えてみます。
phpの--local-infile=0相当の指定がされてて、すべての LOAD DATA LOCAL コマンドを無効にされてる悪寒。 phpじゃなくてmysqlがエラー出すのが変だが。 phpのバイナリ入れ替えるしか。
>>601 頭膿んでないか?
どう斜め読みしても、そんな理屈にはならんと思うが
2chじゃない他の駆け込み寺を探して聞く方が良い
レベルとかそういう事ではなく、意固地で柔軟な考えができない奴はトラブルを起こし
2chのような場で質問をするには不向きなタイプではないと思われ
最近流行りの二重否定ですね
いやいや、最後のないはないか?の略だろ
607 :
nobodyさん :2006/10/04(水) 16:25:40 ID:WY3OniKc
長さが不定の文字列が入った変数$Aを先頭から1文字ずつ格納した 配列$Aarrayを作る方法を教えてください。 例: $A="ABCDE"だったら$A[0]"=A " $A[1]="B" $A[2]="C"みたいな 感じになるようにしたいです。
このくらい自分で調べなよ。 $A = 'ashitaha harerutoiina'; $Aarray = array(); for ($i = 0; $i < strlen($A); $i++) { $Aarray[] = $A[$i]; }
いつ$Aの型がstringからarrayに変わったんでしょうか
>>607 Perlでは、explode系( split )の関数で一文字づつ配列にできたな。
>>608 それをやるなら、substringだな
最初から $A[$i]って出来るなら困らない。
>>608 意味がわからん
609は607かな。
マニュアルに書いてあるよ。
あ、間違えた。 608じゃなくて611
616 :
nobodyさん :2006/10/04(水) 16:55:19 ID:WY3OniKc
>>608 〜
>>613 ありがとう。マニュアルに書いてあるとは知らなかったです。
ぐぐっててなんか違うのばっかり出てきたからテクニカルなこと
しなきゃだめなのかと思ってました。
//マニュアルよりグーぐるっていうのがダメなのかしらん・・・。
>>612 このくらいの処理で正規表現使う必要ナシ。
PHPの正規表現はまだまだ遅い。
>>615 PHP5のみ
omedetou
$str = 'test'; echo $str[2]; 結果: s これ出来るの知らなかった・・・。でもあまり使うときないかなぁ。
文字化けについて、悩んでます。 検索をすると、一部の語(猫とだけ検索すると)だけが、?となります。 print_rなどで見ると↓のようになります。 Array ( [0] => ? ) Array ( [0] => 犬 ) ただ、複数の語で検索すると、正常に動作します。 Array ( [0] => 猫 [1] => 犬 ) Array ( [0] => 犬 [1] => 猫 ) これはどういったら直るでしょか? phpもdbも全てEUCで書いてます。 どうか教えてください。
>>621 わかりずらくてすいません。php5、mysql5で、検索でdbからデータを抽出して
検索結果を表示させようとしているのですが、「猫」というキーワードで
検索すると、DBには猫というキーワードが入っているのに「該当するものは無い」と
表示されてしまいます。ただ、and検索で、「猫」と「犬」で検索すると、
それに当てはまるのもが表示されます。
これで、解りますかね??説明下手ですいません><
>>622 やろうとしていることに問題はないだろうから、ソースを書くなりしないと
ソースはどこいらへんを書けばいいですかね!? とりあえず、↓のようにデータを取得してます。 $keyword = trim(stripslashes($_GET['keyword'])); $keyword = mb_convert_kana($keyword, 's'); $arraykey = explode(" ", $keyword); $where = " WHERE (tag LIKE '%$arraykey[0]%')"; for($i=1; $i < sizeof($arraykey); $i++){ $where.= " AND"; $where.= " (tag LIKE '%$arraykey[$i]%')"; } $sql = "SELECT * FROM table1 ".$where." ORDER BY date DESC LIMIT ".$PAGESIZE*($page-1).", $PAGESIZE"; これにmysql_fetch_arrayでデータを取得して、表示させてます。
>>624 犬単品で検索かけたら「犬」ってでるん?
読み返したら・・・。 ああ、「犬」は出るんだね。
>>625 はい。犬や魚は普通に検索できるんです。
猫が何故か、ダメで、<!-- 美乳 -->を書くと直るようなことも
聞いたので書いてみても、変わらなかったです。
$_GETで受け取った時点とその後のでecho()で出して見たら? 最初から化けてる?
受け取った時点で化けちゃってます>< でも、複数(犬と猫)で検索だと、最初から文字化けしてません。
んぁー(´д`)ノ mb_convert_encoding() shift-jisからeucへの変更で直らんかねぇ mbstringの設定ってeuc読み込みSJIS吐き出しなん?
mbstring.encoding_translation On On mbstring.func_overload 0 0 直らなかったです。。 phpの設定は↓のようになってます。 mbstring.http_input auto mbstring.http_output EUC-JP mbstring.internal_encoding EUC-JP mbstring.language Japanese
↑すいません、変な記述なってました><
>>631 mbstring.http_output EUC-JP か・・・。
default_charsetもEUCなのかい?・・・。
はい。 前に、文字化けで大分悩んで、DBのほうもujisにちゃんと設定して あるんですよね。 何故、「猫」だけ化ける><
うちの環境と違うから確かめられないなぁ・・・ euc読み込みsjis吐き出しだからなぁ・・・
>>631 「他」っていう文字でも化けます?
俺も同じ現象出て困ってるんですが!
>>636 「他」でも、化けました!同じ現象ですね。
他にも「鬱」とかでも化けますね。
化け猫
できました。マッチングを指定する部分の後ろに+$をつけたらできました。
ありがとうございました。
//なぜSJISで作ってはダメなのか(はじめてのPHP5プログラミングには
PHP.iniにSJISを指定って書いてあったのでそれが当然と思ってたので)、
いろいろ調べてみようと思います。
また正規表現も言葉は聴いたことがあるけど、意味も知らなかったし、
使ったことも無かったのでいい勉強になりました。
最後に
>>386 クソミソボロカス叩き煽るような書き方だったけどこれはきっとLinuxで言うところの
タコってやつですよね。
よく分からないけどドチクショー!!って感じで(思いっきり)空回りしたけど、
あなた(とこのスレの全員)のおかげで解決できました。
ありがとう。
>>631 「猫」で検索したときブラウザのアドレスバーにはどういう風にでる?
hogehoge.php?keyword=%C7%AD
ってでてるか?
>>641 出てる!全く同じだな。
解決策が全くわからんぞ。
「猫」のあとに空白入れても、普通に検索できるのに。
一単語だと絶対、化ける・
643 :
641 :2006/10/04(水) 23:11:14 ID:???
>>642 つーことは...ブラウザからは間違いなくEUC-JPで送信されてきてて、
$_GETで取り出した直後でもう化けてる(違うものになってる)ってことだな。
php.iniを
>>631 と同じにいったん設定してから、
ちょっといじって実験してみた。
結論から言うと、
mbstring.encoding_translation On → 化け猫
mbstring.encoding_translation Off → 化けない猫
となるな。
mbstring.encoding_translationって送信されてきたデータとスクリプトの
文字コードが違うときに自動変換させるってやつだよな?(確か...うるおぼえだから違ってたら言ってくれ)
だから、この場合はOffにしちゃっていいんじゃね?
644 :
643 :2006/10/04(水) 23:26:56 ID:???
mbstring.encoding_translation On でも、フォームに↓を追加すると化けなくなった。 <input type="hidden" name="dummy" value="美乳巨乳桃尻"> phpが文字コードを勘違いしない程度の情報があればOnで変換さしてもいいらしい。 GETでリクエストするとアドレスバーがアレになるけど。
その程度ならフォームのHTMLに適当にコメントで美乳巨乳桃尻を埋め込んどけば解決しない? やふーが!--京--をHTMLに埋め込んでるのと同じ理屈。 PHP4ってforでいちいちsplitしないといけないのか間抜けだ。 だからphp5にしろってことでsplitでサポートだろうけど。
646 :
642 :2006/10/04(水) 23:58:11 ID:???
647 :
642 :2006/10/05(木) 00:03:25 ID:???
>>645 GETで受け取ってるからか、コメントじゃ解決しない。
んぁー(´д`)ノ
650 :
642 :2006/10/05(木) 00:39:17 ID:???
美乳は有名なんで試しましたが、効果なかったです。 多分、これはHTMLで最初に出力をさせるときに文字を判別するのには 役立っても、GETの値に対しては効果が無いように思われます。 ただ、643に書いてあるあるように、コメントとしてではなく hiddenで埋め込めば、効果はありました。
>>650 同じような効果はあるけど、クライアント側とサーバ側で根本的に違う。
コメントで埋め込むと、ブラウザの文字コード判別の際に参考にされる。
hidden で埋め込むと、PHP側で送信されたデータの(ry
(mbstring.http_inputでEUC-JPを上位に持ってくれば解決したような気はする)
php側で判別させるか、ブラウザの判別と同じ文字コードで送り返すのを期待するかでしょ。 最近のIEは常にutfで返す仕様だったかも(未検証)。
クッキーに美乳はだめ? ヘッダ部分じゃ効果ないのかな?
◎◇がいいとどっかで見た
655 :
635 :2006/10/06(金) 17:37:29 ID:???
へぇー おもしろいなぁ 文字認識用コードっていうstringを飛ばしてた時もあったけど。 いまでは、あんまり化けたっていう事聞かないのでそういうのは忘れちまったなぁ EUC読み込みSJIS吐き出しでなんとかなったからなぁ; 多分、ブラウザの文字判定になぞらせないといみないっしょ? IEの場合は殆どの部分で文字をなぞって判定してるからなぁ
>>655 >ブラウザの文字判定になぞらせないといみないっしょ
これってどうゆうことっすかね!?
意味とか方法教えてください。
文字コード関連の話なのでついでに。 ホームページビルダー9のバグで、既存の(正常な)EUCファイルをいじって 一文字でも入力したり削除したりなどの編集作業をすると、 勝手にUTF-8になってしまって文字化けのオンパレード、ってのがある。 ファイルを保存しなくとも、編集したその瞬間から、プレビュー画面で確認すると化けてる。 しかもIBMは公式にこのバグを認識してないらしく、対応パッチも出てない。 だけど同じ現象になってるユーザーは一定数いるようで、ググると同症例がいくつか見つかる。 とりあえずIBM氏ね、と言いたい。
んなもん使うなや
w2kかXPならutf8が標準。 EUCなんかで作るな禿。
初心者質問ですいません。 誰かが書いた文章を、DBに保存して、DBから値を取り出して、htmlに出力するときは htmlspecialcharsを使った方がいいのですよね? あと、alt属性にその文章を持ってくる場合も、htmlspecialcharsを 使って出力したほうがいいのでしょうか? 初心者質問ですいませんが、宜しくお願いします。
>>660 "><script>alert("hoge");</script><img alt="
を入れられたらどうなるの?
>>661 それをDBに入れて、altのところに入れて見て見るってことですよね?
普通にマウスで、その画像のところに持っていっても普通に文字が表示される
だけです。
DBに入れるときはmysql_real_escape_stringを使って入れてます。
htmlspecialcharsを使わなかったらどうよ。 つまり、使えって言ってるんだと思うが?
>>663 なるほど!ありがとうございます。鈍いもんで、気が付かなかったです。
俺もこれからPHPの勉強始めるから困ったら頼むな。
SQL文発行するときPHPのmagic_quoteだけだと安全ではないの?
>>659 いや、それがさぁ、それまでEUCでも何も問題なかったのに、
ある日突然、
>>657 で書いたような症状が発生したのよ。
だから原因不明で気持ち悪い。
むろん、アップデートとか一切やってない。
(ただし、Windowsアップデートは逐次行なっているので、その影響をビルダーが受けた可能性はある)
だからw2kとxpではutf8が標準だって。 EUCなんて使ってるウィンドウズは無いよ。昔はsjis。 これから勉強し始めると困ることが起きると思うから、このスレを1から一度読んで始めた方が良いよ。
それはどちらかというとWindowsUpdateの方を先に疑うべきケースじゃないのかw ところで > しかもIBMは公式にこのバグを認識してないらしく、 って、何でさっさとサポートに電話して聞かないん? あとホームページビルダー10ではツール→オプション→何たらで 入力エンコーディングと出力エンコーディングの設定ができるみたいだが、 これは9ではどうなっとるん?
>>669 もちつけ、これはホームページビルダーの話だw
というかレスしようと思ってやめてたんだが ホームページビルダーでPHPを書いてんの?
プロジェクトでIDEの指定あったりするだろ。 たぶんホームページビルダー使えって規約なってんだよ。
そっかこだわりのポイントなんだな
IBMに問い合わせができないのは非正規ユーザなんだろうね。つまり割れ。 ドリームウェーバでphp書くようなノリなんだろうね。 メモ帳でphp書いてる香具師も居るだろうしあり得る話し。 ワードとかビジュアルスタジオで書いてる香具師も居そうな悪寒。
>>676 びじゅあるすたじおには
PHPを書く為のプラグインがあるから
まだ良いとは思うが・・・
>>675 不正アクセス入門の入門とか
PHPサイバーテロの技法
って本を読めば書いてあるから読むと良い
679 :
657 :2006/10/08(日) 13:41:46 ID:???
>>669 ごめんね、バカはスルーする主義なんだ♪
>>670 電話したけど、「再インストールしろ」の一点張り。
エンコーディングの設定は関係ない。だってそれを何もいじってなくてそれまで1年以上普通に使えてたのに、
ある日突然症状が出たからね。(でももちろん、一応その設定をいろいろ変更してみたけど、結果は変わらず)
>>672 いや、UIのデザインだけビルダー使って、出来たソースをPHPエディタにコピーしてる。
>>673 そんな規定ないよ。っていうか一人でやってるし。
>>676 だから問い合わせたってば。割れなんか使ったことない。しかもこんな安いソフトで割れ使うと逆にリスク。
>>678 ふせいあくせすにゅうもんのにゅうもんとか
ぴーえいちぴーさいばーてろのぎほう
ってほんをよめばかいてあるからよむといいよ!^^
>>679 > 電話したけど、「再インストールしろ」の一点張り。
しろよw
> だってそれを何もいじってなくてそれまで1年以上普通に使えてたのに、
ある日突然動かなくなるプログラムなんて狙ってそう作りでもしなければできやしないのに
原因をなすりつけられて死ねとまで言われるIBMカワイソス…(´・ω・)
どう考えてもお前が不用意に入れた他の何かが原因です。本当に(ry
>>679 >UIのデザインだけビルダー使って、出来たソースをPHPエディタにコピーしてる。
ここらへんに問題があるような気がするな。
別のツールつかって吐き出すソースと見比べてみる、とかしてみればいいんでね?
>>682 再インストールしろ
不用意な挿入
割れ厨は氏ね
ホームページビルダーwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww なんでこんなバカがこの板にいるんだよwwwwwwwwwwwwwwwwwww
PHP使う奴はみんなバカです。
688 :
657 :2006/10/09(月) 00:27:28 ID:???
>>680 もし原因がそれだとしたら、他のソフトやWindowsアップデートに影響受けるようなソフトのほうが問題あるだろう。
>>681 それは全く関係ない。ビルダー用のファイルは、それはそれで別に保存してあるから。PHPエディタでの保存や変更には影響されないようにしてる。
>>685 ビルダーで何か問題ある? お前はHTML組む時に何使ってんの?
お前の主張は後出しジャンケンに勝てと言ってるようなもんだぞ。
691 :
657 :2006/10/09(月) 03:25:01 ID:???
このスレのタイトル読めますか?
>>691 その書き込みを丸ごとコピーしてIBMにメール送れば??
まあどうせソフト会社のサポートなんてどこも糞だから
マトモな返事は返ってこないだろうけどwww
>>691 検索ワードが「ビルダー 勝手に文字化け」とか「utf 勝手 ビルダー ビルダ」とかなんて・・もう爆笑wwww
おいおい、ホントにネット覚えたての小・中学生なのか?www
ビルダーを窓から投げ捨ててDWでも買えばいいじゃないかと言おうと思ったが、お小遣いで買うには高いな。
何故言われた通りにとっとと再インストールしないのか理解に苦しむ。 まあホームページまわりはテキストエディタひとつあれば全部余裕の 俺や他の大多数のスレ住人からすれば唐突にホームページビルダーが出てきた時から ずっと理解に苦しみ続けているわけだが。
>>694 バカはお前。
それ以外に適切な検索ワードないっしょ。
>>695 再インストールしてもダメだったんだが。
話題というのは常に展開していくものだ。自治厨ほどつまらないものはない。
ホームラン級のアレだな
>>696 馬鹿と言いつつ反応してるwww
>>679 で言ったのに
>>696 ではもう忘れてるのかwww記憶力ねぇなwwwww
> それ以外に適切な検索ワードないっしょ。
ぅゎぁ・・この人言い切っちゃったよ。頭悪いねー
お前は本当に馬鹿だ、どうしようもなく低脳だ。
おk、俺が解決してやろう。慈善事業ってやつだ
お前が書く奇怪な文章ではエスパーしか理解できん。
「ビルダーの全設定ファイル」と「関連するレジストリ」と「文字化けした状態のサンプルファイルを数個」をどこかにうpれ
ほぉむぺぇじびるだぁ
ほぉむぺぇじ作る人
うるさい。お前らビルダースレでやれ。
/root/musicと言うディレクトリに音楽ファイルがあって
/root/mgkboard.phpにIDとPASSと音楽ファイル番号をGETで与える事でで初めて
ストリーミング再生できるようにしたいのです。
ストリーミング再生は
<?php
header('Content-Type: audio/x-mpegurl');
echo '
http://hoge/root/music/ '.$_GET['NUM'].".mp3";
?>
こんな感じで考えてるんですが、これだとphp経由じゃなくても、直接musicディレクトリにアクセスしてダイレクトでナンバー指定してファイルを聴けてしまいます。
musicディレクトりにindex.html等でディレクトリ内が見えないようにしても、これは防げないので
phpのスクリプト経由でないと聴けないようにしたいのですが、どのようにすればいいのでしょうか?
想定してるのは、WMPに直接PHPスクリプトのURLを指定して、ストリーミングする方式です。
DBもソースもEUCで作れば何か問題でるっけ?
>>702 ヒント:HTTPDのアクセス出来ないディレクトリにファイルを置く
>>705 あくまでURL渡してるだけなんだから
それやったら、アクセス出来ないじゃん。
php→ファイルと言う手順を踏ませるには
リファラを見るしか無いと思うんだが・・・
>>706 >リファラを見るしか無い
なんかすごく見当違いなこと言ってるな。
そんなことはストリーミングの方法には全く関係ない話だぞ。
プレイヤーが別で起動するって事は別のブラウザでアドレスバーに URLを入力してアクセスする事とほぼ同じだったりする。
>>702 ストリーミングはやってないが
俺が実際作ったプログラムで似たようなのがある
元ファイル名とダウンロード対象の名前をDBかなんかで管理して
DLする時だけ元ファイル名でDLさせてやれば良いかも
元の名前 : hogehoge.mp3
アップ時 : ajs90D8das2309dfasj.tmp
こういうのを管理しておいて
スクリプトを叩いた時に
hogehoge.mp3でDLできるようにヘッダを吐いてやればいい
超初心者はここでよろしいでしょうか。 fp関数、fopen関数等は、同一ファイル内で複数記述してはいけないもの なのか、お教えいただけないでしょうか。宜しくお願いします。 $fp = fopen(URL,"r"); これで始まるやつです。 外部ファイルを読み込んで、whileでループさせるやつですが、 単体ではちゃんと機能するfopen関数を複数ヶ所に記述させると、白画面に 黒い字のエラーメッセージを返してきます。 複数ヶ所に記述できる回避策をご存知の方、知恵を貸していただけないでしょうか。 よろしくお願いします。
…で、何てエラーメッセージなのよ?
>>710 単一ファイルに対しては、一個しかfpを開く必要はないわな。
で、複数ファイルの場合は、デッドロックがかからないように注意する。
713 :
710 :2006/10/10(火) 16:04:24 ID:???
>>711 さん
「Parse error: syntax error, unexpected $end in 〜 on line 585(終端です)」
とだけ出ます。宜しくお願いします。
どう見ても文法エラーです。本当に(ry 多分どこかに}とか)とか;が抜けてる。
>>713 単なる文法エラー。
どっかで行末に セミコロン ; が抜けているとか、 ダブルクォーテーションが閉じられてないとか、
そんなヒューマンエラー
716 :
710 :2006/10/10(火) 16:09:16 ID:???
>>712 さん
単一ファイルです。シロートデザなので、プログラミングは全く経験はないです。
周りにプログラマーも居なくて、あっちこっちググってみましたが、コレという
回答に未だお目にかかれず状態です。
717 :
nobodyさん :2006/10/10(火) 16:09:51 ID:X5aWB0Eu
超初心者はここでよろしいでしょうか。 簡単な、phpinfo 関数を使った簡単なスクリプトを作成してみたんですが、 白画面に黒い字のエラーメッセージを返してきます。 いったい何が間違っているのかよく分かりません。 誰か知恵を貸していただけないでしょうか。 よろしくお願いします。
718 :
710 :2006/10/10(火) 16:11:58 ID:???
おお、回答が他にも来ている!!とうもです。早速いろいろ試してきます。 連絡まで少し時間を置くかもしれません。一旦失礼します。
720 :
710 :2006/10/10(火) 16:31:27 ID:???
>>719 他にも多くの方に不快な思いをさせたこと、お詫びします。
どうも失礼しました。
>>717 間違っているのは二番煎じで解答が貰えるとか思っているお前の脳味噌だ。
オリジナリティの欠片も無い2匹目のドジョウ狙い野郎は(゚∀゚)カエレ!!
と言いたいところだが、ちゃんとIDを出している点を評価してチャンスをやろう。
…で、エラーメッセージの内容は?
>>720 生`。
手を加えた場所を順次消したり戻したりしながら文法チェックを繰り返せば
そのうち問題がある場所が特定できるはずだ。まあ頑張りな。
722 :
nobodyさん :2006/10/10(火) 17:26:23 ID:X5aWB0Eu
>>721 ありがとうございます!メッセージは次のようなものでした。
Forbidden
You don't have permission to access /~mana/ on this server.
--------------------------------------------------------------------------------
Apache/1.3.33 Server at sugi.prv Port 80
>>722 じゃあ次は英和辞典を持ってこい。
でもってメッセージの意味を解読して自分の解釈も添えて提出するように。
>>722 テラワロスwww書いてるままジャマイカwwww
IISで鯖建てた方が良いよ。 IISなら日本語でエラーメッセージが出るから馬鹿でも理解しやすい。 NGワード:ビルダー
オムパージュ・ビュイルデル最高!!
727 :
722 :2006/10/11(水) 10:03:22 ID:???
あんまり面白くないネタだったか。 404 File Not Found. というメッセージでした。 にしようかとも思っていたんだが。
>>727 後で恥ずかしくなって最初から釣りだったという事にしたい気持ちは分かるが、
今更そんな事して取り繕ってもおまいの程度はもう明らかですからー!!
729 :
722 :2006/10/11(水) 14:49:56 ID:???
>>728 意味不明だな。
>>710 の文章をほぼパクってきていること自体、
ネタの始まりだと気づけないのか。
だから、ネタでしたという事にしておきたい気持ちは分かるが(ry
731 :
722 :2006/10/11(水) 15:08:59 ID:???
>>730 まあお前のプロファイリング能力ではその程度にしか判断できないのも仕方ないところだな
732 :
722 :2006/10/11(水) 15:09:59 ID:???
>>715 は俺が書いたことすら気づいてなんだろうな
ねえ君、そんなに必死になるなよw
この自称「ネタ」とやらはぶっちゃけ糞詰まらん、
だからここはいっそネタを装って実はやっぱり本気でしたということにしておいた方が
いくらかはまだ面白いと言われてる事に気付こうよ。
すまないけど君のネタは
>>721 で一度ぶった切られた後に温情で延命されているんだ。
きつい言い方になってしまうけど、ネタとしては1レスで即退場するレベルだったんだよ。
734 :
722 :2006/10/11(水) 16:41:54 ID:???
いつまでぐだぐだ言っんだ。 ぬけぬけとまあ「糞詰まらん」とかってもうアボガドw もうちょっとプロファイリング能力に磨きをかけてから出直して来い。 すくなくとも、ネタはネタと見抜けるレベルでないと2chは難しいぞ? きさまのようなやつには、「半年ROMってろ」という言葉がお似合いだw
> いつまでぐだぐだ オマエモナ-。 つーか質問スレでネタに走るなボケ。
736 :
722 :2006/10/11(水) 17:13:32 ID:???
空気嫁。ネタの時間はもう終わりだよ。
はいはい、自作自演乙 次の質問ドゾー
PHP使ってる奴はどうしてみんな例外なくバカなんですか。
ネタでしたと言って信用してもらえない程度の能力しか無いからだろう。
741 :
722 :2006/10/11(水) 23:35:52 ID:???
>>738 733を俺が書いたと勘違いしてるのか?違うんだがな。さすが低プロファイリング能力者。
733は俺を釣ろうとした書き込みだぞ。
733に引っかかって俺がマジレスしたら、それをプギャーする予定だったんだろうが、
結局は735がひっかかってしまった。
742 :
722 :2006/10/11(水) 23:39:24 ID:???
俺はほんとに、722を書いた後、 「何だネタかよ。帰れ!」 みたいなレスを受けるとばかり思っていたんだが、 どうやらお前らの能力を過大評価していたようだ。俺が悪かったよ。
これは……この人は真相を知ったら発狂するかも分からんね。 まあとりあえずだ、最初から二番煎じはカエレと言われてるんだからもう来るな。
無茶を言ってやるなよ。 彼はこれでも上出来な方なんだ…。
がんばってるけどできない子も居るからねえ。 できない子にはできない子の教育をすれば良いのに、全員ができるようにしようとするのは無理が有る。 無理な物は無理。素質が無いと思って諦めた方が良いよ。他にできることが有るはずだから他でガンガレ。
出来なくてもやらなきゃいけない時だってあるんだぜ 俺には向いてないから無理ーで逃げられたらどんなに楽か。 プログラミングに関して以外でも同じことだと思うよ。 とりあえず人並みになるくらいは努力次第で何とかなる、と信じている。
貧乏人が極貧のフリをして「ひっかかったぷぎゃー」は、哀れだよな、見てて。
Σ(゚Д゚;≡;゚д゚) ナ・・スレを30時間見てなかっただけで・・・この流れは何だ?!
プログラミングの素質が無い香具師(論理的思考ができない等)が、プログラム組んでることって有るよね。 転職汁って感じだが。 貧乏人がサラ金で入学金借りてまで、高額の私立学校に通わせるって無理し杉。 身の丈に有った公立学校でも通ってろよ。
赤い背景に黒い文字で「氏ね」
ぉぃぉぃ、激しく目に悪そうだな
うちはグリーンディスプレイだから目に優しい。
>>750 >身の丈に有った公立学校
日本の最高学府である東大は公立だけど?
だから『身の丈にあった』が付いてるんだろ。 誰も全ての国公立が悪いなんて言ってない罠。
学力が足りてて並みの経済力なら、 駒場も「身の丈にあった公立」だろ。
まあ、アレだ。
要するに
>>750 はバカだってことで。
いやいや、論理的思考のできる
>>750 が意味もなく
あんな唐突に斜め後方大ジャンプみたいな意味不明な話題転換をするわけがない。
きっと
>>750 の真ん中の空白の一行にはその前後を有り余る説得力をもって結合する
常人には計り知れぬ脅威の文脈が隠れているんだよ!
…俺には読めないが。
>>758 なるほど!!
その空白部分に置かれているのが、かの有名な
「超えられない壁」ってヤツなのか!!
いつまでもぐだぐだやってんなよw
そろそろ上げとくか
762 :
nobodyさん :2006/10/13(金) 12:46:58 ID:XqR5qXXX
結論・レスしてる奴みんなバカジャネm9(^Д^)プギャー
つ ぐだぐだスレ。 東大が身の丈に合う香具師も居るし、都立中学校が身の丈に合う香具師も居る。 私立の入学金すらローンで借りないと払えないような香具師が、私立に通うのは無理してるだろってこと。
>>763 他人様が無理しようが何しようが勝手だろう。お前には関係のないことだ。
とりあえず最善の良策は、まずお前が今すぐ氏んで消えることだ。
サラ金で借金するようにプログラミングの素質を借りて来られるなら、 どんなに楽だろう、と、そっちが気になるなり。
高金利で30歳までに返済できずに、無職になって自己破産するだけでしょ。
あのー質問してもいいでしょうか? array database => array real => array adapter => mysql host => localhost database => phppro username => asial password => password こんな配列があるんですが、例えばusernameのasialを取り出したいときってどうすればいいのでしょうか? 自分で試してみたんですが、こんな風になりました。 foreach ($array as $bb) { foreach ($bb as $cc) { foreach ($cc as $dd => $ee) { if ($dd == 'username') { echo $ee; } } } } もっと簡単にできないでしょうか?
ん・・・ echo array['database']['real']['username'];
ありがとうございます。 echo $array['database']['real']['username']; としたらasialが表示されました。
PHPは連想配列使えるから便利よねぇ。 と、Cからの移行組みの俺が触りたての時に感動した事。
Cでもそういうライブラリ作れば良いだけ。 phpはCで作られてるし。
じゃあ作れ
C++行くとstd::mapとかあるけどな。
初心者質問で、しかもphpの質問とはちょっと違うかもしれませんが、 教えていただきたいのですが、phpでデータを送信するスクリプトを書いたのですが、 inputでデータを送信するときに、submitではなく、imageを使ってデータを 送信したいのですが、上手く送信できません。 普通にsubmitにするとできるのですが、imageだと、というかIEだと送信されません。 Firefoxで送信できたのですが。 どうかやり方の程、教えてください。 <input type='image' src=aaa.gif' alt='aaa' value='aaa' name='aaa'>
ありがとうございます。 それでみたところ、firefoxではvalueの値が受け取れていましたが、 IEではvalueの値が受け取れていませんでした。 これは、どうすれば解決できるでしょうか?お願いします。
HTML解説ページのinputタグのページを見る
>>776 まずは自分なりにどういうキーワードでググったのか書いてみなさい。
'←なにこれ
ほくろ
781 :
nobodyさん :2006/10/15(日) 16:54:01 ID:hzF42wCh
<? ?>のショートタグがXMLの宣言とぶつかるということで非推奨になってるんだけど、 代わりに<% %>をデフォルトオンにして、推奨しない理由って何?
ASPと被る
皮もかぶる
匂うと思ったらあんたのホウケイチンコのせいか
ASPと被るって、ASPとPHPを一緒に使うけ?
某所でグローバル変数なしでphpはあり得ないという意見を見ました。 マジですか? PHPの変数はCOBOLの用にして使うものですか?
グローバル変数は可読性を下げるので、なるべく使わないというのが プログラマの良識であり常識であると思っていました。 本当にマジ?
789 :
nobodyさん :2006/10/16(月) 18:33:17 ID:ecpKZqzB
ウソだよ
まあグローバル変数は数少ない array に入れておけばおk 構造体みたいな雰囲気で使う。
$_GETとかってグローバル変数? これ無しではあり得ないなw
$_xxxみたいな定義済みの変数は別でしょ。
あれはスーパーグローバル変数だからな
$_GETとかのグローバル変数を他のグローバル変数と同列に語ってどうするんだw あれは、実質標準IO(のインプット側だけ)の役割果たしてるだろ。
795 :
nobodyさん :2006/10/18(水) 00:39:39 ID:OoG98wMC
初心者ですみません。教えて下さい。 例えばindex.php(本体となるページ)の中にフォーム部分だけを記述したform.phpを includeで読込みました。(複数ページに同じフォームを設置したい為) form.phpの中では <form action="<?php echo( $_SERVER[ "PHP_SELF" ] )?>" method="post"> と記述しています。この状態で送信するとform.phpが単体で表示されてしまいます。 index.php(本体となるページ)にフォーム部分を直接記述しないでincludeで読込んだファイルから送信処理をした後もindex.php(本体となるページ)が表示されるようにする何かよい方法はないでしょうか?
-index.php- $self = $_SERVER['PHP_SELF']; include 'form.php'; -form.php- <form action="<?php echo $self; ?>" method="post"> とか
797 :
nobodyさん :2006/10/18(水) 00:51:10 ID:OoG98wMC
有難うございます。早速やってみます。
798 :
nobodyさん :2006/10/18(水) 01:39:51 ID:3inEdCG7
<?php $lines = file('bbs1.txt'); if ($_POST['write']) { $name = htmlspecialchars($_POST['name']); $contents = htmlspecialchars($_POST['contents']); $reference = htmlspecialchars($_POST['reference']); $contents = str_replace("\r\n", "<br>", $contents); $contents = str_replace("\r", "<br>", $contents); $contents = str_replace("\n", "<br>", $contents); $time = date("Y/m/d H:i:s"); $data = "$name\t$contents\t$reference\t$time\n"; array_unshift($lines, $data); } foreach($lines as $line) { $line = rtrim($line); $items = explode("\t", $line); print "<p>{$items[0]}{$items[1]}{$items[2]}{$items[3]}</p>\n"; } $fp = fopen('bbs1.txt', 'w'); foreach($lines as $line) fputs($fp, $line); fclose($fp); ?>
799 :
nobodyさん :2006/10/18(水) 01:41:50 ID:3inEdCG7
このフォームを未入力、プルダウン選択しなかった場合、 書き込みをなしにするにはどこをどういじればよいのでしょうか。 <form method="post" action="bbs1.php"> お名前: <input type="text" name="name"> <select name="reference"> <option selected>情報取得先</option> <option>公式設定</option> <option>遠い記憶</option> </select> <textarea name="contents" cols="60" rows="5"></textarea> <input type="submit" name="write" value="送信"> </form> <hr>
800 :
799 :2006/10/18(水) 01:42:46 ID:3inEdCG7
802 :
799 :2006/10/18(水) 02:10:38 ID:3inEdCG7
ありがとうございます。 言われた事整理してみます。
phpで作るか、VBで作るかの違いだろ。 同じインタプリタ。
mixiでglobal変数を使うかどうかを語ってるトピックがあるけど宗教論争でも なんでもないよね? globalなんてなるべく使わないというのが経験則からも正しいと思うんだけど、 なぜかgloalを使うことにがんばっちゃってる人がいるなぁ。 PHPプログラマってのは他の言語経験の無い人の割合が高かったりするのかな?
スクリプトの大きさにもよる。
806 :
nobodyさん :2006/10/18(水) 14:54:58 ID:3inEdCG7
条件を満たさなかった場合、 書き込みを行わない処理と言うのはどう記述をすればいいのでしょうか?
if( 条件 ){ 書き込み処理 }
809 :
806 :2006/10/18(水) 15:10:06 ID:3inEdCG7
<?php $lines = file('bbs1.txt'); if ($_POST["reference"] == "0") { $reference = "公式設定"; } elseif ($_POST["reference"] == "1") { $reference = "遠い"; } else { $reference = "情報取得先未回答"; } if ($_POST['write']) { $name = htmlspecialchars($_POST['name']); if (!$name) { $name = "名無しさん"; } $reference = htmlspecialchars($_POST['reference']); $contents = htmlspecialchars($_POST['contents']); $contents = htmlspecialchars($_POST['contents']); $contents = str_replace("\r\n", "<br>", $contents); $contents = str_replace("\r", "<br>", $contents); $contents = str_replace("\n", "<br>", $contents); $time = date("Y/m/d H:i:s"); $data = "$name\t$contents\t$reference\t$time\n"; array_unshift($lines, $data); } foreach ($lines as $line) { $line = rtrim($line); $items = explode("\t", $line); print "<p>{$items[0]}{$items[1]}{$items[2]}{$items[3]}</p>\n"; } if ($contents) { $fp = fopen('bbs1.txt', 'w'); foreach($lines as $line) fputs($fp, $line); fclose($fp); } else {} ?>
810 :
806 :2006/10/18(水) 15:11:19 ID:3inEdCG7
これでコメント欄に書き込みがない場合、 書き込まないようにしたいのですが 実際はコメントなしでボタン押しても バンバン書き込みされるんです・・・・・・・・・・・・・
if ($contents == "")
812 :
806 :2006/10/18(水) 15:26:29 ID:3inEdCG7
>>811 if ($contents) {
に代入するんですよね?
今試したのですが書き込まれてしまいました。
>>809 <?php
if ($_POST['contents'] == "") exit;
814 :
806 :2006/10/18(水) 15:38:40 ID:3inEdCG7
>>813 白紙ページに飛ばされてしまいました・・・・・・・・・・・
書き込みはされていなかったのですが・・・・・・・・
>>814 あとは自分で、マニュアルで exit の意味など、使われている関数それぞれの働きを調べよう。
816 :
806 :2006/10/18(水) 15:49:08 ID:3inEdCG7
ありがとうございました、 ご協力感謝します。
817 :
806 :2006/10/18(水) 17:49:45 ID:3inEdCG7
なんとか思い通りになりました、 本当にありがとうございました。
818 :
nobodyさん :2006/10/18(水) 19:45:35 ID:7mti2GK8
メールフォームはPHPで作ったらって意見をWEB板で聞いてきたんですが どこか作り方がのってるお勧めのサイトはないでしょうか? あとPHPはインストールしたんですがアパッチって必要ですか?
アパッチ(httpサーバ)無くてもPHPは動くだろ。 「メールフォーム」として機能するかどうかは別だけど。
821 :
806 :2006/10/19(木) 11:14:20 ID:hbO6oYme
if (!empty($_POST["message"])) {//もしフォームのメッセージ部分が無記入でなかった場合 $items = explode("$sep", $fname[0]); $no = $items[0] + 1; $name = htmlspecialchars($_POST["name"]);//$_POST["name"]に特殊文字があればhtmlで表記できるように,かつタグを無効化し$nameへ if (!$name) { $name = "名無しさん"; } $reference = htmlspecialchars($_POST["reference"]);//$_POST["reference"]に特殊文字があればhtmlで表記できるように,かつタグを無効化し$referenceへ if (!$reference) { $reference = "未確定情報"; } $message=htmlspecialchars($_POST["message"]);//$_POST["message"]に特殊文字があればhtmlで表記できるように,かつタグを無効化し$messageへ if (get_magic_quotes_gpc()){ $name = stripslashes($name); $reference = stripslashes($reference); $message = stripslashes($message); } $message = str_replace("\r\n", "\r", $message); $message = str_replace("\r", "\n", $message); $message = str_replace("\n", "<br>", $message); $string = $no.$sep.$name.$sep.$reference.$sep .$message.$sep.date("Y:m:d: H:i:s")."\n"; $lines = file($fname);//$name(gbook.txt)を読み込み$lineへ $file = fopen($fname, "w") or die("OPENエラー $fname"); flock($file, LOCK_EX);//ファイルを排他ロックする=この処理が終わるまでファイルのロックを継続 fputs($file, $string);//$fileに文字列バイナリモードで書き込む? for($i=0; $i<10; $i++) fputs($file, $lines[$i]); flock($file, LOCK_UN);//ファイルのロックを解除する、この場合排他ロックを解除する fclose($file);//$fileを閉じる }
822 :
806 :2006/10/19(木) 11:15:45 ID:hbO6oYme
if(file_exists($fname)){//もし$fnameが存在するならば $file = file($fname);//$fname(gbook.txt)を読み込み$fileへ for($i=0; $i<8; $i++){ @list($no, $name, $reference, $message, $date)=explode($sep, $file[$i]); echo $no; echo $name; echo " $reference"; echo " $date"; echo "$message".'<br>'; } } ?>
823 :
806 :2006/10/19(木) 11:17:35 ID:hbO6oYme
記事に番号を割り振るのがうまくいきません、 申し訳ないのですがお力添えいただけませんか?
い や だ
これは嫌だ
826 :
nobodyさん :2006/10/19(木) 14:08:33 ID:G4Zd3K8e
フォームを設置したページform.phpで $_SESSION["test"] = $_POST["test"]; とした$_SESSION["test"] の値を別のページで参照したいのですが 例えばindex.php(ベースとなるページ)の中にincludeで読み込んだaaa.phpでも参照できる方法はないでしょうか? aaa.phpの表示内容の一部をisset($_SESSION["test"])で切替えたいのですが $_SESSION["test"] の値がindex.php(ベースとなるページ)では参照できるのですがaaa.phpでは参照できません。 関係ないかもしれませんがsession_start();をaaa.phpに記述した場合、しなかった場合、記述位置等試してみましたがどうにもうまくいきません。 何かよい方法があればご指導お願い致します
>>826 いいか、落ち着いてソースを見るんだ。
aaa.php では $_SESSION['test'] じゃないものを参照してるだろう?
828 :
nobodyさん :2006/10/19(木) 19:49:15 ID:G4Zd3K8e
>>827 有難うございます。もう一度よく見直してみます。
829 :
nobodyさん :2006/10/20(金) 03:26:13 ID:NpR8vlmi
http://3d.skr.jp/2d/ このサイトのように記事の先頭のラジオボタンにチェックを入れて
下部に送信ボタンをつける場合、
このページの書き込みフォーム以降〜最後尾まで削除用フォームで囲まないと
いけないのでしょうか?
それともjavaなど以外で何かコツがあるのでしょうか?
830 :
nobodyさん :2006/10/20(金) 03:29:20 ID:vHyympME
>>829 PHP以前の問題、HTML勉強してソース嫁
htmlspecialchars呼ぶだけの行にあのコメントは、すごいなとおもた。
832 :
nobodyさん :2006/10/20(金) 06:56:53 ID:BjlN/o9s
>>827 有難うございます。落ち着いてソースを見直したおかげで解決しました。
実は$_SESSION['test'] は見直してもそこはなんとか正しく記述できてました。
その為にますますどうしたらいいかわからなくなって、ただただ見直して意味の無い変更を繰り返す事しかできなかったのですが、やっと見つける事ができました。
includeのファイル名の指定が絶対パスで指定してしまっていたところを相対パスに修正したら参照できるようになりました。
相対パスと絶対パスでこんなにも結果が違ってくるものなんですね。(初心者ですみません)勉強になりました。ソースを見直したおかげです。本当に有難うございます。
>>831 ワラタw
これじゃコメントじゃなくて関数の説明だww
basicって関数みたいな概念無いからな。goto制御の世界。
グローバル変数しか有りません。
socket_listen()で80番ポートを掴めば、phpだけでウェブサーバも作れるよね。
ttp://jp.php.net/sockets のサーバプログラムの$portを80にすればウェブサーバの出来上がり。
ブラウザでつなげてきたら、好きな文字列を返せばブラウザが表示してくれる。
ブラウザが送ってくる、GET /とかの文字列を読み込んで、返す文字列を変えればいろんなページが有るように見える。
PHPでウェブサーバって、できるけどあまり向いてないよ。 そういう用途なら、rubyかperlの方がいいね。
向いてる向いてないなんて誰も問題にしてないのにruby房必死だな
っていうかapache使えばいいだけの話なのに、
なぜ
>>834 みたいな話題になるんだろう・・・
きっと
>>834 は初めてソケット関数を見て、ウェブサーバも作れちゃうぜ!って思ったのさ
まぁ、突然basicの話を振る所からしてお察し
そう言えばgotoってPHP6で登場とかってどこかで見たけど、どうなの?
gotoなんて使い道あんのか・・
gotoはフレームになるから、どっかに仕舞っておきたい。
842 :
nobodyさん :2006/10/25(水) 01:41:19 ID:xzcKcppx
この表に記入してくださいおねがいしますおねがいします。 PHP4 PHP5 信頼性 - - 速度 - - 簡単性 - - 将来性 - - 凡例 ・すごく勝ってる ◎ ・勝ってる ○ ・引き分け - ・負けてる △ ・すごく負けてる × あー、なんか相対評価と絶対評価があいまいですが、超スーパー素人なのでゆるしてくださいゆるしてください。
PHP4 PHP5 信頼性 △ △ 速度 - - 簡単性 △ △ 将来性 × △
844 :
842 :2006/10/25(水) 11:17:33 ID:???
>>843 ありがとござますありがとござます。
・・・なんとゆーか・・・悩ましいです・・・この表で答えが決まると思ったのに・・・ぅぅ・・・
答えが知りたきゃ預言者にでもなるか、変な宗教に入れば
答えを知りたければ、まず覚えろ、そして感じろ。
これでいいんじゃね PHP4 PHP5 PHP6 信頼性 △ ○ ◎ 速度 △ ○ ◎ 簡単性 △ ○ ◎ 将来性 △ ○ ◎
4と5の相対的な比較を知りたいんだよな? だったら・・・ PHP4 PHP5 信頼性 - - 速度 ○ ? 簡単性 ◎ - 将来性 - ○ 4は枯れてるので将来性はむしろ不要。
決定版
>>842 PHP4 PHP5 Ruby
信頼性 × × ◎
速度 × × ◎
簡単性 × × ◎
将来性 × × ◎
>>842 信頼性:大差なし
速度:自分でベンチマークとってください
簡単性:基本的に下位互換性あり
(5でオブジェクト関係等が強化され作り易くなったとも言えるし、使いたくなければ使わなくても・・)
将来性:
>>848 もしくはPHP6に期待
まぁあれだ、PHP4とPHP5で比べてもそこまで大きな違いはないよな
852 :
842 :2006/10/25(水) 20:24:10 ID:xzcKcppx
みなさん、あっりがとぅぉうございまぁっす!!!!! 感動しますた。 ぅ私のあいまいフィルターをろ過した結果、ルビー・・・じゃないPHP5を選ぶこととしましとぅあ!!! やっと先に進めるぜー!
853 :
nobodyさん :2006/10/25(水) 20:32:26 ID:CtdvutIa
『->』の意味を教えてください。 あるいは検索のポインタを示していただけますか。 google先生は記号を無視なさるので検索できません。 phpマニュアルも言語リファレンスの章を読みましたが載っていませんでした。
キーワード php クラスの基礎
>>853 JAVAの本一冊読んでからPHPに戻ると理解が早い
856 :
853 :2006/10/25(水) 21:09:23 ID:???
>>854-855 ありがとうございました。
JAVAの「.」のようなものと判断しましたがいかがでしょうか。
javaの本よりPHPの本読むほうが理解が早いに決まってんだろ
858 :
nobodyさん :2006/10/27(金) 16:50:44 ID:if5gMbam
掲示板作ったんですけど書き込んだ内容が たまに反映されないときがあります。 ログファイルには書き込まれててブラウザの更新を押せば 反映されるんですけど自動的に更新させるにはどうすればよいのでしょうか。
ブラウザ キャッシュ とかで検索すると幸せになれそうな気がします
引数の参照渡しはわかるんですが 最初に&が付けられてる関数はどんな意味があってどういうときに役立つんですか?
返り値 参照渡し とかで検索すると幸せになれそうな気がします
親切にすぐ検索語句を教えていただき有難いのですが でもそれだと引数の参照渡ししかヒットしません・・・
おれのぐぐるは 参照 戻り値 php で一番上にまさにそれが出てきたぞ
PHPでアップローダーを作ってみたのですが、アップロードされたファイルは一度メモリに格納されるみたいで ソースの中で制限を大きくしても、巨大なファイルのアップロードはできないみたいなんです。 こういった場合直接HDDにコピーできるような方法はないのでしょうか? ちなみに鯖はwindowsなのでmod_uploaderが使えません・・。
865 :
nobodyさん :2006/10/28(土) 16:34:13 ID:wEQaPP90
blognというblogを少し改造して、トップケージ(index.php)と個別記事(index.php?e=数字)とで違う 処理をさせたいと思っています。URLで分岐すればいいと思うのですが、どうすればいいのでしょうか? $url = $_SERVER[REQUEST_URI]; if ($url = ??) { } こういう感じだと思うのですが。
index.phpの後ろの?e=hageが無ければという意味なら if (!$_GET) {}
868 :
中三 :2006/10/28(土) 19:33:32 ID:???
?以降の文字列の最初の一文字が'e'なら $query_e = substr($_SERVER['QUERY_STRING'],0,1); if($query_e == 'e'){おっぱい括弧}
switch ($_GET['e']) { case 0: おまんこ; break; case 1: おちんちん; break; }
870 :
865 :2006/10/28(土) 23:13:08 ID:???
ありがとう皆さん。感謝します。
エロいのはいけないとおもいます。
ちんこ require まんこ
php4前提のフレームワークって結構多いよ。 フレームワーク無しで書くなら、php5でもいいけど。
PHP5ならSymfony使うな
875 :
nobodyさん :2006/10/31(火) 00:37:34 ID:5vaTIA8W
PHPでトラックバックPingの送信を実装したいと思っています。 フォームなどを使わずにスクリプトを実行するだけで、送信するような プログラムを書きたいのですが、どなたかアドバイスいただけませんか? よろしくお願いします!
それくらい自分で考えよう
>>875 オープンソースのブログとかのコードを見てみれば??
878 :
nobodyさん :2006/10/31(火) 01:51:38 ID:5vaTIA8W
879 :
nobodyさん :2006/10/31(火) 02:04:41 ID:F9LjnucE
PHPファイルと同じディレクトリにある、テキストファイルを読み出して、 文章中に含まれるカタカナの語句を全て抜き出し、コンマ区切りで別の テキストファイルに書き出すということをしたいのですが、ちょっと 手詰まりな状態です。どうか、ご教授願えませんか? こんな感じですが・・・ $text=fopen("bunsyou.txt","r"); $text2=fread($text,filesize("bunsyou.txt")); //echo "$text2<br>\n"; for($i=1; i<=10; i++){ if(eregi("[ア-ン]",$text2)); } fclose($text); これからどうしたらよいのやらという感じでして。。。 他もあたったのですが、なんとも・・・ どうすればいいんでしょうか?
不特定のwebサイトのソースを変数に読み込んで、その中から 特定のタグの使用回数を求めるプログラムを作りたいんですけど ソースとして読み込むってのはどうすれば良いのでしょうかね。。。
file_get_contentsかな
883 :
881 :2006/11/02(木) 10:38:27 ID:???
>>882 ありがとう。
httpで始まるアドレスのソースは取得できました。
httpsが読み込めませんが、もうちょっと考えてみることにします。
でも、これでだいぶ先が見えてきました。
初心者以下の質問ですまん インストール時の設定がわからないんだ どの本にもC:\Apache Group\Apache2\conf\httpd.conの内容を変えろと書いてあるんだが httpd.txtかhttpd.txt.defaultしか見当たらない だれか助けてくれ
.conf の間違いじゃないのか?
拡張子を表示しない設定?
ははは。まさかこれから ApacheとPHPをやろうという人間が、 拡張子を表示するとかしないとかのことすら知らないということはないだろう。 あはははは。まさかなw
>>884 とりあえずファイルをメモ帳などで開いて中身を見てみるとかは当然したんだろうな?
フレッシュな感じが ゚+.(・∀・)゚+.゚イイ!!
そしてとりあえず、apacheのフォルダは検索したんだろうな?
phpで数値と数字を比較すると正しく動くのですが、 これは文法的に正しいのでしょうか? プログラム例--------------------------- $a = 1; $b = "1"; if ($a == $b) { echo "aとbは同じです"; } else { echo "aとbは異なります"; } 実行結果----------------------------- aとbは同じです ------------- 数値を数字に変換したり、又はその逆を行ってからif文による 比較を行わないとだめなのかなぁとも思うのですが、、 みなさまの見解を教えていただけますでしょうか?
配列を再利用する場合、どのようにすればよいでしょうか? 例えば aaa[] = 100; aaa[] = 200; aaa[] = 300; としておいて、 配列aaaをクリアし、 aaa[] = 111; aaa[] = 222; aaa[] = 333; というデータを新しく入れたい場合です。
要素毎に上書きしていくってのもありだと思うけどunsetするのが良いんじゃないかな
>>894 ありがとうございます!unsetでクリアできましたー。
ちなみに、
aaa = "";
のようにしても、配列をクリアできるみたいですねー。
あまり、いいやりかたじゃないような気がしますが。。
896 :
>>891 :2006/11/07(火) 01:36:04 ID:???
>>895 aaa = array();
のほうがわかりやすくね?
898 :
881 :2006/11/07(火) 10:22:51 ID:???
やはり何故かhttpsから始まるアドレスが読めません。
使用しているPHPは5.1.4でapacheは2.058、windows環境です。
PHP5であれば問題なく読めるという記述が散見されたのですが・・・。
現状で、単純にソースを読み込むということで
$url="
https://www.xxx/yyy/zzz ";//指定のURL
$source = file_get_contents($url);
print(htmlspecialchars($source));
という一番簡単な形にしているのですが、どなたか
設定等の見直しポイントなどをお教え願えないでしょうか。
よろしくお願いいたします。
FWかなんかでApacheが外部に接続するのをシャットアウトしてるんじゃないのかな?
XSLとPEARのXML_RSSを比べると、どちらが早く表示してくれますか? また、サーバへの負荷はどちらが大きいんでしょうか? Amazon Webサービスで利用するにはどちらがいいのかと思って。 XSLについてはよくわかりません。(利用したことがないので。) 恐らくXML_RSSの方が便利だとは思うのですが、負荷も大きいような気がします。どうなんでしょうか?
901 :
nobodyさん :2006/11/09(木) 18:57:26 ID:pIp40KJ2
$result = mysql_query("select * from XXXX"); $rows = mysql_num_rows($result); echo $rows, "件のレコードがあります。"; こんな感じでmysqlのテーブルに格納されているレコードの件数を表示する プログラムを書いたんですが、これと同じような感じでテーブルに作られているカラム数を表示する プログラムを書きたいんですけどどうすればいいでしょうか。誰か教えてください。
SQLにCOUNT(*)ってのがあるよ
Select * From ... Limit 1;でfetch_row()して、その配列の数をcount()するとか?
904 :
901 :2006/11/09(木) 19:10:10 ID:???
すみません,自己解決しました
905 :
901 :2006/11/09(木) 19:14:13 ID:???
>>900 何がやりたいかを基準に選べ
負荷的には XSL > XML_RSS だろうけど
この場合、伝送遅延が無視できなさそうな気はする。
PHPを使用して、指定URLのファイル(もしくは、htmlそのもの)をダウンロードしてくるプログラムを 作りたいのですが、可能でしょうか?
最短一行で可能 file_get_contents()
エレガントだ・・・
エレガントかどうかは・・・簡単ではある。
あれだろ、ページ収集に使うんだろ。 だろだろ。
>>908 そんなバカチョン関数よか、wgetやCurlを呼び出して使う方がよっぽどいいだろ。
あーハイハイw
915 :
nobodyさん :2006/11/14(火) 11:39:37 ID:Ur4FtKPG
$i=1; $ans=$i%10; 1割る10の余りがどうして1になるんですか? $i=11; $ans=$i%10; ならわかるんdすが
1じゃなくていくらだと思ったのか興味があります
917 :
915 :2006/11/14(火) 12:27:46 ID:8CK2Abpk
余りはでないのではないかと・・・
小学校で割り算習わなかったのか?
最近は小学校2年生からPHPをやるのか
>>915 1 わる 10 は こたえが 0 で あまりが 1 なんだよ
915が釣りであって欲しいと願う俺であった。。。
923 :
nobodyさん :2006/11/14(火) 18:01:14 ID:Ur4FtKPG
釣りではないのであった。。。 いま10歳の甥に聞いたら小ばかにされた。 吊ってくりゅ。。。
mysqlとphpどちらか解らなかったので、とりあえずこちらでお聞きします。 スレ違いだったら済みません。 ユーザー認証システムのようなものを作ってみたのですが、正しく動作しなくて困っています。 if($_POST['name'] && $_POST['pass']){ $sql = "SELECT name,pass FROM user WHERE name = '".$_POST['name']."' AND pass = '".$_POST['pass']."'"; $res = mysql_query($sql,$conn) or die('nullpo'); if($res){ print('認証成功'); } } といった感じに、$_POST(実際のソースでは生でクエリ文に入れませんが)と登録されている ユーザーデータの照合をして存在した場合は次に進む、という動作をさせたいのですが、 上記のソースでは存在しようと存在しまいとチェックを通過してしまいます。 そこで以下のようにしてみたのですが、存在しないユーザーだった場合 MySQLのエラー文がぽろんと表示されてしまいます。 if($_POST['name'] && $_POST['pass']){ $sql = "SELECT name,pass FROM user WHERE name = '".$_POST['name']."' AND pass = '".$_POST['pass']."'"; $res = mysql_query($sql,$conn) or die('nullpo'); $num = mysql_num_rows($res) if($num != '0'){ print('認証成功'); } } このようなシステムを作る場合、どのように書けば良いのでしょうか。 無い知恵絞って色々試してみたのですが結局八方塞になってしまいました。 宜しければご助言お願します。
↑マニュアルのmysql_query()をちゃんと嫁。特に戻り値 ↓エラー文を嫁。読めばどう扱えば良いか分かる筈
ウォーニングエラー 勃起しません!
つo <- バイアグラ
>>924 ・エラーが出ますで分かるわけがありません。どうでもいい擬音付けてないで内容を書いてください。
・nameカラムに存在しないユーザ名が$_POST['name']に入っていても0件ヒットするだけで
エラーは発生しないはずです。原因は複数推測できますがエラー内容が書かれてないので何とも言えません。
漏れのところでは、重要なエラーはギュイーンって音がするのですぐ分かるようになってるよ。
930 :
nobodyさん :2006/11/17(金) 16:37:09 ID:XyuqYnXf
phpinfoで動作確認したのですが <?phpinfo();?> とテキストの内容が表示されるだけです マニュアルどうり設定したはずなのですが・・
>>930 <?php phpinfo(); ?>
932 :
nobodyさん :2006/11/18(土) 06:20:48 ID:hIHZ3hjv
×どうり 〇どおり
>>929 俺のところでは
「エラーが発生しました、ご主人様」って音声ファイルにしてるよ。
934 :
nobodyさん :2006/11/18(土) 14:31:00 ID:KxRRk8/i
Textarea内にimgタグを含んだ文章を送信して画像を表示させようとしたら imgタグ中に\マークが現れて画像が張れません 文字列を補正するような関数があったと思うんですが忘れてしまって…… 誰か知っていたら教えてください
すとりっぷすらっしゅ
936 :
934 :2006/11/18(土) 16:30:41 ID:KxRRk8/i
937 :
658 :2006/11/18(土) 18:38:41 ID:dtYeCOR7
サーバに送られてきたデータをもとに あらかじめ用意していたテキストの情報を 組み合わせて表示させたいのですが どうすればよいのでしょうか?
940 :
nobodyさん :2006/11/18(土) 22:33:45 ID:6DbfLQtM
配列の要素に変化を与える関数で $配列=array_reverse($配列) のように代入しないと動かないものと array_multisort($配列) のように関数だけで動くものがありますが、 何かの法則があるのでしょうか? 覚えづらくて・・・
残したいやつと残す必要がないやつ
942 :
nobodyさん :2006/11/19(日) 11:37:43 ID:S6DpJ04L
微妙にすれ違いかもわからんが。 HTMLでPHPのメニューを呼び出したいんだが <?php include("menu.php"); ?> じゃ表示されないんだ。調べてみてもこれであってると思うんだが、
拡張子htmlのファイルでphpで記述されたメニューを呼び出したいという事ですか? iframeでいいんでないの?
>>943 それを記述してるファイルの拡張子が.html(.htm)なら、それをPHPと判断しないわな。
アッーマジで見落としてたわ。 サンクス
947 :
nobodyさん :2006/11/20(月) 17:39:11 ID:y9nxJrBU
php5 mysqlの操作で質問なのです。 select count(*) from table の結果を表示させるにはどうしたらよいのでしょうか? $sql = "select count(*) from table"; $result = mysql_query($sql); $count = mysql_num_rows($result); if($count !=0){ $row=mysql_fetch_array($result); ここからどうするのでしょうか? すみません、よろしくお願いいたします。
949 :
947 :2006/11/20(月) 18:22:39 ID:???
>948 調べても、わからんです。
951 :
947 :2006/11/20(月) 18:45:17 ID:???
$sql = "select count(*) from table"; $result = mysql_query($sql); $count = mysql_num_rows($result); if($count !=0){ $row=mysql_fetch_array($result); } echo $row[0]; こんな感じでいいのでしょうか? もっと効率いい書き方あるのでしょうか? 超初心者なんで、すみません。 ヒントでもいいですので、よろしくお願いします。
>>949 いやだから
>>948 の下の方にmysql関数を使った簡単なサンプルが載ってるだろ?
それで分からないならあきらめましょう。
君はもっと別の分野で羽ばたいてください。
953 :
nobodyさん :2006/11/20(月) 22:12:35 ID:vMGaJEQ5
preg_match ↑これなんて発音してますか?
俺は「ぴーれぐまっち」って言ってる
ぷれぐ
ぷれっぐ_まっち
ぴーれぐ いーれぐ
プッれぐあんだーばーまっち
959 :
nobodyさん :2006/11/21(火) 23:31:03 ID:VIydVpP6
PHPとPerlの違いを簡単に教えて下さい
かぶった・・・ orz
>960 >961 理系ギャグ キタ━━━━(゚∀゚)━━━━ッ!!
こんな過疎板でなにやってんだよ
965 :
959 :2006/11/22(水) 01:40:54 ID:Inx/urH+
すいませんが、技術的な話でお願いします
漠然と違いつっても沢山ありすぎるよ もう少し何か言うことないの?
普通に使うのなら、perlはCGIとして利用するが、PHPはCGIとして利用しない
>>968 え、よく使うけど。
大抵の機能が関数として用意されてるから便利だし。
遠慮せず理由も書けばいいのに。 書けないなら無理せんでもいいが。
>>969 CGI版PHPを使うのはfastcgiとかを利用するときくらいかと思ったけど
それでも
>大抵の機能が関数として用意されてるから便利だし
のレスの意味がわからない
CGI版PHPをコマンドラインから使うときの話のなのか?
>>972 あはは。
おっしゃるとおりCLIと読み違えてた。
よって、
>>970 はそのとおりです。
失礼した。
975 :
nobodyさん :2006/11/24(金) 17:30:48 ID:/pfTXisS
重複カウント防止のアクセスカウンタ作ったんですけど 一度カウントされると二度とカウントされないのです 今日カウントされても翌日にまた一度だけカウントされるような うまい手立てってないですかね?
普通(?)は24時間とか、一定時間経てばカウントされるようにすると思うんだけど。
>>975 どうやって二重防止しれるかによるだろう・・・
IPとかで弾いてるなら、タイムスタンプつけて、
次アクセスした時に1日たったかチェックして判定したら?
重複確認にクッキーとか凝ったものは使っていないと仮定して答えるけど、 簡単にやるならそのカウンタが最後に起動した日時を記録しておいて 日付が変わっていたら重複予防リストをクリアする。 もっと凝るなら重複予防リストにアクセス日時も併せて記録しておいて 重複アクセスが来たら前回からどれだけ時間が経っているかで判断させる。 まあ負荷と手間と効果のバランスを考えたら前者がお勧めだ。
200.200.200.100<>10242405422 みたいに IP<>タイムスタンプ でログを取ればおk どこからかアクセスがあった場合、 2そのIPがロギングされて無いかを調らべ、 あるなら24時間内の判断を行い、24時間内ならスルー。 また24時間以上たっているレコードは全削除する。 カウントアップに該当するIPならIPとその時のタイムスタンプをロギング。
980 :
975 :2006/11/24(金) 18:51:34 ID:???
うちの場合は日付(曜日)ファイルを用意してある。 月曜→1 火曜→2 : と毎日記録しておく。曜日とファイルの数字が一致しなければ日が変わったということで日付ファイルを更新する。その時ついでに何かのアクションがあれば起こす。
普通に日付が変わったら、全IP削除で良いよ。 裏でDB動かすなら簡単。
今10日で覚えるPHPって言う本見ながら環境設定をしてるんですが、 include_path を include_path = ".;C:php/includes;C:/php/PEAR" と変更しろと書いてるんですが。 php.iniを見ると ; UNIX: "/path1:/path2" ;include_path = ".:/php/includes" ; ; Windows: "\path1;\path2" ;include_path = ".;c:\php\includes" と二つinclude_path が出てくるんですが どちらを変更すればいいんでしょうか?
自分がつかってるOSのほう
985 :
983 :2006/11/26(日) 22:24:21 ID:???
>>984 即レスありがとうございます。
環境設定完了しました。
質問があります。 php4とphp5でphp.iniは互換性があるのでしょうか? 実はinclude_pathの設定をしようとphp.iniを探しているのですが 見つかりません。使用しているのはdebianでphpのバージョンは5.1.6-5です。 とりあえずinfo.phpでphp.iniの場所を調べたら次のようになっていました。 Configuration file (php.ini) /etc/php5/apache2 Scan this dir 〜 /etc/php5/apache2/conf.d これらの場所を探したのですが見つかりません。 (Scan〜の方は上の場所にリンクされているだけそう) そこで全てのフォルダを調べた結果 /etc/php4/apache2 にphp.iniがありました。この設定ファイルがphp5と互換性があるなら コピーして使えるかなと思い質問しました。 どのような方法でもよいので 何かよい方法があれば教えてください。よろしくお願いします。
使えるけど変更点がおおいから使わないほうがいい /usr/share/php5/ /usr/share/doc/php5-common/examples/ あたりにブツがあるみたいだから、コピーして使ったらいいんじゃないの
>>986 find / -name "php.ini*" -print してみ。
php.ini-dist
なんていうファイルが無い?
あれば-distを削除して中身を好きなように書き換えれ。
頭から全検索ってかっこわるいな。 ls /etc/php* してみて無いなら、/etc以下をfind程度だろう。 普通はlocate使うよな。
Debianにはないよ
雛型の場所は
>>987 であってる
ume
次スレは・・いらないか
BSD系なら/usr/local/etcに入れるしな・・・。 個人的には/etcに入れるのは好かんな。
ファビョーン
たまに、 /usr/loval にいれるやつがいるのが困る
php.iniはコソコソ変更されるから最新のものを使うのがいい
998 :
nobodyさん :2006/11/27(月) 17:23:36 ID:IHpRXchw
各ページを抜粋したページを作りたいのですが 違うページの一部を引用したいのですがどうやったらいいのか教えてください。 条件としてたとえば ファイル名”あああ.html”の "こここ"の文字列が出てきたところから50文字だけ引用したい場合 どんなふうに書けばいいのでしょうか?
マーカーがあるならstrpos()でオフセット拾ってsubstr()でいいんじゃないの
>>999 ありがとうございます。
書き方がいまいちわからないですが頑張ってみます。
てことで1000ゲット
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。