【PHP】下らねぇ質問はID出して書き込みやがれ 85
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2009/06/15(月) 22:53:52ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 84
http://pc11.2ch.net/test/read.cgi/php/1240835951/
◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0523515
2009/07/14(火) 16:39:52ID:???違います
今分かったのはテーブルにinsertするのも115文字しかできません。
windows server 2003 SQL server 2005 php ver 5.2.x
0524nobodyさん
2009/07/14(火) 16:42:25ID:???518 名前: nobodyさん [sage] 投稿日: 2009/07/14(火) 15:55:34 ID:???
300あることと、150で切れてるのはどうやって確認した?
0525nobodyさん
2009/07/14(火) 16:43:19ID:???「あ」は 2byte だけど 1 文字、みたいな。
0526515
2009/07/14(火) 16:48:28ID:???0527nobodyさん
2009/07/14(火) 16:57:52ID:ToMbC0F2>>515氏の直面している問題以上に>>515氏本人が手強い相手であることがわかった(笑)
1. insertでも115文字しか入らないなら、300文字あるはずの既存データはどうやって入れたの?
入ったのは日本語で115文字?既存の300文字は日本語?ちなみに文字コードは?
全部半角のASCII文字でも115文字?2倍の230文字?ひょっとして256文字?
2. selectで150文字程度、insertで115文字の意味するところは?
毎回115文字?文字列の中身(全角半角比率など)によって誤差がけっこうある?
誤差があるとはいえselectのほうがたくさん文字が入るのは確かだったり?
投げたselect文とinsert文を差し支えなければフルで見せてほしい。
とか。
0528nobodyさん
2009/07/14(火) 17:02:12ID:???ID出したほうがいいよ、混乱するし。
あと
nvarchar(4000)
であることをどうやって確認したのかも一応聞いておきたい。
0529nobodyさん
2009/07/14(火) 17:02:21ID:NN1hGdEX糞過ぎて泣きそうになると気ないですか?
0530nobodyさん
2009/07/14(火) 17:06:17ID:ToMbC0F2可能なら、$rowをその後どう扱って「150文字くらい」を表示させたのかまで書いてほしい。
- いつか alter table したつもりなだけで実際には256だったりするのではないかと疑ってみたり…
- 4000じゃなくて400だったり…
SHOW COLUMNS FROM foo_bar_table;
を試してみてほしい。可能なら。
0531nobodyさん
2009/07/14(火) 17:12:05ID:???SQL文の応答とかみてみてはどう?>>515
>>529
いやぁ、作ったものは、なんだか愛着あって嬉しいよ。
実装がひどいってのはあるけどなw
逆に、こういうところ苦労してたんだ、と知ることで、
もっと堅実な、またはもっと効率のいい設計や、製作方法
を勉強する機会になったりもすると思う。
0532515
2009/07/14(火) 18:42:20ID:bh9ZWFGSみなさんありがとうございました。
0533nobodyさん
2009/07/14(火) 19:04:31ID:???0534nobodyさん
2009/07/14(火) 21:09:07ID:O9yJ0RDj君が成長してる証だよ
0535nobodyさん
2009/07/14(火) 23:20:43ID:???半年前の自分のコードを見直して糞だと思えないなら、その方がよほど問題。
なんとかしたいなら、ファウラーの『リファクタリング』でも買って読め。
0536529
2009/07/15(水) 00:11:00ID:VnFaQFKD2〜3年前に作ったプログラムが糞過ぎて涙目でしたw
テンプレート(HTML部分)と処理するPHPが混雑してて見難かったり
変数名や表示名がわかりづらかったり、色々あります。
とりあえず、修正する上でセキュリティ向上を意識して
直せる限り直したいと思います。
0537nobodyさん
2009/07/15(水) 00:13:57ID:???0538nobodyさん
2009/07/15(水) 00:17:24ID:???0539nobodyさん
2009/07/15(水) 00:50:15ID:???満足感が欲しいのかどっちなんだ
0540nobodyさん
2009/07/15(水) 01:45:37ID:???virtual host毎にinclude_pathを設定したいので
vhost毎に php-cgi.exe -b 127.0.0.1:%PORT% -d include_path="."
とかやってますが、これ以外に方法ないでしょうか。
起動はバッチですればいいんですが、vhostが増えると保守も面倒だし
その分だけ起動されちゃうのでイマイチ感が満天です。
PHPRC環境変数にphp.iniのパスを設定しても読んでくれないし、
-d include_path だと複数パスの指定に問題があるしで。
apache でいう php_value include_path とかできれば幸せなんですが
どなたかいい方法ご存じでしたらお願いします。
0541nobodyさん
2009/07/15(水) 05:10:47ID:???オブジェクト指向パラダイムを理解しているやつはそんなこと思いもしないよ
自然と書いてるもの
そもそもオブジェクト指向でしか設計できない言語もあるわけで
そういうところから来た人間はわざわざ手続き型でやるなんてことはしないでしょ
設計思想を理解していないやつが無理に書いてるという話ならば
オブジェクト指向を理解するには通らないといけない道だから
熟練者には失笑ものでも生暖かく見守ってやらないといけない
0543nobodyさん
2009/07/15(水) 13:50:45ID:yniO2VZrこの外部phpファイルが構文エラーでも停止させない方法はありませんか?
requireと違いincludeはファイルが無くても停止しないけど、
それでも構文エラーだと停止してしまいます。
構文エラーで停止させたくない理由は、この外部phpファイルは、
システム稼動中に例外的な理由で修正する必要があるが、
その修正にミスっても完全停止まではさせたくないからです。
0544nobodyさん
2009/07/15(水) 13:52:04ID:???0545nobodyさん
2009/07/15(水) 13:55:04ID:yniO2VZrそれでも、括弧の対応ミスで、tryブロックのそのものの
最後の括弧が足りないというミス等は防げないと思いますが?
0546nobodyさん
2009/07/15(水) 13:59:07ID:???つーか、include するモジュールは、最低限
構文チェックくらいやっておいた方がいいと思うぞw
0547nobodyさん
2009/07/15(水) 13:59:48ID:yniO2VZrやっぱりだめでした。
0548nobodyさん
2009/07/15(水) 14:02:41ID:???0549nobodyさん
2009/07/15(水) 14:02:56ID:yniO2VZrやっぱりムリですか。
> つーか、include するモジュールは、最低限
> 構文チェックくらいやっておいた方がいいと思うぞw
ふぇ〜るせ〜ふ ってやつですw
なんかのフレームワークや(PHP構文が使える)CMSなんかで
ユーザーが入力したPHPコードを含む文章に構文エラーがあったときに、
分かりやすいメッセージかなんかを表示しているのがありそうだと思ったんですけどね。
0550nobodyさん
2009/07/15(水) 14:04:01ID:yniO2VZrPerl使えるからって、いーばるな!
0551nobodyさん
2009/07/15(水) 14:05:58ID:???549の要望なら、指定ファイルを読み込んで、その内容に、
動的な値を追加して、try しつつ eval 実行して結果を返す
ような拡張モジュール専用関数や専用クラスを作ると便利
かもしれない。
http://www.phppro.jp/phpmanual/php/function.eval.html
0552nobodyさん
2009/07/15(水) 14:06:13ID:yniO2VZr構文エラーチェックってのは思いついたんで
それ以外でお願いします。
0553nobodyさん
2009/07/15(水) 14:09:39ID:yniO2VZr0555nobodyさん
2009/07/15(水) 15:07:53ID:???http://php.benscom.com/manual/ja/function.uniqid.php
0556nobodyさん
2009/07/15(水) 20:06:04ID:???想像されてもいい値ならオートインクリメントだっていいぐらいだ
0557nobodyさん
2009/07/15(水) 20:56:47ID:???uniqid が楽だと思うけど
0558nobodyさん
2009/07/15(水) 20:58:59ID:???登録後じゃないとIDが出てこないという欠点はあるが。
でなきゃ、uniqid だね
0559nobodyさん
2009/07/15(水) 21:08:05ID:???0560nobodyさん
2009/07/16(木) 03:37:05ID:???直接データベースに入れればいいけど、
単に重複しない値を得るだけならuniqidの方が楽だろw
関数一個でいいんだぜ。
関数一個ですむことを負荷増やしてまでデータベースでやるとか
あほらしいw
0562nobodyさん
2009/07/16(木) 06:08:55ID:uYVqD/1s何かアドバイスくださいませ。
0563nobodyさん
2009/07/16(木) 09:19:39ID:???0564nobodyさん
2009/07/16(木) 09:47:57ID:???鯖側でIPを記録する
とかしてカウントする
クッキー(セッション)は消せるしIPも多くの人ならすぐに変えられるから
完全な対策は無理
ファイルのサイズを調べる関数はfilesize()
0565nobodyさん
2009/07/16(木) 13:11:50ID:uYVqD/1sありがとうございます。
なるほど・・
ipを記録する方法でやってみようと思います。
一応phpでipを記録する方法で考えてみたのですが、
0.データにアクセス
1.filesize()で○bytes以上であれば以下を実行
2.ip取得
3.記録されている(ダウンロード中の)ip全てを参照して、2で取得したipがあれば弾く
4.2で取得したipが一致しなければ、このipを記録
5.データをダウンロード開始
6.データのダウンロード終了、もしくわ途中で終了したりすれば記録したipを消去
で、いきなり3で詰まってしまいました・・
4で記録するipを3で参照するつもりで、
記録しておきたいのは、データのダウンロードしている間だけなんです。
でもこの”間だけ”という操作をどうすればいいのかよくわかりません(6のデータ転送”終了時”の判断方法も)・・
そもそも1〜6の操作が的外れかもしれませんが
どなたかよい方法を教えてくださいよろしくお願いします。
0566nobodyさん
2009/07/16(木) 13:14:57ID:uYVqD/1sデータのダウンロード中に、さらに同一ipからデータをダウンロードされる、、ということです、説明不足でしたすいません
0567軟式PHP
2009/07/16(木) 13:16:31ID:???mod_limitipconnとか使えないのかいな。
0568nobodyさん
2009/07/16(木) 13:18:30ID:iIDXJDL1ダウンロードボタンクリック→JavaScriptでボタンをdisabledにする
0569nobodyさん
2009/07/16(木) 13:31:14ID:uYVqD/1sなるほど、でも新しくページをリロードされたりクッキーとかと同じでやはり代えられてしまうのでしょうね
>>567
いえ、大丈夫です。
mod_limitipconn調べてみました、流し読みですが
なんとかできそうかもしれませんありがとうございました
0570nobodyさん
2009/07/16(木) 13:32:54ID:uYVqD/1sしかしながら、多重クリックで未然に防ぐことができるのではと思いました
ありがとうございました
0573nobodyさん
2009/07/16(木) 15:11:07ID:???大量のデータから重複のチェックなんてDBの十八番じゃないか
0574nobodyさん
2009/07/16(木) 15:37:23ID:NM9P6RACmb_ereg_replace("\"",'',$line);
とやっても消えません。
どうやったら良いのか、誰か教えてください。
0575nobodyさん
2009/07/16(木) 15:45:38ID:???0576nobodyさん
2009/07/16(木) 15:45:54ID:???ちなみにその例ではmb_ereg使わなくてもstr_replaceでいいと思うけど
コード
<?php
$text = 'The person said "Working is losing of life."';
echo mb_ereg_replace("\"",'',$text);
結果
The person said Working is losing of life.
0577nobodyさん
2009/07/16(木) 15:53:53ID:NM9P6RAC>>576
有難うございます。
でも、やっぱり削除されません。
何が原因なんでしょうね、これは…
0578nobodyさん
2009/07/16(木) 15:56:20ID:???0579nobodyさん
2009/07/16(木) 15:57:42ID:???用途なら、>>419に書いてあるじゃんw
だいたいランダムな値って言っているのに、
連番を答えるやつは頭が悪いね。
0581nobodyさん
2009/07/16(木) 16:08:06ID:NM9P6RAC有難うございます。一度違うやり方でやってみます。
0582nobodyさん
2009/07/16(木) 16:12:57ID:???答えてるやつは重複しなけりゃいいだっていう理論をもとに
質問者の求めてる「一般的ないい方法」を言ってるに過ぎないよ
ランダムな値を管理するには結局DB使うんでしょ?
ならオートインクリメントでもいいんじゃないの?っていう話
0583nobodyさん
2009/07/16(木) 16:16:09ID:???0584nobodyさん
2009/07/16(木) 16:18:29ID:???0585nobodyさん
2009/07/16(木) 17:08:56ID:???0586nobodyさん
2009/07/16(木) 17:39:57ID:???0587nobodyさん
2009/07/16(木) 17:43:16ID:???0588nobodyさん
2009/07/16(木) 18:02:35ID:wZUMSXTz俺昨日駅で拾った
0589nobodyさん
2009/07/16(木) 18:05:33ID:???0590nobodyさん
2009/07/16(木) 18:10:45ID:???> ランダムな値を管理するには結局DB使うんでしょ?
なんで決め付けてるわけ?
そんなの要件に合った?
ファイル・ディレクトリかもしれないじゃんか。
0591nobodyさん
2009/07/16(木) 18:18:27ID:???0592nobodyさん
2009/07/16(木) 18:37:36ID:???用途がわからないことにはなんともいえないが
例にあげたようなアプリケーションでその言い分は苦しいよ
どこのレンタルサービスがそんなのファイルで管理してると思う?
0593nobodyさん
2009/07/16(木) 18:47:19ID:wiET9Ah7レンタルサーバーを定期更新したいと思い
centOS php5の自鯖から
$conn = ftp_connect( $ftp_server,21,60 );とやったところ
どんなサーバーへも接続できません
何か根本的なところが抜けているとは思うのですが
なにを確認するのでしょうか? phpのコンフィグで --enable ftpにはなっています
0594nobodyさん
2009/07/16(木) 18:47:45ID:???ランダムな値が必要とされているなら、
uniqid使うのが手っ取り早いし効率がいいでしょ?
それとも簡単にランダムな値を生成してくれるDBがあるとでもいのかな?
DBに格納しても重複されない値が得られるだけ。
それは決してランダムな値ではない。
0595nobodyさん
2009/07/16(木) 18:54:19ID:???rand()関数使って、ランダム(かもしれない)な値を生成。
それを主キー(プライマリーキー)か一意制約(UNIQUE)をつけたフィールドにいれる。
なお主キーにnullを入れて格納しても、連番になるので要求を満たさない。
そしてデータベースに入れて、エラーになれば、
再度rand()関数を実行して、ランダムな値を生成して格納する。
この処理を繰り返す。
俺ならすなおにuniqid()使うw
0596nobodyさん
2009/07/16(木) 19:06:29ID:wZUMSXTz0597nobodyさん
2009/07/16(木) 19:16:38ID:9yCTA3Ep今はよく使う関数はユーザー定義関数でまとめてるし、それで事足りています。
よく、「車のエンジンやギアなど中の精密な構造まで知らなくても
運転の仕方が分かれば車は乗れる」とかたとえ話するばか
みす。する方がいらっしゃいますが、それでは分かりません。
具体的に教えてください。
0598nobodyさん
2009/07/16(木) 19:32:20ID:???DBでも乱数の生成は可能だが重複する可能性のあるただの乱数をキーに使うのはご法度
DBの算術関数操作だけで重複しないまともなキーを作成するのは可能かもしれない
自分は数学詳しくないんで具体的なやり方はわからないけど
ただそんなご苦労なことやるぐらいならすでに用意されているものを使うべき
車輪の再発明だっけか?
DBでできることはやったほうがいいとはいうが限度ってものがある
プログラム側で簡単に実現できるならそっちを使ったほうがいい
パスワード突っ込むときだってプログラム側でハッシュ関数にかけてるのと同じこった
0599nobodyさん
2009/07/16(木) 20:04:06ID:???0600nobodyさん
2009/07/16(木) 20:12:22ID:???0601nobodyさん
2009/07/16(木) 20:59:10ID:wZUMSXTzお勧めのライブラリとかありましたらおしえてください
0602nobodyさん
2009/07/16(木) 21:09:21ID:???0603nobodyさん
2009/07/16(木) 21:45:36ID:???ものの考え方だからそんな難しく考えないで
オブジェクトに対する情報(プロパティ)と動作(メソッド)
これをまとめたのがクラス
パーツまで考えるときりがないのでおおざっぱにパソコンというオブジェクトを考えると
動作(メソッド)として、『起動する』 『シャットダウンする』ってのがあるね
これをソースであらわすと
class パソコン {
function 起動する() {
}
function シャットダウンする() {
}
}
こうやって最初に考えておいて後で中身を書いていくのがオブジェクト指向的な書き方
こんな調子でWebアプリケーションにおきかえて考えてみればOK
掲示板というオブジェクトを考えると
動作(メソッド)は『書き込む』 『表示する』とかあるね
class 掲示板 {
function 書き込む(内容) {
内容を書き込む
}
function 表示する() {
内容を表示する
}
}
情報(プロパティ)については割愛したけど考え方としてはこんな感じ
最初はこんな感じから始めればOK
継承とかMVCモデルとかははじめは気にしなくていい混乱するだけだから
とにかく始めはオブジェクトに必要なもの(書くべきことを)を見極めるところから
0605nobodyさん
2009/07/16(木) 22:09:01ID:xcgIWd6Zクラス単位にまとめた方が見やすい。継承も使えるし。
0606597
2009/07/16(木) 22:13:58ID:9yCTA3Epありがとうございます!
0607nobodyさん
2009/07/16(木) 22:44:56ID:???>こうやって最初に考えておいて後で中身を書いていくのがオブジェクト指向的な書き方
それはオブジェクトというよりは段階的詳細化の気がするなあ。。
gotoとラベルでも同じことはできるわけで。
0609nobodyさん
2009/07/16(木) 22:57:08ID:???0610nobodyさん
2009/07/16(木) 23:06:32ID:???手続きとデータをまとめて持てる、っていうのと
(言語にもよるかもけど知れんが)他人から隠せるっていうのが利点かな。
>>603のBBSの例で、例えば書き込み先がファイルだとする。
関数だと、呼び出し元がファイルポインタを引数として渡すか、
あるいは関数内でグローバルスコープにする必要があるわけで
つまり「ファイルポインタ」の存在を気にしないといけない。
0611nobodyさん
2009/07/16(木) 23:40:54ID:???0612nobodyさん
2009/07/17(金) 01:47:11ID:???2chで規制を食らった時に書き込みをする方法について某スレで紹介が
ありそこでその存在をしったのですが、
そのサイト上のページに
・書き込みを行いたいURL
・名前
・投稿内容
・(自分の携帯メールアドレス)
を入力し「送信」ボタンをクリックすると自分の携帯メールにURLが送られて来て
そのリンクをクリックすると2chの投稿フォームに入力した内容が設定される
のですがあれはどうやっているのでしょうか?
0613nobodyさん
2009/07/17(金) 01:53:01ID:???大抵の場合、先にネックになるのはDBだから
PHPで簡単にできるならPHPでやってしまうってのは悪くはない。
0616nobodyさん
2009/07/17(金) 02:40:25ID:???どうしてご指名なのかは知らんが、getでパラメータ渡してんじゃねーのかな。
その携帯に送られてきたURL晒してみ?
0617nobodyさん
2009/07/17(金) 02:52:05ID:???簡単にいうと、カプセル化、ポリフォーフィズムかな。
完璧に動き、仕様変更は絶対ないという前提なら、それでもいいかもしれん。
2-3行で利点を説くのは難しいわい
0618nobodyさん
2009/07/17(金) 03:13:04ID:???面白いこと考える奴がいるんだね、商売上手だなぁ
WebProg 初心者の質問スレで質問すべきだと思うけど。
その携帯に送られてきたURLにユニークのgetパラメータがついてるんだよ
で、それをクリックするとリンクした先のページでそのパラメータを判別して
それに応じた書き込みデータを投稿するようになってるんだと思う
(きっと送信完了画面にはあれこれ広告が貼り付けてあるだろうねw)
0619593
2009/07/17(金) 09:41:13ID:189Q4h2A■ このスレッドは過去ログ倉庫に格納されています