【PHP】下らねぇ質問はここに書き込みやがれ 27
■ このスレッドは過去ログ倉庫に格納されています
00011様
2006/08/23(水) 00:54:52ID:uM5Jzzy0まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆質問する場合の注意
1. 自分のIDを表示させること。(メール欄に何も記述しないでください)
2. サーバーのOS、WebサーバーとPHPの種類やバージョン等を明記すること。
3. 己の行った操作、変更などを詳しく明記すること。
4. エラーメッセージはそのまま表記すること。「エラーが出ます」では絶対分かりません。
5. 質問者としても態度をわきまえること。
6. 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・質問者は必ずIDを表示させてください。(メール欄に何も記述しないでください。)
・2回目以降は最初に質問した際のレス番号を名前欄に入れてください。
(逆に回答者は質問者に対して>>(アンカー)をつけて答えてください。)
・解決しなくても回答をもらった場合はお礼を言う。
(荒らし、煽りは除く。逆に煽られたときも、無闇に反論せずスルーすべし)
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・オブジェクト指向については良スレがないから本を買え。理解できないならムリに使うな。
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
0081nobodyさん
2006/08/24(木) 17:09:20ID:???0082nobodyさん
2006/08/24(木) 17:12:00ID:???一応、骨格は作れそうです
ただエラー制御やセキュアな環境にするためには、まだまだです
しかし、、、UIを作り上げるための時間が残り少なく・・・
お叱りはごもっとも
また叱ってください!!
0084nobodyさん
2006/08/24(木) 17:27:26ID:wCBGqZdjPOSTのほうがマシとかあるの?
関係ない?
0085nobodyさん
2006/08/24(木) 17:32:03ID:???ど素人でもなんとなく意味もわかればいじられるかもしれないし。
まぁどちらかと言えばGETが悪いってくらいで、あんま変わらんじゃね?
0086nobodyさん
2006/08/24(木) 17:33:26ID:???0087nobodyさん
2006/08/24(木) 17:36:42ID:wCBGqZdj0088nobodyさん
2006/08/24(木) 17:37:17ID:???0089nobodyさん
2006/08/24(木) 17:44:08ID:wCBGqZdj0091nobodyさん
2006/08/24(木) 18:42:42ID:???0092nobodyさん
2006/08/24(木) 18:50:13ID:???0093nobodyさん
2006/08/24(木) 18:52:41ID:???//結果:100000000001
$kore = 1000000000000 + 1;
//結果:1E+12
12桁を超えるとこんなになっちゃうんですが、どうしたらよいのでしょうか?
0094nobodyさん
2006/08/24(木) 19:20:33ID:???乱用しないために
htmlspecial(); というグローバル関数があったと思うが
この中に変数入れまくればいいんじゃまいか?
0095nobodyさん
2006/08/24(木) 19:21:11ID:???ttp://www.php.net/manual/ja/language.types.integer.php
0096nobodyさん
2006/08/24(木) 19:21:22ID:???みたいな感じで一定の件数ごとにページを切り替えるようにしたいのですが
どこか説明しているHPなどありますでしょうか?
ググり方が悪いのか思った通りのページがhitしません。
0098nobodyさん
2006/08/24(木) 19:47:02ID:???表示するページをlist.phpとする。
このページは引数に指定された所から50件表示するページ。
http://hoge.net/list.php?start=1
みたいに引数を読み込んで動作する。
で、この場合、1から50件表示する。
(表示はループで出す)
んで、ページの中に
<http://hoge.net/list.php?start=51>NEXT</A>
と、次のページの開始位置を入れたリンクを設定する。
こうすると51番目から50件表示される。
ちなみに次のページでは、前のページに戻るためのリンクも入れておく。
<http://hoge.com/list.php?start=1>BACK</A> ←1番から50件出すってこと。
009970
2006/08/24(木) 19:59:41ID:???レスサンクスです、
function の classと比較してのメリットはなんでしょうか?
昨日 本で読んで、軽くプログラムを作っただけでは
クラスがfunction()と比較して
どういう場合に有効活用できるのかがあまり理解できませんでした。
継承とかはあとあとの修正時に便利そうだなとは感じましたが。
クラスは部品、という説明がよくありますが、
結局functionも部品ですよね?
どこが大きなメリットなんでしょう。
0100nobodyさん
2006/08/24(木) 20:16:36ID:???実際使ってみた方が理解早いと思うけどね・・・
例えるならfunctionはCPUやメモリ、ビデオカード、M/Bだ。
で、クラスはPC。
一台のPCを用意するときはパーツ用意してきて自作しても良いが、
10台20台となると同じPC一気に購入してきた方が楽っしょ。
つまり、そう言うことだ。
0101nobodyさん
2006/08/24(木) 20:19:34ID:X79pe6wS定義したものがclass。
0102nobodyさん
2006/08/24(木) 20:23:42ID:???厳密な意味でのオブジェクト指向のプログラミングはそれ専門の本などを
調べてもらうとして簡単な例をあげる
関数
function foo($a) {
$a =+ 100;
return $a;
}
function bar($a) {
$a += 200;
return $a;
}
$a = 0;
$a = foo($a);
$a = bar($a);
print($a);
0103nobodyさん
2006/08/24(木) 20:23:55ID:???function foo() {
$this->a += 100;
}
function bar() {
$this->a += 200;
}
$obj->a = 0;
$obj->foo();
$obj->bar();
print($a);
いまは $a しか foo() bar() の中で利用していないが、これが複数に
なると関数だと記述するのがめんどうになったり、
処理内容を変更したときに変更箇所が広域にわたってしまうことがある
クラスでまとめてしまうと、処理がクラスの中で閉じられるので、
そういったわずらわしさが軽減される。
0107nobodyさん
2006/08/24(木) 20:45:38ID:???クッキーに保存されなくて困ってます。。
よろしくお願いします。
0108nobodyさん
2006/08/24(木) 21:11:54ID:???$a = "1\t2\t3\t4\t5";
これを区切り文字\tで区切って
whileとかで1つずつ表示するにはどうしたらよいのでしょうか?
0110nobodyさん
2006/08/24(木) 21:17:53ID:???$b = explode("\t", $a);
foreach($b as $value){
echo $value;
}
0112nobodyさん
2006/08/24(木) 21:36:20ID:???session_start()を呼び出せば勝手にセッションクッキーが発行されてるよ。
きちんとセッションIDが渡されてるかどうかを確認するには、
HTTPヘッダーをスニファしてみればいい。ieHTTPHeadersなどが簡単でオススメ。
0113nobodyさん
2006/08/24(木) 21:38:48ID:???ぐぐったんですがいまいち見つけられませんでした
0114nobodyさん
2006/08/24(木) 22:11:59ID:???本当にぐぐったの?いっぱいでてくるけど。
ttp://www.simplephpblog.com/
こんなんとか
0119nobodyさん
2006/08/24(木) 23:32:14ID:???POSTとかGETで受け取ったデータをDBに保存する処理と、登録ありがとうございました、っていう
メッセージを出す画面を同じファイルで書いた場合、更新するともう一件データが登録されちゃう・・・
これはDBに登録する処理と画面に出す処理を別ファイルに分けるのが一番手っ取り早い方法ですか?
0121nobodyさん
2006/08/25(金) 00:46:37ID:j1RIrLGfどうやれば良いのでしょうか。
サンプルコードだとこんな感じで、10回まわったら"post"を表示せず次の処理に
移りたいです。
recursive();
function recursive ()
{
static $i = 0;
$i++;
if ($i != 10) {
recursive();
}
echo "post<br>";
}
0122愚痴
2006/08/25(金) 01:13:48ID:???0124nobodyさん
2006/08/25(金) 01:29:40ID:???encoしてるので20秒
生ソースで2秒はないだろう...
主な処理は大量演算ループです。
ふつうencoするならループ系はハヤクナルンジャマイカ?
0127nobodyさん
2006/08/25(金) 02:06:10ID:/0MHpE74PHP5.1.5
Apache2.055
WindowsXP Sp2
という構成でサイトを作っています。
問題:アクセス解析サービスでリファラが正常に取得できない
index.phpにアクセスすると携帯かPCか、アクセスクライアントを判断して
それぞれにあったページを表示しているのですが、
そのページに、以下の様なアクセス解析サービスをつけています。
<img src="http://w1.ax.xrea.com/l.f?id=100646XXX&url=X" border="3" width="40">
このように画像を読み込んでアクセス解析するタイプでは、リファラが正常に取得できないようなのです。
静的なHTMLでは正常にリファラを取得してくれるのですが、
phpからページ生成をするような場合は、リファラには全て自分のサーバがセットされてしまうようです。
どうにかphpから生成したページでも正常にリファラを取得できるようにはならないものでしょうか。
もし宜しければアドバイス頂けませんでしょうか。
0129nobodyさん
2006/08/25(金) 02:19:35ID:???そういう単純処理の高速化は難しい。
この手のソフトは一回構文を評価したのち、
早い順番に内部の関数を入れ替えてエンコードするんだけど、
その秒数は異常かもね。Zendの奴使ってるけどそんなケースはないなぁ。
0134nobodyさん
2006/08/25(金) 04:49:02ID:???プログラマだろうが知らない事あって当然
0135nobodyさん
2006/08/25(金) 05:24:08ID:???echo "post<br>";
return ;
}
recursive();
にすると末尾再帰でループに最適化・・・PHPはされないんだっけ?
0136nobodyさん
2006/08/25(金) 06:17:46ID:???0137nobodyさん
2006/08/25(金) 07:05:50ID:???php自身でリファラとればいいじゃん
静的なHTMLでもリファラは自分自身になると思うが(Javascriptとかで渡さない限り)
0139nobodyさん
2006/08/25(金) 11:56:06ID:???fopen 'r+'
ftruncate
でもダメでした。
file()やfile_get_contents()はflock中でも読み込んでしまうので
上書きのための一時的に空の状態の時に実行されてしまう事があります。
素直にfreadかfgetsでも使おうと思います。
助言くれた方、ありがとう。
0140nobodyさん
2006/08/25(金) 11:57:38ID:???私は前スレ770でした。
http://pc8.2ch.net/test/read.cgi/php/1154923910/770
0141nobodyさん
2006/08/25(金) 12:26:17ID:x7whBw5F$expire = time() + 60 * 60 * 24 * 10;
// クッキー情報をセット
setcookie("name", $name, $expire);
これで、Warning: Cannot modify header information - headers already sent by...というエラーが出るのですが、何故でしょうか?
0142(^ω^)
2006/08/25(金) 12:36:10ID:???分かりましたね!?
聞いてなかったとは言わせないよ!
ねえみなさん!
http://jp.php.net/manual/ja/function.setcookie.php
><html>や<head>タグはもちろん 空白も含め、あらゆる出力よりも前にこの関数をコールするようにしなければなりません。
0143nobodyさん
2006/08/25(金) 12:46:45ID:x7whBw5F<?php
$name = $_POST['name'];
$name = htmlspecialchars($name);
$expire = time() + 60 * 60 * 24 * 10;
setcookie("name", $name, $expire);
?>
ありがとうございます。
setcookie以前には出力は出ないようにしました。
しかし、この6行のスクリプトでも同じようにエラーが出るのですが、何故でしょうか?
0144nobodyさん
2006/08/25(金) 12:58:18ID:r3tiUVo5PHP4系とMySQL3.23系で開発してます。
no uid visit_id year month day timestamp
1 35 1 2006 8 20 1156044334
2 1 31 2006 8 25 1156437877
3 1 33 2006 8 25 1156440499
4 31 1 2006 8 25 1156441495
5 31 32 2006 8 25 1156442959
6 31 1 2006 8 25 1156442961
7 35 33 2006 8 25 1156443005
8 35 1 2006 8 25 1156443007
9 35 1 2006 8 25 1156443342
上記のようなテーブル構成でデータが入っているとき、
「同じ年月日の中で、visit_idが同じ値のレコードが複数あった場合、一つだけ選ぶ。
一つだけ選ぶ基準は、timestampが最も大きいレコード。その時のuid(またはno)」
を、抽出したいと考えています。
たとえば、visit_idが「1」のとき、「no」が「1」と「6」と「9」のレコードを得たいです。
0145144(続き)
2006/08/25(金) 13:00:30ID:r3tiUVo5SELECT `no`, `uid`, `year`, `month`, `day`, `timestamp`
FROM テーブル
WHERE `visit_id`='1'
ORDER BY `timestamp` DESC
だと、
「no」が「9,8,6,4,1」のレコードが得られます。
ここまでは想定通りです。
ここで、「uidが重複しているレコードのうち、timestampの値が小さいほう」を除外すれば、
抽出したくないレコード(「no」が「8と4」のレコード)を含まず、
当初の目的である、「no」が「1,6,9」のレコード だけが得られるはずです(…よね?)
そこで、
SELECT `no`, `uid`, `year`, `month`, `day`, `timestamp`
FROM テーブル
WHERE `visit_id`='1'
GROUP BY `uid`
ORDER BY `timestamp` DESC
と、GROUP BY `uid`を加えてみると、得られる結果は「no」が「4と1」のレコードでした。
「no」が「8と4」のレコードを得るのではなく、
逆にこれを除外して「no」が「9」と「6」と「1」のレコードを得たいと
思っていたのに、まったく正反対の結果になってしまいます。
正しい結果を得るには、どういうSQL文を発行したら良いのでしょうか?
0146nobodyさん
2006/08/25(金) 13:19:03ID:???PHP関係ないし、DB板で聞いてきたら?
0147nobodyさん
2006/08/25(金) 13:24:38ID:HJhLYM88探したけどすべて有料なんだもん。
0149nobodyさん
2006/08/25(金) 13:36:40ID:???名前はすべて苗字(漢字)名前(ひらがな)で構成されているリストから
名前=ひらがな部分を抜き出したいのですが、どうすればよいでしょうか?
0150149
2006/08/25(金) 13:37:18ID:jN6+EhEe0152nobodyさん
2006/08/25(金) 13:57:13ID:???各文字コードにあった、マッチング処理が必要だと思う
そんなことをやってくれる、公開されたスクリプトあったかな
0153nobodyさん
2006/08/25(金) 14:16:07ID:???上のページ、見てて疑問に思ったんですが、
$page = new stylesMainMenu();
$page = new mainmenu();
だけでページ表示されるんでしょうか?
$page->stylesMainMenu();
$page->mainmenu();
を行う必要はないのでしょうか?
0155nobodyさん
2006/08/25(金) 14:32:39ID:cXrhOjOgほんとくだらない質問でごめんなさい。
0156nobodyさん
2006/08/25(金) 14:33:43ID:???コンストラクタはオブジェクト作成時に自動的に実行される関数です
PHP4ではクラス名と同名の関数がコンストラクタになります
PHPでは__construct() も使えます
0157nobodyさん
2006/08/25(金) 14:43:28ID:rSZy/sXzRDF系で使われている日付形式(例: 2006-08-24T16:20:00+09:00)をタイムスタンプに変換する方法がわかりません。
dateとかstrtotimeでいけるかと思ったんですがうまくいきません。
心当たりのある方、よろしくお願いします。
0158nobodyさん
2006/08/25(金) 14:44:36ID:???VBScriptでいう「Response.Clear」みないなものはechoにはないのですか?
0159nobodyさん
2006/08/25(金) 14:48:08ID:???// Perlでの処理
@array_1 = (1, 2, 3, 4, 5);
@array_2 = $array_1[1 .. 3];
Perlの配列のスライスのように、phpで上記のようなことは出来ますか?
0160nobodyさん
2006/08/25(金) 15:16:22ID:???正規表現とmktime()でなんとかしる
>>158
http://jp2.php.net/manual/ja/function.ob-clean.php
あたりかこの近辺かと
>>159
Perl程それをスマートに書く記述はないと思う
0162nobodyさん
2006/08/25(金) 15:27:33ID:???うはーまじっすかーΣ(゚ロ゚ )
正規表現よりは桁数で拾った方が速そうではあるけど・・・
くそー今のRDF規格を作った人を恨むしかないか。
RFC822形式なら一発なのに・・・
ありがとうございました。
0163nobodyさん
2006/08/25(金) 15:37:15ID:bPaTgEu1下記のコードにおいて、methを実行することで$inにout.phpで宣言している変数を代入するには、どうすればよいでしょう?
include("out.php");
class{
var $in;
function meth(){
$this->in = (out.phpで宣言されている変数)
}
}
0164nobodyさん
2006/08/25(金) 16:02:31ID:???こんな感じ?
$rdfdate = "2006-08-24T16:20:00+09:00";
$time = strtotime(preg_replace('/(.*)T(.*)([-+])(.*):(.*)/', '\1 \2 \3\4\5', $rdfdate));
echo $time; //1156404000
0166nobodyさん
2006/08/25(金) 16:09:30ID:???正規表現が苦手なので桁数でやってしましました。
function getTime($rdftime){
$t = strtotime($rdftime);//RFC形式は通る
if($t == -1){
//RFCではない。=RDF形式
$y = substr($timestamp , 0 , 4);
$m = substr($timestamp , 5 , 2);
$d = substr($timestamp , 8 , 2);
$j = substr($timestamp , 11 , 2);
$f = substr($timestamp , 14 , 2);
$b = substr($timestamp , 17 , 2);
$t = mktime($j, $f, $b, $m, $d, $y);
}
return $t;
}
こんな感じで。
0167nobodyさん
2006/08/25(金) 16:26:32ID:???0168nobodyさん
2006/08/25(金) 17:26:44ID:???0170nobodyさん
2006/08/25(金) 18:40:51ID:???たとえば
$aaa = "あああ";
この$aaa→"あああ"につなげて"いいい"を入れたいんです。
0173144
2006/08/25(金) 19:36:10ID:r3tiUVo5アドバイスありがとうございます。
それは、何らかのクエリを二段階で投げる、という意味でしょうか??
0174nobodyさん
2006/08/25(金) 19:53:37ID:Zr4Rxmi90175nobodyさん
2006/08/25(金) 20:15:11ID:???なら簡単に作れそうなきもするけど。
0176nobodyさん
2006/08/25(金) 20:16:44ID:???0178nobodyさん
2006/08/25(金) 20:59:07ID:???if($Cid==$line[1] or $Cid==$line[2] or $Cid==$line[3] or $Cid==$line[4] or
$Cid==$line[5] or $Cid==$line[6] or $Cid==$line[7] or $Cid==$line[8] or.................
$Cid==$line[100]) {
をなんとか一文ですっきりする方法はないのでしょうか?
例えば
if($Cid==$line[1から100]) {
のような感じです。
0179nobodyさん
2006/08/25(金) 21:10:31ID:???0180nobodyさん
2006/08/26(土) 00:50:39ID:???若しくはどのようにしてログファイルにutf-8で保存するのですか?
0181nobodyさん
2006/08/26(土) 01:51:42ID:???>#define PCRE_CACHE_SIZE 4096
とか
> * If we reached cache limit, clean out the items from the head of the list;
> * these are supposedly the oldest ones (but not necessarily the least used
> * ones).
とか書いてあるんだけど、パターン使いまくりはあまりよろしくないってこと?
■ このスレッドは過去ログ倉庫に格納されています