トップページ⇒php
1001コメント300KB

△▲ WebProg 初心者の質問 Part19 ▼▽

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2009/03/06(金) 00:11:17ID:???
2ちゃんねるは初めて。 WebProg 板は初めて。
質問したいけど、どうしたら良いか分からない。

そんなときは、ここに書き込んでください。
板の住人や、その他が、けなしながら、厳しく教えてくれるかも。

質問する前に、まずはここを読んでね。
【注意事項】
・質問する前に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/
0652nobodyさん2009/04/22(水) 18:15:01ID:???
HTTPはヘッダの後にエンティティボディがくるから、仕様上ボデー送った後にヘッダは送れない
何かヘッダの前に送出されているはずだから、それを確認してみたら
ありがちなのはメモ帳で編集しててBOMがくっついてるパターンとか

しかしiniでoutput_bufferingが指定されていれば、出力しても4kb程はバッファにたまるから大丈夫なはずなんだけどね
0653nobodyさん2009/04/22(水) 18:17:15ID:???
あと、RFCの通りLocationは絶対パスで指定するべき
0654nobodyさん2009/04/22(水) 18:20:11ID:???
>>647と>>649で矛盾してないと思うが。つか同じ人なんだけどね
0655nobodyさん2009/04/22(水) 18:28:40ID:???
つBOM
0656nobodyさん2009/04/22(水) 18:29:16ID:???
xamppではデフォルトでoutput_buffering=Offのようだ。Debug時はそのほうがいいな。
0657nobodyさん2009/04/22(水) 18:45:24ID:???
BOMで理解できるレベルじゃなさそうだが・・
0658nobodyさん2009/04/22(水) 19:16:10ID:???
googleという文明の利器があるじゃないか
0659nobodyさん2009/04/22(水) 19:38:21ID:???
header('Location: ./index.html');

ナイワwwwwwwwwwwwwwwwww
0660nobodyさん2009/04/22(水) 19:53:50ID:???
>>649
「標準出力」という言葉の意味がようやくわかった気がする。

「○○が標準出力です」

って説明よりも、

「XXは標準出力ではありません」

っていう説明のほうが理解しやすい気がする。
0661nobodyさん2009/04/22(水) 20:04:27ID:???
お前は何を言ってるんだ?
0662nobodyさん2009/04/22(水) 20:05:47ID:???
>>660の言いたいことが理解できない俺はダメダメなのか?

0663nobodyさん2009/04/22(水) 23:22:22ID:???
>>662
ファイルが標準出力じゃない ということを理解したんだよ
まあ、それで
>「標準出力」という言葉の意味がようやくわかった気がする。
というのはちょっとどうかと思うが
0664nobodyさん2009/04/22(水) 23:37:49ID:???
「標準出力はファイルである」ということも分かるようにならないとな
0665nobodyさん2009/04/23(木) 01:49:32ID:???
日本語の「標準」「出力」じゃないからw
0666nobodyさん2009/04/23(木) 08:18:13ID:???
>>651
ファイルを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:???
go-pear.phpでインストールする
pearのフロントエンドっていうのは、
public_htmlの外にインストールしなければいけないの?

でもそれだとブラウザでアクセスできなくない?

だからpublic_htmlの中にインストールして、
そこのディレクトリにパスワードでアクセス制限をかけるの?
0671nobodyさん2009/04/24(金) 20:41:30ID:???
go-pear.phpは普通コマンドラインから実行するんでないの?
0672nobodyさん2009/04/24(金) 20:44:21ID:???
レンタルサーバーにいれるとき。
0673nobodyさん2009/04/24(金) 23:33:06ID:???
>>671
そうでもない
0674nobodyさん2009/04/24(金) 23:42:03ID:???
なんで?
0675nobodyさん2009/04/25(土) 00:03:28ID:???
>>674
おまえwindowsでgo-pear.batでインストールしてるだろ?
ソース読めば?
0676nobodyさん2009/04/25(土) 00:06:23ID:???
してないけど?
0677nobodyさん2009/04/26(日) 19:46:22ID:HwIYAsBt
MySQLは6.0まで出てますが
PHPと一緒に使うために必要なバージョンはかわらないんでしょうか?
0678nobodyさん2009/04/26(日) 21:35:32ID:???
勉強しなければならないのって、
PHP、javascript、MySQL

この3つは、デフォルトでガチ。さらに、それプラス、

XML,PDF、FLASH(actionscript)

も必要だと思う。さらに
ubuntu
の知識も必要だよね。他にも何かある?
0679nobodyさん2009/04/26(日) 23:37:21ID:???
HTTPを知らんでどうする。
0680nobodyさん2009/04/26(日) 23:52:36ID:???
MySQLっつうかRDBMS。PDO経由ならどれも同じようなもんなのでどうでもいい。
同じく、UbuntuじゃなくてLinux一般の知識。つうかUnix系OSの知識。
XMLにはそもそも学ぶ事はほとんど無い。
PDFは果てしなくどうでもいい。

他に必要なのは
各ブラウザの特徴。
Apache。
PHP以外の言語なにか最低ひとつ。
0681nobodyさん2009/04/27(月) 00:00:17ID:???
>>677
mysql5.1とphp5.2.x使うときはphpと一緒に配布されているdllがおかしいから
今のところ4.1か5.0か6.0だな
06826772009/04/27(月) 02:18:47ID:Aj5i6/gI
>>681
ありがとうございます
ちょうど5.1ダウンロードしたんで アンインストールします
0683nobodyさん2009/04/27(月) 03:47:25ID:???
ある程度のHTML,JS,CSS。デザイナつく場合は関係ないけど
デザイナつかない場合は自分で書かないといけない
<font color="red">とかやってたらたとえエンジニアでも許されない
0684nobodyさん2009/04/27(月) 06:13:30ID:Aj5i6/gI
ttp://www.atmarkit.co.jp/flinux/rensai/mysql5_05/mysql5_05a.html

12行目の $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
06866842009/04/27(月) 07:52:42ID:Aj5i6/gI
私の意味不明な文章を汲み取って頂きありがとうございます
リテラル表現と言うんですか 勉強します
最近本ではなくネットを見るとほとんど理解出来ない感じです
ありがとうございます
0687nobodyさん2009/04/27(月) 08:24:10ID:???
簡単とは言われながらPHPも後付けでカオスってきた
06886842009/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:???
「PHPマスターブック」

あんまりよくないね。
最近の本なのに、
$_REQUESTで変数を受けてるとか。

あと説明がバラバラな感じで統合されてないかんじ。
0691nobodyさん2009/04/27(月) 18:39:41ID:???
$_REQUESTで変数を受けとること自体はアリだろ
どういうケースかで問題にもなるが
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:???
POSTできるものはGETできるし
GETできるものはPOSTできるんだから
$_REQUESTが危険とか妄想も甚だしい
0696nobodyさん2009/04/27(月) 20:38:42ID:???
<form method="post" action="">
<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:???
>>696
これで階乗(!)の計算をする前の
計算式の表示ができるようになったんだけど、
かんじんの計算アルゴリズムがわかりません。

再帰のどこに仕込めばいいの?


8 x 7 x 6 x 5 x 4 x 3 x 2 x 1

↑こういうやつです
0698nobodyさん2009/04/27(月) 20:51:03ID:???
function factorial($n)
{
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:???
そんで、変数 X 関数そのもの、ってやるのね
0701nobodyさん2009/04/27(月) 21:03:26ID:???
<form method="post" action="">
<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;

}
?>
0702nobodyさん2009/04/27(月) 21:04:31ID:???
>>701
完成!
でも、残念ながら、計算できるのは14まだだな。
0703nobodyさん2009/04/27(月) 21:07:49ID:???
ほうほう,それで?
0704nobodyさん2009/04/27(月) 21:09:15ID:???
BCMathを使うべきなのかな?
でもからめかたがわからんけど。
0705nobodyさん2009/04/28(火) 19:12:20ID:???
「基礎からのPHP」

山田和夫

結構いいよね。初心者向き。
わかりやすい
0706nobodyさん2009/04/28(火) 20:51:42ID:???
他の本読んだことあるのか?
0707nobodyさん2009/04/28(火) 21:34:02ID:???
「PHPテクニックブック」

逆引き系辞書
すっきりまとまっていてわかりやすい
0708nobodyさん2009/04/28(火) 21:42:35ID:???
PHPの入門書の話がしたいならスレ違い
0709nobodyさん2009/04/30(木) 00:58:44ID:LgS6bdo0
Refreshヘッダってhttp equivじゃなくて生ヘッダに書き出した場合でも機能しますか?
0710nobodyさん2009/04/30(木) 09:10:30ID:???
HTTP リダイレクト Headerとかでぐぐってみたの?
0711nobodyさん2009/04/30(木) 11:02:05ID:???
>>709
生ヘッダってのはhttpのメッセージヘッダってことか?
手元の本によると、HTTP1.1の規定にRefreshというヘッダはないらしい
なので、それが機能する根拠はない

実際の動作はブラウザに依存するだろうな
動作するブラウザもあるみたいだ
0712nobodyさん2009/05/01(金) 15:21:52ID:TRkhRI17
たとえばPHPで以下のようなコードが書いてたとします

class Hoge {
 private $ct = null;
 function Hoge() {
  $this->ct = 0;
 }
 function countCt() {
  $this->ct++;
 }
}

この時Ajaxでカウントを行おうとすると
結局は毎回コンストラクトが呼ばれてずっと0のままですよね?
Cometという技術ではちゃんとカウントアップされていくと考えてよいのでしょうか?
0713nobodyさん2009/05/01(金) 15:26:40ID:???
よかないよ
07147122009/05/01(金) 15:29:45ID:???
>>713
Wikipediaの説明を見るとコネクションはずっと張りっぱなしだと思うのですが違うんですか?

http://ja.wikipedia.org/wiki/Comet#.E5.AE.9F.E7.8F.BE.E6.89.8B.E6.B3.95
07157122009/05/01(金) 15:36:58ID:???
色々勘違いしてたかもしれません
出直してきます
0716nobodyさん2009/05/02(土) 02:36:36ID:???
これでOK

class Hoge {
 static $ct = null;
 function Hoge() {
  if( Hoge::$ct == null ){ Hoge::$ct = 0; }
 }
 function countCt() {
  Hoge::$ct++;
 }
}
0717nobodyさん2009/05/02(土) 03:07:24ID:???
>716
static変数といえど、セッションをまたいで維持するのは、普通にやったんじゃ無理だろ。
Cometはレスポンスが届いた直後にすぐリクエストを送信させる技術だから、セッションは毎回切れる。
0718nobodyさん2009/05/02(土) 03:14:04ID:???
コネクション張りっぱなしが技術的に無理なら外部でもっとくしかないよな
技術的にできるの?やり方しらないけど
0719nobodyさん2009/05/02(土) 11:52:20ID:???
>718
よくあるセッションを使うやり方しかない。
Javaとか.NETだと、全変数をセッション変数として記録しておく事でリクエストをまたいで変数を維持する、というド外道な動作原理のフレームワークが存在するが。
0720nobodyさん2009/05/02(土) 14:08:00ID:???
ド外道ってかそれが標準でしょ>フレームワーク
0721nobodyさん2009/05/02(土) 14:34:45ID:???
リクエスト/レスポンスを跨いでセッション状態を保持する方法は、4つぐらいある。

 1)ブラウザ側にajaxぽく持たせておく(DHTMLやJavascript変数として)
 2)formにhiddenとして埋め込んでおき、リクエスト/レスポンスのたびに
  ブラウザとサーバーとの間でピンポンする。
 3)サーバー側でセッション変数に記録する。
 4)サーバー側で、セッションIDをキーとしたDBテーブルやファイルに保存する。

1)2)はブラウザ側でデータを不当に改変できてしまうし、
4)は実装するのがめんどくさい。
よって、メモリ不足するとかセッション状態を長期間保持しないといけないとかいう
特殊な理由が無い限りは3)だな。
0722nobodyさん2009/05/02(土) 14:54:01ID:???
4と3は同じこと言ってる気がするが
0723nobodyさん2009/05/02(土) 15:01:40ID:???
メモリ上に保持するか否かの違いやね
0724nobodyさん2009/05/02(土) 17:16:06ID:???
一つのWindowsマシン上でwebサーバーとブラウザを両方起動し、
ブラウザを使ってウェブサーバーにアクセスします。
このときのhttp request/responseの内容を見たいのですが、
いいソフトウェアはありませんか。
Wiresharkを試してみたのですが、キャプチャ出来ませんでした。
0725nobodyさん2009/05/02(土) 17:40:10ID:???
http://wiki.wireshark.org/CaptureSetup/Loopback
Windowsではloopbackをキャプチャできないらしいよ。

自分に振られている他のIPアドレスでやってみては?
デフォルトで、script/server は動作ホストの持っている全アドレス
をlistenしている(-b 0.0.0.0)ので、192.168.xxx.xxx みたいな、
搭載ネットワークインターフェイスに割り振られているIPアドレス
でもアクセスできる。

07267252009/05/02(土) 17:41:44ID:???
Railsスレと間違えてたので、script/server以下は無視してくれ。
その上の部分はあってるはず。
0727nobodyさん2009/05/02(土) 17:47:26ID:???
張りっぱなしってのはHTTPConnectionがずっとOpenの状態ってことだと思うが
07287242009/05/02(土) 18:20:51ID:???
>>725
言い忘れていましたが、WindowsXPです。

OSを普通に起動しただけでは、192.168.xxx.xxxにpingを飛ばしてもキャプチャできませんでしたが、
教えていただいたwikiのように、
 arp -s 192.168.xxx.xxx <MACアドレス>
 route add 192.168.xxx.xxx 192.168.xxx.xxx
とすることでキャプチャ出来るようになりました。

ありがとうございました。
0729nobodyさん2009/05/02(土) 18:27:08ID:???
route printしてみると、Windowsだと自分のNIC向けのパケットも
127.0.0.1を通るみたいね。
07307242009/05/02(土) 19:30:23ID:???
>>724
>>728
>>729
pingは正常に届き、キャプチャできたのでうまくいったと思ったのですが、
変な事になりました。
apacheの応答が帰って来ません。

キャプチャしてみると、
192.168.0.133:1143 > 192.168.0.133:80 [SYN]
192.168.0.133:80 > 192.168.0.133:1143 [SYN,ACK]
192.168.0.133:1143 > 192.168.0.133:80 [ACK] *TCP CHECKSUM INCORRECT*
192.168.0.133:80 > 192.168.0.133:1143 [SYN,ACK]
192.168.0.133:1143 > 192.168.0.133:80 [ACK] *TCP CHECKSUM INCORRECT*
:
となっていました。
TCPのチェックサムが合わないせいでハンドシェイクに失敗しているようです。
チェックサムを計算する時にはsource/destのIPアドレスも計算に含めると記憶してますが、
そこらへんで計算が変になってるんでしょうか。

>route printしてみると、Windowsだと自分のNIC向けのパケットも
>127.0.0.1を通るみたいね。
127.0.0.1を目的地にしないと正常に動作しないってことなのかも知れませんね。
07317242009/05/02(土) 20:07:03ID:???
>>730

何度もすみません。

route add 192.168.0.133 192.168.0.1(ルータのIPアドレス)

として、ルータまで往復させることで一応キャプチャできるようになりました。
一つのパケットが2回キャプチャされてしまいますが…。

なぜこれで、パケットが192.168.0.133と192.168.0.1の間でループしないのかは
わかりません(汗
0732nobodyさん2009/05/02(土) 22:10:48ID:???
さて、、、
今日は、正規表現の
勉強をするかな、、、
0733nobodyさん2009/05/02(土) 23:22:31ID:???
出力系関数、全部でいくつあるのかのぉ、、、

print
print_r
var_dump
var_export

他にもある?
0734nobodyさん2009/05/02(土) 23:26:20ID:???
PHP専用の話ならPHPスレでやりなよ
0735nobodyさん2009/05/02(土) 23:27:22ID:???
serialize()

って、説明読んでも、
何をするものなのか、意味
わかんないんだけど?
0736nobodyさん2009/05/02(土) 23:30:35ID:???
またお前か
全然成長してないな
0737nobodyさん2009/05/02(土) 23:36:27ID:???
2ちゃんねるは自己紹介をする場所となっております
0738nobodyさん2009/05/02(土) 23:40:38ID:???
おういいぞ、してみろや
0739nobodyさん2009/05/02(土) 23:54:12ID:???
header(Location)で、
他人のサーバーに飛ばしたとき、
相手がアパッチのアクセスログを見ていて、
「ああ、これはどこそこから飛んできたな」
とかってわかるのですか?
0740nobodyさん2009/05/03(日) 01:25:02ID:???
>>730
チェックサムオフロードとか有効になってたら、キャプチャしたパケットの
チェックサムが正しくないことがあった気がする
0741nobodyさん2009/05/03(日) 01:27:56ID:???
>>731
サブネットマスクが変な値になってないか?
0742nobodyさん2009/05/03(日) 11:55:57ID:???
>>732
/^0-9+$/は
{^\d+$}という風に書くことができます
0743nobodyさん2009/05/03(日) 16:36:45ID:tWBMETke
GETパラメータで日本語を渡す時、
RFCだとUTF-8を使わないと行けないようになっていますよね。
それを受けて、Tomcatとか
一時期のGoogleとかがUTF-8として解釈するように仕様変更してgdgdになりましたが、
結局どうすればいいのでしょう?

htmlソースの文字コードとUTF-8のどちらが来ても受けられるように、
文字コードの自動判別を組み込んだ方がいいのでしょうか。
0744nobodyさん2009/05/03(日) 18:51:45ID:???
utf8 にまとめておくと幸せになる
0745nobodyさん2009/05/03(日) 21:44:22ID:???
今日は、正規表現と、MySQLから
取ってきたデーターを読み出す方法と、
三角関数の勉強をしようかな?
0746nobodyさん2009/05/04(月) 00:38:48ID:AP7J/8iQ
UTF-8でGET/POSTパラメータを受け取る時って、
NFC正規化済みと仮定しちゃってもいいんでしょうか?
0747nobodyさん2009/05/04(月) 00:51:45ID:???
>>746
だめ。
0748nobodyさん2009/05/04(月) 17:04:30ID:lHxMWjZ/
Java + Struts で実験しているのですけど、

http://〜/portal.do?page=test%gat

みたいに変な文字≒特殊な意味を持つ文字、ここでは%を混ぜるとcatalina.outに以下のような警告が出ます。
これは無害(無視しても構わない)ですか有害(何らかの対処が必要)ですか?
どなたかご教示ください。
ちなみにTomcatの処理落ち、500エラーは生じていません。


2009/05/04 16:42:57 org.apache.tomcat.util.http.Parameters processParameters
警告: Parameters: Character decoding failed. Parameter skipped.
java.io.CharConversionException: isHexDigit
at org.apache.tomcat.util.buf.UDecoder.convert(UDecoder.java:85)
at org.apache.tomcat.util.buf.UDecoder.convert(UDecoder.java:46)
at org.apache.tomcat.util.http.Parameters.urlDecode(Parameters.java:411)
at org.apache.tomcat.util.http.Parameters.processParameters(Parameters.java:393)
at org.apache.tomcat.util.http.Parameters.processParameters(Parameters.java:509)
at org.apache.tomcat.util.http.Parameters.handleQueryParameters(Parameters.java:266)
       (以下だらだらとトレース情報が続く)
0749nobodyさん2009/05/04(月) 17:12:05ID:???
あたりまえだろウェブの基本中の基本だ
0750nobodyさん2009/05/04(月) 17:19:18ID:???
URLエンコード
0751nobodyさん2009/05/04(月) 20:26:34ID:???
ウェブプログラマーを目指しています。
PHPはある程度覚え、サイトもいくつか作りました。

で、就職することを考えて、
1.PHPをもっと極める
2.PHPのフレームワークをいくつか覚える
3.ASP.NET方面へ
4.Java方面へ
5.RoRで冒険
6.Djangoで唯一無二の存在へ

どれが良いとおもわれますか?

就職したら実際どうなるかはわかりませんが、理想としては業務システム系ではなく一般ユーザ向けのウェブアプリ開発方面へ進みたいと思っています。
■ このスレッドは過去ログ倉庫に格納されています