【PHP】くだらねぇ質問はここに書き込みやがれpart6
1 :
nobodyさん :
2005/06/05(日) 13:17:11 ID:xiGnsMS4
とりあえず2
3 :
nobodyさん :2005/06/05(日) 13:47:42 ID:D/68BBaZ
俺英語勉強してたとき、アメヤフーのゲームにはまっててさ、 テキサスホールデムっていうの? やってたわけ で"scream(叫ぶ)"って単語覚えたばっかで ゲームのチャットで"I scream 'icecream'!"ってやったったわけよ そしてらさ、ゲームから追い出されてやんのwwwww 青春の1ページだっぺ?
PHP3と4と5ではどれが一番高速で安定しててセキュアですか?
>>4 勿論、5。
ただし、5.1になると、更に速度が2倍にまでなるらしい。
5ってPHPAみたいなのあったっけ? 無けりゃ4
PHP5のオブジェクト定数を試してるんですけど、以下の動作は仕様ですか? class test { const ERROR = -1; private result = self::ERROR; //エラー public function __construct() { result = self::ERROR; //こっちは問題なし } }
仕様くさい。test::ERRORならいけるのに。将来的になんとかなったらいいね。 self::使うなら当面はコンストラクタで初期化の方向性で。 ちなみに$ついてなかったりするけど2番目のresultは$this->resultだよね? いやローカル変数だったらいいんだけどさ。
9 :
7 :2005/06/06(月) 08:38:11 ID:???
>>8 レスサンクスです。
あ、ほんとだ。クラス名::定数名だといけますね。気がつかなかった。
わけわからん仕様だ。。。
>2番目のresultは$this->resultだよね?
です。上のをコピった時にミスりました。はずぃ。
前スレの6000あたりに書いた者ですが、どうしても出来ません。 <?php $str = '123ま147府ahf依田ま950まf'; print mb_ereg_replace('ま', 'み', $str); ?> これで全ての ま が み になるはずですが、そのまま$strが出力されてしまいます。 どこが間違っていますか? Apache2.053(WinXP/Gentoo) + PHP5.04
>>10 ヒント
mb_regex_encoding
PEARのスレもあるのですが、余りにも下らない?質問なのでこちらで質問いたします。 PEARのDB/Pagerなのですが、良く分かりません。(バージョン0.7) ソースコードを見ると、 require_once 'DB/Pager.php'; $db = DB::connect('your DSN string'); $from = 0; $limit = 10; // The number of results per page $maxpages = 10; // The number of pages for displaying in the pager (optional) $res = $db->limitQuery($sql, $from, $limit); $nrows = 0; // Alternative you could use $res->numRows() while ($row = $res->fetchrow()) { $nrows++; } $data = DB_Pager::getData($from, $limit, $nrows, $maxpages); このようなサンプル?が書かれていますが、動作いたしません。 結果的にはgetDataに何件目からのデータか、何件取得するのか、全レコード数は幾つかを 渡してあげれば良い?という事はなんとかわかりました。 しかし、このサンプル?はこれでいいのでしょうか? 取得するSQL分は無いし、最初にSQLを作ったとしても、次にはLIMITされてしまい、 常に1ページ分のデータしか作成されないような気が・・・ それと、DB/Pagerって結局はデータベースからデータは表示できない? 単純にページ数などを計算するだけなのでしょうか? 該当するページのデータぐらい自動で取って来てくれて配列などに格納されているという風に イメージしていたのですが・・・
14 :
12 :2005/06/06(月) 16:22:01 ID:???
>>13 とりあえず、バージョンが違いましたが、何とか表示させる事ができました。
ただ1つだけ不明な点があります。
教えていただいたサンプルを修正して表示すると、
ページ番号が全データ件数と1ページあたりの件数で算出された
全ページ番号が表示されます。
これを制御するのはgetDataの最後の引数である$maxpagesだと思うのですが、
build無いから呼び出されるgetDataには最後の引数を省略している為に、
全ページ番号が表示されていると思います。
これを制御するためにはどうしたらいいのでしょうか?
もう一度、getDataを呼び出して、そのときにmaxpagesを指定するのでしょうか?(2度手間?)
15 :
14 :2005/06/06(月) 17:18:57 ID:???
すいません。
更なる疑問が・・・
よーくソースコード見てみると、教えていただいたサンプルって、
全レコードを取得してからページャを作成している?
なんというか・・・凄くパフォーマンス悪そうですね・・・
getDataだけ使って後は独自にLIMITで必要な部分だけデータ取ってきた方が
良いような気がしてきました。
そうすれば、
>>14 で書いたようなmaxpagesの問題も解決しそうだし。
16 :
nobodyさん :2005/06/06(月) 20:25:53 ID:HIsAE+v7
すんません。 くだらねぇ質問かどうかさえよくわからないんですが、 ユニコード(ビッグエンディアン)で書いたテキストファイルを、 うまく読み込ませることって出来るんでしょうか? mbstringでもダメだし・・・。 ご高配よろしくお願い申し上げます。
>>16 自分の環境ではできる
$text = mb_convert_encoding($text, "sjis", "utf-16be");
皆さんの周囲でPHPってどうですか?(あくまでも仕事として) 私の会社だと、ついにJavaプロジェクトが完全撤退になり、 Web系の仕事は.NETとPHPの2択になりました。 Javaの仕事が来ない訳じゃないのですが、会社として採算が合わないのが撤退の理由です。 私も、一時期Javaプロジェクトに居たのですが、なんともいえない状況でした。 一言でいうならば、収集がつかない。 色々な機能のモジュールが色々な所から出ているため、 プロジェクト毎に、同様の機能でも違ったモジュールをつかったりと 結局、過去にモジュール化した部品の再利用が出来ないために開発効率が上がらない。 そして、修正だ改善だと、モジュールのバージョンアップなども行い、もうバラバラ・・・ しかも赤字になるプロジェクトは殆どJava案件。 .NETやPHPは利益が薄くても赤字になる事は無いし、 PHPはそもそもの値段自体が安くても利益率は結構高い。
19 :
nobodyさん :2005/06/07(火) 23:25:00 ID:kfATXNgN
PHPなら、一人で数日もあればそれなりのものが作れたりするからなぁ。。。
>>18 の会社がどの程度の規模の開発やってるのかにもよるけど。
>>18 >プロジェクト毎に、同様の機能でも違ったモジュールをつかったりと
>結局、過去にモジュール化した部品の再利用が出来ないために開発効率が上がらない。
>そして、修正だ改善だと、モジュールのバージョンアップなども行い、もうバラバラ・・・
そりゃ、単にお宅の会社のマネージャーが糞なだけ。
まぁ、PHPの方が割が良いのは事実だと思うがな。
メールのエンコードについて質問です。
DB(EUC-JP)の内容からメール本文を生成してます。
その中に「ア」や「梶vのような機種依存文字がある場合、
sjisにコンバートしてmb_send_mail()すると「?」になってしまいます。
UTF-8にすればイイとググッて得た知識を元にやってみたのですが
今度は空白になってしまいます。
$subject = "タイトル";
$body = base64_encode($text);
mb_language("uni");
mb_send_mail("
[email protected] ",$subject,$body,"From:
[email protected] ");
うまく変換できる方法をお教え下さい。
PHP Ver. 4.2.2
fooos.comみたいなプログラムって、どこに手に入りますか? どう検索したら良いかでもいいので教えてください。
>>22 なぜに本文を base64 エンコードするんか判らんのだが。
普通に JIS に変換でいけると思う。
"EUC-JP" の部分は PHP ソースの文字コードに合わせてね。
$subject = "=?ISO-2022-JP?B?" . base64_encode(mb_convert_encoding($subject, "JIS", "EUC-JP")) . "?=";
$body = mb_convert_encoding($text, "JIS", "EUC-JP");
mb_language("ja");
mb_send_mail("
[email protected] ",$subject,$body,"From:
[email protected] ");
27 :
25 :2005/06/08(水) 13:02:49 ID:???
>>22 >>25 ごめん。今確認したら「ア」はダメだった。「ア」ってEUCに存在しないような。。。
画面にはちゃんと表示できてる?
正しく表示できてるのならPHPの文字コードはSJISと思うので、変換せずに
mb_send_mail の代わりに mail でいけそう。
$subject = "=?ISO-2022-JP?B?" . base64_encode(mb_convert_encoding($subject, "JIS", "SJIS")) . "?=";
$body = $text;
mail("
[email protected] ",$subject,$body,"From:
[email protected] \r\nContent-Type: text/plain; charset=Shift_JIS");
28 :
nobodyさん :2005/06/08(水) 13:31:51 ID:2ouVAjO/
文字列分割についてなんですがexplodeとsplitの違いがわかりにくいのですが 簡潔に教えていただけませんでしょうか・・ 一般的にはどちらが使われているのでしょうか・
>>28 split 置換パターンに正規表現が使える
explode 使えない
大は小を兼ねるので、常に split を使っても問題はない
正規表現が使える分、多少遅くなるので、置換パターンに正規表現を
使わないのであれば explode を使用した方が良いけど
30 :
22 :2005/06/08(水) 14:14:32 ID:???
>>25 レスサンクス
「ア」は画面には表示されてます。
DBにPostgreSQL使用してますが、EncodingはEUC_JPで、
PHPもEUCで書いてるんですけど、表示されてるっておかしいですかね??
当初はmailを使用してましたが、文字化け報告が多くて(Mac、Lotus使いから)
「ア」などをすててmb_send_mailに逃げてました。
mailで再度送信するようにしてみます。
31 :
nobodyさん :2005/06/08(水) 15:43:37 ID:Gb/twTZb
自分でサーバーを立ててzen-cartというphpとmysqlで構成されたwebアプリを動かしています。 自分のマシン上で127.0.0.1とかlocalhostおよび192.168.x.xではきちんと動いています。 LAN内およびWANからアクセスすると、すぐに読み込みがとまってしまい、まともに表示ができません。 思うに、ホスト名のlocalhostという部分が悪い気がするんですが、この部分はどのようにwebアプリ側でどのように設定するのがよいのでしょうか? Apacheの設定なのかphpの設定なのか、webアプリの設定なのかまったく見当もつきません。 Mac OS 10.3.9 PHP Version 4.3.10 Apache/1.3.33 (Darwin) MySQL 4.0.20-standard
>>31 DNSについて学んで来い。
そしてDNSの話題はスレ違いなのでよろしく。
33 :
軟式PHP :2005/06/08(水) 16:31:08 ID:???
34 :
nobodyさん :2005/06/08(水) 17:46:54 ID:sDM4PuH6
チェックボックスにチェックがはいってないときに 送信したらチェックがはいっていませんという処理をしたいのですが うまくできませんどこを修正したらいいんでしょうか? <?php for($i=0;$i<sizeof($checkbox);$i++) { if($_REQUEST["checkbox"][$i]=="") { echo("入力してください"); } } ?> <html><head></head> <body> <form action="<?php echo($_SERVER["PHP_SELF"])?>" method="post"> <input type="checkbox" name="checkbox[]" value="1" size="50" >1 <input type="checkbox" name="checkbox[]" value="2" size="50" >2 <input type="checkbox" name="checkbox[]" value="3" size="50" >3 <input type="submit" name="submit" value="送信"> </form></body></html>
>>34 この程度、自分でどうにかしないと後々大変だぞ。
print_rつかって送信後にどんな値が渡ってくるのか見てみる。
チェックボックスにチェックがつけた場合、つけなかった場合、
見比べるとどうなってるのかが良く分かる。
それさえわかれば、後は簡単。(これが分からないならPHPやめろ)
>>34 チェックボックスはチェックついてるやつだけ送信。チェックついてないやつは送信しない。
あとは自分自身のためにprint_r($_POST)などで確認。
37 :
28 :2005/06/08(水) 19:04:57 ID:2ouVAjO/
>>29 わかりやすい説明ありがとうございました。
38 :
nobodyさん :2005/06/08(水) 20:46:50 ID:2dKZZRT0
>>34 ですが
チェックがはいっていないと値が送られないということをためして
わかりました、となるとチェックが入っていないときに
はいっていませんと表示させる方法はどうすればよいのでしょうか?
入っていなければ、表示する
isset関数
41 :
nobodyさん :2005/06/08(水) 21:07:33 ID:2dKZZRT0
>>40 配列ができないんだよ$checkBox["submit"]="送信”
ていうわけわからん配列しか。
すべての項目にチェックいれないで送信したときに
チェックがはいっていませんからいてくださいという
メッセージを表示したいの・・・
だれか簡単なソースプリーズ・・・お願いプリーズ
チェックボックスが空なら表示させればいいんじゃ(´・ω・`)?
44 :
nobodyさん :2005/06/08(水) 22:52:09 ID:3IRWVK3O
はじめましてです。
初歩的なことかもしれませんが、自分で見つけられなかったので…
以下のような
http://www.test.jp/test.php?id=hogehoge (URLエンコード済み)
の様なURLでGETメソッドを使ってデータを送った場合
$_GET['id'] に入るデータは自動的にデコードされていますか?
それともrawurldecode($_GET['id'])
しないとだめですか?
よろしくお願い致します。
45 :
31 :2005/06/08(水) 22:52:26 ID:QAkoL1Aa
>>32 >>33 こんなすれ違いのとこに来てしまうほど解ってないのです。
答えを教えてくれとは言いません。自分でぐぐりますので検索キーワードなどを教えてくれませんか?
致命的!
URLを
http:// 〜/index.php?pos=50
にして
<?php print $pos; ?>
と書いているのだが
何も表示されねええええ
>>46 いつの時代の話をしてるんだ?
<?php print $_GET['pos']; ?>
GET
49 :
46 :2005/06/08(水) 23:26:21 ID:???
うは、しばらくPHPやってねぇうちにし様かわったのかwwww サンクス
し様
>>46 クソスサイトスクリプティングって知ってるか?
52 :
nobodyさん :2005/06/08(水) 23:29:44 ID:G0+i0xLW
>>45 >>32 で出てるでしょ。あとは自分で書いてる
「自分で サーバ localhost」とかで結果を絞っていけばいいではないか。
"自分で"は"自宅で"にした方がいいと思うけどな。
うはwww漏れ初心者杉wwww 変数で N135.664.772.441E456.789.123.369 とかあるんだが 数字3桁ごとに区切りたいんだがどうすればいいか教えてえろいひとwww
うはwww漏れ初心者杉wwww 変数で N135.664.772.441E456.789.123.369 とかあるんだが 数字3桁ごとに区切りたいんだがどうすればいいか教えてえろいひとwww
number_format
>55 それが分かったら次は 緯度経度の計算教えれか?藁
>>57 それって普通の数字を3桁づく区切るだけなのでは?
アフォばっか。
WWW::Mechanizeを知ってすごいなあと思ったんですけど、 これのPHP版ってありますか?
63 :
nobodyさん :2005/06/10(金) 08:23:49 ID:P1AHG4Lh
丸投げよりくだ質向きっぽいのでこちらで失礼。 BLOGの画像うp機能でファイル名を現在時間にリネームしてごにょごにょしてる部分で $pathname = pathinfo($dest); $dest = PICDIR.gmdate("YmdHis",time() + TIMEZONE).$pathname['extension']; となってるんですが、これだと「200506100818jpg」みたいに 拡張子があるようで無いファイル名になってしまいます。(jpgの前にドットがない) ちゃんと表示されてはいるので事実上、何も問題はないのですが、なんだか気持ちが悪いので 「200506100818.jpg」という風にドットを付けるにはどう書き変えたらいいですか? #「ドットを付ける」というより「)と$の間のドットを有効にする」って言った方が正しいのかな…
>>63 ドット三連星
$dest = PICDIR.gmdate("YmdHis",time() + TIMEZONE).".".$pathname['extension'];
>64 うは!すごくスッキリした!ありがとう!愛してる!
PHPの動作環境には CGI版とモジュール版ていうのが あるそうなんだけど モノを作る上で違いというか気をつけなければ ならないことってありますか?
>>66 > モノを作る上で違いというか気をつけなければ
> ならないことってありますか?
マニュアルによく目を通す
>>66 単なるCGIとして運用されてる場合は、余り違いは無いのだが
今時、多くの場合CGIはsuExecと組み合わせて動かされている。
その場合CGIは所有者の権限で実行されるので、サーバモジュール版で
スクリプトがサーバの権限で実行されてるのと異なるため注意が必要。
具体的にはディレクトリ/ファイルの読み書き、新設、削除とかね。
まあ、他にも相違が結構あるのでマニュアル参照
>>67 >>68 くだ質コーナーなんだから
ちゃんとこたえてやれよー
あるかないかって聞いてるんだから
「ない」でいいじゃない。
71 :
nobodyさん :2005/06/10(金) 19:50:21 ID:zc8ejILu
携帯用のランキングサイトを作ってます。 クッションページ以外にimgタグによる不正投票を防ぐにはどうすればよいでしょうか。 ご存知の方がおられましたら教えてください。
固体識別番号とかは?
73 :
nobodyさん :2005/06/10(金) 23:45:36 ID:oNM+WEuu
>>73 結構面倒。必要な機能が鯖によってはoffにされている場合がある。
オイラならそんな面倒&不確実な事をするより、素直に別の鯖に設置するな。
75 :
73 :2005/06/11(土) 00:33:06 ID:Yzuy6L1g
>>74 有料のCGI作成の依頼をした場合結構金かかりますかね?
最低5マソ
77 :
nobodyさん :2005/06/11(土) 04:07:27 ID:wjIS0kuw
>>73 じゃないんだけど興味あるなぁ。具体的にはどうやるんでしょうか?
Socketでデータ送信やFTPでアップロードぐらいしか自分には思いつかないのですが、
どなたかご教授して頂けると嬉しいです。
78 :
nobodyさん :2005/06/11(土) 09:22:20 ID:JxmTPzAI
phpの本電車で読んでて、おなかがいたくなって すかしたら、具がでて、ぱにくってトイレいってさ そしたらPHPの本トイレにわすれちまって とりにいったらなかったよ・・・俺の本持っていったのおまえらか?
スマソ
ワロスw車掌だろw
>>79 その前に、便所紙がなくて俺がページ破って
使ったから、索引のあたりがなかったろ?
82 :
nobodyさん :2005/06/11(土) 16:44:34 ID:g5OnHelk
最初の方が抜けてたあの本…。残りは俺が使ったよ。腹の調子悪くてさ、すまん。
83 :
nobodyさん :2005/06/11(土) 18:53:31 ID:KxymZ9Ms
自分で設置するブログを紹介してるスレどこでしょう
ま た ノ ー エ ア ー う ん こ か
なあ、誰か俺に -> の意味を教えてくれ。
class Sex { var $man = ''; var $woman = ''; function setName($manName, $womanName) { $this->man = $manName; //自分のインスタンスのメンバ変数manに代入 $this->woman = $womanName; //自分のインスタンスのメンバ変数manに代入 } function doKoubi() { print 'はぁはぁあんあん'; } } $sex = new Sex(); //Sexクラスのインスタンスを生成、$sexに代入 $sex->setName('切込隊長', 'ひろゆこ'); //SexのsetName()を呼び出す $sex->doKoubi();
>>87 とりあえず、レスサンクス
で、質問
setNameは何してるの?
class Sex {
function doKoubi() {
print 'はぁはぁあんあん';
}
}
$sex = new Sex();//Sexクラスのインスタンスを生成、$sexに代入
$sex->doKoubi();
これにした時と出力に違いが見えないから、
どういう風に動いてるのかがよくわからない…
漏れはみんながほとんど使い終わったあとの本を見つけて、 仕方ないから表紙を使ったよ。硬くて痛かった。
91 :
nobodyさん :2005/06/12(日) 16:53:03 ID:094WCNrp
クラスの勉強をしようにも、まずクラスの説明に出てくる 各種用語(インスタンスだのコンストラクタだの)の概念が そもそも理解できない&それらを詳しく説明してる本やサイトが少ないので クラスを勉強する気が2分で萎えます。 なんかそういう難しい専門用語・概念が当然のように使われてるけど、 初心者にとってはまったく意味不明。ついでに言えばクラスの必要性もよく分からない。
最初から無理して理解する必要ない。 単なる関数の集合体とでも思って実際に作っていけばそのうち分かってくる。
書店でオブジェクト指向については詳しく取り扱っている本があるから買ってみるといい。
>>89 これで納得していただけるだろうか
class Sex {
var $man = '';
var $woman = '';
function setName($manName, $womanName) {
$this->man = $manName; //自分のインスタンスのメンバ変数manに代入
$this->woman = $womanName; //自分のインスタンスのメンバ変数manに代入
}
function doKoubi() {
print "{$this->man}: ええか?ええか?ええのんか?\n";
print "{$this->woman}: はぁはぁあんあん\n";
}
}
$sex = new Sex(); //Sexクラスのインスタンスを生成、$sexに代入
$sex->setName('切込隊長', 'ひろゆこ'); //SexのsetName()を呼び出す
$sex->doKoubi();
>>95 わざわざどもです。
わかりやすくて助かりました。
色んなページを探してるんですがなかなか見つからなくて、
->を使っていてもそれについての解説が無かったもので…
「->」 は 「の」 と解釈すればOKみたいですね
>>93 書店のオブジェクト指向の本って使える?
いや、オブジェクト指向そのものについての理解は得られるのは間違いない。
だけど、それを実際の仕事に適用しようとすると壁にぶつかる。
というのは実際の業務やら仕事をどういった単位でオブジェクトにしていいかが分からない。
正規表現のことで質問です。 XFR 2 NS 207.46.0.41:1863 0 207.46.104.20:1863 という文字列から「207.46.0.41」という 文字列(はじめに表示されているIPアドレスの部分)のみを取り出したいと思っています。 この値はランダムで変化するので正規表現を使うべきだと考え、以下のスクリプトを書きました。 preg_match("/XFR 2 NS ([0-9]{1,2,3}\.[0-9]{1,2,3}\.[0-9]{1,2,3}\.[0-9]{1,2,3})/", 'XFR 2 NS 207.46.0.41:1863 0 207.46.104.20:1863', $matches); ところが、matchesに値が代入されていませんでした。何が悪いのか、教えて頂けますか?
>>98 反復指定子 { } はパラメータを2つだけ取るから。
{1,2,3} -> {1,3}
正規表現のエラーのならないのはなんでかシラネ
>>99 あ、なるほど、そういうことだったんですか。ありがとうございました。
101 :
nobodyさん :2005/06/12(日) 22:40:04 ID:IlkizvUK
質問です。 自宅サーバーに貰い物のPHPプログラムを入れてみようとしているのですが、 perlやPHPに関して勉強不足のため、自力で解決できませんでした。 環境はRH9.0 apache1.3 posatgreSQL7.3 php4.3 qmail1.03 全てソースからコンパイルしてのインストールです。 メールを受信してデータベースに保存するphpプログラムなのですが、 qmail > php実行ファイル > pear > mimeDecode.php > PostgreSQL という動きのようです(自己判断) PHP(CLI版)実行ファイルでのパスの指定先の判断に迷っています。 #!/usr/bin/php -q ini_set('include_path','/home/user/public_html/lib:/usr/share/pear'); include_once 'Mail/mimeDecode.php'; phpとpearはデフォルト記述のパスには存在しなかったので修正する必要があるようなのですが、 自分なりに修正しても正常に働きませんでした。 which php と which pear で両方とも/usr/local/bin/以下にある事を確認しました。 ただ、phpは/usr/local/lib/php/というディレクトリも存在しています。 果たしてphp(cli版)のパスとはどちらの事なのでしょう? pearも/usr/local/lib/php/PEAR/というディレクトリが存在しますが、こちらは 大文字なので違うだろうなぁと判断しました。 mimeDecode.phpは/usr/local/lib/php/Mail/の中にはいっていました。 フルパスで指定しなくても大丈夫なのかな? プログラム固有の指定かもしれないのですが、もし一般的な指定方法があるのでしたら 教えて頂ければと思います。
本スレから来ました。 Windows環境でPHP5を使っているのですが、マルチスレッドプログラミングをするにはどうしたら いいのでしょうか?
ウンコしたあとのケツを拭くにはどうしたらいいでしょうか?
104 :
nobodyさん :2005/06/13(月) 01:28:26 ID:JEep+xPl
>>101 ディストリビューションのbinディレクトリ以下にあるのがcli版PHP
同じ場所にあるpearという実行ファイルはpearのパッケージをインストールするためのソフト。
pearのinclude先は /usr/local/lib/php/PEAR/の方
ちなみに、/ur/local/lib/php/はphpが利用するライブラリ類を突っ込むところ。
>>104 スレ違い .htaccessのどこがPHPなのか。
107 :
104 :2005/06/13(月) 01:31:00 ID:JEep+xPl
>>107 前スレのどっかにサブネット内にいるIPかどうか判断する関数書いたから探せ。
>>108 ありがとうございました。読んできます。
110 :
104 :2005/06/13(月) 01:45:35 ID:JEep+xPl
前すれ読んだんですが、ホスト名を正規表現で取り出してチェック、というのしかありませんでした。 どこにもネットマスク関連はなかったです。。前々スレでしょうか?
「極める!PHP」というムックを買ったのですが、 その中の記事で、クレジットカードなどの機密情報は暗号化してから データベースに入れろ、と書いてありました。(p.145) でも、MD5で暗号化しちゃったら、不可逆なので、データベースに 入れた情報を取り出せなくなる(復号化できない)と思うのですが…?? あと、そもそもMD5関数はどんな場面で使う意味があるのでしょうか?? 復号化できない暗号化なら、前述のように意味がない気がするのですが。 (おそらく皆さんからすれば超初心者的な間抜け発言だと思います。すみません)
112 :
nobodyさん :2005/06/13(月) 09:51:02 ID:X5R6PEXU
前スレかどっかにあったのを改造して.htaccessで弾いた先の403(.php)でその後の処理をしてます。
今までは$bad_hostsにヒットしたユーザーには403ではなく偽装404を見せてたんですが
ホストチェックだけでなくリンク元もチェックする必要が出て来ました。
$bad_hosts = array('/^.*\.xx$/','/^.*\.xx.net$/','/^.*\.xx.net$/','/^.*\.xx.com$/');
$remote_host = gethostbyaddr($_SERVER['REMOTE_ADDR']);
$bad_ref = array(「yahoo」とか「google」とか「^
http://ime\.st/* 」);
$referer = $_SERVER['HTTP_REFERER'];
if( $bad_refが含まれてたら〜 ){
include("404.php"); #偽装
exit();
}elseif (preg_replace($bad_hosts, null, $remote_host) == $remote_host)
{
include("403ok.php"); #普通の403
exit();
}else{
include("404.php"); #偽装
exit;
}
$bad_refのarrayの書き方も去る事ながら、一回目のifの式の書き方もようわからんです。
ボスケテ。
113 :
101 :2005/06/13(月) 11:22:20 ID:???
>>105 さん
ありがとうございます。
そうすると、一行目の「#!/usr/bin/php -q」は
「#!/usr/local/bin/php -q」とパス指定するのが正しいようですね。
pearのほうは、/usr/local/bin/pearだと、pearコマンドを実行するファイル
を呼び出す事になってしまいますね。
そうすると、/usr/local/lib/php/PEARが正しいようですね。
3行目のincludeはフルパスで記述してみます。
実際のところ、pearがどうような働きをするのか理解していません。
なんとなく、PHPとDBを繋ぐインターフェイスみたいなもの?と感じています。
さて、無事動くといいのですが・・・ちょっとやってきます。
>>111 復元する必要のある情報をMD5かけてはだめ。
パスワードなどの直接値が必要ないものを照合するときにMD5する。
データベースの暗号化するかしないかはむずかしい。
どのみちKeyをPHP内に書かなければいけないのでその工夫次第。
どうせばれるなら、とそのまま書くのも悪くないとは思うけど。
やっぱりKeyの格納方法次第だね
PHP勉強中ですが、 require文とinclude文の使い分けが理解できましぇん。 どのような場面で使い分けるのが賢いやり方でしょうか?
117 :
nobodyさん :2005/06/13(月) 20:58:51 ID:S8y0i9cb
パラメータを付けて、○○○?mode=△△△ というURLにし、 △の部分のものはfunctionで設定した部分を表示させるにはどうしたら良いでしょうか?
>>115 ひとつ聞いてみたいんだけど、何で(どこで)PHP覚えたの?
>115さんだけじゃないけど、○○○って関数は知ってるけど、
どういう時に使えばいいのか分かりません、って質問多いよね。
マニュアル読んでれば、普通に書いてあることなんだが・・・。
純粋にどうやって覚えていってるのか(いくつもりなのか)、すごい気になる。
>>117 もう一度自分で書いたものを読み直してから、詳しく。
説明がアレですみません。
function ***(){
○○○
}
URLは
http:// 〜?mode=***
という感じで、そこにアクセスすると、function内で設定した
○○○の部分だけが表示される
という、掲示板とかで見かけるもののやり方がいまいち分からないのです。
if ($_GET['mode'] == 'test') { test(); } こう?
なぜか、それだとfunction内のみが表示されるのではなく、 function外のものも表示されてしまって。。
例外処理させていないとか。
よく分からなかったので無理やりこんな感じにしたらできましたが・・・ これで良いのでしょうか if ($_GET['mode'] == 'test1') { test1(); } elseif ($_GET['mode'] == 'test2') { test2(); } else{ print "<a href=\"$PHP_SELF?mode=test1\">テスト1</a>\n"; print "<a href=\"$PHP_SELF?mode=test2\">テスト2</a>"; } function test1() { print "テスト3\n"; } function test2() { print "テスト4\n"; }
>>124 いいんじゃないかな。
そのサンプルだと必要部分だけ書いたファイルをつくって
includeするとかでもいけそうだが。
>>127 趣味で作るレベルなら動けば良いんだから、
そっとしておいてやろうよ。
>>118 みんながみんなオンラインマニュアルを
読みながらやってるわけじゃないってことですよ。
いちいち質問してくるやつが嫌なら答えなければいい。
自分なりに調べてみたがわからなかった、調べ方自体がわからない、
というような人間も存在するわけで、
そういう人間のためにこの場があると、俺は解釈しております。
130 :
124 :2005/06/14(火) 06:49:06 ID:???
ありがとうございました。 やはり勉強が足りなかったようですね。 勉強します。
>>129 >>118 じゃあないが、マニュアルも見ずに質問っていうのは
フォローしきれないよ。
あのマニュアル見て「調べ方がわからない」と言える事がすごいね。
あんな親切なマニュアルなんて滅多にないと思うが。多言語と比べて。
php_manual_ja.chmのダウンロードは基本だね エディタのヘルプに指定すればキーワードダブルクリック+F1キーで一発参照できるし。
最近になってPHPを触り始めたんだけど、シングルクォートとダブルクォートの 使い分けが面倒。。。 変数を展開せず、エスケープシーケンスは認識してくれるってのが ありがたいんだけど。 皆さんはどうされてます?
>>131 マニュアルの存在自体を知らないやつもいるだろう。
問題なのは、このスレの
>>1-5 あたりに
オンラインマニュアルみてから質問しろというような趣旨の
書き込みがないことだ。
次スレから
>>1 にオンラインマニュアル読んでから質問すること(URLつき)とか
付け加えたほうがいいと思うんだがね。
マニュアルへの誘導がテンプレへの誘導になるだけだな。
>>129 調べ方自体がわからない→調べるのが面倒
だろ?
>>136 いや、職業柄、いろんなヤシを見てるが、
調べ方が本当にわからない奴がいるのは事実。
だけど人材が少ないので、お前、プログラマ辞めたら?
とは言えない。。。
くだ質スレだから 気軽にこたえてやろーぜ
>>137 英語(っぽい)文章と思考停止するやつとかな。
>>129 例えば、"php include require"でぐぐってみれ
先頭のリンクだけでも、十分2つの違いは理解出来るはず
調べ方が分からないって、上に書いたみたいなことすらも出来ないもんかね
だとしたら、PHP以前に根本的なとこでかなりやばいと思うぞ
それとも、2chは知ってるけど、Googleは知らないっていうのか?
もっと向上心(上に書いたようなことは向上心とかいうレベルじゃないが)を
持たないと、Hello worldから先には進めんぞw
>>129 は
【PHP】includeとrequireの違いを語ろう
というスレを立てなかっただけでもエロい
>>141 Googleは知ってるだろうけど、
検索の正しい仕方がわからないっていうやつもいるもんだよ。
"php include require"というように、
ワードを区切るのがあたり前と思ってるんだろうが、
"includeとrequireの使い分け"とか一文で検索しようとするやつもいる。
キーワードが長文になるほど、HITする数が少なくなるわけだが、
調べてる本人にとっては、こんなもんしか資料がないのかと思うわけだ。
それで行き着く先はこのような質問系の板。
やっぱり言語が糞だとユーザーも糞だなwwwwwwwwwwww
phpのバージョンを変えたら、function foo(&$bar="hoge"){でエラーが出るようになりました iniの問題だと思いますがどこを直せばいいのかわかりません ヘルプ!
php.iniに設定されている session.use_only_cookies session.use_trans_sid を関数などで変更できますか?
149 :
148 :2005/06/14(火) 16:56:21 ID:???
↑ 実際のphp.iniの設定ではなくて トランザクション内での変更です。 念のため。
>>150 忘れてました
Parse error: parse error, expecting `')'' in ...
>>153 5.0.4 から 4.3.11
php.ini見たらallow_call_time_pass_referenceはOnになってました
>>147 一応の目的はこれで達成できると思われ。
function foo($bar="hoge"){
$bar = $bar."hoge";
}
$bar = 'huge';
foo(&$bar);
print $bar;
>>137 調べ方もわからない奴が戦力になるとは思えないんだけど、
どうだろう?
育て中って事?
パソコン初心者でプログラム初心者だからって事ならまぁわかる。
で、ここで質問->マニュアル読めって流れで
マニュアル読むことを覚えていいじゃないか。
agaらなくなくね?
ユーザー関数作成する時に注意する点ってありますか? 関数化する前ちゃんと動いてたんだけど 関数化したら動かなくなって(つД`) 因みに必要と思われる変数はglobalしてます
自己解決(´・ω・`)
>>158 グローバル変数なんかめったやたらに使うなドアホ。
バグの原因じゃボケ。
>>159 なにが自己解決したのか言え。ドアホ。
>>158 >>160 のいうようにglobalを使うのは避けた方がいい。
関数内で変更する必要のない変数は値渡しをして、変更する変数はリファレンスで渡すようにする。
こうする事で、何が変更されるのかが明確になるし、デバッグ時にも注目する部分が減るというメリットもある。
globalを使うと、極端な話、コードのあらゆる個所で変更される可能性がある事になる。
>>160 >>161 たしかにglobalを普段使うのは危険だけどさ、usortとかに指定する比較関数に値を渡したくても渡せないときってどうしてる?漏れはglobalしか思い浮かばなかった。
なんていうか、ソートしている間はずっと値が変わらないけど比較には使う値をどう渡すかってこと。
staticも考えたけど、ソート時に内部で何度も呼び出される関数に、func_get_*()とかで無駄に場合分け増やしたくないってのはわがまま?
だからPHPは糞なんだよ。
>>162 めったやたらに使うなということで必要なら使ってかまわないでしょう
グローバルな設定値とかを$cfg['hoge']とかの配列に入れて関数内でglobal $cfgとか普通に使ってる
ねえねえ。 連想配列として $item[$_GET['mode']] = '2get'; ってやったときに$itemから連想文字を 取得したいときはどうすればいいの?
>>165 連想文字って何
配列のキーのことかな
array_なんたら関数にお前のやりたいことはないかい
>>167 ありがと。
>>166 PHPは昨日から始めたばっかりで・・・かたじけない。
配列の操作に関してはarray_なんたら関数を調べれば
いいのねってことが分ったので・・・ありがと。
まったくの初心者のくだらない質問です。 <?php extract($_POST); if($jsh<>''){ mysql_connect(localhost,root,pppppp); mysql_select_db(db01); $sql = "insert into kojindata values('$jsh', '$sim', $nen, $shk, 0)"; mysql_query($sql); $jsh = ''; echo "データを登録しました<br />"; echo "登録を続けますか <a href=\"kojin.php\">続行</a>"; exit; } ?> 以下に続きます。
<p>データを入力してください</p> <form action="kojin.php" method="post" > <p>住所:<input type="text" name="jsh" size="40"></p> <p>氏名:<input type="text" name="sim" size="40"></p> <p>年齢:<input type="text" name="nen" size="40"></p> <p>職業:<input type="text" name="shk" size="40"></p> <input type="submit" value="登録"> <input type="reset" value="リセット"> </form> 「kojin.php」内のスクリプトです。 まず「住所」「氏名」などのフォームが現れ、そこに入力されたデータを テーブル「kojindata」に送りレコードを追加、その後に登録を続けるかと メッセージが出ます。 if文の$jsh(冒頭から4行目)は、17行目の"jsh"の事を言っているのでしょうか。 そして意味としては「もし$jshが空白で無かった場合」でいいんですよね? 9行目の「$jsh = '';」は「$jshに空白を代入する」と言う意味でいいんですか? 流れが良く分かりません。度素人なんです。よろしくどうぞ。
>>168 別に配列がらみはarray_なんたら関数だけではない。
マニュアルとかで配列の項をみたら?
あとは、「php 配列」でぐぐればいくらでもでてくるし。
本だっていっぱいあるんだから、入門書を一冊ぐらい買ってみたら?
>>162 クラスつくってメンバ変数に閉じ込めるってのはどうだ。
>>170 暇だから解説しよう
formからmethod post で送られたデータはPHPで$_POST['フォームのネーム']という配列に代入される
$_POST['jsh'} に住所の項目で入力された値が入るってことだね
そのスクリプトは$_POSTをextractで展開している
これで$_POST['jsh'} の値が$jshにもコピーされる。
住所さえ入力してあればデータベースに登録される
9行目の$jsh = '';は無くても問題ないはず
あとデータベースにクエリ投げる前に$jsh = mysql_escape_string($jsh); //他の項目も
if (($i > 0) and ($i < 10)) {...} else if (($i >= 10) and ($i < 20)) {...} else if (($i >= 20) and ($i < 30)) {...}.... のようなのをswitch等で見やすく書くことはできないでしょうか。 switch ($i) { case 1..9 : ...; break;のような感じだと見やすいと思うのですが…。
>>174 多分こんな感じでいけんじゃね?
switch ($i){
case 1: case 2: case 3: 〜 case 9:
処理;
break;
}
>>175 それを1-9、10-19、20-29、って全部書いたら余計に見づらそうだ・・・。
>>175 ありがとうございます。$iが1〜250あるんです。泣。
分岐としては【ほぼ】10番単位でいけるという。号泣。
ループ処理使って省略していけばいいじゃん。
10で割ってintにすればよくね?
わーい。レスがはやーい。
>>179 【ほぼ】なんで、1例外として何番と何番はこうで
何番と何番はこうなって…で、残りを10で割って…
せめて1から順に、上から並べれば見やすくなるかなという気持ちです。
>>178 ループ処理といいますと?私が思いつくのは結局
for ($i = 1; $i < 251; $i++) {
if ($i < 10) {...}
else if (($i >= 10) and ($i < 20) {...}
else if ......
と結局、なんのためにforしてるのかわかんなくなっちゃいます。
>>174 それぞれの処理は
ファンクション化できないほど
そんなに違う事をしているのかい?
>>181 ただ単にSQL文の組み立てなのですが、その$iに応じて、検索対象の
項目や値が変わってくるというありがちといえばありがちな…
前段と末尾は共通なのですけれど。
>>180 switch (method_for_value($i)) {
case METHOD_A: ...;
case METHOD_B ...;
}
function method_for_value($i){
$result=METHOD_UNDEF;
if (($i > 0) and ($i < 10)) $result=METHOD_A;
else if (($i >= 10) and ($i < 20)) $result=METHOD_B;
else if (($i >= 20) and ($i < 30)) $result=METHOD_C;
return $result;
}
保守性は上がると思ふ
>>183 そう思います。if文の羅列をコメント入りで書いてあります。
見やすくする意味で、switch(もしくはそんなようなの)を使えないかなという質問です。
>>184 なるほど、ループを使って省略というのは、そういうことですか。
確かに流れとして(という言い方でいいのかな)見通しが
よくなりますね。試してみます。ありがとうございます。
>>182 結局、25通りの何かの組み合わせなんでしょ。
だったら、予め配列に25個の項目名でも何でもぶち込んでおいて、
$num = int($i/10ゴニョゴニョ);
$select_table_name[$num];
とかで良いんでねぇの?
それぞれの$iごとの情報もDBにいれときゃいいじゃん。
大した量じゃないなら
>>187 の配列を用意しておく方式もいいと思う。
189 :
170 :2005/06/15(水) 20:27:00 ID:???
>>173 解説ありがとうござます!分かりました!
遅レスお許しください。
>>187-188 おおよそ80通りです。好みといってしまえばそれまでなのですが
配列にするのであれば、ループで省略の方が見やすいように思います。
また、DBは別の方の管理のため、大事になりそうで…。
否定ではないです。アイデアとして当然ありの方法論と思います。
ありがとうございました。
>>190 >おおよそ80通りです。
>>177 で言ってることとぜんぜん違うじゃネェか(w
250を【ほぼ】10で割って、どうやったら80になるんだ。
現在DBに既に存在しているテーブルから逆算(?)して、 そのテーブルと同じ構造の(空の)テーブルを生成するためのSQL文を 作ることはphpスクリプトで出来ますでしょうか?? つまり、現在のテーブル構造を解析したいのです。 たとえばnameという名前でvarchar(10)のフィールドが1個、 furiganaという名前でvarchar(20)のフィールドが1個ある・・・みたいな テーブル情報をスクリプトで取得して、それを元に、同じ構造の別のテーブルを作る SQL文を自動生成したいのですが…)
>>191 不快に思ったらごめんなさい。【ほぼ】10で割るというのは
例えば、1-10の内、2と3が例外、11-20の内、15と18が例外という感じで
ほどんど10で割ってですが、例外が(実際はまちまちなんですが)2づつある。
10で割った25+2つづつの例外(25*2)で、これだけで75パタンになりますが。
ぜんぜん違いましたでしょうか。日本語が下手ですみません。
>>192 構造をひっぱってこれる関数があればできそうですが…。
DBによってあったり無かったりしたんじゃないかな。
MySQLとかpostgresならあったと思いますが、使ってないので
うろ覚えです。
>>194 で、結局何が訊きたかったの?
80通りの分岐があって、その処理を個別に記述したいんなら、
if〜elseif〜・・・でも、switch...case...case...でも何でもいいじゃん。
ってか、80パターンを全て記述した時点で、美しく無いと思うがな(w
>>194 微妙な設計のDBに出合った時はずらずら列挙するに限る。
if ($i < 1 || $i > 250) { 値おかしい }
switch ($i) {
// 例外1
case A1:
case A2:
case A3:
例外処理1;
break;
// 例外2
case B1:
例外処理2;
break;
// 通常手続き。ひとつのフィールドにいろんな意味持たせるんじゃねボケ
default:
switch (floor($i / 10)) {
case 0: 通常処理1; break;
case 1: 通常処理2; break;
case 2: 通常処理3; break;
}
}
関数テーブルにしとけ。 $functable = array( 1 => "func_A", 2 => "func_A", 3 => "func_B", 4 => "func_C", : : ); $func = $functable[$i]; $func(); みたいなん。
>>196 まぁそういうことなのでしょうね。
随所に
//ここにもマジックナンバー
とかの遠慮がちな批判コメントを見るとほほえましく思えます。
ありがとうございました。
関数テーブル。いただきます。ありがとうございました。
200 :
ドラゴン :2005/06/16(木) 14:06:43 ID:???
あるフリーのPHPを設置して、<td><?php include("index.php"); ?></td> と言う感じで読み込んだら、以下のエラーが出て困っています。 Warning: Cannot modify header information - headers already sent by (output started at ./index.php:11) in ./lib/common.php on line 57 ./lib/common.phpの中には function header() { header('Content-Type: text/html; charset=euc-jp'); } があるんですが、どうすればエラーが出ないようにするのかわかりません。 もしよければご回答お願いします…。
関数header()が実行されるより前に何らかの出力が行われている。
202 :
ドラゴン :2005/06/16(木) 14:27:13 ID:???
呼び出し方は以下のように行っています。 ファイル名:test.php <html> <head> <title>test</title> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> </head> <body> <table width="200" border="1"> <tr> <td> <?php include("index.php"); ?> </td> </tr> </table> </body> </html>
header()を<html>より前で実行すれば良いんじゃないの。
>>202 ひょっとしたら
test.phpを
<?php include("index.php"); ?>
だけにしたら実行できないか?
205 :
ドラゴン :2005/06/16(木) 14:49:23 ID:???
出来ないッス・・・。
206 :
ドラゴン :2005/06/16(木) 14:52:29 ID:???
./lib/common.phpの中のheader内を消してみたら function header() { header(); Warning: header() expects at least 1 parameter, 0 given と警告が出ました…。
>>206 header関数を実行する前には、何も出力してはいけないのだよ。
だから、index.phpをインクルードした時点では、
すでに
<html>
<head>
<title>test</title>
<meta http-equiv="Content-Type" content="text/html; charset=euc-jp">
</head>
<body>
<table width="200" border="1">
<tr>
までが出力されているから、エラーになる。
index.phpの中身はどうなっているんだ?
>>206 マニュアルのheaderのページを見てごらん。
ttp://jp.php.net/manual/ja/function.header.php headerを使う前にhtml要素(空白や改行でさえも)を出力してはいけない事や、
その制限を回避する方法(出力のバッファリング)の事が書いてあるから。
なにかの本・サイトに載っていたスクリプトがindex.phpで、
それに手を加えるために第一歩としてtest.phpの中で
そのままindex.phpをincludeしようとしたら、いきなりコケたって所かな?
function header() { header('Content-Type: text/html; charset=euc-jp'); } ??? PHPでは関数のオーバーロードはできないはずだが
>>200 どこのフリーのPHPソフトだ?
アドレス晒せ。
PHPでSQLServer(MSDE)を使ってる人いる? mssql_fetch_arrayした時のdatetime型カラムの値が変なんだけど。。。 例えば 2005/06/16 11:12:13 だと 2005 6 16 11 12 と返ってくる。 フォーマットが違うのは対応できるけど、秒が落ちてしまっていて 使いもんになんねぇ。
>>200 header('Content-Type: text/html; charset=euc-jp');
ヘッダーが来る前に、多分どっかでなんかの文字が出力されてる気がする。
ごめん、既に既出しまくりの解凍でしたね。
215 :
ドラゴン :2005/06/16(木) 16:56:41 ID:???
すいません、解決致しました。 function header() { header('Content-Type: text/html; charset=euc-jp'); } を消して、表示されるテンプレファイルに直接ヘッダを書いたらOKでした。 実際は、問題から逃げただけなんですが・・・(^^; PHP難しいッス・・・。 どうもお騒がせしました
>>200 出力されたHTMLソースをみて、先頭の方にテスト残骸の「a」とかBOMとか怪しいものが無いかないかチェック
>>213 エラーメッセージがそういってますから間違いないでしょう
どっかでじゃなくてindex.phpの11行目で出力されてることもわかってます。
>>216 あのさ、index.phpの中でheader出力してて、
それをインクルードしているtest.phpが既にhtmlはいてるんだよ。
>>215 というかその関数を定義する意味はあるのかと問いたい
>>215 難しくないよ。
header出力の前には、ほかのものを出力しない、
それだけのことじゃん。今回のことは。
Perlみたいに、帰ってきた配列を直接 $hoge = hogehoge()[0]とかするやり方ってありませんか? 今は、 $hoge = hogehoge(); $hoge = $hoge[0]; ってやってるのですが、もっと簡単に書くやり方あったら教えてください。
>>221 list($hoge, ) = hogehoge();
[0]のときしかまともに使えねーな。
同じファイルの中身をphpでincludeして表示する負荷と ssiでincludeして表示する負荷は同じですか?
UTF-8でスクリプト書いても良い?
悪いの?
ちょっと聞きたいんですが、 ログインページと認証後のメインページがあって 認証後のメインページにはログインページでセッション発行してる人しかこれないようにしたいんです。 URL直打ちとかでメインページに来た人でセッション発行されてなければ 強制的にログインページに飛ばしたいのですが。 ログインページ.php <?php session_start(); $_SESSION['user'] = 'お客様'; ?> メインページ.php <?php session_start(); if ($_SESSION['user'] = false){ } if文のところで値のない(ヌル値)人は別ページに飛ばす場合のif文の書き方などがいまいちわかりません。 わかりにくいかもしれないですが、教えてエロイ人!
>>228 if文には条件式を書きます。代入式ではありません。
変数が存在するかどうかを確認するには、isset()を使うとよいでしょう。
230 :
nobodyさん :2005/06/17(金) 00:57:58 ID:x3OuW/uy
/code/funcs.phpというincludeされたファイルの中に相対パスがあった場合、 これを/index.phpの中にincludeしたとします。 この場合、index.phpが基準になってしまうんですが、 これでは、階層レベルの違うところから/code/funcs.phpを利用すると内部のパスがおかしくなってしまうんですが、なんかうまい方法(関数)はないのでしょうか? funcs.phpと同一階層にあるdatというディレクトリの中のdata.datを常に参照したいです。
>>225 計ってないけどおそらくSSI。
CGI版PHPとなら間違いなくSSI。
>>228 if($_SESSION['user'] == 'お客様')
header()でRedirectするなり、エラーページをだすなり。
細かいけど、セッションはサーバーとクライアントのやり取りのことだから、「セッションを発行」というのはおかしい。クッキーとごっちゃになってない?
>>229 ありがとうございました。
色々勘違いしてましたが isset にて目的達成できました。
参考までに。
<?php
if (isset($_SESSION['user'])) {
echo '既に認証しています。';
} else {
echo '認証していません。';
}
?>
>>231 言い方がおかしかったですね。
また、セッションとクッキーの違いについても正しく認識してないと思います。
お手数おかけしました。
ランダムに日本語を表示させることをしたいのですが、 1文字ずつ配列に入れていくのは文字が多いので大変です。 なのでアスキー文字から日本語に変換したいのですが、chr()では無理でした。 上手い方法ってありますか?
>>235 上位バイト・下位バイトに分けた時にそれぞれ特定のbit列(いいかえれば数値)しかもたないから、
それぞれにランダムな数値を割り振ってpackあたりで引っ付けて出力すればいいんじゃないかな。
phpやcgiにpostで値を渡してアクセスするにはどうすればいいですか getのように〜?hoge=hugaと簡単にはいきませんか
すみません自己解決しました function post($url,$postdata) { require_once "HTTP/Request.php"; $req =& new HTTP_Request($url); $req->setMethod(HTTP_REQUEST_METHOD_POST); foreach ($postdata as $key => $value) { $req->addPostData($key, $value); } if (! PEAR::isError($req->sendRequest())) { $response = $req->getResponseBody(); } else { $response = ""; } return $response; }
239 :
238 :2005/06/17(金) 08:01:53 ID:???
実は独自のphpから2chに書き込みたかったのですがクッキー確認画面があってうまくいかないですね どういう方法でやれば書き込めるのかお知恵を拝借したい
p2参考にすれば?
phpソースの拡張子をphpやhtmlとしたとき スクリプトが実行されるのですが、 htmとしたときはスクリプトは実行されず <?php・・・・・?>のコードごとブラウザに送信されます。 どうも拡張子によって展開できないようなのですが これはどこの設定により変えることができるのでしょうか?
>>192 DBは何使ってるの?
MySQLだったらphpMyadminでコピーするんじゃダメ?
>>239 hostとuser-agent(Monazilla)とcookie(PON)が必要だったと思う
246 :
192 :2005/06/17(金) 13:42:51 ID:WoohunCD
>>243 DBはMySQLですが、スクリプトから操作したいのです。。。
そういう関数って無いですよね? テーブル構造を分析するような関数。。。
247 :
軟式PHP :2005/06/17(金) 13:45:48 ID:???
>>246 mysql_fetch_field使ったらできそうやけど。
>>243 試してないけど、
mysql_list_tables、mysql_field_flags、mysql_field_len、mysql_field_name、mysql_field_type
辺りの関数でなんとかなるんぢゃないの?
ま、関数は用意されている。 使い方が分からなければ、phpMyAdminのソースでも読むとか
252 :
235 :2005/06/17(金) 16:00:55 ID:???
>>236 なるほど、packか。。調べてみます
ありがとうございました
<? // ランダム表示設定(表示コメント|URL) $banner = array( '【コメント(タグ可)】|【URL】', ); function rnd_banner($banner){ mt_srand((double)microtime()*1000000); $num = mt_rand(0,(count($banner)-1)); //コメント,URL分割 list($comment,$url) = explode("|",$banner[$num]); //タグ生成 $display_banner01 = '<a href="'.$url.'">'.$comment.'</a>'; return $display_banner01; } $display_banner01 = rnd_banner($banner); ?> ---------------------------------------- これを「コメント|URL」の区切りでなく、「コメント(タグ可)」のみの ランダム表示スクリプトにしてください。お願いします。
256 :
nobodyさん :2005/06/17(金) 18:35:55 ID:j6Wl64CO
{$_POST['hoge']} など { } で変数を囲うのはどういう意味ですか?
たとえば echo "ああああ {$_POST['hoge']} あああ"; {}で囲ってるのは変数ですよって意味 でもこっちの方が多少速い echo "ああああ ".$_POST['hoge']." あああ"; まちがいかもしれないっすけど
そうやるなら echo 'ああああ '.$_POST['hoge'].' あああ'; の方がいい。 ””だと中に変数があるか探すから。
そういえば ' と " どっちが早いかベンチ取ったことなかったな。
さっきから何度試しても駄目なんだ、助けてくれ。 PHPから'を含むSQLをMySQLに投げたいんだが、 <? $test = "what's"; $test = Mb_Ereg_Replace("'","\'",$test); $sql = "select * from tb where aa = '{$test}'"; MySql_Query($sql); echo MySql_Num_Rows($sql); ?> みたいな感じで書いても0しか返ってこないんだ。 何が悪いんだろう… スレ違いだったら謝る。
262 :
nobodyさん :2005/06/17(金) 20:36:45 ID:Y+HIW1Mt
質問なのでage
>>261 0が表示されているっつーのも変な気が。。。コピペミスかのぅ。
'のエスケープ以前に、MySQL関数の使い方が間違ってるので、
マニュアルのmysql_queryとmysql_num_rowsのページを良く見てみ。
つーか、SQL文に突っ込むと困る文字をエスケープするための関数もある。
>>261 int result = mysql_query ( string query, int [link_identifier])
int value = mysql_num_rows ( int result)
265 :
261 :2005/06/17(金) 20:55:42 ID:Y+HIW1Mt
>>263 サンプル打ってて間違えたー。
$result = MySql_Query($sql);
echo MySql_Num_Rows($result);
の間違い。
AddSlashesの存在はさっき気付いた。
でも変更しても解決しないよー
>>265 一度、素直にベタのSQLを走らせて切り分けてみたら?
what's を what''s(シングルクォート2つ)にするのを忘れないように。
$sql = "select * from tb where aa = 'what''s'";
$result = MySql_Query($sql);
echo MySql_Num_Rows($result);
267 :
261 :2005/06/17(金) 21:07:20 ID:Y+HIW1Mt
>>266 駄目でした。
因みに
$sql = "select * from tb where aa = \"what\'s\"";
$sql = "select * from tb where aa = \"what''s\"";
でも駄目
もう何が悪いのか微塵も解らないよorz
>>267 そもそもクエリ自体が成功してるのか、mysql_errno()とかmysql_error()で確認汁。
またPHPからだけじゃなくて、mysqlのプロンプトで同じSQL打ってみ。
あとmagic_quote_runtimeがOffになってるのか再確認。
270 :
261 :2005/06/17(金) 23:39:41 ID:Y+HIW1Mt
プロンプトから直に投げてみました。 該当件数無しで帰ってきました。 該当レコードは間違いなく存在する状態で、です。 magic_quote_runtimeはOFFでした。 これ以上はDB板の方で利いた方がいい内容でしょうか…。
271 :
261 :2005/06/17(金) 23:50:01 ID:???
書き込んだ後で、関係の無い他の部分を修正してもう一度試してみたら 何故か普通に動作しました。 結局原因は不明ですが、解決いたしましたのでご報告。 アドバイス有難うございました。 それと、ごめんなさい。
>>270 原因不明で解決つう余り望ましくない結果で収束したが、
(原因不明だと、根本的に解決したわけじゃないから)
プロンプトから直に投げても望まない動作だとわかった時点で、
ここを切り上げて、DB板のMySQLスレに移る。
本当は最初からPHPなのかDBMSなのか自分で切り分けるのが良いんだけど、
まあ自分で切り分けが最初に出来なければ、それはそれで仕方がない。
ヘタレはデバッグの仕方を覚えろ 知識が無くても天と地の差が・・・
274 :
nobodyさん :2005/06/18(土) 01:37:31 ID:QW3Qffbr
PHPのデバッグの仕方教えてください ぐぐっても出てこないです
275 :
nobodyさん :2005/06/18(土) 01:42:17 ID:QW3Qffbr
デバッグじゃなくてデバックでぐぐってた スマソ
挿入したら3秒もちましぇん
早漏か。
構文チェックなら、DOS窓からできる。
>>281 CLI版が入ってれば
php -l -f hoge.php
でsyntaxチェックできるぞ。
日付関数で、 文字列 12 から翌月の 01 を求めたいんだが.. 誰か教えて下さい。
文字列 12 ってどういう意味?
わけわからん、もっと詳しく
287 :
283 :2005/06/18(土) 13:20:06 ID:???
>>285 リンクに飛ぶのが面倒なので、やり方だけを書いてください。
お願いします。
288 :
nobodyさん :2005/06/18(土) 13:29:04 ID:hdLIfWAD
現在rssをphpで表示しています。 借りているサーバーではサブドメインでのPHPが利用できないのですが サブドメインで表示できるようにしたいのですが方法はありますか?
iframeかなんかで外からとれば?
鯖かえれば
>>287 1. 俺がこれから指定する銀行口座に1000円入金する。
2. 小一時間待つ
3. このスレに希望のソースコードが貼られる。
>>289 以前はそれでやってたんだが
偽装パケット攻撃かなんか?の問題で急に
に本ドメインのphp自体を停止された(鯖側は一切否定)
サーバー側では一切弄ってませんとか言ってたけど
他のPHPがすべて使えなくなったから鯖側でいじったのは間違いない
>>287 おいおい……
そのまえに284の質問に答えたら?
>>292 今口座屋と話してるのでちょっと待ってね。
なんか法律がどうとかで単価上げやがって値下げ交渉中。
296 :
nobodyさん :2005/06/18(土) 16:32:43 ID:ify5TbYf
投票PHPで投票者のIP・ホストを保存できるものはないでしょうか? 検索してもなかなか見つからなくてorz
echo "<a href=\"aiueo.php?id="; echo $row["abcde"]; echo "\"> ほげ </a>"; これを一行にはできないのでしょうか? echo "<a href=\"aiueo.php?id=$row["abcde"]\"> ほげ </a>"; 上記ではだめでした。分かってなくて済みません。
echo "<a href=\"aiueo.php?id=" . $row["abcde"] . "\"> ほげ </a>";
>>298 すごい、一発で出来た・・。ありがとうございます。
$row["abcde"] を" .と. "で囲んでいますね。これの意味は
どういう事でしょうか。echoの次にHTML文以外の言語を用いるときに
使うとか?
>>299 "(クオーテーション)は文字列の開始・終了。
.(ピリオド)は連結演算子。
echo "<a href=\"aiueo.php?id={$row['abcde']}\"> ほげ </a>";
でも良い
>>256-260 参照
>>300 aありがとうございます。
>>256-260 見ました。リンク先も見たのですが、私にはサッパリ・・・。
echo文に変数を入れるときには" .と. "で({と}で)囲む、と覚えることに
します。
>>301 塚、.は文字列を連結するんだって。
サッパリとかいってないで、覚えようとしないと、またはまるよ。
日付同士の比較をしたいのですが、みなさんはどうしてますか? UNIX時間にしてから比較しかないのかな
unixタイムスタンプにした方が便利な時で、なおかつunixタイムスタンプの範囲内であれば、unixタイムスタンプを使いますよ。 そうじゃない時は、必要な処理だけを自分で実装します(数値に分解して比較処理等)。
>>304 (゚∀゚)サンクスコ
あと30年動くわけないんでUNIXタイムでいくよ!
includeするスクリプトと、実行するスクリプトの文字コードが違ってても大丈夫?
コメントが日本語とかだと化けて出るぞぉ
308 :
nobodyさん :2005/06/19(日) 00:45:05 ID:TIL6O4MF
特定のサイト(URL)のhtmファイルを、一定感覚でログ保存してくれるphpスクリプトってありませんか?
ありますよ。
ありませんよ。
>特定のサイト(URL)のhtmファイル保存 10分でかける >一定間隔 cronでまわせ。
314 :
312 :2005/06/19(日) 03:14:15 ID:L/EHa1/f
>>308 に悪いんで、一応IDだしときますね^^;;;;;;;;;
作れるやつがわざわざ何々のスクリプトありますか?なんて聞かないだろ…
作れない奴は望むべからず
OS作れないのにパソコン使ってるんですが、まずいでしょうか?
つくってやればいいじゃん
やだよ、カネクレ
323 :
308 :2005/06/19(日) 13:27:19 ID:TIL6O4MF
スレ違いの質問だったようですいません
>>315 該当スレを探したんですけど、それらしいスレを見つけることができませんでした
誘導してもらえると助かります
10分で書けるコードに金を要求するほど困ってるのか?
結局脳内ってことか
書けもしないのに適当に10分でかけるっていったんだろw 特定のサイトが他人のサイトだったら、 負荷がかかるだろうし、迷惑かかるんじゃないか? コンテンツが多いサイトならなおさら。 一定感覚が毎日とかだと、アク禁される恐れもあるかもね。
正論禿同
open (CMD, "$uptime |"); $UPTIME = <CMD>; close (CMD); このPerlスクリプトをPHPスクリプトにしたいのですが、 どのように書けば良いか教えていtだけませんか?
間違えました open (CMD, "uptime |");
なるほど、実行演算子で出来るのですね。 ありがとうございました
rubyではスクリプトを実行ファイル (exe形式) に変換 する exerbがありますが phpではこういったものはありませんか?
334 :
332 :2005/06/19(日) 18:49:43 ID:???
335 :
332 :2005/06/19(日) 18:51:28 ID:???
Zend Encoder 以外は何があるんでしょうか・・・
>>337 自サイトに更新部分を自動で表示する
スクリプトって既にありますか?
捜し物スレへどうぞ
>>339 探し
や
物
で板内検索かけても0HITなのは仕様ですか?
探し物スレも探せないのか
>>336 自分で作れ ⇒(翻訳)⇒ クレクレ厨 Uzeeeeeeeeeeeeeeeeeeeeeeeeee
344 :
336 :2005/06/20(月) 08:25:49 ID:???
ども。 今月号のウェブデザイニングかなんかでRSSをPHPでごにょごにょして 自サイトに表示させよう!ってコラムを発見したので やってみまーす。
初めてVine LinuxにPHP4を入れていろいろと試しているのですが。 普通は表示されるはずのエラー表示が全くされません。 正しいコードを書いてみて実行させたときには正常に表示されましたので、 今度はわざとコードを間違えて記入し実行させてみたところ、全くエラー表示が出ず、 ページには何も表示されていませんでした。 何か設定がおかしいのでしょうか?
347 :
345 :2005/06/20(月) 14:00:59 ID:???
自己解決しました(_ _(--;(_ _(--; ペコペコ php.ini の display_errors の箇所をOffにしたままという超あほな原因でした。 お騒がせ致しました。。
348 :
nobodyさん :2005/06/20(月) 22:48:03 ID:0mb4CR9X
htmlのフォームからpostで受けた値をcsvに書き出す、っていうスクリプトの依頼を受けたんだけど、極力、そのフォームはいじらないでくれということでやってみたんだけど <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> のせいらしく、文字が化けたり、おかしなことになってしまっています。 よく考えたらフォームからphpで、それもEUCでしか書いた事がなかったんで初めてのケース。 Shift_JISのhtmlのフォームからEUCのphpにちゃんと値を受け渡すのって、面倒なことなんでしょうか? あんまり面倒なら、元のフォームから作らせてもらおうと思ってます。
はい、そうですか。
>>348 すごく簡単だよ。
Shift_JIS(HTML) → EUC-JP(PHP)
ってことは、PHPにはPOSTされたデータはShift_JISで渡ってくるよね?
だから、POSTされたデータをPHP側でShift_JISからEUC-JPに変換してから処理すればいい。
351 :
344 :2005/06/21(火) 00:02:08 ID:???
なんとレッツPHPにて、公開されてました。。。 すんません。 −RSSブロガー−■ 概要 特定サイトのRSSを表示します ブログの右ブロックとかに置くとか。 シンプル。件数指定可能
352 :
348 :2005/06/21(火) 00:02:31 ID:8+GyN4cK
>>350 いろいろぐぐって見るのですがなかなか。
なんと言う関数を見ればよいんでしょうか?
無難なことしかやったことがないもんで・・・情けないです
>>350 コンテンツのエンコーディングと同じエンコーディングでGET/POSTされるとは限らない。
ちゃんと受け取り時にチェックするように作るのが吉。
>>353 おっしゃる通り。
ただ、いきなりそんなこと言っても分からないと思ったので。
>>352 簡単なのは、mbstring.encoding_translation機能で
HTTP入力のエンコーディングを変換させてしまう。
但しmbstring.http_inputをautoに設定した場合、エンコーディングの
自動判定は完璧ではないことに注意すること。判定に使われる文字数が
少なかったり、特殊なものだったりすると誤判定となる場合がある。
確実なのは自動判定にはせず、hiddenで出力に判定用の文字列(非ASCII)を
埋め込み、それを利用して適正な変換を掛けること。
357 :
:2005/06/21(火) 07:12:10 ID:lHQtHO0n
358 :
nobodyさん :2005/06/21(火) 11:30:35 ID:t9cWxmD/
セッション管理を MySQL で行いたいのですが、ハマっています。 サンプル・プログラムの画面遷移は以下のようになっています。 ----------------------------------------------- +----------------+ | | V | login.php --> do.login.php --> top.php ----------------------------------------------- do.login.php では、POST されたパラメータを使い認証を行います・ 成功すれば、$_SESSION["username"] にユーザ名をセットし・ トップ画面にリダイレクトしています。 ----------------------------------------------- : snipping : $username = $_POST["username"]; $password = $_POST["password"]; if (User::isExist($username, $password)) { $_SESSION = array(); $_SESSION["username"] = $username; // トップ画面へ } else { // ログイン画面へ } -----------------------------------------------
359 :
358 :2005/06/21(火) 11:31:25 ID:t9cWxmD/
上記の認証をパスしてトップ画面へ遷移した後、テーブルの セッション・データを格納するフィールドを確認すると、 username|s:"anonymous"; とシリアライズされた文字列が 格納できているのですが、top.php にて $_SESSION["username"] の 値を参照しても値を取得することが出来ません・ ちなみに、do.login.php および top.php の先頭では、 以下の関数を実行しています。 ----------------------------------------------- function createSession() { $session_handler =& SessionHandler::getInstance(); session_set_save_handler( array(&$session_handler, "open"), array(&$session_handler, "close"), array(&$session_handler, "read"), array(&$session_handler, "write"), array(&$session_handler, "destroy"), array(&$session_handler, "gc")); session_start(); } ----------------------------------------------- php のバージョンは、4.1.2 です。 マヌケなミスをしているかもしれませんが、アドバイスでもいただければ 助かります。
<form action="hoge.php" method="POST"> <input type="submit" name="aaa" value="登録"> で、hoge.phpへ飛ばされたname属性"aaa"とvalue属性"登録"の扱われ方が よく分かりません。 とある例題のhoge.phpを見ると if($aaa == "登録"){ 処理内容 } となっています。name属性が突然変数として扱われ、value属性"登録"が その条件の対象として扱われています。 そう言ったものだと言われればそれまでですが、どうも釈然としません。 うまく説明していただけませんでしょうか。 Web製作板でも聞き、「ブラウザは"aaa=登録"というフォームデータ集合を送る」 までは教えていただきましたが、あとはこちらへ誘導されました。 よろしくお願いします。
362 :
nobodyさん :2005/06/21(火) 16:44:02 ID:QobDAUu/
phpでリモートのsybaseに接続したいんですが sybase_connectに、どのように書けばいいのでしょうか・・・ servernameにはinterfacesのDB名なのはわかったんですが ホスト名はどこで指定するんでしょうか
>>361 ありがとうございます。難しいですが、なんとか理解できそうです。
残念ながらご紹介のサイトはリンク切れ(サーバ落ち?)のようでした。
自分でももうちょっとあれこれ探してみます。
どうもでした!
>>363 つけたし。
[登録]ボタンを押したら $_POST['aaa'] に '登録' という文字列がセットされる。
エンターボタンを押すなどして[登録]ボタンを押さずに送信した場合はセットされない。
これでもためしとけ。
<pre>
<form action="<?=$_SERVER['PHP_SELF']?>" method="POST">
<input type="text" name="bbb" value="">
<input type="submit" name="aaa" value="登録">
</form>
<?php if ($_POST) print_r($_POST) ?>
</pre>
現在PECLのImagickライブラリを使っているのですが、 このライブラリを使って画像の減色は可能でしょうか? ImageMagickのコマンドだとconvert -colorsオプションで色数を指定することできますが、 PHPスクリプト上で同様のことを行いたいと考えています。 ご存知の方がいらっしゃいましたら、ご教授よろしくお願いいたします。
370 :
363 :2005/06/21(火) 20:08:21 ID:???
遅レスになりますが、お答えくださった方、ありがとうございます。 レスをプリントし、マイテキストとしました。感謝します。 遅まきながら、ただ今オンラインマニュアルのご紹介頂いたページを 見ています。
>>371 やはり無理ですか・・。
execでコマンド叩くしかなさそうですね。
ご回答ありがとうございました!!助かりました。
373 :
348 :2005/06/21(火) 22:35:21 ID:8+GyN4cK
374 :
nobodyさん :2005/06/22(水) 02:43:23 ID:BzQc8psA
数十くらいのファイルのデータベース呼び出すPHPって、いくらくらいで やってもらえるもの? って具体的じゃないからくだれねえ質問なんだが
>>374 なんの処理もなく呼び出してぶちまけるだけなら1万円。
見た目の調整とか
呼び出すだけじゃなくて入力もしろとか
検索とか、一定の条件での抽出とか
要求が増えるたびに1項目数万〜数十万のオーダーで金額が上がる。
どこかのスレで要求を全部晒せば
暇な誰かが作ってくれるかもしれないけど。
参考なりますた。 風俗のオプションみたいに考えればいいんですね。 数年契約なら、初年度10万とか言われたもので、びびりました。
377 :
nobodyさん :2005/06/22(水) 16:47:32 ID:+cNtc3On
0xF90x42 を F942 に変換する方法を教えてください。
str_replace("0x","0xF90x42");
>>377 バイナリデータを文字列にするなら
$hex = "\xF9\x42";
$str = bin2hex($hex);
echo $str;
↑miss str_replace("0x","","0xF90x42");
>>377 str_replace('0x', '', '0xF90x42');
$str = strtoupper(bin2hex($hex));
383 :
377 :2005/06/22(水) 18:51:27 ID:???
レス頂いた方々ありがとうございました。携帯の絵文字変換に使おうと思っています。今晩試します。
384 :
nobodyさん :2005/06/22(水) 18:56:43 ID:W6A/DjUI
とある本のサンプルなんですが、 どうやってもちゃんと動きません。 当方初心者のためお手上げです。 どこが悪いんでしょうか? <?php $hour = date('H'); //現在の時刻から時間のみを取得 if (3 <= $hour < 10) { //午前3時から午前10時 $greeting = 'おはようございます! '; } else if (10 <= $hour < 18) { //午前10時から午後6時 $greeting = 'こんにちは! '; } else { // 午前3時から午後6時以外の時間 $greeting = 'こんばんは! '; } echo $greeting."現在の時間は".date('H時i分s秒')."です。"; ?>
>>384 前にも同じ質問あったな…ネタか?
その「とある本」の名前を明かしてください。
話はそれからだ。
386 :
nobodyさん :2005/06/22(水) 19:00:02 ID:W6A/DjUI
はじめてのPHP言語プログラミング入門 という本です。 最初の方で紹介されているサンプルです。
<?php $hour = date('H'); //現在の時刻から時間のみを取得 if (3 <= $hour && $hour < 10) { //午前3時から午前10時 $greeting = 'おはようございます! '; } else if (10 <= $hour && $hour < 18) { //午前10時から午後6時 $greeting = 'こんにちは! '; } else { // 午前3時から午後6時以外の時間 $greeting = 'こんばんは! '; } echo $greeting."現在の時間は".date('H時i分s秒')."です。"; ?>
388 :
nobodyさん :2005/06/22(水) 19:11:02 ID:W6A/DjUI
やはりサンプルは間違いなんですかねぇ。 ありがとうございました。
389 :
387 :2005/06/22(水) 19:12:56 ID:???
念のため。 中に含まれる全角スペースは削除汁
391 :
384 :2005/06/22(水) 21:07:27 ID:1AW0Sutd
いろいろ有難うございました
2ちゃんねるのread.cgiのように、一定の負荷量を超えていたら一時的にexitするようにしたいのですが、「負荷量」はどうやって取得すればよいのですか?
read.cgiのソース読めば? uptimeても漬かってるんじゃないの。
LANでphp+apacheでwebサーバーを立てています。
LAN内のPCからは
http://hoge/でアクセスします 。
特にドメインは設定していません。
このサーバーでクライアントにcookieを食わせるため、
setcookie('foo','hoge',time()+3600)
とかやってみるんですが、
http://hoge/cookie.php とホスト名のみでアクセスした場合はうまくいきません。
http://192.168.0.x/cookie.php とかIPアドレス直打ちだとうまくいきます。
setcookieにドメイン名を設定するといいのかと思いましたが、
hogeというのはホスト名なので
どうやったらうまくいくのか見当がつきません。
setcookieの制約とかあるのでしょうか。
>>393 調べてみましたが、
print `uptime`
しても何も出力されないんです。(FreeBSD)
これは鯖が禁止しているということですか?そうなら代替手段を教えていただけませんか?
>>392 そこで「負荷量」の指針となるものは、"具体的"になんなの?
>>396 実はよく知らないのですが、調べたところ、UNIXでは普通はロードアベレージをさすようなので、ロードアベレージを取得したいです。
>>397 じゃあ、
>>393 の言ってることがそう。
でも多くの場合PHPはCGIとしてじゃなくて
サーバモジュールを介して実行されてるから
難しい、というか困難だよ。
>>398 shell_exec関数を使うのですね。ありがとうございました。
>>399 鯖はXREAでCGI版PHP5を使っています。
どうも昨日仕様変更があり、uptimeがとれなくなったようです。今回は残念ですが諦めようと思います。ありがとうございました。
401 :
nobodyさん :2005/06/23(木) 10:27:31 ID:F1hyqq8I
みなさん、PHPのハックとかやってますか? やってる人いたら活用法を教えてください。
Mojavi Japanのサイトが文字化けしまくりなんですが素人製作なんでしょうか
文字化けはしないけど、Mojavi Japan重いなぁ。 Mojaviって重いの?
確かにちょっと重いね。 APIマニュアルはサクサクなのに。
>>402 藻前のブラウザの設定の問題だろ。
化けないぞ。
Mojaviってブラウザによって化けるの? 使えねえな。
>>406 普通にcontent-type でcharset=EUC-JPってヘッダー送ってるから文字化けするのはおかしいよ
MYSQLにdate型で格納されているデータを PHPで呼び出して「○○○○年○○月○○日」って表示させたいんだけど… なんぼ探しても分からんです…、
echo date("Y年(省略)", strtotime($mysqlHogeDate)); これでもあかんのか
410 :
408 :2005/06/23(木) 17:06:51 ID:???
>409 あっさり出来た…。そっか。strtotime()でタイムスタンプに変換しなきゃいかんのね。 ありがとー。チョー感謝。
趣味のサイトに、ちょっとしたblog… というかnews投稿スクリプトが欲しくて作成依頼をしたいのですが、 個人の方に依頼する場合幾ら位掛かるものでしょうか? 業者のサイトを見てみましたが、40000〜100000と少し厳しめで( ´Д⊂ヽ かなりの数のblogやNucleus等のスクリプトが配布されていますが、 どれもベストなものが無く、カスタムもしましたが自分の考えているモノに出来なくて。 このスレでも誰か仕事として請け負って頂けないかな…。
>>412 自作はしたいのですが、自分で作れるほどスキルが無くて…。
請負をされている方も殆ど見つからず、こっちに書かせてもらいました。
>>411 取りあえず仕様書いたら、誰か作ってくれるかもよ。
>>411 >かなりの数のblogやNucleus等のスクリプトが配布されていますが、
それだけじゃわからんだろ。
希望でなかったものはどれで、
どんな風にしたいのかが分からないとなぁ。
416 :
nobodyさん :2005/06/23(木) 18:31:28 ID:J1stG/Y3
あるSQLと連携したphpスクリプトを運用しているのですが、 70万リクエスト/日程度の規模のサイトの場合、PHPはCGI/DSO どちらの方が安定して稼動するのでしょうか、検索してみると 今はモジュールで回してるほうが安定するといった書き込みが散見 されるのですが、データがない為不安を感じているところです。 --------以下構成------------ OS:Windows Server 2003 + IIS6&PHP4.3.9 + SQL Server 2000
PHP blog系ツールのスレのblogを使わせて頂きましたが、どれもファイル数が多く、非常に使い辛くて(カスタムもしにくくて)。
出来れば1ファイルのみで動くものが希望でした。
自分の考えている構成としては、
index.php
インデックスページ(blog風)
ページ1
ページ2
ページ3... (switchで切り替え?)
このような感じです。インデックスページのスクリプトが作れずにいました。
機能としては、
1記事毎に1logfile生成(
ttp://host/index.php?a=001 等で表示されるように)
カテゴリー分類
記事毎にコメント可能
各ページ共通のheader footer navimenu
ページ部分はincludeで読み込ませる
DBやトラックバック等は不要
この様な感じで考えています。
>>417 各種Wikiは試してみた?
Wikiといっても、それぞれ特色も仕様の違いもある。
カレンダーを目次としたナビゲーションも可能。
コンテンツの構成も希望するものに近いと思う。
4,1,0,あな,
http://www.a/,ほ 3,1,0,に、,
http://www.n/,め 2,1,0,いれ,
http://www.i/,ぱ 1,3,0,たい,
http://www.r/,げ のようなテキストファイルから、
カンマで区切って4つ目と5つ目をセットにしてそれぞれ変数に入れたいんです。
ランダムに。
一番最初の桁は1,2,3,4,5,6…と順に増えていくので、その数字をランダムに取得して、その行の4つ目と5つ目を変数に入れるにはどうやればいいのでしょうか。
>>419 各行を「,」でexplodeして配列にいれれば?
すいません、各行にできないんです。 一行目ならなんとかできるんですが、、、
fgetcsv()ならexplode不要だよ。 全部読みこんだらshuffle()かましとけばOK。 それぞれのフィールドの長さが固定で、かつファイルを全部読むのが嫌ならfseek()で無理やりやりますか。
$fp = fopen("dat.txt", "r"); $hand=fgetcsv($fp,100); うーん、、、 shuffle()は配列全部の順番を変えてしまうので4つ目と5つ目だけを取得出来ないような。 今やってみたらfgetcsv()でも一行目しか取得できてないのですが。てか説明が下手でごめんなさい。 やりたいことはdat.txtからphpにランダムで表示するリンクを作りたいんです。 アクセスするたびに違うサイトへのリンク(ひとつ)が表示されるやつです。 1行に1サイト登録してあって、区切りの4つ目がサイト名で5つ目がURIなんです。 どうやるのがいいんでしょうか
たぶんこんなとこじゃね? while ($line = fgetcsv($fp, 100)) $data[] = $line; srand(time()); list($num, $nazo1, $nazo2, $yottsume, $itsutsume, $nazo3) = $data[rand(0, count($data)-1)]; echo "$num <a href=\"$itsutsume\">$yottsume</a>\n";
426 :
nobodyさん :2005/06/23(木) 20:44:29 ID:n/yDCgXV
本当にくだらない質問なんですけどお尋ねします PHPでサイトを作りたいのですが、PHPの専門書を見ると Webを作るためというより、最初からPHPプログラミングの解説 のような本ばかりに思えます。まず何をしていいのか・・・ HTMLの初心者向け解説のように、一つ一つ段階を追って 基本的なところから「Webサイト」制作を支援するような 本かサイトをご存知ありませんか。 テンプレートのようなものがあるとうれしいのですが。 作りたいのはブログのような見た目のサイトです。 (あと簡単なアンケートをつけたりです) 細かいことは追って勉強して付け加えるような感じで・・・ 簡単なPerl、CGIが書ける程度のプログラミングの基礎はあります。 どなたかアドバイスお願いできませんか。
428 :
初心者 :2005/06/23(木) 21:12:37 ID:x16cC/Vq
大変申し訳ありません。 スレ違いだと思いますが、IPアドレスについて教えていただけませんか?
430 :
初心者 :2005/06/23(木) 21:16:23 ID:x16cC/Vq
>>429 様
リンク、ありがとうございます。
ちょっと読んできます。
3つのIPアドレスから、同一人物もしくは同一PCからの
書き込みかを判断出来るのでしょうか?
431 :
nobodyさん :2005/06/23(木) 21:21:12 ID:bxtJrr+S
>>427 たしかに
>>426 みたいな人もたくさんいるんだよ。
そんな人に
>>427 を教えても仕方ない。
マニュアルのstr strとかいきなり出ても意味分かんないもん。
結局hello worldで行き止まりってパターンが多いと思う。
漏れはperl全然理解出来なかったけどphpはなんだかとっつきやすかった。
phpで色々やって、久々にやったらperlもjavascriptも前分からなかった事がすんなりと分かった。
>>426 hello worldからアフォくさがらずにやる。かならず、実行。
読んで分かった気になるのとやってみるのは何倍も違う。
それから、自分のやりたいことを調べながら作る。
調べるのがうまくいかないのは、やりたい事が明確じゃないから。
探し物をするうちに、いろんな知識が頭の片隅に残る。
たしか、あんな関数あったよな、とか。
苦労してやりたい事が自分の力で出来たら面白くて夜も眠れなくなる。
そんなことしてるうちに、これが仕事になってたよ。
ここのとこ、寝てても半覚醒で脳内でルーチンを考えてがばっと起きて
やってみたらずっと出来なかったことがうまく逝ったり、
パソコンの前で一人で、ぶつぶつ言ってたら、朝、出社してきた同僚が
びっくりしたり、けっこうやばい人になってきたみたい。
IPアドレスは、平成元年にドメイン名の私有が認められたことから、 CSNET時代より公益者や私益管理者が、ドメインの領有を宣言する意味も含め ドメインを引くためのアドレスとしたことに由来するといわれるが、 IPアドレスのみを使用する例もあり、ドメイン名とIPアドレスのいずれが早いかは 鶏と卵のような議論となって判然としない場合が多い。しかしドメイン名を所有していたのは 古くは社会的な裕福層(経営者)であり、そのものたちは常に財力でブランドの威勢を誇示していたので 必然的にドメイン名はブランドの名誉を象徴し、余人の僭称を許さない特権的色彩が濃くなっていたものと考えられる。
>>430 >3つのIPアドレスから、同一人物もしくは同一PCからの
>書き込みかを判断出来るのでしょうか?
判断できません。その瞬間において"誰"または"どの端末(機器)"に
割り当てられていた(使用されていた)かのデータが必要です。
そのようなデータは個人の通信の秘密にも関わることなので、
法律上の強制力がない限り、第三者に漏洩することは処罰の対象にもなります。
>>425 レス遅れましたがありがとうございました。
動作に何の問題もなかったです。
さらに弄って使わせていただきます。
while (〜) $data[] = $line;
の発想がないんだよな〜
まぁ、マニュアルのfgetcsvのページに 例としてwhile()を使ったものも載ってるんだけどね。
>>431 PHPやっててJavascript久しぶりに触るってのも珍しい気がする。
俺もHelloWorldから実際にやってみるのは有効だと思うね。
全くもって同意見!んで、ぶつぶつ言ってるのも同じだねw
最初先輩らの独り言がうるせーなーと思ってたけど、1年も経つと
自分もやっぱり歩きながら「あ〜、あれをこうして・・・」とか思わず口に
だしてるね・・・。
437 :
427 :2005/06/23(木) 22:03:27 ID:???
>>431 ちょっと待て。
漏れは初心者の間ずーっと、PHP本家のマニュアルが一番役にたってたぞ。
今もリファレンスは役に立ってるし。
最初は何もわからなくて色んな入門サイトを回ったけど、行き着いたところは本家のマニュアルだった。
I.はじめに から始まって V.機能 までは初学者にとってもためになる内容が多いと思う。
難しい内容も少しはあるかもしれないけど、まさに
>>426 の言うように一つ一つ段階を追って基本的なところから説明してくれている。
>>432 便乗質問。
ipをdigなりlookupすればドメインは解るけど、ipの何番から何番は、どこのプロバイダで・・・というリストみたいな物はあるんでしょうか?
>>436 あ、ほとんど使うJavascriptは使い回しで事足りてたから。新たに書いてみようと思ったときに昔が嘘のように、自分の思った事が書けたんだ。
それに他人のソースを見て意味がわかってすぐに応用出来た。やりたい事が明確になって構造的な思考が出来ると、あとはリファレンスを見るだけだもん。
あと、ほんと、読んで「わかった気になる」ってのは大きな落とし穴。
最初は意味がわからんから、セミコロンとコロンを間違えていきなり嫌になったりとかw
ブツブツいうのはホントにやばいね。嫁も「やめさせなきゃと思うけど、途中で話しかけると怒るじゃん」と。まだオブジェクト指向もわかってないのにキチガイ一歩手前でつ。寝ながら夢の中でひらめいちゃったりっていうのはない?
>>437 あくまで、漏れはそうした、っていうことを
>>426 に言いたかったんだ。
いきなり、膨大なマニュアルを突きつけられると引いてしまうひともいるんだよ。
>>426 きつい事をいうとその段階でこんなとこで質問してるのでは先が思いやられる。
>基本的なところから「Webサイト」制作を支援
>テンプレート云々
ここらへんから、なんか焦ってるなぁ、と感じたんだよね。
焦るな。とにかくもちつけ。
>簡単なPerl、CGIが書ける程度のプログラミングの基礎はあります。
これだけ書けてるなら、phpはもっと解りやすいはずだ。
とりあえず、この辺はどう?
離れPHP島
ttp://masago.kir.jp/ レッツPHP!
ttp://php.s3.to/
長くて読む気にもなr(ry
>>438 最初の便乗質問と、
その後に続くゴタクを同じ人間が書いていると思いたくないな。
_____ (\ ∞ ノ ぱんつぅヽ、ヽ(゚∀゚) /ぱんつぅ! `(ノ)__ノつ U U
文系が混ざってるな。 文系理系どっちが優れてるかっていう話でなく、 質問する側は答える側に多いと予想できる 理系の人間に解りやすい文章を書いた方がいいぞ。 郷に入れば郷に従えですよ
文系(笑)
つ [ blog、日記帳、チラシの隅]
文系の人は顔文字は使わない。 m9(^Д^)プギャーなら、 はっはっは。おかしくて腹がよじれそうだよ。 と言う。
文系の人は擬音なんて使わない!
PHPでPOSTを送るにはどうしたらいいですか?
fsockopenだのHTTPクライアントをPHPで作るだの、 その辺の話は難しすぎてよく分からん。 マニュアルのマニュアルが欲しい。
大抵の人はこういう思考手順になるんじゃないかな? PHPでPOSTを送る -> PHP言語を使って、HTTP/1.0 or HTTP/1.1で定義されているPOSTリクエストを実行したい PHPでそれをするにはどういう関数がある? -> ネットワーク関数のfsockopenでソケット通信をすればできそう。 処理手順はHTTPの事が書いてあるRFCを見れば分かるかな。 GETの時には便利だったファイルシステム関数はPOSTには使えないみたい。ショボーン 誰かが便利な関数を作ってないかな? -> pearのHTTP_Clientクラスが使えそう。(今、pearのDBdj。。) で、レスには 「 つ [fsockopen] 」と書くっと。 そうすると、「使い方が分かりません」とかレスがあって、 「RFC嫁」とかレスされて、カウンターや掲示板を作る時には不要だった知識が存在する事を知る。 それらの知識を吸収するにつれて、彼女からのackが返ってきませんとかRSTされますた、 とかいうレスをたてるようになる。
にゃーにゃー あっ、ネタたんだ にゃーにゃー!ネコたんだぞー ねこたんかわいいいいーー
>>450 なんか笑った。
ぶっきらぼうに見えて意外と親切だな、喪前。
でも漏れはド素人なので、「RFC嫁」の段階で挫折してる厨房だけどな。
ところでackとかRSTって何??
>>453 脊髄反射してないでe-wordなりGoogleで調べろって。
PHPでTCPいじくる機会あるのか?
php-5.1.0b2インストールしてみたんだけど、 ./configure のオプションに --with-pdo-pgsql=/usr/local/pgsql 付けただけじゃPDOでPostgreSQL使えないの? なんか画面に could not find driver って出るし
きっとドライバが見つからなかったんだよ。
459 :
nobodyさん :2005/06/24(金) 14:40:13 ID:USyl7tNv
PHPの変数って基本的にどこで定義しても グローバル変数になるんでしょうか? スコープの概念は無い?
グローバル変数って言っても関数の中からアクセスする場合globalつけないとアクセスできないから、PHPのメインルーチンは軽くCのmain()みたいなもんだと捕らえてる。 globalとか$GLOBALSでアクセス「できてしまう」点にこだわるならそうは言い切れないけど。 なるべく関数やクラスを使ってグローバル変数を少なくするのも意味があるけど、メインルーチンでさらっとかけるのもPHPの利点だな。 その辺はサイトの規模に応じて適度にやるべしってことで。
レンタル鯖のサポートは技術的な質問がNGなので、こちらへ来ました。 レンタル鯖にデフォルトでMySQL、PostgreSQL6・7があるのですが、 PHPからDBを呼び出すことができません。 ■PostgreSQL6に接続する場合 $conn = pg_connect("host=localhost port=5432 dbname=ユーザID user=ユーザID"); ■PostgreSQL7に接続する場合 $conn = pg_connect ("host=localhost port = 5433 dbname=ユーザID user=ユーザID password=パスワード"); 上記をPHPファイルに記述して、読み込みを試みると Parse error: parse error in /usr/home/ユーザID/html/ファイル名.php on line 行 となり、おもいっきり入口で足踏み状態です。 どなたかおわかりになられる方がおられましたら、解決方法をお教えください。
マニュアルをまるごと写せ。そして値を書き換えろ。
464 :
462 :2005/06/24(金) 18:46:19 ID:???
>>463 さま
レスありがとうございます。
マニュアルもなく悪戦苦闘しています。
呼び出しができないことには何もできず、
あの手この手でいじり倒している最中です。
>>462 マニュアルって、
php公式のオンラインマニュアルのことをいっているのだと思われ。
467 :
426 :2005/06/24(金) 22:30:19 ID:???
レス遅れてすいません
皆さんありがとうございました。
>>431 大変参考になりますた。やっぱりHello Worldから始めることなんですね。
参考書は、関数一覧とか、PHPではこういう書き方をしますとか、まずそういうのが
飛び込んできて、サイトらしいものがどのような構造で作られてるのか
全体像が見えなかったんです。まず形になっているもの、テンプレートというか
初心者にやさしいシンプルなPHPがあって、それをいじりながら勉強・・・みたいなものを
勝手に思い描いてたんですけど、改めます。。 時間かかりそうです。
>>437 ブクマに入ってるんですけど、自分はまだこれを参考にする段階じゃない
とか思ってますた。よんでみます・・・
>>438 そうですね焦ってるというか、本当に普及してきていて
似た見た目(機能)のPHPサイトを度々見るので、きっとテンプレも
あるはずだと思っちゃったんですよね 近道思考というか、大昔初めてサイト
作ったときにそんなやり方でHTML勉強したのを思い出して・・・
Perlを勉強したときのよーに1からやります、ハイ。
オラわくわくしてきますた。
>>467 長くて読む気にならんけど、「ブクマ」に失笑
爆笑
phpのtar の中にspecが入ってるんだけど、そのspecでrpmビルドすると buildconfが実行されるんだけど、buildconfを実行するとどうなるんでしょうか
472 :
nobodyさん :2005/06/25(土) 02:32:16 ID:n/Krloyt
「ゲームサーバー構築」はどのスレ行ったらいいでしょうか
聞きたい事によるんじゃないかな。 ここはPHPというプログラム言語のスレなのでそれ以外はスレ違いになるけど。 ・何から手をつけていいか分からない -> オイラもどこに誘導していいか分からない ・webサーバ等の一般的な鯖を構築したい -> 各OS板か自宅鯖板 ・サーバ・クライアント プログラムを作成したい -> プログラム板 etc.
474 :
472 :2005/06/25(土) 04:48:00 ID:6Ztw8aQ7
475 :
nobodyさん :2005/06/25(土) 08:39:15 ID:YtxstrO5
Ladybug.phpっていうWeb埋め込み型アンケートがあったんですが、それを再配布してる所って知りませんか?
phpで乱数を表示させるにはどうやればいいんでしょう? 10〜32ぐらいの範囲で表示させたいんですが
便乗質問。 乱数を発生させる時の、 srand()とかで種を植えるってどういう事ですか? しなかった場合とどう違うのでしょうか? # php4.2以降は自動になって不要なのですね
>>479 種を蒔かなけりゃ、まともな実(乱数)は得られません。
工業物のように同じ生産物が欲しければ同じ種を、
ひとつひとつの異なる味わいが欲しければ、
それぞれ蒔く種にも違いを与えます。
コンピュータの発生させる乱数は真の意味でランダムなわけではない。 意図的にランダムな種を植えてやらないと、コンピュータはアフォなので、randが毎回同じ値を返してしまう。 srandの引数には、その瞬間の時刻などのランダムになりやすい要素を与えてやる。 (プログラムは人間のきまぐれで実行されるので、まず間違いなく時刻は実質上ランダムになる)
PHPの場合に限れば、最近のVerはrandの際には自動でsrand相当が働くので、 いちいちsrandする必要は無い。 あえてsrandするのは・・・ 例えば、100件のリストをシャッフルしたりする場合、 リスト値の頭に個々に乱数値を付けてからソートし、 そのリストをページ分けしたりする場合。 まぁ、普通はそんな事しなくてももっと簡単な方方があるけど。
echo文の中に文字列と変数を混ぜて書く場合はコンマで繋ぐ、とモノの本に 書いてありましたが、 echo "<p>番号 $bango1 と $bango2 </p>"; でも希望通りに表示されます。でもこの書き方って良くないのでしょうか?
問題はないけどコンマでつなぐほうが多少速い
なるほど、分かりました。 お返事感謝します。
問題はないけどマンコでつなぐほうが多少臭い
なるほど、分かりました。 お返事感謝します。
体感でそんな変わると思わんけど。
初心者の初心者的質問なんですが。 DOCTYPE以下HTMLのヘッダだけ header.incに書いておいて mainのphpでincludeしようとしてるのですが titleタグに変数を書いておけば動的に指定できると思うとそうはいかず ($hogeと変数名がそのまま出力される) じゃあheader.incの中身をヒアドキュメントで囲んだphp文に変えると 変な挙動を起こします(ブラウザから表示されたソース見るとincludeされてない) 逆にCのincludeみたいに「ただそこに入れるだけ」だと思うと <?php - ?>でかこったphp文の中にいきなりDOCTYPEなんかが入ってきて まともに動作するのが妙です。 PHPのincludeはいったい何してんでしょうか。 ちなみにわざわざhtmlヘッダを用意するのは、あとで静的HTMLファイルを作成する時使う予定だからです。
>>493 とりあえずソース晒さないと誰にも分からないよ。
>>493 > mainのphpでincludeしようとしてるのですが
>titleタグに変数を書いておけば動的に指定できると思うとそうはいかず
これ、やってるけど普通にできるよ。
どっかでparseミスしてない?
496 :
493 :2005/06/26(日) 01:13:46 ID:???
失礼。こういうのまんま貼ってだいじょうぶかな? ----header.inc <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>$title</title> <meta http-equiv="content-type" content="text/html; charset=euc-jp"> </head> <body> ----ここまで ----main.php <?php $title = "おらのぺーじ"; include("header.inc"); ?> 本文だじぇ </body></html> ----ここまで これで main.phpをブラウザで開くと、タイトルが$titleとして表示される。 ページのソース見ても $titleまんま表示された。なんでだろ?という話です。
<==
498 :
493 :2005/06/26(日) 01:34:02 ID:???
あふぉでした。 $titleを<?php echo $title; ?>としたら出ました。 と書こうとしたら<==というのもあるのか。。。 includeされた部分が自動的にphp外である、というのは まあ仕様って思ってればよいのですね? まんず失礼すますた。
>>497 すいません<==って何ですか?
検索キーワードでもいいので教えてください
<?php
$mail = '<a href="mailto:
[email protected] ">E-Mail</a>';
echo "メールは $mail まで<br>";
?>
↑のように$mailの周りにスペース入れないと
「メールは」
で終わってしまうんですけど、そういうものなんでしょうか。
スペースを詰める何かいい方法ありますでしょうか。
>>501 PHPの中の人は、" "内で$を発見すると、できるだけ長くなるような変数名を探そうとする。
$mailまで = '<a href="mailto:
[email protected] ">E-Mail</a>';
echo "メールは$mailまで<br>";
または、
echo "メールは${mail}まで<br>";
のように、どこまでが変数名なのか{ }を使って教えてやればよい。
文字列演算子 . を使って文字列の結合をするのも手やね
503 :
501 :2005/06/26(日) 04:04:02 ID:???
>>502 大変参考になりました。ありがとうございます!
exitってわざわざ記述した方が良いの?
記述したいときに記述したらいい。
ありのままに。 きりぎりすはぱぱ。
<TEXTAREA rows="8" cols="20"></TEXTAREA> の内容をPOSTで送り、受け取ったデータを一行ごと別々の変数に入れたいのですが、 どうすればいいのでしょうか?
>>507 別々の変数名ってならチト面倒。
配列ってなら、受け取ったデータを、
改行コードでexplode
で桶。
>>488 カンマでもイケル。
意味は異なるけど出力は同じ
printはできるけど、echoはできないんじゃなかったっけ。 確か配列として渡すって奴でしょ。
>>512 なんの話でつか?
ちなみに
・printには戻り値がある。echoにはない。
・printには1つしか引数を渡せない。echoにはいくつでも渡せる。
違いと言う違いはこのくらいだけど、
PHPが内部で素直に動いているなら
>>484 の言うようにコンマのほうが早いかも。
ピリオドでつなぐと文字列の結合をしてから出力するはめになるから。
<a href="?mode=sample">sample3</a><br> <? php if (mode=='sample') { include("./formsample3.php"); } else { echo "ここに表示されます"; } ?> Ifの行でエラーが出てしまいます。。 ?mode=で渡してページを切り替えたいです。おねがいします
>>514 むしろphpversion()を実行して出力結果を我々に報告したまえ。
話はそれからだ。
518 :
514 :2005/06/26(日) 16:57:26 ID:???
( ゚д゚) <? php ...? (つд⊂)ゴシゴシ (;゚д゚) 半角スペースある? (つд⊂)ゴシゴシ _, ._ (;゚ Д゚) 半角スペース入ってるよね
もしかして大漁?w
Perlの$/ = "\n"、Javaのprintlnに相当する機能は何ですか?
PHPでアクセス解析スクリプトを書いています。 $ip = getenv('REMOTE_ADDR'); でリモートアドレスが $ref = getenv('HTTP_REFERER'); でリンク元が取得できますが、 さらに閲覧しているブラウザの種類、OSの種類を調べるには どうしたらいいでしょうか?
HTTP_USER_AGENT
526 :
514 :2005/06/26(日) 19:36:32 ID:???
>>519 どこのことでしょうか。
釣りじゃありません。
>>526 釣られついでに・・・
<? php
↑
ここ
>>519 しっかしタイミングサイコーだったな
禿藁www
529 :
523 :2005/06/26(日) 20:48:58 ID:???
>>524-525 > print_r($_SERVER);
$_SERVERで調べてみましたら、
$_SERVER['REMOTE_ADDR'] …… ユーザのIPアドレス
という用法がありました。
> $ip = getenv('REMOTE_ADDR');
getenvは使わなくても済むんですね。
530 :
514 :2005/06/26(日) 21:03:14 ID:???
なあー、お前ら本当に釣りだと思ってレスしてるの?
>>531 釣りじゃないとしたら、逆に涙が出てくる。
>>500 漏れもわからん、それ初めて見たけど、どういう風に使うんだろう?
>>502 ${mail}と{$mail}どっちでもいいんだよね?
漏れはとくに意味もなう{$mail}という書き方に統一してるけど、どっちがいいとかあるのかな?
function & ???? ($a, $b, $c) と function ???? (&$a, &$b, &$c) は違いますか?
>>500 ===、<==、>==は型を区別する
(型は整数型、文字型など)
(0 == FALSE)はTRUE
(0 === FALSE)はFALSE
("0" == 0)はTRUE
("0" === 0)はFALSE
>>500 PHPのマニュアルと見ると、
戻り値に配列を返す(失敗時はfalse)という関数が多いけど、
そういう場合は、!==か===で戻り値を判定しないとうまくいかないことがある。
例えば、こういう場合。
$lines = file("sample.txt");
if($files == false) {
echo "読み込み失敗";
}
sample.txtが空のファイルの場合、読み込み自体は失敗していないので、
本当は空の配列が返って来てるのにfalseと判定されてしまう。
なので、こうする。
$lines = file("sample.txt");
if($files === false) {
echo "読み込み失敗";
}
これなら、正しく動作する。
537 :
536 :2005/06/27(月) 02:48:15 ID:???
ちょっと書き間違えた。 ×:if($files == false) { ○:if($lines == false) { ×:if($files === false) { ○:if($lines === false) {
>>538 文字列の長さがムチャクチャ長ければ
>>513 は歴然と差がでる。
ま、通常のシチュエーションでは気にする必要ないだろうが。
それと、
>>533 は速度を気にしているわけではないと思われ。
>>533 漏れも意味もなく{$mail}だけど、敢えて${mail}に変える必要性は今のとこ感じたことない。
というわけで結論
お 前 ら そ ん な こ と 気 に す ん な
540 :
nobodyさん :2005/06/27(月) 13:29:35 ID:2NmU8YuH
ソケット通信って具体的にはどんなことが出来るんですか?
マニュアルの例にコード付きで載ってるじゃん。。。
>>541 いや、全然分かりません。全く分かりません。
例えば、自分で作ったサイトに検索フォームを設置し、入力された語句をGoogleで検索し、
その結果を受信して、加工して、自分のサイトに表示する、みたいなことをしたいんですけど。
って友達に言ったら「ソケット通信で出来るんじゃね?」と言われた。
マニュアル見てもちんぷんかんぷん。レベル不足なのは分かっているけどレベルアップしたい。
だから教えて下さい。
>>542 google検索ならWebサービスが使える。
コードもわんさか転がってる。
それと、例みても理解出来ない無能さを少しは恥じろ
そんなキミにプレゼント。とりあえずこれで遊んどけ。
$keyword = "すけべ";
$result = file_get_contents( "
http://www.google.co.jp/search?q=$keyword " );
慣れてきたらfsockopenとかいじってみたり、HTTPの勉強してみたり。
言っとくけどHTTPの詳細はPHPマニュアルには載っていない。
HTTPをかじった後には友達の「ソケット通信で出来るんじゃね?」の意味がわかる。
その次はXMLの勉強。
SOAPというものがわかってきたら、ようやくGoogle Web APIの登場。
これが
>>543 のいうWebサービス。
道のりは短くはないぞ。
PHP5になって嬉しいことってある? 俺はPHP4でも満足だがおまいらもそうだろ?
性能面ではPHP5は明らかにPHP4より上だな。 アンチPHP5なのって結局は移行に手間かけられないとかPHP5ありの鯖が少ないとかそういう理由でしょ。
if($ccc<>"") { $sql="insert into tableA values ('$aaa','$bbb','$ccc')"; $result=mysql_query($sql); $sql="select * from tableA where aaa='$aaa'"; $result=mysql_query($sql); while($row = mysql_fetch_array($result)){ $xxx = $row["bbb"]; } echo "$xxx"; echo "$bbb"; exit; } ・ ・ insertはどの行で実行されるのでしょうか。 またselectはどの行で実行されるのでしょうか。(なんとなく echo "$xxx"; のような気もしますが) はじめに変数sqlにインサート文を代入し、続けて同名の変数sql に今度はセレクト文を代入しています。 mysql_fetch_arrayの$resultはどちらの結果を代入されたのか 混乱しないのでしょうか。 よろしくお願いします。
ヒント:上書きされる
>>547 最近PHP初めたばかりで5と4の違いもわからないんですけど
5の環境で開発すると、4の鯖で動かないとかあるんですか?
5で追加されたような新しい書き方してなければOKなんですよね?
(といってもどれが新しいのかもわからないけど)
551 :
548 :2005/06/27(月) 16:34:21 ID:???
>>549 上書きってことは、$resultには
mysql_query(select * from tableA where aaa='$aaa');
しか代入されないってことですか?
自分でやってみりゃわかるじゃん。。 insertがどの行で実行されるかつーのも、マニュアルのmysql_queryのページに書いてあるんだしさ。 もうちょっと頭使おうよ。
そもそも元のコードもワケワカラン 何のために while ループ内で $xxx に代入してるんだ? 最後の echo "$bbb" って何なんだ? さっぱり理解できませぬ。。。
554 :
548 :2005/06/27(月) 17:06:34 ID:???
>>553 すみません。
echo $xxx;
echo $bbb; の間違いでした。(ダブルコーテーションで囲んでいました)
省略していましたが、
>>548 の続きには自分自身にポストする入力フォーム
があります。入力されたデータをレコードに登録し、その後登録したものを
表示する、といったものです。
>>551 上書きするまでは、ちゃんと最初のmysql_query()の結果が入ってるよ。
>insertはどの行で実行されるのでしょうか。
>またselectはどの行で実行されるのでしょうか。(なんとなく
>echo "$xxx"; のような気もしますが)
この辺の理解が明らかにオカシイ。
mysql_query()のリファレンス(というかMySQLの項全部)を嫁
塚、変数への代入って処理自体理解してねーんじゃないの?
>>554 別にダブルクォートで囲っていても問題ないけど >> echo $bbb;
レコードに登録した直後なんだから、登録したデータは手元の
変数($aaa,$bbb,$ccc)にあるわけで、それを表示すればいいような。
わざわざSELECTする必要性があるの?
もしかしてINSERTが正常に行われたかどうかをチェックする意味で
SELECTし直してるの?
さて、2905年はデュアルコアCPUがブレークしたわけだが 我がPHPもデュアルコアに対応すべくなにか効率的な記述方法は無いだろうか?
ヒントワロシス
>>558 すまん。。オレにはその超ロングパスは受け取れそうにない。。
デュアルコアCPUがブレークするまで後900年も待たねばならんのか。。 漏れの生きている間にはムリポ
562 :
548 :2005/06/27(月) 18:03:00 ID:???
>>555 >この辺の理解が明らかにオカシイ。
ハイ、いまいち理解していません。今読んでいる参考書がその辺
をすっ飛ばしていたもので・・。マニュアルをよく読むことにします。
>>557 その参考書の例で載っていたんです。(変数名などは変えていますが)
度素人の私は「う〜ん、そんなものなんだろう」と鵜呑みにしていました。
>>550 PHP5の特性を生かしてスクリプトを作ると4では動きません。
565 :
548 :2005/06/27(月) 20:18:58 ID:???
>>563 あれから関連サイトを眺めてみてなんとなく理解できました。
その後に皆さんのカキコムを改めて読んでみて、納得。
>>551 の発言が赤面デス。忘れてください。
567 :
548 :2005/06/27(月) 20:32:07 ID:???
>>566 「
>>551 の発言に」の間違いです。
流石にprog板の住人さんは一字一句にキビシイですね。
発言に顔があったって、いいジャマイカ
これってバグ? $str = '?&&&'; $arr = array( 0x0000,0xFFFF,0,0xFFFF, ); $str = mb_decode_numericentity($str, $arr, 'utf-8'); echo $str; ↓ !&& (&が一つ消える)
/main.php /subdir/sub.php /common/inc.inc /img/hoge.jpg inc.incの中に <img src="../img/hoge.jpg"> と書いておいて inc.phpを main.phpとsub.php両方にincludeすると、当然ですがsub.phpでしかhoge.jpgを参照出来ません /から始まるルート相対パスを使わずにhtmlの外部cssファイルのように、inc.inc自身を基準にして、ほかの階層にあるファイルを参照ってする方法がないんでしょうか?
にゃーにゃー
にゃ?
マジくだらなくてすまん。phpはじめたばっかりなんだけど、 日本語が表示できない!どうすれば良いですか? <?php echo "日本語"; ?> 実行すると→ ??{? <?php header('Content-Type: text/html; charset=euc-jp'); echo "日本語"; ?> 実行すると→ ??{? Shift-JIS、SJISにしても同じ ・VineLinux3.1、Apche2、PHP4.3.11 #apt-get install php-apacheで入れました [mbstring] mbstring.detect_order auto auto mbstring.encoding_translation Off Off mbstring.func_overload 0 0 mbstring.http_input auto auto mbstring.http_output SJIS SJIS mbstring.internal_encoding EUC-JP EUC-JP mbstring.language Japanese Japanese mbstring.script_encoding no value no value mbstring.substitute_character no value no value ・エディタ・送信ソフトはDreamWeaver(WINDOWS)、送ったファイルをcat等で見ると日本語で見れる ・pukiwikiでは完全に日本語使えてます
577 :
575 :2005/06/28(火) 02:36:00 ID:???
>576 理解できなくてゴメン ・mbstring.http_output をEUC-JP にしてみた →かわらず ・以下のページを表示 <?php mb_http_output("EUC-JP"); echo mb_http_output(); echo "<br>日本語"; ?> ↓結果 EUC-JP ??{? イキテテスマン
>>575 php.iniの設定のどこか。
もれもさっきインスコしたら文字化けしたから、
php.iniのどこかが悪いと思って現在調べ中。
今までレン鯖においてテストしてたから(;´ω`)
きさま!
580 :
578 :2005/06/28(火) 05:04:14 ID:???
>>579 反省してます。ゴメンナサイゴメンナサイ・・・
で、報告ですが、やはりphp.iniの設定が問題ですた。
>>576 さんのおっしゃるとおり、mbstringまわりが怪しいかと。
結局自力じゃ無理と判断し、『php.ini 設定』でググって設定しますた。
3つ目のサイトぐらいのphp.iniの設定でようやく文字化けがなおった・・・
ということで
>>575 さんもガンバッテ
<?php $rndphp[0] = '<?php require("test.php"); ?>'; $rndphp[1] = '<?php require("test2.php"); ?>'; $length = count($rndphp) - 1; srand( (double)microtime()*1000000 ); $num=round( rand(0,$length) ); print("$rndphp[$num]"); ?> これでHTMLにtest.phpかtest2.phpのどちらかを ランダムに出力したいんだけど上手くいかない…どなたかご助力お願い
>>581 test.php と test2.php の中身と目的があいまいだが、
<?php
$rndphp = array( 'test.php', 'test2.php' );
$filename = $rndphp[rand(0, count($rndphp) - 1)];
// test.phpとかをテキストデータとしてそのまま出力
readfile($filename);
// もしくはtest.phpとかをPHPファイルとしてインクルード
require($filename);
?>
漏れは今日readfile()を初めて使ったw
>>582 即レスthxxx PHPファイルとしてインクルードさせるファイルです。
無事できた(つд`)
>>583 一応、こんな方法もあるよ。
$rndphp[0] = 'require("test.php");';
$rndphp[1] = 'require("test2.php");';
$length = count($rndphp) - 1;
srand( (double)microtime()*1000000 );
$num=round( rand(0,$length) );
eval($rndphp[$num]);
evalかー phpマニュアル読み直してきます _/ ̄|○ ホントアリガト…
586 :
nobodyさん :2005/06/28(火) 11:34:29 ID:NOgQf4l5
今phpとフラッシュを連携する勉強をしているのですがどうしても動かないのでぜひ教えていただきたいです。 txt→php→swfの順にダイナミックテキストを使用して読み込むようにしています。 apacheとphpは動いています。MX2004を使用しています。 現在txt→phpやtxt→swfで表示はされるのですがtxt→php→swfとやると、何も表示されないのです。 変数やスクリプトを確認しても間違いっていません。 apacheやphpでフラッシュと連動させるときは何か他に設定などが必要なのでしょうか?よろしければ教えていただきたいです。
587 :
nobodyさん :2005/06/28(火) 11:35:00 ID:NOgQf4l5
586の続きです 下記にtxt、php、swfの中身を書いておきます。いずれも同じファイルの中にあります。 ・・・・・・・・・・・・・・・・・ txtの中(ファイル名はsamPHP01.txtです) テストです。 ・・・・・・・・・・・・・・・・・ phpの中(ファイル名はsam02a.phpです) <?php if (!($fileTxt = fopen ("samPHP01.txt", "r"))) { die("ファイルが開けません。"); } while (!feof($fileTxt)) { $vTxt = fgets ($fileTxt, 4096); } fclose($fileTxt); echo "txtIn=".$vTxt; ?> ・・・・・・・・・・・・・・・・・・・ swfの中(ダイナミックテキストのインスタンス名はphpTxt1です) varsData2 = new LoadVars(); varsData2.onLoad = function () { phpTxt1.text=this.txtIn; } varsData2.load("sam02a.php"); ・・・・・・・・・・・・・・・・・ よろしくお願いいたしますm(_ _)m
>>587 phpに直接アクセスしたときの結果は?
ちゃんとtxtIn=・・・って出力されてるかい
>>587 ヘッダは?
header("Content-type: text/plain; charset=UTF-8");
って感じで。
コンテントタイプはtext/plainにしなきゃダメだよ。
漏れの知る限りではFlashで文字コードはUTF-8しか対応してなかった気がするが、けっこう以前の話なので自信なし。
>>587 問題なく動作した。
onLoad に trace(this.txtIn) を入れて確認してみれ。
591 :
587です :2005/06/28(火) 12:59:35 ID:NOgQf4l5
>>587 さん
返信ありがとうございます。
localhostでphpを動作すると
txtIn=テストです。
と出てきます。
592 :
587です :2005/06/28(火) 13:04:27 ID:NOgQf4l5
すいません上は588さんの間違いですm(_ _)m 589さん返信ありがとうございます。 すいません初心者なのでヘッダの設定はどうやるかわかりません。 header("Content-type: text/plain; charset=UTF-8"); をphpでechoを使って表示させるのでしょうか? よろしければ教えていただきたいですm(_ _)m
593 :
587です :2005/06/28(火) 13:08:54 ID:NOgQf4l5
590さん返信ありがとうございます。 動きましたか・・・・。 なぜ私のでは動かないのか本当に困っていますorz onLoad に trace(this.txtIn)を入れても何も表示されないのです・・・。 わざわざ確認までしていただいて申し訳ないですm(_ _)m
samPHP01.txt sam02a.php はUTF-8になってる?
595 :
587です :2005/06/28(火) 13:28:43 ID:NOgQf4l5
594さん返信ありがとうございます。 初心者のためUTF-8のやり方がわかりません。 今ヤフーで調べていますが、よろしければ教えていただきたいです。 お願いしますm(_ _)m
テキストエディタで変更出来る。Macならmi、WinならTeraPad等。
597 :
587です :2005/06/28(火) 13:57:37 ID:NOgQf4l5
596さん返信ありがとうございます。 TeraPadでUTF-8にしてみましたがだめでした・・。 phpで echo "txtIn=テストです。" とやってtxtを使わないでやってみたところこれはできました。 txtで txtIn=テストです。 とやってphpを使わないでやってみたところこれもできました。 txt→swf php→swfの二つができるのになぜ txt→php→swfはできないのでしょうか? ホントに困ります・・・orz
598 :
587です :2005/06/28(火) 14:11:04 ID:NOgQf4l5
PHPって何の略ですか?
$_POSTで受け取るnameに数字を指定してるので for($i=0;$i<10;$i++){ print $_POST['$i']; } のような処理をやりたいのですが、これって不可なんですか? どうも出力されないようなので。 $val = sprintf("$_POST['%d']",$i); みたいな処理かませばいけますか? どうぞご教授ください。
for($i=0;$i<10;$i++){ print $_POST[$i]; } ' で囲った変数は無視されるよ 答えは$_POST[$i]か$_POST["$i"]
自分でやってみたんですが、sprintfじゃ普通に$_POST['0']っていう文字列になりますね。 どのようにすればいいんでしょうか・・・
>>606 どうもありがとうございました。
そこでハマってたんですね。
さっそくやってみます。
参照渡し function & ???? ($a, $b, $c) と function ???? (&$a, &$b, &$c) は違いますか?
蓄膿症になった
PHPのマニュアルって文字化け多くね?
>>609 上のは関数の戻り値(言わば関数からの出力)が参照渡しされる。
下のは関数の引数(言わば関数への入力)が参照渡しされる。
>>602 「再帰的」なんだからこういうことじゃないか?
PHP
= PHP Hypertext Preprocessor
= PHP Hypertext Preprocessor Hypertext Processor
= PHP Hypertext Preprocessor Hypertext Processor Hypertext Processor
= ... (無限ループ)
>>603 日本で一般的に使われる単語を用いてで表記すると
PHPハイパーテキストプリプロセッサ
PHP超文章前処理装置(・∀・)
>>613 引数に出力結果を格納する場合もあるけどな
618 :
616 :2005/06/29(水) 07:45:14 ID:???
> 言わば関数への入力 ↑ここへのつっこみなんで。
phpを始めて、現在掲示板を作ってみているのですが 書き込み処理時のidの振り方がイマイチ分かりません。 現在は下記の様に日時でidを作っていますが、 $id = date("ymdHis"); if(! fwrite($handle, $id. "\t" .$_POST['date']. "\t" .$_POST['title']. "\t" .$_POST['article']. "\t". "\n" )) これを古い順番から 0001 0002 0003 .... 1256 1257 .... というようにidを振るにはどうすれば良いでしょうか?
>>619 行単位で格納しているみたいなので行数をカウントして、得た行数+1をIDとする。
または別のファイルに最新のIDを保管しておいて、掲示板書き込み毎に+1していく。
どちらにしても同時書き込みが発生することを考えてロックしておかないと重複する恐れあり。
どういう用途でIDを使用するのかは判らないけど、ファイルにはIDを格納せずに
表示時(読み出し時)に画面上で連番を振っても良いような気もする。
$logfile = 'log.dat'; $records = file($logfile); $id = count($records); $fp = fopen($logfile, 'a'); fwrite($fp, "$id\t$_POST['date']\t$_POST['title']\t$_POST['article']\t\n"); fclose($fp); こんなんでいいのか? っていうか何をどうしたいのかよくわかんないんですが。 ファイルを全部読み込むのが嫌ならレコード数は別のデータファイルに保存しといたら? あれ、日時で$id作ったのにはなにか別の目的があった?
>>619 俺ならめんどくさいのでデータベース使う
0でpaddingする方法を知りたいのかな? $new_str = sprintf("%04d",$number); で、0で隙間を埋めた4文字の数値になる。 新しいidを決定する方法は幾つかあるけど、他ファイルに数字を保持しておいたり、 ファイルを全部読み直して一番大きな数値を探したり、ファイルポインタを最後に移(略)。
>>622 IDの用途次第ぢゃないの?
DBを使っても抜けのない連番を作ろうとすると面倒だし。。。
>>624 SQLでAutoincrementを使ってやればそれほど面倒じゃないと思うが。
>>624 トランザクション→ロールバックするとAutoincrementでは
飛んで空き番が発生するよ。
掲示板ぐらいなら、トランザクションを使用することもないかもしれんが。。。
関数の前にアンパサンドがつくとどうなるんでしょうか。 function & ???? ($a, $b, $c) ^^^^
630 :
619 :2005/06/29(水) 13:50:38 ID:???
レスありがとうございます。
phpに手を出したばかりで、何か作ってみたくて掲示板を作ってみてます。
idの用途ですが、ページの何処かにタイトルのみ書き出しして記事ごとにリンクをすれば楽かなと思いまして。
日時指定は暫定処置でしています。
データベースも使えたら楽そうですが、まだそんな段階ではなく…。
>>620 621
行数カウントですが、ポインタの位置でカウントのようなので、fopenでaを指定しないと動かないですよね
自分は表示の都合上、wを指定していたのでうまく動作しませんでした。
wのままで動作する方法等ありますでしょうか
>>623 その方法も知りたかったので助かりました。
>>630 fopenでモードwを指定すると既存ファイルの中身は
捨てられてしまうんだけど。。
ひょっとして1記事=1ファイルって形態にしてるの?
だったら行数は意味ないよね。
別ファイルにidを持たせるか、ファイル数をカウントするしか
ないんぢゃないかな。
PHPで作ったページで、リンクをクリックすることでPOSTになんらかの情報を入れて リンク先のページで扱うのってどうやればいいですか? GETならば?の後に書けばいいのはわかるんですが、POSTの場合は どのようにすればいいのかわかりませんでした。
>>632 フォームを通すしかないんじゃん?
JavaScriptでonclickか<a href="javascript:〜">でformのsubmit()。
>>633 なるほど、フォームですか。
そっち方面で調べてみます。
635 :
619 :2005/06/29(水) 15:26:55 ID:???
>>631 1記事=1ファイルではなく、すべての記事を1つのlogに格納しています。
そのlogを先頭から順番に読み込み、表示としているので、
カウントしてidを振り分けて書き込み・・・という流れはfopenのmodeだけじゃ無理ですよね。。。
別ファイルにid保持させるというのは全く見当がつかないのですが、どういった感じでしょうか・・・
>>635 う〜ん。話が見えない。。。長くなるけど少し整理してみる。
元発言(
>>619 )からすると、全記事=1ファイルの追記方式と
思われるので、こんな方法はどうか?と
>>621 のレス
>>630 で fopenのモードwを使っているため、その方法は使用できない
fopenのモードwを使うと、記事ファイルのサイズは0にされて、
常に最新の記事「しか」ファイルに書かれていないことになる。
それは変だから、1記事=1ファイル?という趣旨が
>>631 のレス
・id云々以前にモードwを使用して全記事=1ファイルに正しくできてるの?
・どういう理由でモードwに拘るの?
記事の書き込み部分と読み出し部分をすべて出してもらった方が
話は早いかもしれない。
php-MySQLでちょっとしたWebアプリを構築中なのですが mysql_queryなどでSQLのWHERE句に変数を使う場合は 直接SQL文を編集しなければダメでしょうか? それともバインドする方法があるのでしょうか?
>>637 ちょっと意味が分からんのだが、SQL文に変数使っても問題ない。
$sql = "select * from TABLE where status = $hensu";
見たいな形で俺は使ってる。意味が違ってたらスマンコ
>>637 PHP5ならmysqliクラスのmysqli_prepare,mysqli_stmt_bind_paramが
使用できると思うけど・・・
あまりメリットは感じないな。
>>638 の方法でいいんぢゃないの。
mail関数でリターンパスを設定しようとしたら 下記のようなエラーが帰ってきたのですが Warning: mail() [function.mail]: SAFE MODE Restriction in effect. The fifth parameter is disabled in SAFE MODE. in /home/*****/mail.php on line 9 コレはサーバの仕様上設定できないと思ってよろしいでしょうか? ちなみに$returnpathを外したり、 関数をmb_send_mail()に切り替えれば問題なく送信できます。 以下ソースです $to = "**@**com"; $subject = "test"; $msg = "yes"; $from = "**@**com"; $returnpath = "-f**@**com"; mail($to,$subject,$msg,$from,$returnpath); //←line 9
エラーメッセージにおもいっきり答えが書いてある訳だが
The fifth parameter is disabled in SAFE MODE.
このエイブルの5個の並列メーターはサフェの中でモードです。
セッション管理について分からないので教えてください。
入門書に「処理内容によってはセッション変数を強制的に破棄したい場合もある」ので
session_unset()やsession_destroy()を使え、とありますが、
どういう状況で必要になってくるのでしょうか?
いろいろぐぐって
http://www.stackasterisk.jp/tech/php/php03_06.jspとかを見てみたのですが 、
ここのログイン処理用のloginExe.phpのスクリプトを見ると
アカウントあるいはパスワードを間違えた場合にsession_destroy()を実行しています。
これがなぜ必要なのかがわかりません。
セッションIDって、同一ユーザーが継続して接続していることをサーバーが判断するためのものですよね?
わざわざパスワードを間違えたからって破棄する必要があるのでしょうか?
どなたかおしえてください。
グダグダ考えてないで実際に試してみればいいのに・・・ 入力されたデータが正しいかどうかを判断するのはセッション変数ではないので、 間違ったデータがセッション変数に格納された場合、それを破棄するようにしておかないと 以後正しいデータをセッション変数に書き込むことが出来なくなるから。 多くのセッション変数を扱う場合、session_unset()だと不都合な場合もあるのでunset()もよく使う。
646 :
nobodyさん :2005/06/30(木) 00:45:09 ID:YDSMxdfr
ifで複数の条件をまとめて指定するにはどうすれば良いのでしょうか。 Pascalを扱った事があるのですが、Pascalでは if (hoge1='あsdf') and (hoge2='おちんちん') then begin end; というように指定できました。PHPで同じように書きたいのですがどのように書くのが 最適なのでしょうか?
648 :
644 :2005/06/30(木) 01:16:58 ID:???
>>645 レスありがとうございます。
自分でも間違ったパスワードを入力してみたりはしたのですが、
ログイン時にユーザー名とパスワードが一致した場合のみセッション変数に格納するように記述したので
間違ったデータがセッション変数に格納されるという状況が想定できません。
たとえばどのような状況で間違ったデータが格納されてしまうということが起こるのでしょうか?
>>648 自分で条件を付け足して
質問の意味を実質的に変えるような真似は
やめたほうが良いと思う。
おまえさんがどういうときに
セッション変数に格納するようにしたかなんて
回答する人間が説明されずに分かるわけがないのだから。
いらないと思うなら、つかわなきゃ良いのだ。
人間は失敗して成長する。
651 :
nobodyさん :2005/06/30(木) 03:28:18 ID:Xb073jdm
ある文字列の中に配列の値が存在するか否かを返したいんです。 以下のようにしてるんですが他にもっとうまいやり方ないでしょうか? 例 $ser = 123abc; $arr = array(abc, def, ghi); $chk = false; foreach ($arr as $arrs) { if(stristr($ser, $arrs) !== "false") { $chk = true; break; } } if ($chk) echo "exist";
>>651 array_key_exists
まにゅあるみれば
>>651 難しい問題だな
$ser = 'abcdef';
$arr = array('abc', 'def', 'ghi');
// かってに'abc'って書いたけどabcとかって文字列リテラルのつもりだよね?
↑の場合もただ単にtrueって考えればいいわけ?
とりあえず今の通りにforeach使うしか方法ないね。
コールバック関数を指定する系のarray_*()関数使うって手もありそうだけど、それだったらforeachごと含んだ部分を関数化するのがベストだと思う。
>>651 ちょっとトリッキーだけど。
$ser = '123abc';
$arr = array('abc', 'def', 'ghi');
if (str_replace($arr, '', $ser) != $ser)
echo "exist";
657 :
651 :2005/06/30(木) 13:55:30 ID:???
みなさんご意見ありがとうございます。関数化することにしました。 (;´Д`)
くだらないけど、PHPコーディングするときってバージョン管理してる?
くだらないんじゃなくて物臭なだけじゃねえか
>>659 DLするのマンドクセ
phpinfo()すれば IPアドレスを取得できる環境変数名が分かるから、
それ或いはgethostbyaddr()を使って取得したホスト名をログ書き込み部分に追加する。
>>661 ありがとうございます!表示されました!
しかし本体(掲示板)の方にもIPが表示されてしまいます。
ログにだけ保存したいのですが簡単にできますか?
663 :
651 :2005/06/30(木) 20:49:56 ID:Xb073jdm
すいません。651で書いた者ですがうまくいきません。 以下の文字列"123xyz"でも"exist"になってしまいます。 何がまずいんでしょうか。。。 例 $ser = '123xyz'; $arr = array('abc', 'def', 'ghi'); $chk = 'false'; foreach ($arr as $arrs) { if(stristr($ser, $arrs) !== "false") { $chk = 'true'; break; } } if ($chk){ echo "exist"; }else{ echo "no exist"; }
true や false を文字列にすんなって。
665 :
651 :2005/06/30(木) 22:41:04 ID:Xb073jdm
>>664 true や false を文字列にしなければうまく動くんでしょうか?
どうやってもうまくいきません。
ヒントでもいただけませんでしょうか?
falseが文字列なせいで if ($chk) が真になってるんだよ。 "で括るなよ。
>>665 君は型の概念が理解できてないようだ
マニュアル読もう
668 :
651 :2005/06/30(木) 23:09:30 ID:Xb073jdm
>>666 ありがとうございました。できました。
勉強不測なようで恥ずかしいです。
phpでStrutsみたいなMVCフレームワークがいくつか出てますがphpで そんな大きなシステム作るの? だったらJavaで作ればいいのにって思うんだけど。 Apache+phpに比べてアプリケーションサーバーは重いから それようのサーバーも無いし、購入する余裕も無くてphpって選択肢になってるの?
>>669 PHPで大きなシステム作っちゃだめなの?
>>669 AP再起動の手間がないから客先で作業しやすかったりした。
ごめんごめん、攻撃してるように見えちゃったかな? phpは最近触り始めたばかりなんだけど、すごい手軽に作れちゃう のがphpの良いところだと思っていて、MVCなんか持ち出すなと。。。 phpで大規模は作れないなんて思わないけど、セッションの異なる ユーザー間でのデータ共有がファイルかDBしかないって、ちょっと パフォーマンス的にきつく感じる。 JavaならServletのオブジェクト変数にスレッド間で共有したいデータを 入れておけばよいだけだから。
675 :
669 :2005/07/01(金) 00:36:29 ID:???
674も漏れです。
>>673 TomcatでもVer5からかな、オートロードしてくれたキガス。
商用は言うまでも無く。
>>675 673じゃないけど。
漏れの客の中には業務時間中は許可なくシステムやプロセスの再起動を
禁じるとのおふれを出してくれるDQNな顧客がいるので
再起動がないPHPはありがたい。
おいらは高々「セッションの異なるユーザー間でのデータ共有」に AppServerが必要な点で、条件が厳しいと感じる。 MVCはJavaだろうがPHPだろうが、Webアプリ作るなら それに沿った方がトータルでは簡単(楽)だと思うけどね。 素のStruts&支援ツール未使用では少々使いづらいと思ったけど。
679 :
646 :2005/07/01(金) 02:58:07 ID:UlstNgah
>>647 ,649
どうもありがとうございますた!
PHPは混ぜ混ぜでも適当でも結構何とかなっちゃうから潔癖性には辛いかもな。 個人的にはそこが利点だと思うんだけど。
くだらねぇ質問でスイマセン 1つのファイルで複数のページを作りたいのですが どのように行ったらいいでしょうか?
どこへでも行けばいい
684 :
軟式PHP :2005/07/01(金) 11:54:52 ID:???
time() でえた数字を分かりやすく2005 07/01 00:00:00に 直すのってどうやるのですか?
date()
687 :
685 :2005/07/01(金) 13:39:56 ID:???
ありがとう
ちょっと長いですが、よろしくお願いします。とある本からの抜粋です。2レスにまたがります。 <?php extract($_POST); echo "<form action=\"menu.php\" method=\"post\">\n"; echo "<p>タイトル <br><input type=\"text\" name=\"t\" value='$t' size=45></p>\n"; echo "<p>本 文 <br><input type=\"text\" name=\"h\" value='$h' size=45></p>\n"; echo "<input type=\"hidden\" name=\"sig\" value=\"kb\">\n"; echo "<input type=\"submit\" value=\"検索\">\n"; echo "<input type=\"reset\" value=\"クリア\">\n"; echo "</form><hr>\n"; //データ検索結果の実行部分 if($sig == "kb") { mysql_connect("localhost","root","xxxxxx"); mysql_select_db('database1'); $wt ==""; $wh ==""; $wk ==""; //検査区分の分解(タイトル) if($t <>"") { $xt = str_replace(" " , " " ,$t); $gt = explode(" ",$xt); $wt = "title like '%$gt[0]%'"; $i = 1; $n = count($gt) - 1; while ($i <= $n) { $wt = $wt . " and title like '%$gt[$i]%'"; $i++; }} //検査区分の分解(本文) (上の”タイトル”と似たようなコード。$t が $hに、$xt が $xhに、等)
//クエリの作成 $sql = "select * from table1 where "; if($wt<>"") {$sql = $sql . $wt;} if($wh<>"") { if($wt<>"") {$sql = $sql . " and ";} $sql = $sql . $wh; } //ここからが本検索 $result = mysql_query($sql); $rows = mysql_num_rows($result); if($rows == 0) { print "検索データが見つかりませんでした。"; exit; } else { echo "<font color=\"red\">" , $rows, "件のデータがヒット<br></font>\n"; echo "<a href=\"zemken.php?s=", $sql ,"\" target=\"main\">全検索</a><br>\n"; while($row=mysql_fetch_array($result)) { echo $row["title"]; }}} ?> 以上です。フォーム(「タイトル」と「本文」)に入力された文字列を自身へポストし、 検索をかけ表示するというものです。 「//データ検索結果の実行部分」の「if($sig == "kb") {」と、その数行前の「echo "<input type=\"hidden\" name=\"sig\" value=\"kb\">\n";」の意図が分かりません。 「if($t <> "") {」だとecho文の一行もいりませんよね? またその後の $wt ==""; $wh ==""; $wk ==""; が何のためにあるのかも良くわかりません。試しに削ってみましたが、ちゃんと機能するようです。
>>689 $wt ==""; $wh ==""; $wk =="";
は
$wt =""; $wh =""; $wk ="";
としたかったんだと思う
formからpostされたときだけ
if($sig == "kb") { 以下の処理を行うということでしょう
(タイトルや本文などの他の項目は任意でこの値だけは必ずセットされている)
そんな脆弱性満載なコードは参考にするな。 で、質問書いてからコード引用しろよ。
692 :
690 :2005/07/01(金) 15:06:18 ID:???
if ($t != "" or $h != "") にしたら$sigはいらないかな 入力値が無いときの動作についての仕様しだいだけど
693 :
689 :2005/07/01(金) 15:36:24 ID:???
>>690 >(タイトルや本文などの他の項目は任意でこの値だけは必ずセットされている)
あぁ、そういうことか。フォームは2つ有るんですもんね(´・ω・`)
でも
$wt =""; $wh =""; $wk ="";
はいまだに?です。なんか要らないような・・。
694 :
689 :2005/07/01(金) 15:41:15 ID:???
>>691 >で、質問書いてからコード引用しろよ。
すみません。以後気をつけます。
>>693 error_reportimg(E_ALL);
ってつけると意味わかるかも
696 :
695 :2005/07/01(金) 15:44:57 ID:???
error_reporting(E_ALL); です
697 :
689 :2005/07/01(金) 15:55:20 ID:???
phpで外部テキストの内容をそのまま表示させたいんですが、どうすればいいのでしょうか。 感じとしては print hogehote.txt でhogehoge.txtの内容をそのまま表示してくれるような・・。 分かりにくかったらごめんなさい
readfile( 'hogehoge.txt' );
>>699 どうもです、fopenで出来そうな気がしますので試してみます。
702 :
nobodyさん :2005/07/01(金) 16:45:45 ID:uNU+fZm1
レッツPHPさんのソースでは ファイルオープン flock($fp,LOCK_EX); fputs ファイルクルーズ としてるのが多いんですが flock($fp,LOCK_UN);は書かなくても勝手に解除されるんでしょうか?
include('hogehoge.txt');
>>702 fcloseで自動的に解除されるが、レッツは"w"で開いてるから意味無い
>>699-701 ありがとうございます
readfile("./test.txt")
で表示するだけは出来ました。
ちょっと
$fp = readfile("./test.txt"):
print "$fp";
としてみたんですが結果が
----------------
hoghoge.com
hogyohogyo.com
87
----------------
となりキャラクター数が最後に付いてしまっているようです。
えーと変数をテキストだよって宣言する作業をすればいいのかな・・
>>705 readfileはファイルから読み込んだバイト数を返します。
707 :
nobodyさん :2005/07/01(金) 17:17:12 ID:uNU+fZm1
>>704 さん
ありがとうございます。
レッツのカウンタを使ってたら壊れたのでロック関係の処理を検索してました。
wでなくでr+で開いてftrancate($fp,0);でファイルサイズ0にして書き込み
に変更すれば大丈夫でしょうか?
バイト数いらない場合は・・ orz また違う方法を探さないと駄目なんですね・・
>>708 $fpに何が入っていて、print "$fp"; で何をしてるのか分かってる?
711 :
707 :2005/07/01(金) 17:34:29 ID:???
ftruncateの間違いです。 $fp = fopen($file,"w"); flock($fp,LOCK_EX); fputs($fp,$data); fclose($fp); を $fp = fopen($file,"r+"); flock($fp,LOCK_EX); ftruncate($fp,0); fputs($fp,$data); flock($fp,LOCK_UN); fclose($fp); にしたら大丈夫でしょうか? ディレクトリとかを使いたくありません。
readfileはファイルから読み込んだバイト数 のみ を返します。
>>712 なるほどでも
readfile("./test.txt");
だけだとファイルの中身だけが表示されるのは何故?
もと分かって無いと怒られそうかな・・ ;-;
で
<a href=
http://hogehoge.com >hogehoge</a>
ってurlが羅列されているテキストをHPの色んなページにチョコっとリンクとして表示させたかったので。
$lines = file("./test.txt");
foreach ( $lines as $val){
print $val . "<br>";
}
って感じにしてみました。
今後は元テキストが
http://hogehoge.com< >hogehoge
urlとリンク先HPのみを自動でリンクにとして表示するようにしようかなぁと
指定したフォルダ内にあるファイルのファイル名を全て返す関数とか無いのか?
>>716 何回も読みました・・w
動作は分かったのでひとまずいいです
動けばいい趣味スクリプトなんで
プログラムの基礎が無いので読んでも大まかにしか分かって無いようです。
じゃ、あんたはいつまでたってもそのレベルなわけだ
719 :
717 :2005/07/01(金) 20:03:10 ID:???
まあ、マッタリ自分のペースでやれるだけ頑張ります。 ありがとうございました <(_ _)> 分かりたいんですが、何が分かって無いのか分からないので。 phpいじくりながら勉強します
ま、いいんじゃねぇの
php歴2週間で、セキュリティのことなんてチンプンな者です。 閲覧者が検索ワードを入力し結果を表示させるだけのものををphpとmysqlで 作りたいんですけど、やはりセキュリティと言うものに気を配らなければ ならないのでしょうか。全く気を配らなかったとして、どのような被害が 考えられますか?
MySQLのデータを改ざんされる。
dbの脆弱性を疲れて、root剥奪
724 :
721 :2005/07/01(金) 23:16:38 ID:???
えっ、そんあ事まで出来ちゃうんですか!?怖い。でもどうやって・・? 急に自身が無くなって来ました。最低限これだけはやっとけって事にどんなもの がありますか?答えづらい質問で申し訳ない。
chmod( hogehoge.log )や fopen( "hogehoge.log" , "w" ) などで作成されたファイルの文字コードは何になるのでしょうか。
728 :
721 :2005/07/02(土) 00:10:50 ID:???
>>725 >>726 回答ありがとうございます。
XSSでググって見たらジャンジャンひっかかりますね。これだけでも進歩です。
これを足がかりに勉強します。
>>727 hogehoge.logが画像だったとして、それがchmodやfopenで左右されると思う?
書き込もうとする内容が文字コード(さらに言えばテキストに限らず画像のようなものまで)を決定します。
そしてその内容は、phpへの入力・php.iniの設定・スクリプト内のコード変換等 いろいろな場所で文字コードを変換される可能性があります。
730 :
727 :2005/07/02(土) 00:20:10 ID:???
>>729 なるほど。詳しくありがとうございます。
くだらな過ぎなのですが勇気を出して質問します。 下記でエラー(T_ECHO)になります。何処がいけないのでしょうか。 <?php extract($_GET); mysql_connect('localhost','root','xxxxxx'); mysql_select_db('lesson'); if($i<>"") { $sql = "select * from tbl where id=$i"; $result = mysql_query($sql); $row = mysql_fetch_array($result) echo $row["id"]; } ?> 『$rows = ・・・』以下を下記のように直せば大丈夫なんですが。 while($row = mysql_fetch_array($result)){ echo $row["id"];
>>732 まずは蝉コロンを忘れるな。話はそれからだ。
>>733 やっちまった。気をつけていたはずなのに・・・。鬱
まりがとう。
$file=fopen("sample.dat","a"); flock($file,LOCK_EX); $line =date("Y年 m月 d日 H:i:s")."\t"; fputs($file,$line."\n"); flock($file,LOCK_UN); fclose($file); 複数のファイル名で保存するにはどうしたらいいですか? (aaa.dat , bbb.dat , ccc.datで保存)
>>735 同じ事を後3回やっちゃ駄目なの?
それとも、ファイルそのものをコピーして別名で保存する?
>>737 症状から察するに、ただ単に文字コードがおかしいだけかと。
s151は仕様が他と違う
>>738 文字コードをいじるためにはどこを弄ればいいんですかね?
Joyful.phpのメール発射するらへんを見てみたんですが、
イマイチわかりませんでしたorz
>>740 mb_language ("ja");
mb_internal_encoding("sjis"); //この行を追加
mb_send_mail($mailto,$MailSub,$MailBody,"From: $email");
>>741 おお!できました!
ありがとうございますm(_ _)mペコリ
743 :
nobodyさん :2005/07/03(日) 19:23:17 ID:sGU6ge/d
関数側の参照返し指定 function & hoge() と、 受け取り側の参照受け取り指定 $moge =& hoge() の関係がいまいち分かりません。 ・両方とも記述しなければいけない ・関数側だけでも同じ結果 ・受け取り側だけでも同じ結果 どうなっているのでしょうか?
744 :
nobodyさん :2005/07/03(日) 19:45:27 ID:6wIeYByt
PHPからPDFを出力をしたいのですが、 たとえばベースとなるフォームをPDFや画像を用意しておき、 そのフォームの特定位置に対応する情報を出力する 差込印刷のようなことは可能なのでしょうか? それともすべてをPHPで出力するか、 あるいはこういう差込印刷をしようと思ったらOpenOfficeなりを利用するほかはないのでしょうか?
>>744 たとえば、fpdf+fpdiのような外部ライブラリを使えば、差込印刷っぽいことはできる。
んでも、細かな調整等は自分で実装しなきゃいけないよ。
746 :
744 :2005/07/03(日) 20:47:37 ID:???
>>745 おおお、FPDIなんてものがあったとは知りませんでした。
さっそく調べてみます。
情報ありがとうございました。
747 :
nobodyさん :2005/07/03(日) 21:56:45 ID:6wIeYByt
フォームについて質問です。 ひとつのFORMにsubmitボタンを複数設置することは可能なのでしょうか? 具体的には、掲示板を表示するphpにおいて各書き込みに「編集」「削除」のボタンを設置し、 共通のphpで処理したいのです。 例えば <TR><TD>774:nanashitaso</TD> <TD>本文:ちょっと1聞いて(ry</TD> <TD><FORM method='POST' action='sakujonin.php'> <INPUT type='submit' value='編集' name='editflg'> <INPUT type='submit' value='削除' name='editflg'> <INPUT type='hidden' value='774' name='kakikoid'> </FORM> </TD></TR> このような記述をしておき、sakujonin.phpではeditflgの内容によって処理を切りかえることが可能か?という疑問です。 あるいはsubmitボタンそれぞれのnameを変えておき、セットされている変数(name)によって処理を変えるのでもよいのですが。 よろしくおねがいします。
>>747 sakujonin.php を以下のようにして実験してみたらすぐ判ることを
なぜワザワザ聞くんだ?
友達が居なくてかまって欲しいのか?
<?php
echo $_POST['editflg'];
?>
>>747 編集と削除、それぞれを違うnameに汁。
それから、それぞれのボタンを押した際の$_POSTの中身を見比べて見る
751 :
747 :2005/07/04(月) 00:50:43 ID:???
おおお。あっさりできました。 どうもありがとうございました。
PHP4.3.10で、公式サイトのドキュメントのfsockopen()の例を参考にHTTP Clientを作ったのですが、 たまに4000とか14feといった、4桁の数字だけで構成された行を受け取ってしまいます。 場所も不特定で、このせいでタグが分断されてページが乱れたりしてしまいます。 fgetsのバッファを大きくしたり、socket_set_blocking()を使って非ブロックモードにしたり、 漢字コードまわりをいじったりしましたが、一向に改善されません。 fsockopenのかわりにpopenでwget -O -を実行するようにしたら、この現象がぴたりと止まったので、 fsockopen()の例では、なんらかのエラー処理がかけているのではないかと思われるのですが、 原因のわかる方はいらっしゃいますか? <?php $fp = fsockopen("www.example.com", 80, $errno, $errstr, 30); if (!$fp) { echo "$errstr ($errno)<br />\n"; } else { $out = "GET / HTTP/1.1\r\n"; $out .= "Host: www.example.com\r\n"; $out .= "Connection: Close\r\n\r\n"; fwrite($fp, $out); while (!feof($fp)) { echo fgets($fp, 128); } fclose($fp); } ?>
>>752 chunkっぽいので、
HTTP/1.1に拘る必要がなければHTTP/1.0にするとか。
マニュアルのuser notesの所にあるスクリプトの方を参考にするとか。
長いのでコードは別に書きます。 よそからGETメソッドで飛んできた「$i」により、レコードがセレクトされ内容を表示。 その後フォームによりそのレコードを削除します。 はじめはそのまま$iで削除しようとしましたが、サブミット後は$iの値が何故か消えて しまうので削除できず。 上記のように<input type=\"hidden\"〜で新たに「$id」を定義したら無事できました。 何故サブミット後に$iの値が消えてしまうのでしょうか。
<?php extract($_POST); extract($_GET); mysql_connect('localhost','root','pass'); mysql_select_db('db1'); if($ok == "おk") { $sql = "delete from hoge where id=$id"; mysql_query($sql); echo "レコードを削除しますた。"; echo $i; //サブミットした後は何故か値が消えてしまう exit; } if($i<>"") { $sql = "select * from nandemo where id=$i"; $result = mysql_query($sql); $row = mysql_fetch_array($result); echo "<p>" , "以下のレコードをマジで削除しますか?" , "</p>\n"; echo "<p>" , "●ID" , "<br>\n"; echo $row["id"] , "</p>\n"; echo "<p>" , "●タイトル" , "<br>\n"; echo $row["title"] , "</p>\n"; echo $i; //ちゃんと表示されるのでここまでは$iに値は入っているようだ } echo "<form action=\"delete.php\" method=\"POST\">"; echo "<input type=\"hidden\" name=\"id\" value=\"{$row["id"]}\">"; echo "<input type=\"submit\" name=\"ok\" value=\"おk\">"; echo "</form>"; ?>
756 :
754 :2005/07/04(月) 12:12:50 ID:???
上記のように× 下記のように○
>>754-756 セッション張ってないんだから持ち回せなくて当たり前。
で、そのコードはSQLインジェクションやXSSといった脆弱性を持っている危険なコードだ。
余所から引っ張ってきた値だからでしょ。 セッション利用すればいいんじゃないかな。
>>754 webprogの特徴として、ページを表示するごとに接続が切れる、
そのため前のページで何をやったか覚えてない、っていう事があります。
この辺りの話は、webprogの本やサイトでは基礎の基礎として取り上げられている筈なのでそれらを参照。
要するに、次のページで必要なデータがあるならきちんと渡してやらなきゃいけない。
確認ページ
入力 : $i
出力(formの部分、次の画面での入力) : id=$raw['id'] ok=おk
実行ページ
入力 : id=$raw['id'] ok=おk
今すぐ$idを料理しる
消毒♪消毒♪
762 :
754 :2005/07/04(月) 13:41:05 ID:???
皆さん回答ありがとうございました。
セッションですか。勉強不足でした。
>>760 $idを料理ってなんですか?クッキング?
>>761 消毒って何ですか?毒を消すこととは違いますゆね・・。
763 :
nobodyさん :2005/07/04(月) 15:14:23 ID:70zY79R6
PHP5にてあるクラス(仮にC)が特定のinterface(仮にI)を継承しているかを newする前に調べたいと考えているのですが その為には、文字列でCを指定しなくてはならないのですが instanceof & is_a ← 文字列を指定できない (objectのみ) ('C' instanceof I) is_a('C', 'I') // 必ずfalse is_subclass_of ← PHP5.3以上なら文字列を指定できるもののinterfaceには使えない is_subclass_of('C', 'I') // interfaceでは必ずfalse get_parent_class ← 文字列を指定できるもののinterfaceには使えない get_parent_class('C') // interfaceでは必ずfalse と思いついた方法を試してみたのですが、どれも上手くいかずに行き詰ってしまいました。 どなたか上手い方法をご存知の方がいらっしゃいましたらよろしくお願い致します
764 :
nobodyさん :2005/07/04(月) 15:49:25 ID:LXfnoi1Z
質問です。 HTMLファイルを読み込んで、そのHTMLファイルのコメント部1(<!-- コメント1 -->)〜コメント部2(<!-- /コメント -->)までを 変数$hensu に代入する方法を教えて下さい。
764です。わがままなのは分かっていますが、もう少し詳しく教えてくれませんか。 文字列の切り取り関数とかあるのかと思ったのですけど…。
768 :
軟式PHP :2005/07/04(月) 16:35:17 ID:???
>>767 本当にわがままだな。
$pattern = "/<!-- コメント1 -->.*?<!-- コメント2 -->/s";
preg_match( $pattern, $html, $matches );
$hensu = $matches[0];
>>767 substr
strstr
strpos
で出来ないこともない
>>768 ありがとうございます。ではそちらのスレで聞いてみます。
そしてこれを機に正規表現を勉強してみたいと思います。
>>769 ありがとうございます。ちょっとやってみようと思います。
一通り勉強すれば。
>>773 一応動けばよいのであれば、3日学習すればできるかな。
そっか・・・じゃあちょっとサイト見て回るよ
if ( ($hoge != 'foo') or ($hoge != 'bar') ) { ... } $hogeがfooかbarでなければ、の処理をもうちょっとスマートに書けませんか
正規表現を使う
要らない括弧を外す
fooかbarでなければ、、、という条件であれば if ( ($hoge != 'foo') and ($hoge != 'bar') ) { ... } ではないかと。。。 オラに思いつくのはこんな感じか。あまりスマートではないか。 if (!in_array($hoge, array('foo', 'bar'))) {
>>780 恐らくfooでもbarでもなければ、と書きたかったんだろう、と。
曖昧な表現は怖いな
二つ程度なら余計なことしないが吉
PHPでブログのトラックバックの仕組みを作ろうと思っています。 ですが、いまいち「トラックバック」の意味がよくわかりません。 相手のURLを自分のブログの記事に登録して+相手のブログに PNG送信すると言う事でしょうか? 何か開発する上でわかりやすいサイトはありませんでしょうか?
>fooでもbarでもなければ はandだべさ。 つかあれをorで結んだら100%真になるべ。
785 :
777 :2005/07/04(月) 21:00:56 ID:???
どうもうまくいかないと思ってたらorじゃなくてandでしたね。
レスありがとうございます。
>>780 参考になりました。
>>783 俺的にはトラックバックでググって出てくる頭5、6個ぐらいで事足りたけど。
む・・・pingって「ピング」と発音するのか・・・「ピン」だと思ってた
日本でならどっちでも良いだろ。
>>753 ありがとうございました。
fsockopenのuser notesにあるrichardaburton at hotmail dot comの方のサンプルコードが
ずばりそれらしいものでした。
790 :
nobodyさん :2005/07/04(月) 22:01:08 ID:v9+48Ieq
レンタルカウンターを探しております。 今日○人 合計で○人と表示できる物はあるでしょうか? 携帯対応で始める数字を最初から設定できる物があれば嬉しいです。 誰か知っていれば教えて下さい。
791 :
nobodyさん :2005/07/04(月) 22:07:17 ID:a2/wuPFv
くだらない質問かどうかわかりませんが質問します。 ずばり、HTMLはダウンロードできるが全くレンダリングされない症状が出ました。 たまにレンダリングされたりされなかったりするページもあれば、絶対にレンダリングされないページもあります。 ソース表示を行うとしっかりとhtmlがダウンロードできているようでソースは普通に見れますが ブラウザに全くなにも壱文字も表示されません。 何故かは不明ですが、Windows上のInternetExplorer6でのみ発生します。 Mozilla Firefoxではこの問題が発生するページでも全く問題なく、普通に表示されます。 サーバーの問題かと思い、いくつかのレンタルサーバーで試しましたが同じでした。 htmlを出力しているのはphpファイルです。 知ってる方いらしましたらお願いします。
793 :
791 :2005/07/04(月) 22:19:08 ID:a2/wuPFv
文字コード関係は完璧です。 文字コードで苦労していた頃もありますが、 今回はもっとわけのわからないエラーが発生しています。 この問題で不思議なのはソースが見れるのに画面は完全に白紙になることです。(IEのみ) 原因不明です。このページではmod_rewriteなどは一切行っていませんので引数のエラーなどではないようです。 http headerもしっかりとtext/htmlでアクセスしているようで文字コードも問題ありません また たまに表示されることがある という意味不明の現象を繰り返しています。
>>793 念のため聞くけど、そのソースをローカルに保存して開いてみたらちゃんとレンタリングされるんだね?
html-lintでも使ってチェックしてみれ
文字コード認識の失敗じゃなきゃ、間違ったhtmlを吐いているとかじゃないかなぁ。
phpで作ったサイトを公開したとして、サーバー側で処理する前のphp (<?php〜?>が含まれるソース)がダウンロードされてしまう可能性ってあるんでしょうか?
setcookie()の "他のあらゆる出力" って、何?例えば?
CGIとmod_phpを両方許可する共有鯖の場合は工夫しないと覗かれる。 あとはサーバの設定トチったり、セキュリティホールがなきゃ可能性は無い。
800 :
791 :2005/07/04(月) 23:22:25 ID:a2/wuPFv
>>794-796 神、ゴッド
HTMLであるのにXHTML用のタグが一行だけ入っていました
ただ単に タグの後方に / が入っている単純な間違いでした(それもひとつだけ)
いつもならこの程度はお得意の無理矢理レンダリングで表示してくれるieなんですが
今回は何故かレンダリングしてくれませんでした・・・
InternetExplorerの完成度の低さを痛感する今日この頃です
私も完成度低いですね
出直してきます
>>798 リスポンスのmessage-body部分。
Status-Line
*(( general-header response-header entity-header ) CRLF)
CRLF
[ message-body ]
いくらなんでもそれをIEのせいにするなよwww
>>777 switch($hoge){
case 'foo':
case 'bar':
break;
default:
/* ここに処理 */
}
805 :
804 :2005/07/05(火) 02:45:52 ID:???
change logね。
ヒアドキュメントについて質問ですが、 >>> 任意のIDとあります。 同じPHP内に、2つ以上のヒアドキュメントを用いる場合、 この任意のIDも別々じゃなきゃいけないのでしょうか? それとも同じIDでもいいのでしょうか?
試せばわかることをなぜしない
"html"もしくは"php"に表示される画像の数を、いくつ表示しているか 数で取得したいんですが、どのようにやればいいでしょうか・・・? <img src="?">
809 :
763 :2005/07/05(火) 08:58:01 ID:???
>>804 5.1から実装でしたか。
ありがとうございました。
>>807 表示させている時点で判っているはずだが…
812 :
637 :2005/07/05(火) 14:22:01 ID:???
>>638 >>639 おそれすスンマソン
別の案件やってたら質問入れたこと忘れてた。
さっき再開したときに同じことで疑問に思って思い出した。
どうもありがとう。
813 :
806 :2005/07/05(火) 15:11:33 ID:???
すみません。質問の仕方を変えます。 同じPHP内に、2つ以上ヒアドキュメントを使う場合、 一般的には別々のIDにするものなのでしょうか? 同じIDでも大丈夫のようですが、皆さんはどうなされてますか?
>>813 ヒアドキュメント自体使わないからなー
使うとしたらそのときの気分しだいかな
でも文字列考えるのがめんどいから多分全部同じにするかな
HTMLなら__HTML__、SQLなら__SQL__と対象によって統一 つか赤の他人の事気にしてどうする
816 :
nobodyさん :2005/07/05(火) 16:03:15 ID:KqOBtHLW
すいません <?php $title = "表"; ?> これがエラーになるんですが、何でですか? "表1"とかだとOKなんですが。
>>816 「shift-jis 表 0x5c」 でググって何が問題となっているのかを認識する。
818 :
nobodyさん :2005/07/05(火) 16:27:08 ID:KqOBtHLW
>817さん ありがとう。 どっさり出てきました。 とりあえず "表\" でいいかな。 プロはみんなeucで書いてるんでしょうか?
819 :
nobodyさん :2005/07/05(火) 17:03:19 ID:sbJyhs1R
質問です。 いろいろなサイトを見ながらセットアップ作業を行っていて、 phpファイルを試しに動かせるのではないか、という段階まできたのですが、 サンプル用のphpファイルをどこに置けばいいのでしょうか。 どのサイトもホームディレクトリに置いて、とかルートディレクトリに置いてとか 書いてあるんですが、じゃホームってどこ?という疑問のまま先に進めていません。 あまりにもくだらない質問で恐縮ですが、どなたか教えてください・・・。 せっかく目前まで来てるのに・・・(´・ω・`)
実行するだけならどこでもいいよ。 Web鯖立ててブラウザなどで実行したいのなら鯖の設定だ。
821 :
nobodyさん :2005/07/05(火) 17:12:28 ID:sbJyhs1R
>>820 レスどうもありがとうございます。
鯖の設定いうことはApacheの設定ファイルであるhttpd.confで
記述してやればいいということですか?
そゆこと
八つのランダムの数字を生成するのってどうやるのですか? 56481001←見たいに出力したいのですが エロイ人教えてください
つ [ rand(0,99999999) ] 使い時の注意事項はマニュアルを参考に。
825 :
nobodyさん :2005/07/05(火) 18:13:32 ID:sbJyhs1R
先ほど質問した者です。
httpd.confのServerRootを "/etc/httpd/" に指定して、
test.phpファイルをこのディレクトリに配置しました。
ブラウザで
http://192.168.1.185:80/test.php と入力しても
ページが見つかりません、と表示されました。
ちなみにtest.phpの中身は<?phpinfo();?>だけです。
なにかまだ設定が足りないんでしょうか・・・?
原因が分からなくて困っています。
どなたかヒントだけでもいただけないでしょうか?
826 :
824 :2005/07/05(火) 18:14:48 ID:???
ありがとう
自作自演?w
つ [ DocumentRoot ] httpd.confにも(英語だけど)書いてあるように、 ServerRootは鯖の設定やログ等を保持するディレクトリの指定っす。 (個々の設定(例えばErrorLog設定)とかは、ServerRootからの相対ディレクトリを指定する)
>>828 レスありがとうございました。
見事にちゃんと動きましたですよ!
親切なレス本当にありがとうございました 。・゚・(ノ∀`)・゚・。
if(isset($_SERVER['HTTP_VIA']) || isset($_SERVER['HTTP_X_FORWARDED_FOR'])){ HandleCheat('Hit_Proxy'); } if(!isset($_SERVER{'HTTP_ACCEPT'}) || !isset($_SERVER{'HTTP_USER_AGENT'})){ HandleCheat('Hit_Browser'); } これってどういう意味ですか? $_SERVERうんたらってやつが詳しく分かりやすくかいてあるサイトも教えてください
$_SERVERでググった一番上。
マニュアルくらい読め
class sup { var $hoge; function sup () { $this->hoge = 'hoge'; } } class sub extends sup { function sub () { echo $this->hoge; } } $sub = new sub(); 親のコンストラクタは働かないの?
834 :
833 :2005/07/06(水) 02:48:28 ID:???
マニュアルに書いてあった(;´Д`) 自分でうまくやりくりせんといかんのか
めっちゃ既出っぽいけれど。 例えば全角の "ABCDE" を半角の "ABCDE" に変換したい時ってどうすればいいですか? mb_convert_case() だと "abcde" 、全角のままだし、 mb_strtolower() も同じっぽい。
本スレ埋まったな。 このスレと比べて質問内容も大差なくなってきてるから、こっちが本スレ化しても大して問題なさげ?
838 :
835 :2005/07/06(水) 07:24:05 ID:???
勉強中の初心者です。文字列を単語単位で配列に格納しようと
思いまして、str_word_count というのを見つけました。
http://jp2.php.net/manual/ja/function.str-word-count.php アルファベットに関しては期待した動作をしてくれますが数字は
無視され、数字を含む単語は分割されます。
そこで上記のマニュアルにある通り[string charlist]を使って、「fri3nd」
のような文字列もそのまま単語として扱いたいのですが、ご覧の通り
肝心の[string charlist]部分が文字化けしています。str_word_countは
日本語の情報がほとんど出てこないし途方に暮れています。
ご存知の方いらっしゃいましたら、ご教示お願いいたします。
あるいはまったく別の方法がよろしいんでしょうか。
効率的で負荷が低ければ他の関数でも採用したいと思います。
文字化けしてるのかな? a`a'a~c,3を文字として扱いますよってことだと思うけど(未確認)
>>841 同意
ドイツ語、フランス語対応って感じでしょう
$list = str_word_count( $str, 1, '3');
を実行したら
PHP5.0.4
Warning: Wrong parameter count for str_word_count() in C:\home\php\test.php on line 3
PHP5.1.0b2
3を含む文字列使えた
843 :
839 :2005/07/06(水) 11:34:32 ID:???
>>840 見落としてました(汗
サーバが5.0.4なのでこの便利そうな機能は使えないんですね。
>>841 ,842
なるほど、文字化けじゃなくてラテン文字と数字の3なんですね。
だから「fri3nd」もひとつの単語ですよ、と。ありがとうございます。
>>839 のような場合はどんな関数が使えるんでしょうか?
需要はありそうなんですが。引き続きお願いいたします。
>>843 単語ってスペースで区切られてるんですよね
preg_splitで空白文字、記号で分割するのはどう
preg_split("/[\s,.?!]+/", $str);
845 :
839 :2005/07/06(水) 11:59:24 ID:???
>>844 いまちょうど見つけました。これを使うのが常識なようで、
よく調べもせずに失礼しました。ありがとうございました。
846 :
nobodyさん :2005/07/06(水) 14:49:26 ID:+dzX+yc7
質問1 hetmlで色々書いたり変数を差し込んだりしてる(略)の部分の中で functionを実行したりって出来ないもんなんでしょうか? functionで行っている一連の手続きの結果を変数におさめることが出来ればそれでもいいんですが。 $cont =<<<hoge (略) hoge; 質問2 相対パスでファイルパス($imgpath = "imge/hoge.jpg";とか$datadir = "himitsu/data";)などが 書かれたconfig.phpとか、これに類する(パスがからんだもの)ファイルを、 違うレベルの階層のファイルからちゃんとインクルードって不可能でしょうか? めんどくさくて、インクルードする側とされる側のファイルを同じディレクトリに置いちゃってるんですが 結構細かくファイルを分けてるもんで、どこかのディレクトリにまとめておいて、どんな階層からでも参照したいんですが。
>>846 1.
ヒアドキュメントの中で関数を使うのは無理。
関数の結果(return)を変数に代入して、その変数をヒアドキュメントの中で使うのはあり。
というかそれが正しい使い方。
2.
呼び出しの大元のスクリプトの場所がワーキングディレクトリとなり、
相対パスを使った場合はここからのパス指定になる。
ワーキングディレクトリの変更はchdir()で行えるが、更なる混乱を招くので止めた方がいいと思う。
オイラは defineで基準となるディレクトリ名(s)を設定して、それを使うようにしている。
win2000 IISでPHPをISAPIで入れました。 include("hoge.inc")が使いのでphp.iniをみてwin用の例(include_path = ".;c:\php\includes")を そのままコピペしてアンコメントしたのですがインクルード出来ずに failed to open stream: No such file or directory in XXXXXXXXとエラーを吐きます。 また、include("c:\php\includes\hoge.inc")とすると正常に読めます。 winでもinclude_pathの指定は可能なんでしょうか?
アンコメントって何? とりあえずphpinfoでも見てphp.iniが読み込まれてるかとか、include_pathがどうなっているかとか見れ
>>849 コメントアウトされてたので行頭の;をはずしました > アンコメント
phpinfo確認した所
include_path.;c:\php\includes.;c:\php\includes
期待通りです。
ちなみに再起動しなくてもphp.iniは再読み込みされるんですね、
Redhatでphp使ったことがあったんですが再起動しないとダメだった気が…。
>>851 バックスラッシュですよね?
今macから書いてるから化けるかも
まさかとは思うけど。。。 そのスクリプトと同じディレクトリにhoge.incが存在していて そのhoge.incの中でエラーが出てるってことはないよね。
>>853 このディレクトリにはファイル一つしかおいてないっす
hoge.incを同フォルダにおくとincludeに成功します。
855 :
nobodyさん :2005/07/06(水) 18:20:10 ID:VUICn4NH
>>855 おまいのそれは丸投げとかクレクレという。まずはPHPの知識をつけろ
それからだ
PHPでも何でもないじゃん
>>857 phpでもできるし、
もっともくだらねぇ質問の類だからスレの趣旨にはあっている。
激しくむかつくがな。
>>857 >芸能裏モノニュースさんみたいな更新情報が流れてくるやつ
を受信したいの?発信したいの?
>>858 まあ、スレ住人的には
「こんなくだらない質問するのはなあ…でも分かんないしなあ…ちょっとなあ…」
と悩める子羊に対して
「いいからウダウダ言わずに持ってこいやあ( ゚Д゚)カムーン」
と後押しする意味の「くだらない」であって、
何でもかんでも聞いていいっつー仏さんのような人間を求める香具師には
ハナからこうしてなじられちまうわけだがな
自分で頭痛くなるまで考えない香具師はいつまで経っても前進は無理
861 :
859 :2005/07/06(水) 19:10:11 ID:???
ぐはっミスった、 ×>857 ○>855
初心者が自作しようとすると バッチ処理と差分の取り方がネックになるのかな。
863 :
846 :2005/07/06(水) 19:14:53 ID:???
>>847 さん、レスありがとうございます。
function testtest($aaa){
global $kekka;
$kekka = $aaaを使ったいろんな処理;
return $kekka;
}
ってやっておいて
$cont =<<<hoge
(htmlとかいろいろ)
{$kekka}
(htmlとかいろいろ)
hoge;
って感じでしょうか?
defineか、なるほど。研究してみます。
defineを記述するphp内でルート相対パスを取得、
それを基準パスとしてdefineで宣言してしまうわけですね。参考になりますた。
864 :
855 :2005/07/06(水) 20:30:37 ID:VUICn4NH
どこで聞いたらいいのかがまず分からないので聞いてみたんですが・・ 板違いですか? どこで質問すればいいのか教えてください
865 :
nobodyさん :2005/07/06(水) 20:32:58 ID:VUICn4NH
>>864 板違いではない。話題的にはこの場所で合ってる(はず)。
ただ、俺もこのスレの住人も他のサイトの人間も、
ぐぐって調べてひっくりがえして、それこそバファリンの世話になるまで
考えまくったわけで、それでようやく理解できた「概念」は、
他人に聞いてもポンと理解できるような簡単なものではない。
そうでもしないと理解なんぞ出来ない。丸投げして人に聞いてる時点で無理ってこと。
具体的に言えば「どうすればいいですか」じゃなくて
まずプログラムという努力の成果を持ってきた上で「どこがおかしいですか」。
「まずやってみよう」「意地でも理解してみせる」
って気概の感じられない人間はプログラムの世界じゃ誰にも相手にされない。
厳しいが這い上がって来い。
…と、半端者の俺が格好つけて申しております(つД`)
868 :
nobodyさん :2005/07/06(水) 21:34:04 ID:VUICn4NH
>>866 それは十分承知してるつもりなのですけども、他のブロガーさんも何個か全く同じヤツ作ってて簡単に作れるものなのかと思いまして聞いたんです
そもそも更新情報的なんなんかはPHPであってるんでしょうか?
もう何から勉強したらいいのかわからなくて
つか、アフィだろ? 板違い
完全に板違いというわけではないが 質問に答えたところであなたがそれを実行できるのに最低限知識があるとは思えない
871 :
nobodyさん :2005/07/06(水) 23:04:12 ID:IFWSTCJy
fedoracore2で「system("crontab filename");」を実行したら /var/spool/cronにapacheユーザーが実行したcronfile(?)がで きるのにfedoracore3ではできない。 なぜ? ちなみに「system("echo $PATH");」でcrontabのパスが とおっているのは確認したし、ログインしてcrontab -u apache filename ではできました。
SELinuxとかセキュリティ保護機能働いてんじゃない?
http//---------.cgi?○○ で○○の文字を保存されていくように↓つくったんだが ある鯖ではうまく動いて、インフォシークではうまく動かないんだがなんで で? #!/usr/local/bin/perl $mes=$ENV{'QUERY_STRING'}; chomp($mes); open(FILE,">>s.dat")||die("Error!"); flock(FILE,2); print FILE $mes.""; flock(FILE,8); close(FILE);
875 :
nobodyさん :2005/07/07(木) 01:36:27 ID:OHtTbw4o
1ホスト1アクセスって言う設定は.htaccessで出来ますか?
>>875 mod_limitipconnあたりでできるけど、スレ違い。
調べてみて分からない所があればapache関係のスレへ。
すんません。 ポストしたボタンに以下の様な感じでvalueを付けて get_0 get_1 get_2 get_3 get_4 と下一桁だけが違うデータを拾う場合に preg_match('{^get_}', $_POST) のような感じで纏めて一つで拾うって事は可能ですか? 宜しくお願いします。
>>878 $before = ("get_*" を含んだ配列);
$after = str_replace("get_","",$before);
print_r($after); # 内容を確認
880 :
868 :2005/07/07(木) 03:59:53 ID:sHuTjmyq
>>870 つか教えてくれたら知識がなくてもいろいろ調べて実行するのに!!!
もうこねえよウワーン!!!
>>879 どうも。
それは処理を取得した後の話ですよね。
私の書き方がアホ過ぎた。
if ( isset($_POST["get_1"]) )
sele if( isset($_POST["get_2"]) )
sele if( isset($_POST["get_3"]) )
・・・
と沢山書かなくては面倒なので
if ( preg_match('{^get_}', $_POST) )
のような感じ引っ掛けたいのですか可能ですか?
878です。 ダサいけど配列を分解して検証しました。
>>878 <input type="submit" name="button[0]" value="ボタン0" />
<input type="submit" name="button[1]" value="ボタン1" />
<input type="submit" name="button[2]" value="ボタン2" />
<?php
if (array_key_exists('button', $_POST))
{
$button = $_REQUEST['button'];
print_r($button);
}
?>
884 :
nobodyさん :2005/07/07(木) 08:08:03 ID:55WSE5MU
レンサバに関する質問です。 PHPを使って、FTPのアカウントを管理する(追加したり削除したり)ことはできますか? FTPサーバはWebと同じホスト上で動いてて、cPanel(レンサバさんにインストールされた、Webベースの管理画面ツール)から手入力でFTPアカウントをいじることはできるのです。 これをPHPを用いたWeb上のログインと関連付けて自動的に管理したいと思っています。 まだ申し込みをする前なので具体的な環境は提示できないのですが、「環境による」という場合は、Pure-FTPdの場合を想定してもらえると助かります。 一応、OSはUnix系、WebサーバはApacheというのは間違いないと思います。
885 :
nobodyさん :2005/07/07(木) 08:11:37 ID:/h0r6Ir6
<?php require_once 'db.php'; //------------------------------------------------------------------------------- // データベースに接続する $conn = mysql_connect($sv, $user, $pass) or die("接続エラー"); mysql_select_db($dbname) or die("接続エラー"); //------------------------------------------------------------------------------- id_get(); echo $id; //------------------------------------------------------------------------------- // 接続を解除する mysql_close($conn); ?> db.php内には function id_get(){ $sql = "SELECT id FROM data ORDER BY id DESC LIMIT 1;"; $res = mysql_query($sql, $conn) or die("抽出エラー"); $row = mysql_fetch_array($res, MYSQL_ASSOC); $id = $row["id"]; } があります。 これでなぜかdb.phpの抽出エラーが出ます。接続のUser,Passなどは合ってます。 includeやrequireで別ファイルにSQLの部分だけ記述し呼び出すとエラーになるようなのですが対処法が分かりません…。 よく使う部分なので別ファイルにして呼び出したいのですがいかがすればよろしいでしょうか?
886 :
nobodyさん :2005/07/07(木) 08:16:14 ID:55WSE5MU
>>885 function id_get() 内の $conn が空っぽですね。
引数で渡してやりましょう。
>>885 変数のスコープ(有効範囲)を理解しましょう
id_get()内の$connと$idは外の$conn,$idとは別物です
あなたがやっているのは
function id_get(){
$sql = "SELECT id FROM data ORDER BY id DESC LIMIT 1;";
$res = mysql_query($sql, $未定義の変数) or die("抽出エラー");
$row = mysql_fetch_array($res, MYSQL_ASSOC);
$使えない変数 = $row["id"];
}
と同じことです
>>883 $_POST の button が有るかを見ておいて、$_REQUEST で拾うのって気持ち悪くない?
少なくとも、俺にとっては耐えられない。
>>878 <input type="checkbox" name="hoge[]" value="get_1">
<input type="checkbox" name="hoge[]" value="get_2">
<input type="checkbox" name="hoge[]" value="get_3">
<?php
if(array_key_exists("hoge",$_POST)){
if($foo = preg_grep("/^get_(\d)+$/",$_POST['hoge'])){
print_r($foo); # 又は、処理続行
}
else{
die("送信されたデータの形式が正しくありません");
}
}
?>
>>884 貴方がレンタルサーバ屋なら直接弄るのは可能だけど、
cPanel使ってるってことは、そのサーバ屋さんですらリセラーに過ぎず
貴方は更にその顧客に過ぎない予感。元々あるWebの管理ツールI/Fを
cURLか何かで叩くような自作のスクリプトで対応するしかないでしょう。
890 :
nobodyさん :2005/07/07(木) 14:29:00 ID:55WSE5MU
>>889 情報ありがとうございます。
もしかしてcPanelとソケット通信してなんとかするってことでしょうか?
それは今まで考えつかなかったのでやってみようと思います。
(FTPコマンドとかでできてしまえばなぁ・・・と思ったりしてたのですが)
cURLっていうツールは初めて知りました。
manで調べたらずいぶん豊富な機能満載ですねw
基本的にcPanelはHTTPでアクセスできるので(ポート違いで)、HTMLを正規表現で地道に弄るしかなさそうですかね。
もしかしてcURLでもっと簡単にできたりとかするのでしょうか?
あ、Cookie絡みとかうまく処理してくれそうですね。
どうもありがとうございました。
条件がいくつもあるIF文を実現させる時、書く順番、というかコツはありますか? 例えば ・二十歳で親の同意なく結婚できる ・男は18歳以上、女は16歳以上でも結婚できるが、親の同意がなければ結婚できない。 これを「$tosi」「$seibetu」「$doui」を使って実現させるには皆さんどう書きますか?
状況次第なので書く順番もコツも100点の答えはないと思う。 個人的には工夫して短く書くよりも条件が理解しやすいように書く(書きたい)けど。 例題だと漏れならこんな感じで書くかな。実際には関数化するだろうけど。 $ok = false; if ($tosi >= 20) { $ok = true; } else { if ($seibetu == '男' && $tosi >= 18 && $doui == true) $ok = true; if ($seibetu == '女' && $tosi >= 16 && $doui == true) $ok = true; } echo $ok ? '結婚OK' : '結婚NG';
if ($tosi > 20 || ($tosi >= ($seibetu == OTOKO ? 18 : 16) && $doui)) { ケコーン }
2005-07-06 22:43:41をUNIXタイムスタンプになおすのってどーやんの?
>>894 マニュアルぐらい嫁
strtotime('2005-07-06 22:43:41');
アリガトン
897 :
891 :2005/07/07(木) 19:12:36 ID:???
お返事ありがとうございます。遅レススッマセン
>>892 短っ、と思ったら
>>893 !!
マジデスカ・・・もっと勉強します。
case文で比較演算子って使えないの? case "hoge" || "fuga" : とか
やってみればいいじゃん
>>898 の書き方では使えなかったので、使えるの?じゃなく使えないの?って
聞いてみたんだけどね。
>つーか普通に式が使えるみたい ???
間違っていないと思うぞ
三項演算子って個人的に見にくいから嫌いなんだよね
906 :
nobodyさん :2005/07/08(金) 11:17:14 ID:Kz6PELZi
mb_convert_caseで全角記号<=>半角記号のみ変換できませんか?
>>906 全角-半角の変換は
mb_convert_kana
だが記号のみの変換は出来ない
mb_ereg_replaceで変換したらどう
コピペしたらcaseとkana間違いました・・・ mb_ereg_replaceで頑張ってみます
909 :
nobodyさん :2005/07/08(金) 12:34:27 ID:52zXDpei
特定の文字を入力したら、特定の文字に変換するスクリプトを作りたいんですが全然わかりません・・・orz とりあえず、なにもわからない状態で適当に書いたもの <form method="POST" enctype="multipart/form-data" action="henkan.php"><br> 変換したい文をいれてください<INPUT type="text" name="henkan" size="5"><br> <INPUT type="submit" name="submit" value="変換"><br> </form> <FORM METHOD="post"> ここに変換結果が出ますj<INPUT NAME="time" SIZE="12" value=" <?php if [$henkan=('こんにちは'); print ('Hello'); ] else [ ] ?> "> </FORM> どうすればいいのでしょうか・・・orz
゚д゚
こんな酷いソースは初めて見た
>>909 何もわからない状態で、動く文字変換のスクリプトが書けるほどPHPは甘くは無い。
マニュアルの基本構文から読みはじめなさい。
>>909 なんかむちゃくちゃすぎてどこから答えて良いのやら。。
とりあえず入力部と変換・出力部の2つに分けて、こんな感じかな。
なるべく元のソースを変更しないようにしたのでツッコミ所満載だけどね。
でも、たのむからもう少し基礎勉強をやってくださいな。
入力部(input.html)
<html><body>
<form method="POST" enctype="multipart/form-data" action="henkan.php"><br>
変換したい文をいれてください<INPUT type="text" name="henkan" size="5"><br>
<INPUT type="submit" name="submit" value="変換"><br>
</form>
</body></html>
変換・出力部(henkan.php)
<html><body><FORM METHOD="post">
<?php
if ($_POST['henkan'] == 'こんにちは') {
$value = 'Hello';
} else {
$value = '';
}
print <<<END
ここに変換結果が出ますj<INPUT NAME="time" SIZE="12" value="{$value}">
END;
?>
</FORM></body></html>
914 :
nobodyさん :2005/07/08(金) 13:36:32 ID:52zXDpei
>>912 マニュアルとかで勉強するの苦手なので、とにかくいろいろ見たり書いたりしてみようと・・orz
>>913 なるほど
Parse error: parse error, unexpected '@' in henkan.php on line 4
これなんですか?
>>914 @は全角スペースの一部
行の先頭のスペースを削除しろ
916 :
913 :2005/07/08(金) 14:10:19 ID:???
>>914 世の中には色んなヤツがいるもんだ。。
答えてやるんぢゃなかったよ。
以降、スルーしたいんで、コテハンでカキコしてちょーだい。
>>916 ィ`
世の中色んなアホがいるもんだ
何でも聞けばいいと思ってる香具師とか何でも聞けばいいと思ってる香具師とか
>>914 とか何でも聞けばいいと思ってる阿呆な香具師とかな
これからもPHPを 真 面 目 に勉強する香具師のために回答してやってくれ
つってもここはくだらねぇ質問スレなので適当に処理してください
くだらない質問に答えてくれる(かもしれない)スレであって くだらない奴の質問に答えなければいけないスレではないんだよ
>>914 電化製品と違うんだぞ。
自分で言語つくれや。
マニュアル読むの俺も苦手だし、実際に書いて覚えてきたクチだが、 そうやって勉強すると決めたからには人に聞いてはいけない。
これから勉強を始めようと思っている者です。 htmlでいえば「とほほ」みたいな感じの phpのサイトはありますか。
とほほみたいな感じってのがリファレンスとかを指してるなら マニュアルで良いと思うけど。 日本語版もあるし、機能でまとまってるし。
927 :
923 :2005/07/08(金) 20:27:33 ID:???
皆さんありがとうございます。 たくさん勉強して、今度は教える側として ここに戻ってきます!
あぁがんばれよ
無理だと思うけど
914 == 927?
>>929 中途半端な知識でうそ教えられても困る品。
文字コードについて質問させて下さい。 よく、Shift-JISは特別な理由が無い限り、使うべきでは無いという事が 色々なPHPなどのサイトで書かれています。 しかし、php.iniやMySQLを使う場合のmy.iniなどをShift-JISとしてちゃんと設定した場合、 文字化けされると言われている漢字など、一切文字化けが起こりません。 一体、何故Shift-JISを使うべきではないのでしょうか?
>>932 サーバ(Linux系)の文字コードがEUC-JPだからかな。
まぁ別に文字化け起こさないならそれでいいだろうし。
そこまで気にしなくてもいいと思う。
ちゃんとそれ用の関数もあるしね。
とかいう漏れはUTF-8が好きだけど。
表示で検索すると表オ\がマッチしてしまう。 mb使わないとね。
937 :
nobodyさん :2005/07/09(土) 12:39:28 ID:qBG5b/jy
MySQLとPHPを勉強しつつ試しにデータベースを作ってるんですが、 ループ処理でSQL文を多数連続して発行するというのはサーバーにとって問題ないのでしょうか? 数十件とか数百件の処理を行うphpをネットワーク上で複数人が同時に行ったらどれほど負荷がかかるものなのでしょうか? また、どの処理がどの程度負荷がかかるという知識はどこで学べるものなのでしょうか?
>>932 こんなことやっても化けません?
$value = mysql_escape_string('表示表示');
$sql = "INSERT INTO xxx(xxx) VALUES('{$value}')";
mysql_query($sql);
>>938 PHPでMySQL繋いで、そのSQLをInsertした後に、
レコードを表示させてみましたが、全く問題無いですよ?
940 :
932 :2005/07/09(土) 12:56:22 ID:???
書き忘れ。 ちなみに、PHPは4.3.10、MySQLは4.0.24です。 Windowsのローカル環境でテストしてます。
941 :
938 :2005/07/09(土) 13:05:31 ID:???
>>939 あれぇ。そうなんですか。
PHP 4.3.10、MySQL 4.1.12だと化けますです(表示表\示となっちゃう)。
MySQL4.0系と4.1系の違い or ウチのphp.ini周りが変なのかな。。。
元質問の方に逆質問しちゃいましたね。スマソ。
'と"の違いが分からん香具師がいるようだ。
MySQLの4.1がおかしいって気づいてない奴がまだいたのか・・・
APC-3.0.3のMMAPが有効にならないのはわしだけですか?
944 ですけど、なんかここの所頻繁にリリースしてるようなのでもう 少し待ってみます
>>937 >ループ処理でSQL文を多数連続して発行するというのはサーバーにとって問題ないのでしょうか?
それは、アルゴリズムがおかしいんだと思う。ループの中でやるのはfetchくらいが普通。
SELECTだのUPDATEだのをループ中で連発するってのは、多分SQLの書き方か、
データベースの構成そのものが変。
>数十件とか数百件の処理を行うphpをネットワーク上で複数人が同時に行ったらどれほど負荷がかかるものなのでしょうか?
気にする事はまるで無いレベル。
もしローカルでやって遅いとか思うなら、やっぱりSQLがおかしいんだと思う。JOINが変とか…
>また、どの処理がどの程度負荷がかかるという知識はどこで学べるものなのでしょうか?
MySQLのマニュアルに最適化の項があるけど、もうちょっと勉強してからでも良いんじゃないかね。
というか、データベース板で聞いたほうが良い話題かもね。
Windows BinariesにあるPHP 5.0.4 zip packageの中に php_w32api.dllが見つからないんだが・・・
948 :
937 :2005/07/09(土) 18:29:29 ID:???
>>946 レスありがとうございます。
最適化についてはもう少し勉強してからマニュアルを見てみることにします。
ループ処理でupdateとかinsertするのは何か他に問題があるのでしょうか?
ブラウザに入力した複数のレコードのデータを全部insert,updateしたかったりするのですが。
このような場合に、PHPでSQL文を連続して発行するのにSQL処理が追いつかなかったりすることはありえるのでしょうか?
949 :
nobodyさん :2005/07/09(土) 19:02:15 ID:XiYWtJZE
$str = system("/usr/bin/nslookup google.com"); print "$str"; nslookupの結果を表示したいのですが、 上のようにすると、$str が、表示されません。 しかしながら、IPは表示されるので、 system関数だけで、表示までしてしまっているようです。 コマンドの結果が、$strに代入するには、 どのようにすれば良いでしょうか。<(_ _)>
>>949 > コマンドの結果が、$strに代入するには、
日本語勉強し直してから来いや。
951 :
949 :2005/07/09(土) 19:16:02 ID:???
すみません。 nslookupコマンドの結果を、$strに代入したいです。 よろしくお願いします。<(_ _)>
952 :
950 :2005/07/09(土) 19:31:30 ID:???
953 :
949 :2005/07/09(土) 19:38:15 ID:???
954 :
nobodyさん :2005/07/09(土) 21:42:57 ID:5B+sqzqa
XAMPPでmysql+php環境を作ったんですが、 dreamweaverからlocalhostのMYSQLにつなげられません。 MYSQLの設定がよろしくないからということまではわかったんですが どこを変えればいいんでしょうか・・・phpmyadmin からはそれらしい項目が見つからず、困ってます お助けを・・・
955 :
954 :2005/07/10(日) 00:01:59 ID:???
ちなみに動的テーブルを挿入しようとすると、次のようなエラーがでます。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ HTTPエラーコード 404ファイルが見つかりません。考えられる原因はつぎのとおりです: 1)サーバーマシン上でテストサーバーが動作していません。 2)このサイトに対して指定されたテストサーバーが http//localhost/_mmServerScripts/MMHTTPDB.php URLに対してマップしていません。 URL 接頭辞がサイトのルートにマップしていることを確認してください。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
dreamweaverの設定が悪いんだろ。
http// ↑ん
っうぇ
exec関数を使ってシステムの操作をしたいのですが どうもexec関数が実行されないようなので質問させてください。 例えば $message=exec ( 'ls ', $directory , $ret ); このようなことをやってファイルの一覧を取得しようとしても、$ret,$messageともに空です。 $directory はフルパスで指定したり、変数ではなく'ls /path' というような指定をしてもだめでした lsの方をフルパス指定しても同じです。 しかしこれらの問題はブラウザの方から実行した時の問題で、 コンソールからは問題なく実行できます。 フォルダに対してapacheのアクセス権はもちろんあります。 セーフモードの解除もしてあります PHP 4.3.9
>>959 それ、ドット (連結演算子) じゃなくてセミコロンになってるのだわ。
961 :
960 :2005/07/10(日) 18:48:04 ID:???
同じようにやるのなら、こうでも良いんじゃないのかしら。 $message = shell_exec("ls ".$directory);
962 :
959 :2005/07/10(日) 21:51:09 ID:???
すみません プログラムのほうではドットになっています。 それからまた、プログラムの中で直接ディレクトリを書いても exec('ls /path' ); だめです また、shell_execも使ってみましたがやはりだめでした。
963 :
960 :2005/07/10(日) 22:49:40 ID:???
>>962 そのスクリプトの動作確認に使っているのは Internet Explorer ?
もしかして、一番始めに表示確認して失敗した状態 (何の出力も無し) のままを
ブラウザがキャッシュし続けている、という可能性は無いのかしら?
一度、明示的にキャッシュを破棄するヘッダ (Cache-Control:no-cache) を追加
するか、ファイル名そのものを変更してみるというのは如何かしら。
<?php
exec("ls",&$exe);
die(print_r($exe));
?>
私の環境では、これだけのものでも正常に動作するのに。おかしなものね。
964 :
959 :2005/07/11(月) 00:08:57 ID:???
lsで開きたいディレクトリはネットワーク上の別ホストからマウントしたディレクトリだったのですが、 色々試してみたところ、ブラウザで結果を取れないディレクトリは、このマウントしたディレクトリだけでした。 他のディレクトリではブラウザからでもちゃんと一覧が取れます。 もちろんコンソールからの実行結果は依然として期待通りのものです。 マウントしたディレクトリに対しても、ちゃんとlsでファイルを取ってこれます。 どうしてもこのディレクトリに対してコマンドで操作を行いたいのですが、 なにかアドバイスなどいただけませんか
965 :
960 :
2005/07/11(月) 01:06:13 ID:??? >>960 情報は小出しだった上に、原因は大方「環境依存でした」だけでも片付きそうね。
力になれそうになくて悪いけれど、私も自分自身で試してみた事以外は答えられ
ないのだわ。そもそも、PHP の範囲内で収まる内容なのかしら。