【PHP】下らねぇ質問はID出して書き込みやがれ 80
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2009/02/01(日) 18:10:57ID:PdwQzQch過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 78
http://pc11.2ch.net/test/read.cgi/php/1230026935/
◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
0196nobodyさん
2009/02/05(木) 09:33:16ID:r201bcdx画像ファイルとして読み込めるかどうか判断できる
方法を知っていたら教えてください。
今は、getimagesizeで取得できるかどうかで、
できなければ画像ファイルじゃない、と判断しているのですが、
なにか抜け道があるようなきがして不安なのです。
よろしくお願いします。
0197nobodyさん
2009/02/05(木) 09:47:33ID:???それから保存する
0200nobodyさん
2009/02/05(木) 11:22:13ID:???2chは初めてですか?
0205nobodyさん
2009/02/05(木) 11:39:26ID:???0206nobodyさん
2009/02/05(木) 11:41:04ID:???ここで雑談するな
スレ違いだ
0207nobodyさん
2009/02/05(木) 11:46:56ID:???もう自宅警備歴がかれこれ5年になるけど、めちゃくちゃ儲からないよw
ヤフ桶での転○での利益が月7〜15万ではっきり言ってきつい。
日常生活に(お家がダンボールになっちゃうかもしれないという)スリルを
求める奴にはおすすめだけどね。
0208nobodyさん
2009/02/05(木) 11:49:33ID:???まともに開発できるやついたら、1か月80万〜100万払うぞ。俺が。まじで。
0210nobodyさん
2009/02/05(木) 12:00:34ID:???おれからコンタクトするよ
0211210
2009/02/05(木) 12:03:28ID:???0212nobodyさん
2009/02/05(木) 12:42:10ID:???普通の人間になってください
0214nobodyさん
2009/02/05(木) 13:08:01ID:???pearいいですね、勉強してみます
>>168
文法ぐらいなら難しいことでもないのでもう完ぺきです
>>169
感性を磨きます
>>172
php5ですが簡単な使い方は覚えました
class keisan {
public $i=2;
public $n=3;
function tasizan(){return $t=$this->$i+$n;}
function hikizan(){return $h=$this->$n-i}
}
$obj=new keisan();
echo"<p>".$obj->tasizan()."</p>";
echo"<p>".$obj->hikizan()."</p>";
>>174
javaも勉強してみます
0215nobodyさん
2009/02/05(木) 14:18:04ID:???0216nobodyさん
2009/02/05(木) 14:24:15ID:l+G3Usoa一時的にアップした画像を次のページのさらに次でアップしたいのですがどう引き継げばいいですか?
index1.htm ここのフォームで画像をアップする
↓
index2.htm ここで画像を表示して「この画像でいいですか」と出して
↓
index3.htm ここで「完了」と出す
2で一時フォルダに保存すれば3でアップと同時に一時フォルダの画像を消すことができるけど
ユーザーが3に行かずにやめてしまった場合は残ってしまいます。
3で再びアップさせればいいんだけど、1から3へ画像ソースのディレクトリを引き継ぐ事はできないんですか?
よく分からないので教えてください。
0217nobodyさん
2009/02/05(木) 14:30:41ID:???完了したら、それを正規ディレクトリに移す。
一時ディレクトリは定期的に掃除するスクリプトを動かす。
0218nobodyさん
2009/02/05(木) 14:41:24ID:???フォームで選んだら出るC:\なんちゃらってパスをJavaScriptで取得して
そのパスを次の画面でhiddenで渡す
次の画面でそのパスをimg srcに埋め込んでローカルのファイルを表示させる
とかでいいんじゃねえ
PHP関係ないけど
0220nobodyさん
2009/02/05(木) 15:26:19ID:???javascript以前にHTMLから勉強しなおし
そんなこと出来たらサイト作成者側から好きなファイルを
アクセスしたやつから勝手に回収することができるじゃないか!?
0222173
2009/02/05(木) 15:30:57ID:+8hoj09rありがとうございます
0223nobodyさん
2009/02/05(木) 15:33:57ID:???0224nobodyさん
2009/02/05(木) 15:42:27ID:+8hoj09rはい 整数なんですよ。
これでいいんでしょうか?
$manky = "-1";
if (isset($_GET['hoge'])) {
$manky = intval($_GET['hoge']);
}
0225nobodyさん
2009/02/05(木) 15:52:33ID:???>public $i=2;
カプセル化の意味がないので、privateにする。
publicは通常使わない。継承する親クラスで、継承先で使いたい時にprotected使うぐらい。
通常はprivateでOK。
>function tasizan(){return $t=$this->$i+$n;}
PHPの場合メンバー変数のアクセス方法は、$this->$iではなく、$this->i(iに$いらない)。
同様にnのほうもちゃんと$this->nにする。
return $this->i + $this->n;といった感じ。
単純な2値の計算なんかの場合はstaticメソッドを使うとよい。
class keisan {
static function tasizan($a, $b){return $a+$b;}
}
echo keisan::tasizan(2,3);
最初は誰だって滅茶苦茶なのは当たり前。
がんばってちょうだい。
0226nobodyさん
2009/02/05(木) 15:57:04ID:???0227nobodyさん
2009/02/05(木) 16:07:57ID:???最後にはnewしてインスタンス化して使うんだよね
だから、少なくても、最後の一個はpublicに
しないとダメなんでしょ?
0229nobodyさん
2009/02/05(木) 16:11:37ID:???0230nobodyさん
2009/02/05(木) 16:42:15ID:kfp6uZBj配列構造は、ケースによってまちまちです。
array(4) {
["tes"]=>
array(1) {
["aaa"]=>
string(12) "*"
}
[0]=>
array(8) {
["bbb"]=>
string(10) "*"
<省略>
["ggg"]=>
string(4) "*"
["hhh"]=>
string(1) "*"
["iii"]=>
string(4) "*"
}
["jjj"]=>
array(1) {
["kkk"]=>
string(4) "*"
}
["lll"]=>
array(1) {
["fff"]=>
NULL
}
}
0231nobodyさん
2009/02/05(木) 16:45:21ID:???0232nobodyさん
2009/02/05(木) 16:50:25ID:???0233230
2009/02/05(木) 17:11:23ID:???phpは、よくわかんないだけど、割に便利な関数があるんで、
そんなのがあったりするんかなと。ググる前に質問しちゃいました。ゴメンね。
でもコード考える気がなかったりするw
php,再帰,連想配列でググってみたらよさげなものがあるんで、
流用しようw
0234nobodyさん
2009/02/05(木) 17:17:37ID:???0235nobodyさん
2009/02/05(木) 17:51:32ID:???決まった長さまでは正常だけど、それ以降が文字化けするというのは仕様ですか?
0236nobodyさん
2009/02/05(木) 17:55:34ID:???0237nobodyさん
2009/02/05(木) 18:09:53ID:???0238235
2009/02/05(木) 18:46:55ID:???mb_send_mailでの問題でした。
mail("hoge@example.com", "test", mb_convert_encoding("1234567890123…(改行無しで1000文字)", "JIS", "UTF-8"));
で改行のない長い文字列を送ると、
これで本文の途中から「…123・u條。毅僑…」と文字化けしてしまいます。
0239nobodyさん
2009/02/05(木) 19:10:36ID:???0240216
2009/02/05(木) 19:15:28ID:nQqyz+9C遅レスだがありがと。
結局定期的に消すしかないのか。
まあ誰かがアップした時に同時にゴミ画像消すスクリプト動かせば手間はかからんな。
0241nobodyさん
2009/02/05(木) 19:15:59ID:???0243nobodyさん
2009/02/05(木) 19:19:59ID:???0245nobodyさん
2009/02/05(木) 19:52:16ID:+8hoj09r0247nobodyさん
2009/02/05(木) 19:58:30ID:???0248nobodyさん
2009/02/05(木) 19:59:53ID:???0250nobodyさん
2009/02/05(木) 20:15:36ID:r201bcdxなるほど、参考にさせていただきます。
ありがとうございました。
$dir = C:\\www\\a\\、みたいに指定して
下のようにディレクトリaを削除してみたのですが、
if(DIRECTORY_SEPARATOR == '\\'){
system('rmdir '.$dir.' /s /q');
}
$dir = G:\\www\\a\\にしたときは、削除できませんでした。(エラーなし)
phpとかもろもろはCドライブにインストールしているのですが
それが原因でしょうか?
widows2000 php5.2.6
0251nobodyさん
2009/02/05(木) 20:19:19ID:???文法上おかしくない?
0252nobodyさん
2009/02/05(木) 20:23:48ID:???0253nobodyさん
2009/02/05(木) 20:26:47ID:r201bcdx>>252
すみませんでした。ここへ書くときに忘れてました。
正しくは、
$dir = "C:\\www\\a\\";
なのですが、やはりGドライプで操作したときは、
消したいディレクトリがその場に残ったままなんです。
0254nobodyさん
2009/02/05(木) 20:31:05ID:???0256nobodyさん
2009/02/05(木) 20:43:59ID:r201bcdxどこかのサイトに書いてあったのをやったらできたのです。
>>255
すみません、よくみたらまた間違ってました><;
$dir = "C:\\www\\a";
でした。
これで、aはきえました。
0257nobodyさん
2009/02/05(木) 20:47:50ID:???0258nobodyさん
2009/02/05(木) 20:50:25ID:3zIJ+Mqp0259nobodyさん
2009/02/05(木) 20:51:00ID:r201bcdxコマンドプロンプトで
rmdir G:\www\a /s /q
をしたら、消えてくれました。
0261nobodyさん
2009/02/05(木) 21:09:41ID:???× rmdir G:\www\a\ /s /q
○ rmdir G:\www\a /s /q
ってことか?
0262nobodyさん
2009/02/05(木) 21:15:47ID:r201bcdx試しにさっき、
rmdir G:\www\a\ /s /q
やってみたら、これも消えてくれました。
でも、なぜあphpで書くと処理してくれませんね。
0263nobodyさん
2009/02/05(木) 21:25:19ID:???結果を取得するなりログを見るなりすればなんかでるでしょ
0264nobodyさん
2009/02/05(木) 21:55:05ID:r201bcdxものすごくくだらないですが・・
まず、CをGと変更しているのに、削除しようとしているのは
Cの方だったことがわかりました。
そこでもう一度視野を広げてみてみると、
原因はphpの編集ツールにありました。
CからGへapacheのルート?wwwディレクトリをコピーで移動させてからも、
そのツールの編集画面を開いたまま編集していました。
つまり、Gの方のphpを編集している気でいたら、Cの方のphpを編集しており
Gの方のC:\\www\\aがそのままになっていただけでした。
ありがとうございました。
0265nobodyさん
2009/02/05(木) 21:56:40ID:r201bcdxすみません。原因はツールより、私の方にありました。
0266nobodyさん
2009/02/05(木) 22:48:44ID:Gj5tVrB7[1.htmlの内容]
<form name="form" action="./1.php" method="GET">
<input name="name" type="text">
<input name="name2" type="text">
<input type="submit" value="送信"></form>
[1.phpの内容]
<?php
$name1 = $_REQUEST["name"];
?>
値は<?php print $name1;?>
1.htmlのnameに山田、name2に太郎と入れてsubmitした時に1.phpのprintに
値は山田太郎 と出力させるようには出来ないのでしょうか?
0268nobodyさん
2009/02/05(木) 22:56:49ID:???0270nobodyさん
2009/02/05(木) 23:08:37ID:ApJraLWLそういうものなんですか
psコマンドで出すとズラーっと並んでいて気になります
0272nobodyさん
2009/02/05(木) 23:14:15ID:???0273nobodyさん
2009/02/05(木) 23:16:02ID:???0274nobodyさん
2009/02/05(木) 23:19:21ID:???ありがとう
0275nobodyさん
2009/02/06(金) 01:07:33ID:Zd9hNyvTを書式化して
2009年02月06日
としたいのですが、やはり一度分割して配列に入れる方法しかないのでしょうか?
0276nobodyさん
2009/02/06(金) 01:09:40ID:???0278nobodyさん
2009/02/06(金) 01:37:39ID:3pSilmD2私は以下のようにしてコーディングしているのですが、
このスタイルは間違っていますか?
<?php
class Test{
// 送信ボタン名
private $_submitButtonName = "test_submit";
// フォームを出力する
public function print_form(){
print "<form action=\"{$_SERVER["PHP_SELF"]}\" method=\"POST\">\n";
print "<input type=\"text\" name=\"textarea0\">\n";
print "<input name=\"{$this->get_submitButtonName()}\" type=\"submit\" value=\"送信\">\n";
print "</form>";
}
// 送信ボタン名を返す
public function get_submitButtonName(){
return $this->_submitButtonName;
}
// 送信されたかチェックする
public function determineSubmit(){
if( isset($_POST[$this->get_submitButtonName()]) ){ return true; }
else{ false; }
}
} // END class Test
0279278
2009/02/06(金) 01:38:02ID:3pSilmD2$obj->print_form();
if($_SERVER["REQUEST_METHOD"]=="POST"){
if($this->determineSubmit()){
〜
}
}
?>
0280nobodyさん
2009/02/06(金) 01:44:36ID:???0281nobodyさん
2009/02/06(金) 01:58:55ID:???普通はHTMLタグはページ用のファイルに書くんじゃないかな
submitボタンのname属性も可変にする必要ないと思うけどするなら、
<form action="test.php" method="POST">
<input type="text" name="textarea0">
<input name="<?=MyConst::SUBMIT_BUTTON_NAME?>" type="submit" value="送信">
</form>
0282nobodyさん
2009/02/06(金) 02:00:52ID:???0283nobodyさん
2009/02/06(金) 02:17:24ID:???クラス名が具体性を欠く。$obj = new Test;
の1行からは、何をしたいのかという意図が全く伝わってこない。
そもそもそのクラスは、「何を」表したクラスなんだ?アプリケーションか?ユーザーからのリクエストか?今から生成するフォームか?
クラス内の処理が実質的に全てstatic。こんなクラスはインスタンス化する意味が無い。
ボタン名をconstにして全てstaticメソッドにする、あるいはクラス自体を取っ払って単なるグローバル関数にする。
ボタン名を定数ではなく変数にする意味は?
変数を使うというのは「この値はスクリプトの実行中に変化する可能性がある」という意思の表明でもある。だから「変わる数」なんだよ。
動的に変わるならばそのままでもいいが、もし仮に実行中に変わらないならば定数にすべきだ。
determineSubmitという関数名。回りくどい上に、意味がおかしい。サブミットされたかは、このメソッドが決めるわけじゃない。
百歩譲ってもcheckSubmitted()。
俺ならisSubmitted()もしくはsubmitted()。boolを返す事が自明になるし、どっちの場合にtrueが返るのかも分かりやすい。
それとアプリケーション構造として、処理に必要になる値の存在だけをチェックすべきだ。
textarea0に文字が入ってさえいれば、サブミットボタンが押されてようが爆発してようが別にどうでもいいだろ?
サブミットされたかは関数なのに、POSTかどうかの判定は変数を直接見ている。記述のレベルが揃っていない。
「好きな食べ物は辛いものと糖質を75%以上含むものです」なんて言わないだろ?同じレベルの記述では抽象度を揃えろ。
「辛いものと」なら「甘いもの」だし、「糖質を75%含む」ならば「カプサイシンを10mg含む」だ。その時興味のあるレベルに揃えるんだ。
つまりif( isPosted() && isSubmitted() ) か、if( $_SERVER["REQUEST_METHOD"]=="POST" && isset($_POST[[$key]) 。
0284283
2009/02/06(金) 02:34:31ID:???クラスを使う事が偉いのではない。クラスを使うことで分かりやすい/保守しやすいコードを書く事が偉いんだ。
「なんでクラス使ってるの?」と聞かれて、答えられるか?説得する必要はないが、自分なりの回答が存在するか?
ttp://d.hatena.ne.jp/masayang/20081211/1229033163
その程度の処理にクラスを持ち出すのは、このコードと同じ事をしている。
クラスや関数などの中間層は、増やせば増やすほど何をやっているか分かりにくくなる。
$this->determineSubmit()
より
isset($_POST['test_submit'])
の方が分かりやすい。具体的に何をやってるか、メソッドの定義部を読みに行く手間も省ける。
ま、練習中なら、過剰なまでに抽象化するのもひとつの経験だけどな。
0285nobodyさん
2009/02/06(金) 02:38:16ID:y9gQg+aR$id = 1;
$sth = $pdo->prepare('select * from hoge where id = ?');
$sth->execute($id);
で、実行したバインド済みのSQL(select * from hoge where id = '1')
を取得したいんですが、方法はありますでしょうか。
0288nobodyさん
2009/02/06(金) 03:12:57ID:???>>285
間違ってるかも・・・
詳しくは先輩から聞いてください><
$id = $_GET["id"];
$sth = $pdo->prepare('select * from hoge where id = ?');
$sth->blindParam(1,$_GET["id"])
$sth->execute();
0289nobodyさん
2009/02/06(金) 03:27:05ID:???まず日本語学んだら?
>で、実行したバインド済みのSQL(select * from hoge where id = '1')
>を取得したいんですが、方法はありますでしょうか。
0290288
2009/02/06(金) 03:53:28ID:???PDO の質問です。
$id = 1;
$sth = $pdo->prepare('select * from hoge where id = ?');
$sth->execute($id);
以上のコードの後に、パラメーターがバインドされた形の
実際に実行されたSQL文を取得したいのですが、方法は
ありますでしょうか。
* 上記の例では "select * from hoge where id = '1' " を得たい。
. 簡単にいうと getLastQuery() 的なもの。
>>287, 288, 289
日本語スマソ
お分かりの方お願いします。
0291nobodyさん
2009/02/06(金) 03:57:16ID:???0292285 != 288
2009/02/06(金) 04:01:32ID:y9gQg+aR0295291
2009/02/06(金) 04:16:12ID:???蛸
■ このスレッドは過去ログ倉庫に格納されています