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

【PHP】下らねぇ質問はID出して書き込みやがれ 76

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2008/11/13(木) 04:15:32ID:???
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 75
http://pc11.2ch.net/test/read.cgi/php/1224168721/

◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】

◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)

◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0003nobodyさん2008/11/13(木) 04:17:28ID:???
関連リンク
■本家マニュアル   http://www.php.net/manual/ja/
■日本PHPユーザ会 http://www.php.gr.jp/
■PEARマニュアル  http://pear.php.net/manual/ja/
■メーリングリスト   http://ns1.php.gr.jp/mailman/listinfo/
■ZFマニュアル    http://framework.zend.com/manual/ja/

(以下英語)
■Smarty       http://smarty.php.net/
■Zend本家      http://www.zend.com/
■Zend Framework  http://framework.zend.com/
■php | architect   http://www.phparch.com/
■Smartyマニュアル http://smarty.php.net/manual/en/
■PECL本家(英語) http://pecl.php.net/
0004nobodyさん2008/11/13(木) 04:18:00ID:???
【簡易FAQ】
1.文字コードは何を使えばいいの?
 →1.UTF-8 2.EUC-JP のどちらか。迷うようなやつはShift_JISは使っちゃダメ。
2. このスレに書き込むときに自分のサイト名を晒したくない
 → http://example.com/が例文などのために予約されている。hogehoge.comは使っちゃダメ。
3. ブラウザに何も表示されないんだけど・・・
 → Apacheの設定を見直せ。ファイルの拡張子は何にしてて、その拡張子でPHPを呼ぶようになっているか?
4. 記号の意味がわからないけどググりようがない
 → 「@」 エラー表示を抑制、「->」 オブジェクトのメンバにアクセス、「::」 静的なメソッド呼び出し、
  「==」は暗黙の型変換をしてゆるい比較、「===」は型情報も含めた厳密な比較
5. echo "$arr['hoge']['fuga']"; と書いたらエラーになった
 → {おっぱい括弧}でくくって"{$arr['hoge']['fuga']}"にする
6. 一定時間ごとに自動的に何かしたいんだけど
 → cronかタスクスケジューラを使え。
7.extractって危険なの?
 →変数上書き&初期化忘れなどで危険。楽だからという理由だけで安易に使わない。
8. include/requireに「〜.php?a=b&c=d」のようなパラメータをつけたい
 → URL呼び出しなら可能だけど、普通のファイル呼び出しではできません
9.include/requireでURLを指定しても何も起きない
 → .phpの拡張子のファイルをURLで呼び出すと、1度PHPプログラムとして実行された結果になる。
0005nobodyさん2008/11/13(木) 04:18:32ID:???
10. そもそもインストールの時点でうまくいかない
 → 確認すべきはPHPのconfigureの引数、php.iniの内容と置き場所、
  Webサーバの設定(Apacheならhttpd.conf)、起動&再起動あたり
11. SQLの質問はどこで?
 → データベース板に誘導されるのが嫌ならPHPにうまく関連させて質問する
12. 文字列のなかに、英字のみとか数字のみとか記号が入っちゃいやんとかはどうしたらいいの?
 → ctype_〜()が手軽。複雑なパターンはpreg_〜()あたりで正規表現を使う。
13. $a1, $a2, $a3 ... のような変数名をうまく扱いたい
 → 可変変数で実現できるけど、むしろ配列を使って$a[1], $a[2], $a[3]等とするのがベター
14. echoとprintってどう違うの?
 → よく議論される話題であるが基本的に両者とも同じ。 以下ちょっとした議論。
  http://www.faqts.com/knowledge_base/view.phtml/aid/1/fid/40
15. クッキーの情報をユーザから隠したい
 → セッション使え。ただしクッキーとセッションは仕組みが違うから同じように扱うな
16. strip_tags()で削除しないタグを複数指定したい
 → strip_tags($html, '<a><p><font>'); // htmlspecialchars()も検討すべし
17. CSVやTSVのファイルをスマートに扱いたい
 → まずはfgetcsv()。ただし日本語を含むと正常に動作しない場合があるので注意だ。
18. 値渡しと参照渡し(「&」を使う)のパフォーマンスの違い
 → C言語じゃないので、パフォーマンス目的で使いわけたらダメ。参照渡しにすると逆に遅くなったりする
  参照渡しは引数に戻り値を設定したり引数を関数内で変更するなど、正しい目的に使うこと
19. ファイル入出力関数(fopen等)でリモートファイル(http://〜とか)を扱う際の限界
 → fsockopen()でソケット通信 or PEARのHTTP系 or CURLで解決
  必要ならHTTPをはじめとする各種プロトコル(どんなデータを送受信するか)はRFCなどで調べる
20. PHPからPOSTリクエストしたい
 →19.を参照
21. 画像処理一般 or GDの限界
 → ImageMagick(PECLのやつ or シェルから実行)
22. 画像・音・動画はファイルで保存?DBに保存?
 → 好きにしてください
0006nobodyさん2008/11/13(木) 04:22:52ID:???
function arrayOut(&$array, $fileName=NULL) {
    $str = '<?php return ';
    $str .= arrayOut_($array);
    $str .= '?>';
    if($fileName) {
        $fp = fopen($fileName, 'w');
        fwrite($fp, $str);
        fclose($fp);
    }
    return $str;
}

function arrayOut_(&$array, $tab=0) {
    $tabs = str_repeat("\t", $tab);
    $tabs_ = $tabs ."\t";
    $str = 'array(
';
    foreach($array as $key => $val) {
        $key = is_int($key) ? $key : "'". $key ."'";
        $str .= $tabs_ . $key .' => ';
        if(is_array($val)) {
            $str .= arrayOut_($val, $tab + 1);
        }
        else {
            $val = is_int($val) ? $val : "'". $val ."'";
            $str .= $val;
        }
        $str .= ',
';
    }
    return $str . $tabs .')';
}
000762008/11/13(木) 04:24:01ID:???
使い方

$array = array(
    2, 4, 8, 8 => 4, 10 => 'afe',
    'test' => 'poen',
    'kami' => 'ahonishi',
    array(
        5 => 5,
        'test' => 'aafafa',
        'array' => array(
            4,5,6,7,
        ),
    ),
    array(
        array(
            array(
                array(
                    'gogogogo' => 'nyaaaa',
                ),
            ),
        ),
    ),
);

echo arrayOut($array, 'array.txt');
0008nobodyさん2008/11/13(木) 08:06:46ID:???
serializeかvar_exportじゃだめなん?
000962008/11/13(木) 11:25:56ID:???
>>8
うわあああああああああああああああ
ああああああああああああああああ
あああああああああああああああああああああ
0010nobodyさん2008/11/13(木) 11:43:32ID:???
クソワロタ
よく頑張ったよ
0011nobodyさん2008/11/13(木) 11:55:37ID:???
よくあることだ
人間はそうやって成長していくんだよ
0012nobodyさん2008/11/13(木) 12:12:24ID:???
なんでも丸投げ厨に比べたら偉いよ
0013nobodyさん2008/11/13(木) 13:49:08ID:???
974+1 :nobodyさん [] :2008/11/12(水) 22:40:31 ID:UDdKXaZu

PHPの質問ではありませんが、どなたか教えてください。

画面遷移の管理(というかセッションの管理)で、
ttp://www.j-tokkyo.com/2001/G06F/JP2001-160033.shtml
のような特許が開示されているのですが、みなさん気にされていますか?

自分の場合、他サイト間連携の画面遷移なんかで以前から使いまくってたりするのですが、
コンプラ強化の流れで制限されそうになってますです。。

はて困った。。
0014nobodyさん2008/11/13(木) 14:07:26ID:bw3b61Qh
suEXECっていうのは、PHPを
アパッチのモジュールモードで動かしているときは、
関係ないしろものなの?
0015nobodyさん2008/11/13(木) 14:21:37ID:???
そうです
0016nobodyさん2008/11/13(木) 16:01:38ID:bw3b61Qh
そうしたら、その場合は、パーミッションの設定は、
「suEXECが入っていない場合」、というのを
見て参考にすればいいの?
0017nobodyさん2008/11/13(木) 16:06:10ID:???
モジュールの場合、cgiのパーミッションは関係ない。
apacheが動作しているユーザーが読めればいいだけ。
0018nobodyさん2008/11/13(木) 16:07:54ID:???
要は、htmlと同じ扱い。あ、phpファイルのことね。
読み書きする外部ファイルの扱いはcgiと同じ。
0019nobodyさん2008/11/13(木) 16:14:35ID:???
http://www.e-provider.jp/server/cgi.html

>レンタルサーバではグループの権限はゼロに設定すべきです。

>レンタルサーバではCGIは705、データファイルは606にすべきです。
>レンタルサーバでtelnetを開放している場合、他の住人のディレク
>トリーにも自由に入れます。CGIのパーミッションが755なら、telnet
>経由で他のユーザーはあなたのCGIのソースファイルを見ることが
>できます。CGI ファイルの中にパスワードが書いてあれば、パスワ
>ードも漏れます。データファイルのパーミッションが666ならtelnet経
>由でデータファイルを見るだけでなく、書き換え・削除できます。

↑ここのサイトに、こんなこと書いてあった。
こんな重要なことなのに、はっきり書いてある
サイトが少なくって。怖いなぁ。
0020nobodyさん2008/11/13(木) 16:15:35ID:???
ようは、拡張子が.phpで、
CGIモードでなくて、アパッチの
モジュールモードで動くときに、
パーミッションの設定をどうしたらいいのか、
ちゃんと解説してあるサイトが少なくて
見つけられないんだよね。
0021nobodyさん2008/11/13(木) 16:16:47ID:???
グループ内の他人のディレクトリに普通入れるか?
0022nobodyさん2008/11/13(木) 16:20:27ID:bw3b61Qh
>suEXECでは、nobodyで動くのではなく、ユーザー権限で動きます。

って書いてあるから、「suEXECが入っている場合」、の
説明をマネすればいい感じかな?
0023nobodyさん2008/11/13(木) 16:20:59ID:bw3b61Qh
>>21
そのサーバーでtelnetが有効であれば
入れる、と書いてあります。
0024nobodyさん2008/11/13(木) 16:24:07ID:???
基本的に、まともなとこなら他人のHOMEには入れません。
でも、SuExecでグループ読み込みありだと、その他人のCGIから中見覗けます。
SuExecは、グループ書き込みできるファイルは実行できないようにしてるけどね。
基本的にどんな場合でもグループは0にすべき。
(専用鯖で多人数で作業してるとこは除く)
0025nobodyさん2008/11/13(木) 16:30:58ID:???
まだパーミッション厨いたのか
0026nobodyさん2008/11/13(木) 16:44:48ID:K5TW61gC
メールからのリンクで登録完了させるために
メール本文にhttp://.../nantoka.php?a=123&b=456
ってな感じで書いてんだけど
&が?になっちゃう
どないしてΣ('0'*)?
0027nobodyさん2008/11/13(木) 16:45:42ID:TS7LMUyh
質問なんだけど
ポストで取得した文字列を、mecabというソフトにパイプで渡して
その結果を得たいのですがproc_open()ではどうもうまくいきません。

windowsでPHPなのでmecabのPHPモジュールも使えないのです。

$mecab='C:\Program…'
proc_open($mecab,…)というようにパスを入れるのでは
ソフトを起動させられないのでしょうか?

PHPマニュアルには
proc_open('PHP',…)として、プログラムの名前が書かれています。
でもproc_open('mecab',…)では無理でした。

とりあえず外部プログラムを動かし値を得る方法を教えてください。
0028nobodyさん2008/11/13(木) 16:48:29ID:bw3b61Qh
>データファイルをDocumentRoot以下に置いてはいけない

ってサイトに書いてあるんですが、そうなの?
0029nobodyさん2008/11/13(木) 16:51:29ID:???
>>28
わざわざDocumentRoot以下に置く理由もないでしょ。
危険の芽はつんでおくに限る。
0030nobodyさん2008/11/13(木) 17:12:56ID:mUWlC/Ng
下記のようなランダムPHPを使ってるのですが、
例えばこれを $txt を10個設定してから、
10個並べて出力させたとして、全部違う結果を表示させたいんですが
どう記述を加えればいいでしょうか
よろしくお願いします

<?php
$txt[0] = '0';
$txt[1] = '1';

$length = count($txt) - 1;
srand( (double)microtime()*1000000 );
$num=round( rand(0,$length) );
print("$txt[$num]");
?>

0031nobodyさん2008/11/13(木) 17:16:44ID:???
>>30
下手のこと考えるより、array_rand
0032nobodyさん2008/11/13(木) 17:28:24ID:mUWlC/Ng
>>31

<?php
srand((float) microtime() * 10000000);
$input = array("ネオ", "モーフィアス", "トリニティ", "サイファー", "タンク");
$rand_keys = array_rand($input, 2);
echo $input[$rand_keys[0]] . "\n";
echo $input[$rand_keys[1]] . "\n";
?>

これの事ですか?
$input = array("ネオ", "モーフィアス", "トリニティ", "サイファー", "タンク");
から1つづつ抽出してくれるという事ですか?



0033nobodyさん2008/11/13(木) 17:47:11ID:mUWlC/Ng
>>31

ttp://okwave.jp/qa4419102.html

array_rand で検索してみたところ、
上記の記事でうまいこと出来そうです。

ありがとうございました。
0034nobodyさん2008/11/13(木) 17:51:59ID:???
http://pc11.2ch.net/test/read.cgi/esite/1205740833/310-

長年やってるプロでも
こんなバカなミスやるんだな。
0035nobodyさん2008/11/13(木) 17:55:33ID:???
賠償まだー?
0036nobodyさん2008/11/13(木) 18:46:21ID:???
賠償はでないんじゃないかな?
本では結構かっこいいこといっていたし、
近藤さん好きだったんだけどな。
残念です。
0037nobodyさん2008/11/13(木) 19:27:04ID:???
お前らがちゃんと
パーミッションの設定について
教えないせい
0038nobodyさん2008/11/13(木) 20:15:10ID:3XeZmcyK
PHPで作成したWebページが、IE7で見ると真っ白になります。
どうも文字コードの自動判別がうまく働かないようで、
UTF-8で作成したページがシフトJISと解釈されているようです。

頻出の問題らしいので関連サイト見て対処したのですが、未だに直りません。
下記の対処法以外に何かやるべきことがあるでしょうか?

■PHPでやった対策
・ソースコードのファイルはUTF-8で保存
・PHPコードの先頭付近で「header('Content-Type: text/html; charset=utf-8');」を記述
・PHP.iniのdefault_charsetはコメントアウトされた状態

■HTMLでやった対策
・ファイルの<head>タグ内に「<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />」と指定
・<title>タグは、上記のcharsetよりも後に記述
・ファイルはUTF-8で保存

さらに面倒なことに、自宅のPCでは問題なく表示されるのです。
なぜか自分以外のPCで見ると、IE7のみ真っ白になるらしいです。
(数人から連絡を受けたので、どうも見えるほうが少数派のようです)

なにかいい対策方法は無いでしょうか?
0039nobodyさん2008/11/13(木) 20:31:50ID:???
真っ白て。

ソースは取得できてるの?その文字コードは?
PHPの内部エンコーディングは設定してないの?
エラーコードは?(さらに言えばHTTPレスポンスは?)
PC環境で明らかに違う点は?
0040たまちゃん ◆Emjcf.lfLU 2008/11/13(木) 20:34:49ID:rj1jn7su
3gp.fmと言う、ネット上で音楽の拡張子を変換するツールを見つけました。
http://3gp.fm/Mob.aspx

これは、ASPを使ってる見たいですが、PHPで作ろうと思いました。
私なりに構造を考えてみたのですが、どのような仕組みだと思いますか?

Content-type がmp3などのを、単なるヘッダーでvideo/3ggpに指定してやる。

この浅はかな考えではうまく作れませんでした。どのようにしたらよいのでしょうか?
0041nobodyさん2008/11/13(木) 20:35:25ID:???
拡張子変換するだけなら文字列関数でできるぞ
0042nobodyさん2008/11/13(木) 20:36:24ID:???
後半読んでなかった
>Content-type がmp3などのを、単なるヘッダーでvideo/3ggpに指定してやる。
ぶw これはねーわw
0043たまちゃん ◆Emjcf.lfLU 2008/11/13(木) 20:38:33ID:rj1jn7su
>>41
詳しくお願いします。
文字列関数…
ただ、拡張子だけでなく、ヘッダーもかえたいです。
.mp3が.3gpになっただけでは、携帯からは音楽が聞けません…
0044たまちゃん ◆Emjcf.lfLU 2008/11/13(木) 20:39:25ID:rj1jn7su
>>42
これ以外、どうやってると思いますか?

0045nobodyさん2008/11/13(木) 20:43:16ID:???
外部アプリ使ってんでしょ
0046たまちゃん2008/11/13(木) 20:47:04ID:rj1jn7su
>>42
外部アプリ…
ってことは、aspxや、PHPだけではこのツールを作成することは不可能なのですか?
そのアプリは、どんなアプリでしょうか?
Windowsアプリケーションexeは、携帯には対応してません。
0047nobodyさん2008/11/13(木) 20:49:23ID:???
別に可能ではあるんじゃない?
あとWindowsアプリケーションexeが携帯に対応してないってのが良く分からないけど
0048382008/11/13(木) 21:16:44ID:???
>>39
ソースは取得できており、IEの画面を右クリック→ソースを表示 で表示できます。

UTF-8のページを開く際に、IEの文字コード設定でシフトJISを手動選択すると真っ白になるので、
おそらくIEが勝手にシフトJISだと勘違いしているのだと思います。

PC環境についてですが、複数の人から「真っ白だ」と言われているため、
明らかに違う点が分からない状況です。(OSもXPとVistaが混在です)

あと、PHPのコードにはmb_internal_encoding("utf8");と記述しています。

レスポンスヘッダは以下です。
HTTP/1.1 200 OK
Date: Thu, 13 Nov 2008 12:14:09 GMT
Server: Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.3 with Suhosin-Patch
X-Powered-By: PHP/5.2.4-2ubuntu5.3
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Type: text/html; charset=utf-8
Proxy-Connection: close

何か分かるようでしたらお願いします。
0049たま2008/11/13(木) 21:17:51ID:rj1jn7su
>>47
どのようなプログラムを書けばよいか、大まかにでも教えてください。
0050nobodyさん2008/11/13(木) 21:21:00ID:KF88aCBc
http://www.matsuzo.co.jp/top1.html
0051nobodyさん2008/11/13(木) 21:57:04ID:???
>>49
>>47じゃないが>>47がいいたいのは
サーバ側で別のアプリケーションを起動させて変換して返すってもの
wavをmp3に変換するツールとかあるでしょ?
そういうのでコマンドラインから実行できるようなものを
リクエストがあったらコマンドラインから該当ファイルを変換して返すような仕組み
ようするに処理自体はPHPでやってるわけじゃないってこと
0052nobodyさん2008/11/13(木) 22:02:04ID:???
>>50
そうそう。君はそうやって人の言うことを聞いとくべきだよ。
六年生とは思えないほど稚拙な文章だったけど、面白かったよ。
0053272008/11/13(木) 22:14:36ID:TS7LMUyh
もう分からないからCGIで動かす事にする。
CGIならmecabを動かせるし。
でもCGIやった事無いから分からないけど
一つのファイル内でCGIとPHPを混在させる事できる?

PHPで文字列受け取ってCGIで処理してPHPで表示したい。
または例えばPHPファイル内で処理するスクリプト中に
CGIファイルをインクルードして結果の配列をPHPに再び渡すってできない?
0054nobodyさん2008/11/13(木) 22:31:43ID:???
>>27
> $mecab='C:\Program…'

単にスペースが入ってるだけじゃねーの?
0055nobodyさん2008/11/13(木) 23:42:29ID:rLX4EmuO
セッションの使い方とセキュリティで悩んでいます。
ググって調べると、携帯サイトではGETでURLにsession_idを
付与するようですが、別サイトにリファラが残る場合があり、
セッションハイジャックの危険性があります。

他のプログラム(OpenPNEやMT)などをみると、
セッションをDBに保存して、毎回照合しているみたいです。

そこで質問ですが、どちらの方法の方がより安全で有効なのでしょうか?
前者であれば手間もかからず、負荷も少ないと思いますし、
後者であればセッション発行時のIPアドレスやUSER AGENTを保存すれば
セッションハイジャックやなりすましは防止出来るのではないかと思っています。
0056272008/11/13(木) 23:43:40ID:TS7LMUyh
>>54
確かにそうでした。ありがとうございます。
pewershellではC:\Pro*s\mecab\bin\mecab.exeとしたらちゃんとmecab.exeが機能しました。
(それまではProgram filesでもいけると思ってました。)

しかしやはりproc_open()の方では無理です。

ソースはこんな感じ。
$mecab = 'C:\Pro*s\mecab\bin\mecab.exe';
$descriptorspec = array(0=>array("pipe","r"),1=>array("pipe","w"));
$process = proc_open($mecab,$descriptorspec,$pipes);

でこの後に
print is_resource($process);
としてみたのですが1(FALSE)しか返ってきません。
やっぱりうまくいかないようです。
0057nobodyさん2008/11/14(金) 00:06:41ID:???
>>50-52
なんぞそれ?
0058nobodyさん2008/11/14(金) 06:44:08ID:LBY0wnii
アパッチで、ファイルの所有者が、
アパッチの場合と、nobodyの場合と、yamadaの場合と、
3種類あるようなんだが、これってどこで決まってるの?
0059nobodyさん2008/11/14(金) 07:04:36ID:???
>>56
普通1はtrueなんだ
0060nobodyさん2008/11/14(金) 09:07:18ID:???
>>56
print is_resource($process);
こんな事するより
var_dump($process);か
echo var_export($process,true);
0061nobodyさん2008/11/14(金) 12:43:13ID:???
>>58
PHPのスクリプトでtouch()とかで作られたファイルはアパッチになるよ。
nobodyやyamadaは知らん。俺yamadaになんてなった事ないから。
0062nobodyさん2008/11/14(金) 15:00:32ID:???
「nobody」も「アパッチ」も同じこと
Apacheの実効ユーザで作成されてるってこと、PHPがApacheモジュールで動いてるからな
suExec環境ならスクリプトの所有者で生成される、それがyamadaなんじゃね?
0063nobodyさん2008/11/15(土) 06:36:19ID:oW2TcjIK
http://www.standpower.com/php_form.html
ここの、
input.htmlと、output.phpの2つのファイルをドコのフォルダに置けば入力した名前が表示されるのでしょうか?
input.htmlファイルをクリックしてinput.htmlを表示させ、「太郎」と入力まではうまく行くのですが、
クリックして、output.phpを表示させると、ソースコードが表示されます。 いったいどうしたらいいのでしょうか?
0064nobodyさん2008/11/15(土) 06:39:47ID:oW2TcjIK
ちなみに、
【OS名】winXP
【PHPのバージョン】php5.26
です。
0065nobodyさん2008/11/15(土) 06:54:07ID:oW2TcjIK
つーか、
<form action="output.php" method="post">
この部分を、
<form action="http://localhost/php/output.php" method="post">
にしたらうまくいきました。
これは正しいやり方だったのでしょうか?
0066nobodyさん2008/11/15(土) 07:23:37ID:???
>>65
そんな小細工しなくても
素のままで普通に動いたけど。

ただし、元のページの解説にはバグがある。
0067nobodyさん2008/11/15(土) 07:24:50ID:???
<form action="input.php" method="post">

HTMLのformタグを使ってデータの受け渡しを行います。
action属性で指定してるファイルにデータを渡します。
ここではoutput.phpというファイルを指定してます。 method
属性ではデータを送る際の送信方法を指定します。post
とはURLとは別にデータを送る方法です。

↑ここの部分が間違ってる。

<form action="input.php"

↑ここ。inputでなくてoutputだから。
でもなぜかそのすぐ上の元のソースでは
ちゃんとoutputってなってるところがなぞ。
0068nobodyさん2008/11/15(土) 08:59:21ID:oW2TcjIK
>>66
じゃあ、input.htmlと、output.phpの2つのファイルをドコのフォルダに置きましたか?
なんつーか、この辺がよくわかんないんですよね。
つまり、PHPの影響が及ぶエリアと、及ばないエリアがあると思うんです。

>>67
それは僕も思いました。
0069nobodyさん2008/11/15(土) 09:01:42ID:???
>>68
パスの話になると別の問題
相対パスでぐぐってきてください
0070nobodyさん2008/11/15(土) 09:50:36ID:???
>>68
xampp\htdpcs\php\
とかでいいとおもう。
0071nobodyさん2008/11/15(土) 10:02:28ID:???
なんでxamppやねん。ディレクトリ名も間違ってるしひどいな
0072nobodyさん2008/11/15(土) 12:17:12ID:???
>>63
初心者が陥りやすい問題だよね。

htmlのファイルはクリックしたらダメなのよ。
あくまでブラウザ操作が基本。
ブラウザにhttp://localhost/root/input.htmlと入れるのが正解
(ちなみにrootはアパッチのconfファイルで設定した所ね)

ファイルをダブルクリックで開くとwindowsのディレクトリが表示されてしまう
(C:/root/input.html)
こうなると次にPHPファイルを開いてもアパッチでなくwindowsがテキストとして開いちゃうんだよね。
0073nobodyさん2008/11/15(土) 12:39:59ID:2pgE9K6y
最近パイプの質問ばっかりしてる俺が再びマジな質問ですが
パイプを使って得た文字列に改行がありません。
コマンドプロンプトで表示させると

ラーメン 名詞,*,ラーメン
うまい 形容詞,*,うまい

と表示されるのに
パイプで取得すると

ラーメン 名詞,*,ラーメンうまい 形容詞,*,うまい

と改行無しになってしまいます。パイプで改行を得るにはどうすればよろしいですか?
0074nobodyさん2008/11/15(土) 12:44:33ID:???
>>73
パイプカットした方がいいよ
0075nobodyさん2008/11/15(土) 12:55:15ID:???
【脆弱性】GoogleのログインページにXSSの脆弱性 ユーザー情報が盗まれる恐れも(08/11/13)
http://pc11.2ch.net/test/read.cgi/pcnews/1226550324/
0076nobodyさん2008/11/15(土) 17:15:47ID:???
基本的にXSS対策って、htmlspecialcharsすればいいよね?
0077nobodyさん2008/11/15(土) 17:32:56ID:???
改行の違いは?
0078nobodyさん2008/11/15(土) 17:33:18ID:nBA7qJcq
$binary = ""; 
for($i=0, $j=strlen($char); $i < $j; $i++)
 $binary .= substr(printf("%08b", ord(substr($char,$i,1))) ,0,-1);
echo strlen($binary);
といった感じのソースで、$charをバイナリにしてその後いろいろと処理をしたいと思っているのですが、
strlenで0しか返ってきません。
なぜなのでしょうか?
0079nobodyさん2008/11/15(土) 17:40:18ID:iYDkBqcl
変数定義する時
$var=(int)$var;
って横にデータ型の名前入れたカッコってこれどういう意味?
0080nobodyさん2008/11/15(土) 17:43:58ID:???
型キャスト
0081nobodyさん2008/11/15(土) 17:46:19ID:???
>>80
サンクス
0082632008/11/15(土) 18:03:29ID:oW2TcjIK
>>72
> ブラウザにhttp://localhost/root/input.htmlと入れるのが正解
> (ちなみにrootはアパッチのconfファイルで設定した所ね)
これで解決しました、どうもありがとうございました。

あと、もう1つ教えて欲しいのですが、
僕はrootをphpフォルダに設定しています。
で、そのフォルダの中にrep2(2チャンビュアー)を入れてます。
で、http://localhost/php/rep2/とブラウザに入れると、rep2が立ち上がります。
この場合、ブラウザはrep2フォルダのどのファイルを最初に読みに行くのでしょうか?
0083nobodyさん2008/11/15(土) 18:35:21ID:???
>>82
そんなものはapacheの設定次第だが、普通はindex.htm index.html index.phpくらいだな
0084632008/11/15(土) 18:40:26ID:oW2TcjIK
>>83
ありがとうございます。実際、index.phpというファイルがありました。
0085nobodyさん2008/11/15(土) 18:53:10ID:???
indexsを知らないでWebアプリ運用・・・ゴクリ
0086nobodyさん2008/11/15(土) 18:55:55ID:???
アパッチの設定で自由に決められる。
一般的には、

(1)index.html
(2)index.htm
(3)index.php

などの順番で、上から順に探していく。
そして、そのファイルがあったら、表示する。
0087nobodyさん2008/11/15(土) 18:56:59ID:???
ちなみに、グーグルのボットもそのような動作をする。
つまり、「ありそうな名前のファイル」で、手当たり次第に
アクセスをかけて、ファイルがあったら勝手にキャッシュされてしまう。
0088nobodyさん2008/11/15(土) 19:17:45ID:2pgE9K6y
チョベリバな質問なんですけど
カウンターが1増える時と2増える時があることに始めて気がつきました。
1時間位考えて、やっと+2の発生条件が分かったんだけど原因が分かりません。

発生するのは
http://localhost/hoge.htm/aaa
のようにファイル以下に何か文字列を付けた場合です。

http://localhost/hoge.htmhttp://localhost/hoge.htm?text=aaaの場合は発生しません。

もちろんカウンターのスクリプトには+1としか書いてないので
なぜ+2になるのか分からないのですYO!

で、推測なんですがhttp://localhost/hoge.htm/aaaのようにアクセスした場合
アパッチが2度読み込んでいるのではないかと思いました。

試しに
$kaisuu=file("test.log");//空のログファイルを開く
if($kaisuu[0] == ""){
$kaisuu = 1;
} else {
$kaisuu += 1;
}
//この後$kaisuuをtest.logに書き込む

と書いて$kaisuuをプリントしたら2が表示されてしまいます。
ちなみにファイル構成は下記の通りです。

アクセスする主のファイル hoge.htm
そしてその主ファイルの中でカウンターがあるファイルhoge.incをインクルードしています。

解決策がある人いませんか?
0089nobodyさん2008/11/15(土) 19:19:01ID:???
どうせ2回実行してるんだろ
0090632008/11/15(土) 19:23:33ID:oW2TcjIK
rep2フォルダのindex.phpファイルに、

require_once './conf/conf.inc.php';
require_once P2_LIB_DIR . '/filectl.class.php';

という記述があります。
上は、ルートの/conf/conf.inc.phpをrequireする
で、理解出来るのですが、
下が理解出来ません。
実際、C:\php\rep2\libフォルダにfilectl.class.phpというファイルはあります。
この、「P2_LIB_DIR .」の記述にはどういう意味があるのでしょうか?
0091nobodyさん2008/11/15(土) 19:24:01ID:???
定数
0092nobodyさん2008/11/15(土) 19:31:36ID:???
>>90
最初にrequireしているconf.inc.phpの中をよく見ればいいよ
phpの初心者本くらいは手元においておいた方がいいと思うぞ
0093632008/11/15(土) 19:33:01ID:oW2TcjIK
>>91
ってことは、ファイルfilectl.class.phpをP2_LIB_DIRに置き換える、ということですか?
その辺のことはマニュアルのどこに書いてあるのでしょうか?
↓には書いてありません。

http://php.benscom.com/manual/ja/function.require-once.php
0094nobodyさん2008/11/15(土) 19:35:24ID:???
死んでくれ
0095nobodyさん2008/11/15(土) 19:37:25ID:???
>87
初めて知った。
クラックツールとか脆弱性監査ツール紛いの挙動だなw
0096nobodyさん2008/11/15(土) 19:40:39ID:???
>93
conf.inc.phpをP2_LIB_DIRで検索。
そこで使われてる関数をマニュアルで調べる。
0097632008/11/15(土) 19:46:34ID:oW2TcjIK
>>96
はい、やってみました。 そうすると、
require_once P2_LIB_DIR . DIRECTORY_SEPARATOR . 'p2util.class.php';
というのが出て来ました。
これはどういう意味なのでしょうか?
0098nobodyさん2008/11/15(土) 19:47:20ID:???
頼むからリファレンスくらい目を通してからプログラミングしてくれ
0099632008/11/15(土) 19:49:12ID:oW2TcjIK
http://php.benscom.com/manual/ja/function.require-once.php

↑をみると、require_once 関数の変数(?)は1つしかない。
なのに、↓は変数(?)が3つもある。
これが意味不明なのです。

require_once P2_LIB_DIR . DIRECTORY_SEPARATOR . 'p2util.class.php';
0100632008/11/15(土) 19:51:57ID:oW2TcjIK
本は、はじめてのPHPプログラミング基礎編と、PHP5リファレンス&逆引きユーザー便利帳というのを持っています。
0101nobodyさん2008/11/15(土) 19:52:27ID:???
それを読んでからまた来てくれ
0102nobodyさん2008/11/15(土) 19:54:43ID:???
>99
他にもあるだろ。もっと検索しろ。

もういい、自分で勉強する気がないようだから解答。
どっかで
define('P2_LIB_DIR', 'C\hogehoge');
みたいに宣言されてる。defineをマニュアルで引け。
 . は文字列の連結演算子だ。演算子の項を読んで来い。
P2_LIB_DIR と DIRECTORY_SEPARATOR と 'p2util.class.php'なら確かに3つの文字列だが、
P2_LIB_DIR と DIRECTORY_SEPARATOR と 'p2util.class.php'を「つなげたもの」はひとつの文字列だ。
■ このスレッドは過去ログ倉庫に格納されています