【PHP】下らねぇ質問はID出して書き込みやがれ 78
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2008/12/23(火) 19:08:55ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 76
http://pc11.2ch.net/test/read.cgi/php/1226517332/
◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
0552nobodyさん
2008/12/31(水) 01:03:31ID:0oKh8Ta4すみませんでした。
549の訂正をします。
2009年1月1日0時0分0秒になったら
それ以降であけましておめでとうとPHPで自動で
コメントを出したいのですがどうすればいいでしょうか?
0553nobodyさん
2008/12/31(水) 01:07:51ID:???0555nobodyさん
2008/12/31(水) 01:18:00ID:???はいどうぞ
http://www.php.net/results.php?q=%E6%99%82%E5%88%BB&p=manual&l=ja
>>551
「細かい事言うと」って前置きしてるのに・・
揚げ足取りは・・
0556nobodyさん
2008/12/31(水) 01:28:55ID:0oKh8Ta4すみません。
実は去年自分でstrtotimeで出して同じ事をしたら
失敗し不安だったのでマルチしました。
GMT足し忘れてたのかな。。
本スレからのマルチ失礼しました。
0558nobodyさん
2008/12/31(水) 01:36:28ID:???windowsなりで時間いじりながらテストとかしたら失敗しないと思うけど
本番環境じゃなきゃlinuxでも一緒だけど
0559nobodyさん
2008/12/31(水) 13:32:29ID:???P20 「思いやり」という言葉
一学期が終わってJavaの専門学校に通っている娘が通知表をもらってきました。
担当の先生の所見欄を見ると、娘は「思いやりがあり・・・」と書かれています。
PHPグラマーの妻は、「ここのところ、よくわらからないから全部PHPに訳してみて」といいます。
私は困りました。というのは以前、Javaを長くやっているPHPの友人から
「PHPに絶対訳せないJavaの表現があるんだけど何だか知っているかい?」と
たずねられた事があるのです。それがまさにこの“思いやり”だったのです。
レファレンスを見るとPHP語で「同情すること」「推測すること」などとなっています。
しかしこれでは“思いやり”という言葉に含まれた深い気持は表現できません。
結論から言ってしまえばPHPグラマーは“思いやる”ということをしません。
そういう言葉がないということは、そういう気持も、そういう行為もないことになります。
小さい時から、大学の授業、外部のセミナー、会社の研修の中で“思いやり”に類したことは全く教育されていないのです。
PHPでは大学でも専門学校でも、Javaのように「皆と仲良く」とか「他人に迷惑をかけるな」という教育をー切やりません。
反対に、一貫して強調されているのは、「一番になれ」「他人に勝て」ということです。
私がPHPのプロジェクトで娘たちと職場へ行くとよく目にする光景があります。それは例えばプリンタの前でプログラマーたちが
順番を待っているところへ、プログラマーを連れたPMなり、PLがやってきます。
すると並んで待っているプログラマーはおろか、プリンタを使っているプログラマーもひきはがして
そのPMの連れて来たプログラマーがプリンタを勝手に使ってしまうのです。
その他のプログラマーたちもそれをまたごく当然の事として受けとめているのです。
良い悪いは別にして、これがPHPグラマーの行動パターンの原型です。自分の事しか考えないのです。
他人のことを思いやったり、他人への迷惑を気にするのはバカげた事なのです。
(中略)
JavaとPHPは似たように見えてもこれほど違う言語なのです。
0560nobodyさん
2008/12/31(水) 14:41:17ID:dNBkPk9oいろいろなスクリプトを見てまわってるのですが
こういう設定箇所は定数の人もいれば変数の人もいます
だいたいは定数の人が多いようですが
今回classを使ったものに挑戦しているのですが
オブジェクト定数(const)なんてものもあるようで
classを使ったプログラムをする場合こういう設定項目は
メンバー変数or定数orオブジェクト定数どれにするべきなのでしょうか?
0561nobodyさん
2008/12/31(水) 14:43:39ID:???思いやりがありとか小学生かよwwww
で釣られてやったわけだがどこを縦読み?
0562nobodyさん
2008/12/31(水) 14:45:18ID:???0564nobodyさん
2008/12/31(水) 16:55:54ID:???設定ファイルとかに切り出しやすいからな。
クラス定数は後から場所を移動しにくい。
0565nobodyさん
2008/12/31(水) 17:23:50ID:???0566nobodyさん
2008/12/31(水) 18:35:11ID:???0567nobodyさん
2008/12/31(水) 18:41:52ID:???0569nobodyさん
2008/12/31(水) 18:54:16ID:???0570nobodyさん
2008/12/31(水) 18:55:02ID:???phpもそうしろとは言わないがconstにfinalがつけれないのはなんでだろうな
継承先で変更可能になってしまうのは気持ち悪い
0575nobodyさん
2008/12/31(水) 19:09:14ID:???0576nobodyさん
2008/12/31(水) 19:11:39ID:???javaにもconstが予約語としてあるよ
constはstaticでfinalなものと考えれば良い
>>571
constにした場合
A::HOGEという形で呼ぶべきなので
Aというクラス名が書かれこれを変更する際に手間が増える
0577nobodyさん
2008/12/31(水) 19:23:19ID:???アクセスする毎に毎回読み込むんだよね?
どっかにキャッシュとしてもたれてるのかな?
0578nobodyさん
2008/12/31(水) 19:29:25ID:???例1 定数の定義と使用
<?php
class MyClass
{
const constant = 'constant value';
function showConstant() {
echo self::constant . "\n";
}
}
echo MyClass::constant . "\n";
$classname = "MyClass";
echo $classname::constant . "\n"; // PHP 5.3.0 以降で対応
$class = new MyClass();
$class->showConstant();
echo $class::constant."\n"; // PHP 5.3.0 以降で対応
?>
だそうです
0579nobodyさん
2008/12/31(水) 19:45:54ID:???ハードコーディングよりは遅いさ。
しかし、クラス定数の値を手動で書き変えさせるなんて俺はしない。
状況にもよるが、安全に修正できて設定がしやすいiniファイルは有効
>>575
iniが古くてxmlがいいって?
使いどころの問題でしょう。
Zend_Config_Iniとか、XMLより便利だし。
0580nobodyさん
2008/12/31(水) 19:45:55ID:???なんらかの変数ならば、動的に書き換えられるような設計に作り変える事が可能になる。
たとえば設定ファイルから読み込むとか、サーバー変数から動的に組み立てるようにするとかな。
速度問題や可読性の問題もあるから、どれがいいとは一概には言えないが。
>577
毎回読み込む事になるから遅くなる。特にXMLはパース処理も重いのでダブルで遅い。
APCのようなシステムを組み込んでいて、速度を重視する場合は、読み込んだ内容を丸ごとPHPコードとして吐き出しておくといい。
このPHPコードとiniファイルの更新日時を比較する処理も入れておくのもいいな。
まあ、そこまで性能が要求される事態ってのもそうそう無いが。
APCとかを使ってないならば、ファイル読み込み程度は誤差の範囲。
あと、>575は一周遅れているようだが、XMLの流行はすこし昔の話。
実際問題、そこまで構造化されたデータを必要とする事は少ないからな。
JSONやYAMLなどの、より構造のシンプルな可読性の高いフォーマットを使うのが最近の流行。
PHPならばiniを使うのも悪くない選択だと思う。
0582nobodyさん
2008/12/31(水) 20:06:41ID:???使いどころ。
たとえば、掲示板の簡単な設定をカスタマイズさせるケース
title = someboard
theme = tundra
indextype = thread
logpath = /var/log
0583580
2008/12/31(水) 20:13:54ID:???XMLの利点は、高度に構造化されたデータを表現できる事。
欠点は糞遅い事と、可読性が低く、人間が書きにくい事。SimpleXMLを使う前提で考えるならPHP5以降限定である事。
iniは表現力の低さがデメリット。配列すらややトリッキーな事をしないと使えない。
書き方が分かりやすく、かなり古いPHPでも標準関数で読み込めるというのがメリット。
読み込み速度も最速の部類のはず。PHPコアが使ってる機能だからな。
JSONはiniよりはやや可読性で劣るが、多少構造的なデータが扱えるという強みがある。
構造化と可読性のバランスが良いので個人的に好きなのだが、PHP 5.2.0以降でないと標準で読み込む関数がないのでかなり微妙。
>582の言うとおり、XMLはこのケースで使うには高級すぎる。
iniでじゅうぶんな内容しか書かないなら、iniの方が簡単だし速い。
0584nobodyさん
2008/12/31(水) 20:34:01ID:???アプリケーションがユーザの操作によって自動的に出力するイメージがあるんだけど
Windowsのアプリケーションとかだと窓の大きさとか窓の位置とか
前回どういう状態で終了したとか
設定用の画面を用意すればいいのか
0585nobodyさん
2008/12/31(水) 20:44:27ID:???システムが触るだけなら、var_exportが正確だしincludeするだけで変数作れる
0586nobodyさん
2008/12/31(水) 20:55:34ID:???0587nobodyさん
2008/12/31(水) 21:10:30ID:???0588nobodyさん
2008/12/31(水) 21:25:38ID:???0589nobodyさん
2008/12/31(水) 21:40:01ID:???0590nobodyさん
2008/12/31(水) 23:16:05ID:???0591nobodyさん
2008/12/31(水) 23:20:27ID:???0592nobodyさん
2008/12/31(水) 23:27:49ID:???0593nobodyさん
2009/01/01(木) 02:04:18ID:g1UFnF+nSQLiteManagerで認識できない?
0594nobodyさん
2009/01/01(木) 02:50:35ID:uPL0NuYt0595nobodyさん
2009/01/01(木) 02:55:45ID:???出来ないし、SQLiteManagerは色んな意味で使えない。
関係者以外の人が修正する気の起きない様な未曾有のコードの汚さだから
ある程度需要はあるんだろうけど、3年前に開発がストップしてる。
0596nobodyさん
2009/01/01(木) 03:11:19ID:g1UFnF+nじゃあSQLiteを使うときには、
phpmyadminの代わりに何を使うのが標準なの?
0597nobodyさん
2009/01/01(木) 03:11:59ID:g1UFnF+n開発がストップするというのはいろんな理由があるのだろうけど
「コードが汚すぎて周辺の人が参加できない」
というのも理由の一つになるのか。
0598nobodyさん
2009/01/01(木) 03:59:16ID:g1UFnF+ncould not find driver
というエラーが出るんだが、どうしたらいい?
0599nobodyさん
2009/01/01(木) 04:20:00ID:g1UFnF+n自分のパソコンの中に入っているSQLiteはバージョンが3とかかな?
0600nobodyさん
2009/01/01(木) 04:20:41ID:g1UFnF+n2なのか、3なのか、どうやって調べればいいですか?
xamppなのでデフォルトでは2のはずなのですが。
0601nobodyさん
2009/01/01(木) 04:23:43ID:g1UFnF+nPDOの書き方違う?
0602nobodyさん
2009/01/01(木) 04:30:44ID:g1UFnF+n2は2って入れないとダメなんだ、
3は3って書かなくても良し。
なんで?もし4がでたらどうすんの?
SQLite2 sqlite2:/path/to/pdotest.sq2
SQLite3 sqlite:/path/to/pdotest.sq3
http://codezine.jp/article/detail/433?p=2
0603nobodyさん
2009/01/01(木) 04:32:04ID:g1UFnF+nこれでボクも今日からデーターベースを使いこなすプログラマー
0605nobodyさん
2009/01/01(木) 14:08:35ID:g1UFnF+n書き方や文法はほとんど同じなの?
0606nobodyさん
2009/01/01(木) 14:09:11ID:g1UFnF+nどういう順番で勉強していったらいいのか、
全然わからんな。
0607nobodyさん
2009/01/01(木) 14:42:55ID:g1UFnF+n0608nobodyさん
2009/01/01(木) 15:28:32ID:???0609nobodyさん
2009/01/01(木) 19:11:35ID:g1UFnF+nわざと例外出してみたいんだが、
なにかサンプルコード買いてよ
0610nobodyさん
2009/01/01(木) 19:12:07ID:g1UFnF+nエラーが出るコードではダメなの?
0611nobodyさん
2009/01/01(木) 19:13:07ID:g1UFnF+nググってもサンプルコードがあんまり出てこない。
でも、もしかして、PDO + MySQLのコードと、ほとんど同じなの?
接続のところの、一行だけ変更すれば、あとは全部同じ?
0612nobodyさん
2009/01/01(木) 19:25:59ID:???0613nobodyさん
2009/01/01(木) 19:28:43ID:???0614nobodyさん
2009/01/01(木) 19:30:00ID:???ここはお前のらくがき帳だ、もっとやれ。
0615nobodyさん
2009/01/01(木) 19:31:45ID:???0616nobodyさん
2009/01/01(木) 20:00:22ID:g1UFnF+ntry {
$dbh = new PDO("sqlite2:aaa/bbb");
}
catch(PDOException $e)
{
echo $e->getMessage();
}
?>
このコードで、aaaフォルダに書き込み変更禁止
属性をつけて、上記のプログラムを実行した。
そしたら、bbbというデーターベースは存在しないので、
新規作成にいくが、フォルダが書き込み禁止なので、作成できない。
なのでエラーになるはずで、そしたら例外なんとかのメッセージが
出るとおもったのだが、出ない。なんでだ?
0617nobodyさん
2009/01/01(木) 20:18:51ID:???0618nobodyさん
2009/01/01(木) 20:25:08ID:???0619nobodyさん
2009/01/01(木) 20:27:53ID:???暫らくスレ見てなかったから気がつかなかった( ;^ω^)
0620nobodyさん
2009/01/01(木) 20:40:41ID:g1UFnF+nfunction foo() {
throw new Exception("例外発生!");
}
try {
foo();
} catch (Exception $e) {
$e->getMessage();
exit;
}
このコード実行しても
なんもメッセージ出ないんだけど、
これでいいの?
0621nobodyさん
2009/01/01(木) 21:09:55ID:???0622nobodyさん
2009/01/01(木) 21:17:11ID:???0623nobodyさん
2009/01/01(木) 21:27:23ID:O09m/dw1うまくいきません
require_once('MySmarty.class.php');
//Smartyクラスのインスタンス作成
$smarty = new MySmarty();
中略
function logoutConf(){
if($loginFlg == 0){
$smarty->display('logout.tpl');
exit();
}
}
上記を別ファイル(loginChk.php)として、
require_once('loginChk.php');
logoutConf();
としても動かないんです
$smarty->display('logout.tpl');をコメントアウトしてecho "テスト";としたら出力します
何が原因でしょうか?
インスタンスのfunction内での扱いを間違ってるでしょうか?
あと、あけましておめでとうございます
0624nobodyさん
2009/01/01(木) 21:30:42ID:???0625nobodyさん
2009/01/01(木) 21:41:23ID:O09m/dw1そっか、スコープの問題だ!
また忘れてた、ありがとうございました!
0626nobodyさん
2009/01/02(金) 18:50:02ID:PIvYRgwW現在携帯向けサイトを作ってて
hoge.com/profile?PHPSESSID=ce04068aecfc222ed167f335d7d496de でアクセスすると
それまでに登録した名前($_SESSION['uName'])が表示されるようにしてあります。
で、ログアウトページで
session_unset();
session_destroy();
var_dump($_SESSION);
をしてるのですが、その場では array(0){} となるものの、上記のURLをブラウザ直張りして
アクセスすると、さっきの名前が表示されてしまいます(PCで検証してるので、、)
なにも表示されないようにしたい(パラメータのPHPSESSIDの値を無効にしたい)んですが
どうしたらいいんですか?
0627nobodyさん
2009/01/02(金) 19:16:40ID:???$_SESSION = array("destroy" => 1);
とか。実質的に破棄されたようにできる。
サーバー上に保存されるファイルを直接消したければ、gcのタイミングを早めるしかないかな、
どうだったか覚えてない
0628nobodyさん
2009/01/03(土) 01:13:17ID:???デフォルトのセッション保存関数ではその場でファイルを削除するから復元される事はない
表示されるのはキャッシュを読んでるか実装がおかしいかだ
0629nobodyさん
2009/01/03(土) 07:33:13ID:???ログアウトページで、ちゃんとstartしてから破棄してるか?
0630nobodyさん
2009/01/03(土) 08:33:18ID:???0631nobodyさん
2009/01/03(土) 08:54:27ID:QyZ7nGCj解説ページを見ると、PDO+SQLiteの場合、
SQLite3の解説記事ばっかり。
SQLite2で使いたい場合は、説明のページがあんまりない。
だからSQLite3にしようかと思ったが、自分がつかっている
レンタルサーバーにはPDOのSQLite3のドライバが入っていない。
だから仕方なくSQLite2を使うしかない。
0632nobodyさん
2009/01/03(土) 08:55:07ID:???0633nobodyさん
2009/01/03(土) 09:05:40ID:QyZ7nGCjでもそれだと解説記事が少ないんだよ
0634nobodyさん
2009/01/03(土) 09:19:14ID:???0635nobodyさん
2009/01/03(土) 09:20:14ID:???0636nobodyさん
2009/01/03(土) 09:22:11ID:???0637nobodyさん
2009/01/03(土) 09:33:04ID:QyZ7nGCjそうそれそれ。
SQLite3用のサンプルコードをコピペして、
ワクテカして実行したらエラーで動かないとかひどすぎ。
0638nobodyさん
2009/01/03(土) 09:34:46ID:QyZ7nGCjそんなんできるのか?
http://d.hatena.ne.jp/array/20081119/1227097898
ここを見ると、
「ただ、SQLite2を使うとPDOで使った場
合でもエラー時の例外を投げてくれな
い事が分かったので(3は例外を投げる)」
って書いてあるから、ずいぶんと挙動が違うように感じる。
エラーを投げないってことは、try catchとか
使えないってことだろ?
0639nobodyさん
2009/01/03(土) 09:36:53ID:QyZ7nGCj出なかったのは、SQLite2だからなのか?
0642nobodyさん
2009/01/03(土) 09:46:06ID:???0643nobodyさん
2009/01/03(土) 10:50:33ID:QyZ7nGCj「PDOのSQLITEはver.3系、ビルトイン関数の方は2系。」
↑これってどういう意味で言ってるンだ?
PDOは2系では使えないという意味か?
0644nobodyさん
2009/01/03(土) 11:02:36ID:???0645nobodyさん
2009/01/03(土) 18:48:59ID:???0646nobodyさん
2009/01/03(土) 18:50:11ID:???0647nobodyさん
2009/01/03(土) 21:58:48ID:hw8rEzMz確認画面にリダイレクトしています。
mb_send_mail($toAddress,$title,$_POST['msg'],〜);
header(Location: http://www.hoge.com/);
で、リダイレクト先のページをリロードすると「フォームを再送信します」というメッセージがでて
続行すると再度メールが送られてしまうんですが、二重送信を管理するセッションなどを持たせて
再送を防ぐしかないんでしょうか?
if($_SESSION['doubleSend']==0){
上の処理
$_SESSION['doubleSend']=1;
}
みたいな… もっとうまいやり方ないですか?
0648nobodyさん
2009/01/03(土) 22:01:15ID:QyZ7nGCjSQLitemanagerを使ってますがこれはバグだらけでクソすぎる
既存のデーターベースを読み込んで使うこともできない
0649nobodyさん
2009/01/03(土) 22:01:47ID:QyZ7nGCj0650nobodyさん
2009/01/03(土) 22:20:27ID:???0651nobodyさん
2009/01/03(土) 22:22:54ID:???開店一時間前から並んで、俺は余裕の一番乗りをゲット。いわゆる、ファースト・オブ・ファースト。
開店して着席、一息ついて改めてファーストロットメンバーを確認してふと気づいた。
普段はこの店、学生が多いのだが今日はサラリーマン、OLと客層が豊か。
しかも素人が多いのか、コールの仕方もめちゃくちゃで、他の麺バーとの協調性のかけらも見えない。
これはまずい・・・ファーストロットの乱れは、閉店まで波及しオペレーションに重大な支障を来たす。
ふと店主と目が合う。額に汗を浮かべながらのその表情は明らかに
「たのむ・・・あんたがロットマスターになってなんとかしてくれ」と訴えかけていた。。。
ここまで期待されたら、断る理由は無い。やってやろうじゃないの。
大豚W全マシが俺の前に置かれる。難攻不落の要塞さながらのその野菜の山に、
俺はさっそく箸を刺しこみ、胃袋に詰め込み始める。
しかし、今日はいつもの単純な、自分との戦いではない。俺は自分の要塞を攻略しつつ、店内を注意深く監視する。
さっそく発見。盛りの豪快さをネタに、しゃべりまくる二人連れの学生。
――ロット乱しの元凶その1、『不要な私語』。ギルティー。
俺は勢いよくテーブルをバシッ!と叩く。その音に驚き、店内に再び静寂と規律が戻った。
そしてその隣!長い髪を気にしながら、上品にすぼめた口で一本ずつ麺をすすりこむOL!
――ロット乱しの元凶その2、『女』。ギルティー。
俺は箸で女を指し「すばやく食え!」と麺をかきこむジェスチャーを送る。
OLは髪に添えていた手を放し、一心不乱に麺をかきこみはじめた。そう、それでいい。
ロットマスター(=俺w)の的確な指揮により生まれた規律と調和。
俺はさながら、オーケストラを指揮するコンダクターだ。この全能感、多幸感―――。
結果、全員がほぼ同時にどんぶりをカウンターの上に置くことで、
ファーストロットという名のコンサートは見事に成功し幕を閉じた。
店を出たところで、先ほどのOLと目が合う。軽く俺がウィンクをすると、彼女は恥ずかしそうに逃げていった。
0652nobodyさん
2009/01/03(土) 22:49:06ID:???⇒ dsn を sqlite2:my_sqlitedb にすればsqlite2.x系が読み込める。
PDOのSQLITEはver.3系、ビルトイン関数の方は2系。
一行上くらい読んでな。
PDOは2、3どっちでも使えるけど3で使うのが推奨。
3が使える環境でもsqlite_openで作ると2系のDBしか作れない。
MySQLも使うならプリペアドステートメント使っとけば、大体同じに書ける筈。
普通の生クエリで書いちゃうと、SQLiteはカラムや数値をクォートしちゃダメだから
MySQLとの入れ替えは厳しい。
俺の自分がググリ易いように公開してるSEOスパム用メモ張をあてにしない方が良いよ。
■ このスレッドは過去ログ倉庫に格納されています