K.Maebashi's BBS

ご自由に書き込んでください。雑談も可。
テスト書き込みの類はテスト用掲示板にどうぞ

[日付順表示] [日付順インデックス] [スレッド順インデックス]

新規投稿 | 開設者ホームページへ戻る | ヘルプ

[1949] Re:書籍「Webサーバを…」の1.5.4について
投稿者:(ぱ)こと管理人
2016/07/17 17:06:07

はじめまして。ご意見ありがとうございます。 >この2点を実装するためにやるべきことして「マルチスレッド」を挙げていますが、マルチスレッドは必須ではないはずです。実際にマルチスレッド化しなくても(単純な永久ループ化)それなりに動きました。 >この点についてWeb版の記述を見たのですが、そこでは「たくさんの接続先からの接続を並行して受け付けられなければなりません。 」とありマルチスレッドの必要性を説明していました。 >書籍版よりもWeb版の方が親切な説明だと思うのですが、なぜ書籍版のような説明にしたのでしょうか。 書籍版はWeb版を元にしていますから、この記述については「意図して抜いた」のだと思います。 記憶はだいぶあいまいですが、おっしゃるように、単純な永久ループでもそれなりに動く以上、「たくさんの接続先からの接続を『並行して受け付けられなければなりません』」と書いてしまうと、それはそれで不正確というか、ツッコミを受けてしまうかなあ、と腰が引けて抜いたように思います。 もちろん複数スレッドで応答した方がパフォーマンスがよいのは確かですから、陽にそう書くべきだったかも、とは思います。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1948] 書籍「Webサーバを…」の1.5.4について
投稿者:E2E4E9E4
2016/07/17 15:46:09

はじめまして。 Webサーバの勉強をしようと思い、書籍「Webサーバを作りながら学ぶ 基礎からのWebアプリケーション開発入門」を読んでおります。 少し疑問に思うことがあり、質問させていただきます。 "1.5.4 普通にWebページを表示できるようにする"では、以下の機能を実装しようとしています。 ・tcp接続を繰り返し受け付けるようにする ・ファイル種別に応じたContent-typeの設定 この2点を実装するためにやるべきことして「マルチスレッド」を挙げていますが、マルチスレッドは必須ではないはずです。実際にマルチスレッド化しなくても(単純な永久ループ化)それなりに動きました。 この点についてWeb版の記述を見たのですが、そこでは「たくさんの接続先からの接続を並行して受け付けられなければなりません。 」とありマルチスレッドの必要性を説明していました。 書籍版よりもWeb版の方が親切な説明だと思うのですが、なぜ書籍版のような説明にしたのでしょうか。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1944] Re:magic_quotes_gpc
投稿者:(ぱ)こと管理人
2016/07/06 08:01:57

……。 これは、何を言いたいのでしょうか……。 「PHPとMySQLで掲示板を作る」 http://kmaebashi.com/programmer/bbs_dev/index.html の内容が古いので、注意書き付けるなり削除するなりしろよってこと?
[この投稿を含むスレッドを表示] [この投稿を削除]
[1943] magic_quotes_gpc
投稿者:Naohiro19
2016/07/05 08:57:46

PHPにおいて 「magic_quotes_gpc」は5.4.0以降は、デフォルトでOFFに設定されています。 また、mysql_connectなどの巻数がPHP5.5.0以降は非推奨となり、PHP7.0.0で拡張ライブラリが削除されています。 PHPからMySQLに接続するには PDO(PHP Data Object)を使わなければなりません。 PDOの prepare(プリペア)メソッドを使うと名前付きパラメータ(:nameなど)や疑問符パラメータ(?)を利用できます。 例えば ホスト:localhost ユーザー名:root パスワード:なし データベース名:bbs_phpとしてutf-8で接続する場合はこのように書けばOKです。 PDOクラスはPDOExceptionという例外を投げてくるので try-catchで囲む必要があります。 try { $dbh = new PDO('mysql:host=localhost;dbname=bbs_php;charset=utf8','root',''); $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); }catch(PDOException $e){ echo $e->getMessage(); exit; } で接続が完了します。 PDOでのデータベースを操作する場合は「ドットインストール」というサイトの「PHPデータベース入門」という動画を視聴してください。 フォームにおいてユーザー入力を$_POST/$_GETで入力を受け取ってはいけないらしいので代わりとなるのが filter_input関数です。 たとえば <input type="text" name="message"> とフォームを入力する欄があるとします。 受け取る場合は $message = isset($_POST['message'] ? $_POST['message'] : null; とするのではなく $message = (string)filter_input(INPUT_POST, 'message'); とするべきでしょう。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1942] Re:変数とは何か
投稿者:var
2016/06/16 23:47:13

ご回答ありがとうございました。 なるほど。 >コンパイル後の オブジェクトファイルに残ってすらいません。 このあたりでピンときました。 スタックマシンタイプであれば、スタックポインタからの位置で参照できるため、 処理系が紐付けてくれているんですね。 変数という文字列なのかシンボルみたいなものがどこかで管理され、 それが参照する先が、例えば数字の5の格納位置を見ている、のようなイメージを持ってしまい混乱していまいました。 大変ありがとうございました。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1941] Re:変数とは何か
投稿者:(ぱ)こと管理人
2016/06/16 04:05:24

はじめまして。 >変数hogeのアドレス(&hoge)は"0xbfbfd9e4"。 >そこに数値5をint型で配置する。 >これは分かるのですが、変数hoge自体は、誰がどこで管理しているのでしょうか。 > >図表では、0xbfbfd9e4アドレスからの始まりに5が格納されており、これは分かります。 >しかし、同時に、"hoge"もあります。この辺りで混乱しております。 誤解を招いたなら申し訳ないですが、p.034のFig.1-1において、 図の中に「hoge」が書いてあるのは、読者にとってわかりやすくするためで、 プログラムの実行時に「hoge」という名前がどこかに保持されているわけではありません。 Cの場合、コンパイル時にデバッグオプションを付けたりしない限り、 たいていは、ローカル変数の変数名(この場合hoge)は、コンパイル後の オブジェクトファイルに残ってすらいません。 ではどのように変数hogeを参照しているのかといえば、素朴な実装では、スタック内の、 現在実行中の関数の使用領域(p.095のFig.2-5において、「func()から見える領域」と 書いてある範囲。スタックフレームと言います)内の位置が、コンパイル後の 機械語コードに埋め込まれていて、それを使用して参照します。 こちらの図↓で言えば、BPからの相対位置でアクセスします。 http://www.c-tipsref.com/words/stackframe.html グローバル変数やstatic変数は、リンクの時点でアドレスが決まります。 「2-4-2 分割コンパイルとリンク」を参照してください。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1940] 変数とは何か
投稿者:var
2016/06/14 23:48:25

変数とは何か?という議論がWEBでされているのを見かけ自分の一抹の理解の不足を感じ、"C言語ポインタ完全制覇"を開きました。 非常に分かりやすい説明で、変数の理解が得られた、と思ったと同時に、新しい疑問が湧きました。 先の本の序盤で以下の例があります。 int hoge = 5; 変数hogeのアドレス(&hoge)は"0xbfbfd9e4"。 そこに数値5をint型で配置する。 これは分かるのですが、変数hoge自体は、誰がどこで管理しているのでしょうか。 図表では、0xbfbfd9e4アドレスからの始まりに5が格納されており、これは分かります。 しかし、同時に、"hoge"もあります。この辺りで混乱しております。 0xbfbfd9efアドレスからintの大きさまで == hogeという変数 というその紐付けはまたどこかでやっている?ということでしょうか。 恐らく基礎中の基礎のような気もしますが、調べる限り解答にたどり着けず、 理路整然とした解説で好感持っている前橋様に質問させていただいた次第です。 ※ご迷惑おかけします。誤字あったため同内容で再投稿。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1937] Re:単語の出現頻度を数えるプログラムについて
投稿者:(ぱ)こと管理人
2016/05/21 01:18:36

>単語の出現頻度を数えるプログラムがリンカできません。_mainが未解決とエラーが >表示されます。解決方法を教えてください。 はじめまして。 「ポインタ完全制覇」の5章を読んでのことかと思います。読んでいただきありがとうございます。 「_mainが未解決」ということは、つまりmain関数がリンクされていないということです。 単語の出現頻度のプログラムは、List5.3 main.cが、配列版、連結リスト版両方の 共通のメインルーチンとなりますので、これもリンクしてください。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1936] 単語の出現頻度を数えるプログラムについて
投稿者:くま
2016/05/20 15:33:22

単語の出現頻度を数えるプログラムがリンカできません。_mainが未解決とエラーが表示されます。解決方法を教えてください。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1935] Re:プログラムを頂きます。
投稿者:みうら
2016/05/14 17:10:37

>>とても綺麗な掲示板ですね! > >ありがとうございます。 > >>これはフリーで使わせて頂いて宜しいのですか? > >Webで公開しているものはご自由に使っていただいて構いませんが、 >だんだん拡張したもののソースを順次貼っているのでそっくりそのままでは >動かないかもしれませんし、PHPのver.4の頃に作ったものなので今となっては >古いコードでもあります。 > >そのあたりを了解の上自己責任で使われるのであれば、ご自由にしてください。 > いいですね。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1934] Re:プログラムを頂きます。
投稿者:(ぱ)こと管理人
2016/05/12 00:44:36

>とても綺麗な掲示板ですね! ありがとうございます。 >これはフリーで使わせて頂いて宜しいのですか? Webで公開しているものはご自由に使っていただいて構いませんが、 だんだん拡張したもののソースを順次貼っているのでそっくりそのままでは 動かないかもしれませんし、PHPのver.4の頃に作ったものなので今となっては 古いコードでもあります。 そのあたりを了解の上自己責任で使われるのであれば、ご自由にしてください。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1933] プログラムを頂きます。
投稿者:ブラブラボール
2016/05/10 03:20:04

とても綺麗な掲示板ですね! これはフリーで使わせて頂いて宜しいのですか?
[この投稿を含むスレッドを表示] [この投稿を削除]
[1930] kmaebashi.comが停止していました
投稿者:(ぱ)こと管理人
2016/03/03 02:35:36

すみません、私がkmaebashi.comのサーバ料金の振り込みを忘れていたため、 kmaebashi.comが2/29~3/1にかけて停止していたようです。 現在は振り込みましたので復旧しています。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1929] Re:訂正
投稿者:(ぱ)こと管理人
2016/02/21 20:53:08

>【文】の elseif、elsifになっていました ちょっとどう対応すればよいのかわからなくて1ヵ月以上放置してしまいました。 今さら書いても投稿者の「けろ」さんは読んでおられないとは思うのですが。 これが、crowbarやらDiksamやらにおいて、else ifがelseifではなくて elsifになっている、というご指摘であれば、それは意図したものです。 こちらを参照してください。 http://kmaebashi.com/zakki/lang0001.html
[この投稿を含むスレッドを表示] [この投稿を削除]
[1928] 訂正
投稿者:けろ
2016/01/12 17:53:25

【文】の elseif、elsifになっていました
[この投稿を含むスレッドを表示] [この投稿を削除]
[1921] おすすめの本はありますか?
投稿者:hello
2015/10/29 01:33:14

はじめまして!前橋さんのCでプログラミング言語を描く方法ガイドを今見つけたのですが、学校でパスカルのコンパイラをJavaで書く勉強をしていますがあまりよくわかりません。なにかおすすめの勉強法かウェブサイトか本はありますか?前橋さんのCのガイドに従ったらある程度わかるようになりますか?
[この投稿を含むスレッドを表示] [この投稿を削除]
[1920] Re:C言語ポインタ完全制覇について質問
投稿者:(ぱ)こと管理人
2015/10/22 01:18:10

>222pのlist4-8 read_file.cをコンパイルすると >$ gcc -o read_file read_file.c >C:/DOCUME~1/中村多~1/LOCALS~1/Temp/cc8001MB.o:read_file.c:(.text+0xa9): undefined reference to `read_line' >collect2: ld returned 1 exit status というエラーがでます。 >read_file.cの中に extern char *read_line(FILE* fp);と定義して実行していますが、 >コンパイルできません。どこが間違っているか教えてください。 >`read_line'はread_line.cに定義されている関数です。 単純に、そのread_line.cをリンクしていないからではないでしょうか。 $ gcc -o read_file read_file.c read_line.c
[この投稿を含むスレッドを表示] [この投稿を削除]
[1919] C言語ポインタ完全制覇について質問
投稿者:sanchu
2015/10/21 17:43:49

222pのlist4-8 read_file.cをコンパイルすると $ gcc -o read_file read_file.c C:/DOCUME~1/中村多~1/LOCALS~1/Temp/cc8001MB.o:read_file.c:(.text+0xa9): undefined reference to `read_line' collect2: ld returned 1 exit status というエラーがでます。 read_file.cの中に extern char *read_line(FILE* fp);と定義して実行していますが、 コンパイルできません。どこが間違っているか教えてください。 `read_line'はread_line.cに定義されている関数です。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1918] Re:C言語ポインタ完全制覇について質問
投稿者:774RR
2015/10/20 06:50:02

だいたいいい感じだと思います。細かいところで間違っているようですけど... int a[7]; に対して、使える要素は a[0]..a[6] の7個です。 a[7] を使ってはいけません。 read_line を使ってないようですけど・・・ お勉強ならこういうコメントを入れてみるのはとてもお勧めです。 実用に供するソースコードにこんなコメントが入っていたらそいつの実力を疑います。 (ってか以後、コード系の仕事回しませんけど)
[この投稿を含むスレッドを表示] [この投稿を削除]
[1916] キャップ付きハンドサイズスクレーパー
投稿者:キャップ付きハンドサイズスクレーパー
2015/10/10 11:07:47

カーフィルム施工ツール巾着は分厚い材料に使いやすい設計で、フィルム施工の時にツールの取りに大変便利を与えました。施工道具補助ツールを買いたければ、カーライトフィルムツールhttp://www.caright.net/をぜひおすすめします。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1913] 蟻力神
投稿者:蟻力神
2015/09/21 12:45:07

蟻力神(イーリーシン)を「勃起不全に効果的!」という口コミを信じて購入しました!確か に効果はありましたが、飲んだ感想としては副作用もあるのでオススメはできないですね 。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1912] Re:Flex
投稿者:(ぱ)こと管理人
2015/08/24 01:59:14

>どうやら、flexの方はGNUじゃないようです。 ご指摘ありがとうございます。 正直、無料公開しているWeb記事はさておき、書籍の方で嘘を書いていたら大変だ、 と思い確認したところ書籍の方にはflexがGNUであるという記述はありませんでした… Web記事の方の更新を怠っていたようです。 後ほど修正いたします。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1911] Flex
投稿者:flex
2015/08/19 23:54:31

http://kmaebashi.com/programmer/c_yota/calc.html の記事を読ませて頂きました。 flexがlexのgnu版と書いてありますが、WIkipediaには Unlike Bison, flex is not part of the GNU Project.[4] と書いてありました。 どうやら、flexの方はGNUじゃないようです。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1910] Re:単語の出現頻度を表示するプログラムについて
投稿者:マロン
2015/08/09 00:19:32

>管理人様 > >C言語ポインタ完全制覇を熟読しています。単語の出現頻度を表示するプログラムについて、osはwindows7,visualStudio2015でビルドしようとしたところ以下のエラーが出てしまい、解決方法がわかりません。つきましては、解決の仕方をお教え頂きたく思います。よろしくお願いいたします。未解決の外部参照となってしまいます。 > >LNK1120 1 件の未解決の外部参照 word_count2 > >\Documents\Visual Studio 2015\Projects\CPlus\word_count2\Debug\word_count2.exe 1 > >LNK2019 未解決の外部シンボル "int __cdecl get_word(char *,int,struct _iobuf *)" (?get_word@@YAHPADHPAU_iobuf@@@Z) が関数 _main で参照されました。 > >Documents\Visual Studio 2015\Projects\CPlus\word_count2\word_count2\main.obj 1 > 解決しました。つまらんこと聴いてごめんなさい。削除してもらって構いません。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1909] 単語の出現頻度を表示するプログラムについて
投稿者:マロン
2015/08/08 22:22:36

管理人様 C言語ポインタ完全制覇を熟読しています。単語の出現頻度を表示するプログラムについて、osはwindows7,visualStudio2015でビルドしようとしたところ以下のエラーが出てしまい、解決方法がわかりません。つきましては、解決の仕方をお教え頂きたく思います。よろしくお願いいたします。未解決の外部参照となってしまいます。 LNK1120 1 件の未解決の外部参照 word_count2 \Documents\Visual Studio 2015\Projects\CPlus\word_count2\Debug\word_count2.exe 1 LNK2019 未解決の外部シンボル "int __cdecl get_word(char *,int,struct _iobuf *)" (?get_word@@YAHPADHPAU_iobuf@@@Z) が関数 _main で参照されました。 Documents\Visual Studio 2015\Projects\CPlus\word_count2\word_count2\main.obj 1
[この投稿を含むスレッドを表示] [この投稿を削除]
[1908] Re:Java謎+落とし穴について
投稿者:
2015/08/02 22:36:50

早々にありがとうございます。すっきり理解できました。 10年(ドッグイヤーなら70年)以上前の本への疑問に、「そこまで面倒見られないよ」と言わず答えて下さり、感謝です。 久野禎子・靖さんの著書など、良い本もあるのですが、これでさえ索引に「参照」がないことに、首を傾げています。 そういうわけで『Java謎+落とし穴』は、メモリモデルで考えるためには、現在も唯一無二の拠り所となっています。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1907] Re:Java謎+落とし穴について
投稿者:(ぱ)こと管理人
2015/08/02 13:11:34

>暑中お見舞い申し上げます。 こんにちは。 >『Java謎+落とし穴』で、二つ質問があります。 >見方によっては、各オブジェクトが、間接的にではありますが、それぞれ実行コードへのポインタを持つように思えるのですが、いかがでしょう。 「間接的に」実行コードへのポインタを持つのはその通りですね。 ここは、メソッドが10個あった時、各オブジェクトが10のポインタを持つ必要はないですし、 オブジェクトごとに実行コードへのポインタが書き換わることはない、という意味で 書きました。 (プロトタイプベースのオブジェクト指向だと、実際オブジェクトごとに持っていたり しますし) >・177ページ「draw()メソッドを呼び出す部分はPolylineやCircleにまったく依存しません(その構造体を宣言しているヘッダファイルを#includeする必要がない)」について。 >このdraw()メソッドは、183ページのdrawShape(shapes[i])メソッドと同じでしょうか。ここではmain.cに、各ヘッダファイルをincludeしているように見えます。 ここはわかりにくかったですね。 createPolyline()等は各図形の.hで宣言されているわけで、 各図形をnewするところでは各ヘッダファイルが必要です。 ただ、描画するところ(「draw()メソッドを呼び出す部分」)は、 Polyline.hやCircle.hにまったく依存しません。 (これはJavaにおいても同じことで、newするところは各クラスに依存します)。 この例では、main.cでnewと描画を両方やってしまっているので、 おっしゃるとおり、「main.cでincludeしているではないか」と疑問を持たれるのは わかります。 main.cの描画部分(17~20行目)を、draw.cとか、別ソースに分けておくべきだったかも しれません。 10年以上前の本ですが、ご指摘感謝いたします。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1906] Java謎+落とし穴について
投稿者:
2015/08/02 00:11:09

暑中お見舞い申し上げます。 『Java謎+落とし穴』で、二つ質問があります。 ・46ページ「メソッドの実行コードへのポインタは、オブジェクトごとではなくクラスごとに持てばよい」について。 他方、175ページでは、「各オブジェクトにクラスディスクリプタへのポインタを持たせる」こととされています。 見方によっては、各オブジェクトが、間接的にではありますが、それぞれ実行コードへのポインタを持つように思えるのですが、いかがでしょう。 「①オブジェクトの持つポインタ→②クラスディスクリプタの持つポインタ→③メソッドテーブルの持つポインタ」となっていて、確かに②と③(リフレクションを考えない限り、実質区別なし)は、オブジェクトごとではなく、クラスごとなのかもしれませんが… ・177ページ「draw()メソッドを呼び出す部分はPolylineやCircleにまったく依存しません(その構造体を宣言しているヘッダファイルを#includeする必要がない)」について。 このdraw()メソッドは、183ページのdrawShape(shapes[i])メソッドと同じでしょうか。ここではmain.cに、各ヘッダファイルをincludeしているように見えます。 (これは、たぶん私の誤解、誤読だと思いますが) ご教示をお願いできましたら幸いです。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1905] Re:「PHPとMySQLで掲示板を作る」拝見しました。
投稿者:(ぱ)こと管理人
2015/03/10 02:25:38

>本題に入りますが、投稿内容を<PRE>タグで囲むということ(仕様を考えるのページ)ですが、それでは ><br /> >タグが使用できず改行ができなくなる、ということになります。 まず、この掲示板は、用途的にプログラムソースを貼ることが多いので、 基本等幅フォントで表示する必要がある、というのが<PRE>で囲むようにした 理由です。ただし、等幅フォントにするだけなら<TT>で囲めばよいので、 現状ではそうしています。 http://kmaebashi.com/bbs/list.php?boardid=kmaebashibbs&thread=25 <PRE>で囲むと、投稿者が改行を入れなかった場合、画面が際限なく 右に伸びて崩れてしまうので改善したわけです。 というわけで、<PRE>タグ云々の話はすでに現状の実装とはずれているわけですが、 >そこで思ったのですが、そもそも<PRE>タグを使用せずに<や>の記号を無効にすればいいのでは、ということです。 <PRE>タグの中であっても、<や>の記号は普通に特殊文字としての 意味を持ちます。たとえば以下のページに載せているサンプルソースでは、 ソース全体を<PRE>で囲んでいますが、行番号は<FONT>タグで青字にしていますし、 ソース内で<やら>やら"やらを使うときには&lt;とか&gt;とか&quot;とかに しています。 http://kmaebashi.com/programmer/bbs_dev/newbbs.html >そして思ったのが、phpのhtmlspecialchars()関数です。HTMLにとって特別な意味の<>をすべて単なる文字に変換してくれるという非常に便利な関数です。詳しいことは検索などお願いします。 よって、この手のエスケープは、どちらにせよ必要であり、 htmlspecialchars()もすでに随所で使っています。 例) http://kmaebashi.com/programmer/bbs_dev/list.html >要するに、 >$test = $_GET["test"]; >を、 >$test = htmlspecialchars($_GET["test"]); >のようにしてしまおう、という考えです。こうすれば、<PRE>を使わずに済むため、改行が実現できると思います。 ところで、この例だと、入力の時点でhtmlspecialchars()をかけていますが、 これはそもそも考え方が間違っている、ということをこちらで書いています。 http://kmaebashi.com/zakki/zakki0042.html htmlspecialchars()をかけるのは入力時ではなく出力時にすべきです。 で、上記の記事でも言い訳を書いていますが、そして「PHPとMySQLで掲示板を作る」 内にも注釈を足していますが、 http://kmaebashi.com/programmer/bbs_dev/index.html 現状の「PHPとMySQLで掲示板を作る」のプログラムは(実際にここで動いている 掲示板もそうなのですが)、PHP4の時代のデフォルトであるmagic quoteを使って いるので、今となってはよくないプログラムなんですよねえ。 本記事、注釈を付けつつ公開を続けてきましたが、初心者を惑わせるのも よろしくないので、そろそろ消すべきかもしれません。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1904] 「PHPとMySQLで掲示板を作る」拝見しました。
投稿者:html21315
2015/03/08 10:20:38

突然失礼します。 ホームページ拝見いたしました。phpで掲示板を作るという発想はありませんでした。 本題に入りますが、投稿内容を<PRE>タグで囲むということ(仕様を考えるのページ)ですが、それでは <br /> タグが使用できず改行ができなくなる、ということになります。 そこで思ったのですが、そもそも<PRE>タグを使用せずに<や>の記号を無効にすればいいのでは、ということです。 そして思ったのが、phpのhtmlspecialchars()関数です。HTMLにとって特別な意味の<>をすべて単なる文字に変換してくれるという非常に便利な関数です。詳しいことは検索などお願いします。 要するに、 $test = $_GET["test"]; を、 $test = htmlspecialchars($_GET["test"]); のようにしてしまおう、という考えです。こうすれば、<PRE>を使わずに済むため、改行が実現できると思います。 -追伸- ほとんどのユーザーは、改行を投稿の中でしたいとき<BR>ではなく単にEnterキーを使って改行をします。これを掲示板上で再現するためには<BR>を使わなければいけないので、そこが私が掲示板作りをしたときの悩みどころでした。 そこで、便利なPHPの関数を見つけましたので紹介します。 nl2br() 改行記号の前に<br />を挿入してくれるというありがたいものです。 $test = nl2br( htmlspecialchars( $_GET["test"] ) ); 一行にするとこうなりますが、わかりやすく書くと $test = $_GET["test"]; //取得 $test = htmlspecialchars($test); //<>の無効化 $test = nl2br($test); //<br />挿入 長文失礼しました。 ※先日誤ってメールで送信してしまいましたが、やはり掲示板に書き込むべきだと、掲示板の方に再投稿しました。
[この投稿を含むスレッドを表示] [この投稿を削除]