△▲ WebProg 初心者の質問 Part19 ▼▽
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2009/03/06(金) 00:11:17ID:???質問したいけど、どうしたら良いか分からない。
そんなときは、ここに書き込んでください。
板の住人や、その他が、けなしながら、厳しく教えてくれるかも。
質問する前に、まずはここを読んでね。
【注意事項】
・質問する前にGoogleで検索してみましょう
http://www.google.co.jp/
・環境(ソフトウェアのバージョンなど)は、必ず書いてください。できるだけ詳しく。
後から情報を書き足す、いわゆる情報の小出しは極力避けてください。
・何がしたくて、何ができて何ができないのかを書きましょう
・マルチポスト(複数のスレッドで質問する行為)は絶対に禁止です。
・過去ログは必ず読みましょう。あなたと同じ質問をしてる人がいるかも知れません。
2ch 総合ガイド
http://www.2ch.net/guide/
お願い。
適切な、板、スレ、を発見した場合、誘導してあげましょう。
スレの性質上 age 進行でお願いします。
関連情報は
>>2-3辺り
☆前スレ☆
△▲ WebProg 初心者の質問 Part18 ▼▽
http://pc11.2ch.net/test/read.cgi/php/1219842559/
0608nobodyさん
2009/04/19(日) 23:39:16ID:???0609nobodyさん
2009/04/19(日) 23:53:28ID:???「クエリーストリング」
という用語がしつこく出てきましたが、
PHPの教科書にはほとんど出てきません。
なぜでしょうか?
0610nobodyさん
2009/04/20(月) 00:20:53ID:???感謝されるやつと感謝されないやつがいるっていう現実がすべてだろ。
悔しかったら感謝されるようなレスしろよ。
0611nobodyさん
2009/04/20(月) 01:01:45ID:???fileテーブル
id,name,type,size,blob
こんなかんじのテーブルなのですが、
select id,name,type,size from file
のように、取得するフィールドを指定すれば無駄にblobがselectされるのを防げるのでしょうか?
それとも、
file_bin
id,file_id,blob
のように、blob型だけ別テーブルに分けたほうが良いのでしょうか?
よろしくお願いします。
0612nobodyさん
2009/04/20(月) 01:15:49ID:???0613nobodyさん
2009/04/20(月) 01:32:34ID:???後者のように分割する意味はほとんどないし、無駄にJoinが必要になる
ファイルが何GBもあるようなときはInsert/Update中にFileテーブルがロックされるのを防げることがあるかも?ないかも
0614nobodyさん
2009/04/20(月) 03:13:26ID:???そもそも板違いだな。DB関係の板で質問してみたら?
0615611
2009/04/20(月) 11:51:13ID:???>>612-613
きちんとselectで指定すれば、無駄に読み込まれることはないようですね。
>>ファイルが何GBもあるようなときはInsert/Update中にFileテーブルがロックされるのを防げることがあるかも?ないかも
これは気がつきませんでしたが、
今回はそこまでアップロードに時間がかかるようなファイルはアップロードしないと思うので、問題ないと思います。
OpenPNE3などのテーブル構造を見てみたら、
fileとfile_binなどに分けられていたので、
なにか意味があるのかなと思い質問したのですが、
それほどメリットはないという認識でよいのでしょうか?
>>614
処理系というのは、ここではデータベースのことでしょうか?
書き忘れてしまったのですが、今回使っているのはMySQLです。
板違いということについては申し訳なく思っています。
しかし、WebProgに関係ないわけでもないので、どうかご容赦ください・・・
0616nobodyさん
2009/04/20(月) 21:04:45ID:???どこのBlogでもそうですが、以下のような形式で、ユーザIDを含むURLにアクセスすると、そのユーザのページにアクセスできます。
例)
http://<ユーザID>.example.com/index.html
http://example.com/<ユーザID>/index.html
新規登録で、ユーザを作成、DBに格納→DBにあるユーザIDを上記形式でそのユーザのページにアクセスできるようにするテクニックを教えていただけませんか?
0618nobodyさん
2009/04/20(月) 21:14:01ID:???0619616
2009/04/20(月) 21:35:07ID:???web.xmlからどうにかできないか考えていたんですが、やりかたが思い浮かばないですし、
まず、これを実現するにあたる基となる何かが必要だと思うのですが、
今のところ、考えてみたのは、
ユーザ登録後、OSレベルでDir(ユーザID)掘って、
Request側) 指定Dir配下を検索→ヒット
Response側) http://<ユーザID>.example.com/→アクセス可
たぶんできると思うのですが、これ以外にやりかたあるのでしょうか?
上記のやり方は格好わるいし。
0620nobodyさん
2009/04/20(月) 21:38:34ID:???ほい
http://httpd.apache.org/docs/2.2/ja/mod/mod_userdir.html
0621nobodyさん
2009/04/20(月) 21:56:38ID:???0622616
2009/04/20(月) 22:02:49ID:???ありがとう。
全くその通りです。
Apache modにこんなのあるんですね。(常識?
大変助かります。
やっぱり、ユーザ登録後、mkdirしないとダメかな。
希望としては、ユーザ毎のDirectory無しで。。。(・ω・`)
0623nobodyさん
2009/04/20(月) 22:05:20ID:???0624nobodyさん
2009/04/20(月) 22:18:05ID:???www.example.com/hoge/username/fuga.html
hoge.cgiとかを動かして、拡張子をmultiviewとかで隠蔽すれば、上記のURLでアクセスさせられる。
username/fuga.htmlはPATH_INFOで受け取ってアプリケーション側でなんとかする。
やった事無いけど、DirectoryIndexも併用すればexample.com/username/でアクセスさせられると思う。
mod_rewriteを使っていいなら、パスはなんでもアリになる。
リクエストURLを正規表現で書き換えられるから、事実上なんだってできる。
独自ドメインは流石にDNSとかバーチャルホストをどうにかしないといけないと思うのだが、その辺は良く分からん。
0625nobodyさん
2009/04/21(火) 04:55:48ID:TMA0XNZYわざわざ上書きせずに、最初からhttpヘッダに書いておいた方がよくないですか?
何でわざわざmetaタグを書かなければいけないのですか?
0626nobodyさん
2009/04/21(火) 05:33:53ID:???ローカルに保存された場合とかProxyに削られちゃ場合とかには役に立つかもってことかな
また、コンテンツ内のスクリプトタイプ等をデーモンが調べてヘッダを生成するってのは、
やってできないことはないが100人いたら100人にやめろと言われる実装だと思う
で、metaタグとはその名の通りコンテンツのメタレベルに言及するためのタグだから
コンテンツがやり取りされた状況(HTTPなりなんなり)について干渉する方法があることに
特に不思議な点はないと思う
UAに対する通知の仕組みをあたらしく作らずにHTTPヘッダを流用したのは
俺は悪くない選択だと思うけど、その辺どういう議論があったんだろうね
0627nobodyさん
2009/04/21(火) 05:55:10ID:???$a[0]=2;
どっちが正式な書き方?
0628nobodyさん
2009/04/21(火) 06:03:59ID:???あと言語は何?
0630nobodyさん
2009/04/21(火) 07:39:04ID:???0631nobodyさん
2009/04/21(火) 11:00:11ID:???0632nobodyさん
2009/04/21(火) 11:18:14ID:???0633nobodyさん
2009/04/21(火) 12:16:37ID:???example($sample, $sample2, $sample3);
function example($sample, $sample2, $sample3){
require_once 'test.php';
}
test.phpの中に同様に$sample 〜 $sample3があるのでtest.phpに引数として
渡したいのですが上記をどのようにすればtest.phpに$sample〜$sample3を渡すことで出来ますか?
functionに引数として渡せていることは確認しているのですが、そこから先のtest.phpへの引き渡し方が分かりません。
ご存じの方いらた是非ともアドバイスいただきたいです。
0634nobodyさん
2009/04/21(火) 12:29:51ID:???変数名のバッティングは検出しづらいバグの温床だからかぶらないようにするべきだとおもうけど
0635nobodyさん
2009/04/21(火) 12:33:02ID:???0637nobodyさん
2009/04/21(火) 15:57:53ID:???インスタンスなしの場合
test::hogehoge( $sample, $sample2, $sample3 );
インスタンスのコンストラクタに渡す場合
$test = new Test( $sample, $sample2, $sample3 );
インスタンスのメソッドに渡す場合
$test = new Test();
$test->hogehoge( $sample, $sample2, $sample3 );
0638nobodyさん
2009/04/21(火) 16:09:32ID:???0639nobodyさん
2009/04/21(火) 18:42:48ID:???0640nobodyさん
2009/04/21(火) 19:59:49ID:???(1)PHP
(2)javascript
(3)MySQL
の3つ?
0641nobodyさん
2009/04/21(火) 20:04:34ID:???0643nobodyさん
2009/04/21(火) 22:59:06ID:???PHPはウンコだから文字列と数値を区別できない。同じ意味なので、どちらが正しいという事も無い。
PHPでそう書くと、前者の代入結果は後者で上書きされ、なかった事になる。
常識的な他の言語では、両者は別のものなので、どちらが正しいという事は無い。
$a['0']=1;
$a[0]=2;
echo $a['0']; // PHPだと2。ふつうは1。
echo $a[0]; // 2
echo count($a); //PHPだと1。ふつうは2。
>640
PHPで何をしたいかによる。
0644nobodyさん
2009/04/22(水) 16:58:14ID:???textareaに記入後はheader('Location: ./index.html');でトップ画面に
飛ばすようにしてますが、Locationの記述行数で下記のエラーが発生します。
Warning: Cannot modify header information - headers already sent by (output started at D:\xampp\htdocs\memo\memo.php:1) in D:\xampp\htdocs\memo\memo.php on line 20
headerの構文には問題ないと思うのですがどのような原因が考えられるのでしょうか。
0645nobodyさん
2009/04/22(水) 17:09:14ID:???0646644
2009/04/22(水) 17:29:09ID:???こんなヘタレ質問に速攻で答えてもらってありがとうございます。
ヘッダの前にはfopenでファイルを開いて書き込みをしているだけなんですが
それがダメということでしょうか。
ヘッダより下に書いたら実行されないのでどうしてもヘッダの前で処理を行う必要があるのですが
出力の意味を間違ってますか?
0647nobodyさん
2009/04/22(水) 17:34:17ID:???ってphpの場合<?php ?>で囲まれた部分以外が先にあっても駄目だけど
0648644
2009/04/22(水) 17:49:39ID:???たびたびの素早い回答ありがとうございます。
それは困りましたね。
phpの内容は
1.フォームからデータ受け取り
2.受け取ったデータを適すとファイルに追記
3.フォームに戻る ← ここでLocation
という構造になってます。
3のファイルに追記してるというのが標準出力になると思うんですが、
この場合はどうやれば元のフォーム画面に戻す事が出来るんでしょうか。
0649nobodyさん
2009/04/22(水) 17:53:26ID:???ファイル始まり
<?php
ファイル出力とかの処理
header();
?>
ってやればいいっしょ
0651644
2009/04/22(水) 18:07:05ID:???回答ありがとうございます。
試しにmemo.phpを
<?php
header('Location: ./index.html');
?>
の3行だけにしてみたのですが、それでも下記のエラーが出てきました。
Warning: Cannot modify header information - headers already sent by (output started at D:\xampp\htdocs\memo\memo.php:1) in D:\xampp\htdocs\memo\memo.php on line 2
何か別の問題がありそうな気がしますが、思い当たる部分がないです。
0652nobodyさん
2009/04/22(水) 18:15:01ID:???何かヘッダの前に送出されているはずだから、それを確認してみたら
ありがちなのはメモ帳で編集しててBOMがくっついてるパターンとか
しかしiniでoutput_bufferingが指定されていれば、出力しても4kb程はバッファにたまるから大丈夫なはずなんだけどね
0653nobodyさん
2009/04/22(水) 18:17:15ID:???0655nobodyさん
2009/04/22(水) 18:28:40ID:???0656nobodyさん
2009/04/22(水) 18:29:16ID:???0657nobodyさん
2009/04/22(水) 18:45:24ID:???0658nobodyさん
2009/04/22(水) 19:16:10ID:???0659nobodyさん
2009/04/22(水) 19:38:21ID:???ナイワwwwwwwwwwwwwwwwww
0660nobodyさん
2009/04/22(水) 19:53:50ID:???「標準出力」という言葉の意味がようやくわかった気がする。
「○○が標準出力です」
って説明よりも、
「XXは標準出力ではありません」
っていう説明のほうが理解しやすい気がする。
0661nobodyさん
2009/04/22(水) 20:04:27ID:???0663nobodyさん
2009/04/22(水) 23:22:22ID:???ファイルが標準出力じゃない ということを理解したんだよ
まあ、それで
>「標準出力」という言葉の意味がようやくわかった気がする。
というのはちょっとどうかと思うが
0664nobodyさん
2009/04/22(水) 23:37:49ID:???0665nobodyさん
2009/04/23(木) 01:49:32ID:???0666nobodyさん
2009/04/23(木) 08:18:13ID:???ファイルをUnicodeで保存しているのなら、
一度、試しにEUCで作ってみるといい。
そうすると、>>655の意味が判るかもしれない。
0667nobodyさん
2009/04/23(木) 10:04:50ID:???標準入出力=ファイル だと信じて疑わないと躓く要因になる。
0668nobodyさん
2009/04/23(木) 10:50:05ID:???0669nobodyさん
2009/04/23(木) 11:25:56ID:???0670nobodyさん
2009/04/24(金) 20:17:21ID:???pearのフロントエンドっていうのは、
public_htmlの外にインストールしなければいけないの?
でもそれだとブラウザでアクセスできなくない?
だからpublic_htmlの中にインストールして、
そこのディレクトリにパスワードでアクセス制限をかけるの?
0671nobodyさん
2009/04/24(金) 20:41:30ID:???0672nobodyさん
2009/04/24(金) 20:44:21ID:???0674nobodyさん
2009/04/24(金) 23:42:03ID:???0676nobodyさん
2009/04/25(土) 00:06:23ID:???0677nobodyさん
2009/04/26(日) 19:46:22ID:HwIYAsBtPHPと一緒に使うために必要なバージョンはかわらないんでしょうか?
0678nobodyさん
2009/04/26(日) 21:35:32ID:???PHP、javascript、MySQL
この3つは、デフォルトでガチ。さらに、それプラス、
XML,PDF、FLASH(actionscript)
も必要だと思う。さらに
ubuntu
の知識も必要だよね。他にも何かある?
0679nobodyさん
2009/04/26(日) 23:37:21ID:???0680nobodyさん
2009/04/26(日) 23:52:36ID:???同じく、UbuntuじゃなくてLinux一般の知識。つうかUnix系OSの知識。
XMLにはそもそも学ぶ事はほとんど無い。
PDFは果てしなくどうでもいい。
他に必要なのは
各ブラウザの特徴。
Apache。
PHP以外の言語なにか最低ひとつ。
0681nobodyさん
2009/04/27(月) 00:00:17ID:???mysql5.1とphp5.2.x使うときはphpと一緒に配布されているdllがおかしいから
今のところ4.1か5.0か6.0だな
0682677
2009/04/27(月) 02:18:47ID:Aj5i6/gIありがとうございます
ちょうど5.1ダウンロードしたんで アンインストールします
0683nobodyさん
2009/04/27(月) 03:47:25ID:???デザイナつかない場合は自分で書かないといけない
<font color="red">とかやってたらたとえエンジニアでも許されない
0684nobodyさん
2009/04/27(月) 06:13:30ID:Aj5i6/gI12行目の $row = $result->fetch_array(MYSQLI_NUM);
はインスタンスを具体化させるように -> という使い方を
関数を使用するときに使用できるんでしょうか?
またできるのであれば これはどのように分解してプログラミングとしてかけるのでしょうか?
$result = fetch_array(MYSQLI_NUM);
$row = $result;
で合ってますでしょうか
よろしくお願いします
0685nobodyさん
2009/04/27(月) 07:43:51ID:???ようするにオブジェクト周りのリテラル表現を知らないからコードの意味がとれんのだろ?
勉強しろよ。
2パラについて答えると、Mysqliには関数もあるから、$result->fetch_array() は mysqli_fetch_array($result)と書くこともできる。
http://jp.php.net/mysqli-fetch-array
0686684
2009/04/27(月) 07:52:42ID:Aj5i6/gIリテラル表現と言うんですか 勉強します
最近本ではなくネットを見るとほとんど理解出来ない感じです
ありがとうございます
0687nobodyさん
2009/04/27(月) 08:24:10ID:???0688684
2009/04/27(月) 15:42:29ID:Aj5i6/gI$row = $result->fetch_array(MYSQLI_NUM);
>>685さんの言うような書き方だとこれはどのような書き方が出来るんでしょうか?
またMYSQLI_NUMとはなんの役割をしているんでしょうか?
0689nobodyさん
2009/04/27(月) 16:00:14ID:???0690nobodyさん
2009/04/27(月) 18:34:00ID:???あんまりよくないね。
最近の本なのに、
$_REQUESTで変数を受けてるとか。
あと説明がバラバラな感じで統合されてないかんじ。
0691nobodyさん
2009/04/27(月) 18:39:41ID:???どういうケースかで問題にもなるが
0692nobodyさん
2009/04/27(月) 18:57:51ID:???「$_REQUESTで変数を受けるのは危険だからヤメロ!」
とはっきり書いてあるんだよ。しかも3冊も。
0693nobodyさん
2009/04/27(月) 19:04:18ID:???もしどう危険かを書いてないなら捨てるに値する本だ
0694nobodyさん
2009/04/27(月) 20:14:27ID:???0695nobodyさん
2009/04/27(月) 20:36:44ID:???GETできるものはPOSTできるんだから
$_REQUESTが危険とか妄想も甚だしい
0696nobodyさん
2009/04/27(月) 20:38:42ID:???<input type="text" name="num" size="5">
<input type="submit" value="計算">
</form>
<?php
function aaa($a){
print $a;
$a--;
if($a>=1){
print " x ";
aaa($a);
}
}
if(isset($_POST['num']) AND $_POST['num']!=""){
$ccc=$_POST['num'];
$ddd = htmlspecialchars($ccc,ENT_QUOTES,"UTF-8");
aaa($ddd);
}
?>
0697nobodyさん
2009/04/27(月) 20:39:42ID:???これで階乗(!)の計算をする前の
計算式の表示ができるようになったんだけど、
かんじんの計算アルゴリズムがわかりません。
再帰のどこに仕込めばいいの?
8 x 7 x 6 x 5 x 4 x 3 x 2 x 1
↑こういうやつです
0698nobodyさん
2009/04/27(月) 20:51:03ID:???{
if ($n <= 1) {
return 1;
}
return $n * factorial($n - 1);
}
0699nobodyさん
2009/04/27(月) 20:56:53ID:???returnを使うんだ。
0700nobodyさん
2009/04/27(月) 20:57:45ID:???0701nobodyさん
2009/04/27(月) 21:03:26ID:???<input type="text" name="num" size="5">
<input type="submit" value="計算">
</form>
<?php
function aaa($a){
print $a;
$a--;
if($a>=1){
print " x ";
aaa($a);
}
}
function factorial($n)
{
if ($n <= 1) {
return 1;
}
return $n * factorial($n - 1);
}
if(isset($_POST['num']) AND $_POST['num']!=""){
$ccc=$_POST['num'];
$ddd = htmlspecialchars($ccc,ENT_QUOTES,"UTF-8");
aaa($ddd);
print " = ";
$eee = factorial($ddd);
print $eee;
}
?>
0703nobodyさん
2009/04/27(月) 21:07:49ID:???0704nobodyさん
2009/04/27(月) 21:09:15ID:???でもからめかたがわからんけど。
0705nobodyさん
2009/04/28(火) 19:12:20ID:???山田和夫
結構いいよね。初心者向き。
わかりやすい
0706nobodyさん
2009/04/28(火) 20:51:42ID:???■ このスレッドは過去ログ倉庫に格納されています