[ホーム] [管理用]

TSF画像掲示板(テスト板ε)


[掲示板に戻る]
レス送信モード
おなまえ
E-mail
題  名
コメント
添付File []
Markdown
削除キー(記事の削除用。英数字で8文字以内)
  • 添付可能ファイル:GIF, JPG, PNG ブラウザによっては正常に添付できないことがあります
  • 最大投稿データ量は本文 1800 byte (最大改行 72)/最大投稿データ量は 500 KB までです。sage機能付き
  • 画像は横 200ピクセル、縦 200ピクセルを超えると縮小表示されます
  • テキストオンリーのスレッドリスト [全部],[子] [pt]
  • 削除依頼は画像タイトルの横にある[削]から申請してください
  • information

  • 無題 Name "管理"うさぎ◆EDPgB8yzTg 2019/09/19(木)23:50 ID:9W/LqXMA No.5   (18 pts.) [GJ]  [Boo]  
    https://gitlab.com/tsfan/futaba-php

    ソースコードを開示しています。
    修正する案など募集中。
    無題 Name きよひこ 2019/10/04(金)22:01 ID:7OY4MDtI No.6   (48 pts.) [GJ]  [Boo]  
    初めまして。
    ソースコード拝見しました。
    extract() を使っていたり、テキストファイルや HTMLとしての書き出しにエスケープが足りて無さそうな感じだったりがあって、ちょっと危険な香りがします。

    今まで「ファイルが壊れた」という話は出ていない様なので、安全性には問題無いと思うのですが、データファイルをテキストで保持するよりは、SQLiteでもいいのでDBを使った方が楽そうに思います。

    ただし、修正しようとすると「部分的な改修」じゃ済まなくなりそうですねぇ...
    無題 Name きよひこ 2019/10/05(土)01:23 ID:OSi/9urw No.7   (-4 pts.) [GJ]  [Boo]  
    >>6
    レンタルサーバーが昔ながらのファイルアップロードする形式なのか、データベースが使えるのか。
    それともVPSなのかにもよるよね。
    無題 Name きよひこ 2019/10/05(土)09:39 ID:Vzp/5iVU No.8   (-4 pts.) [GJ]  [Boo]  
    >>7
    今時のPHPはSQLiteがデフォルトで使えます。
    サーバ屋がわざわざ使えない様に自前でコンパイルし直していれば別ですが、普通そんな事はしないですから。

    ですけど、根幹部分の変更なので、改造というよりも同じインターフェイスの別物を新規に作る感じになりそうですね。
    だから誰も手を出さずに、PHP3の頃のコードが残っているんでしょう。
    無題 Name きよひこ 2019/10/05(土)16:42 ID:OSi/9urw No.9   [GJ]  [Boo]  
    >>8
    なん……だと!?
    全く知らなかった……
    無題 Name 6 2019/10/12(土)11:34 ID:twO18QsM No.10   [GJ]  [Boo]  
    軽微なタイプミス(=動作にさほど影響は無い)等は、発見の都度修正で良いでしょう。

    現時点で対象とすべきPHPのバージョンは7.3(または7.2)でしょう。
    なので、拡張された三項演算子を使うとか、filter系で値は取得するのがベターじゃないかと。

    参照渡しが多用されているのは「メモリの節約になる」という思いでしょう。
    でも、CoWをが効いているので変更する予定の無い物は(パフォーマンス的にも)無意味ですよね。
    「差が無いなら変更しなくても良い」かもしれませんけど、何が変更されるのかが明確になるので、戻り値を受け取る方が良い様に思います。

    先々の修正が楽になる(と思う)ので、クラス化とオートロードの採用が良いのではないでしょうか?
    ファイル数が増えるという弊害はあるでしょうけど。
    無題 Name "管理"うさぎ◆EDPgB8yzTg 2019/10/27(日)00:23 ID:L18E6iYc No.11   [GJ]  [Boo]  
    ちょびっとした修正なら、このままでも改修できると思います。

    ただ、新しい機能を追加していくにつれて、レガシー部分をどうするか?っていう課題も膨らんでいくので
    UIだけ同じにして、裏側のphpをモダンにしていくことが必要かもしれません。

    futabaの画像掲示板、1phpファイルで動く簡単な仕組みになっているので簡単な仕組みを踏襲していくか
    Laravelとかのフレームワークを使って構築するような手順にしてしまうか、悩みどころです。

    いまのところ、できる限り簡単な仕組みでphpの処理をモダンにしたいなーっと考えています
    無題 Name 6 2019/10/27(日)14:01 ID:Dg1jBLBE No.12   (5 pts.) [GJ]  [Boo]  
    > UIだけ同じにして、裏側のphpをモダンにしていく
    僕もそれが良いと思います。

    ただ、Laravel(評判は良い様ですけど)などのフレームワークを入れてしまうとそれに対するメンテナンスも必要にもなるし、PHPが速くなったとはいえ現状よりも複雑にするのは得策ではない様に思います。
    # 個人的には Phalcon なんか速くて自由度も高そう
    # と思いますけど、導入の環境を選ぶとか学習コスト
    # も高いのは難点です

    view とそれ以外の分離、機能のクラス化、オートロード、シングルトンなデータストレージ、位でそれなりにモダンで、この先も使える様なものになるんじゃないかと思います。
    先ずは易しい所から Name 6 2019/11/18(月)22:27 ID:eS5yG/Hw No.13   [GJ]  [Boo]  
    JavaScript を読んでみました。

    まだ本体部分は読めていないので「レス送信モード」の下部の form の意味が解っていませんが、
    現状の
    「『全てのフォームの name属性が name および pwd の入力フィールドに』
    Cookie から取得した値を挿入する」ではなく、
    入力フィールドに id属性値を付けておいて『IDを指定した入力フィールドに』
    がハッキリして良いんじゃないかと。

    onload で実行させようとするものは他に無いだろうから、無名関数で十分だと思います。
    Cookie から特定のキーを探す関数も、指定したキーで場所を特定すればいいのだから冗長な部分をカットしてはどうかと思います。

    それらを書いてみるとこんな感じ。
    onload=function (){
    document.getElementById("id_pswd1").value = getCookieValue("pwdc");
    document.getElementById("id_pswd2").value = getCookieValue("pwdc");
    document.getElementById("id_name").value = decodeURIComponent(getCookieValue("namec"));
    };

    function getCookieValue(key) {
    let cookieString = " " + document.cookie + ";";
    let posKey = cookieString.indexOf(key);
    if (posKey) {
    let posSeparator = cookieString.indexOf(";", posKey);
    if (posSeparator) {
    return cookieString.substring(posKey + key.length + 1, posSeparator);
    }
    }
    return "";
    }

    今時のブラウザは(スマホを含めて)キャッシュが効くので minify してまでヘッダに押し込まなくても外部ファイルにした方が良いのかなと思います。
    続き Name 6 2019/11/18(月)22:37 ID:eS5yG/Hw No.14   (7 pts.) [GJ]  [Boo]  
    関数名や変数名は冗長に付ける主義なので、長いですよね。

    minify するとこんな感じ。
    onload=function(){document.getElementById("id_pswd1").value=getCookieValue("pwdc");document.getElementById("id_pswd2").value=getCookieValue("pwdc");document.getElementById("id_name").value=decodeURIComponent(getCookieValue("namec"))};function getCookieValue(b){let c=" "+document.cookie+";";let a=c.indexOf(b);if(a){let d=c.indexOf(";",a);if(d){return c.substring(a+b.length+1,d)}}return""};
    ユースケース Name 6 2019/11/20(水)21:48 ID:x9Ms1HV6 No.15   [GJ]  [Boo]  
        1574254101143.png-(33564 B) サムネイル表示
    33564 B
    管理者じゃないユーザの出来る事はこんな感じ?
    システムもUMLもチャンと理解してないから…いろいろ指摘してください。
    いま考えてること Name "管理"うさぎ◆EDPgB8yzTg 2019/11/25(月)20:07 ID:jt1rdxfU No.16   [GJ]  [Boo]  

    [仮] 掲示板の要件(20191125版)

    • 画像のみの投稿できる
    • 文章のみの投稿ができる
    • 投稿(親)に投稿(子)を追加できる-- 投稿(子)の投稿(孫)は管理しない
    • 静的ページが表示できる-- 表示する都度、DBアクセスしない
    • 表示レイアウトの加工できる-- 広告掲載・注意文など
    • 入力値のチェック-- 文字数制限-- 同じ画像をアップロードさせない(画像のMD5チェック)

    しないこと

    • ユーザー認証(管理系アカウントを除く)
    無題 Name 6 2019/12/01(日)01:50 ID:Rb3..SZ. No.17   [GJ]  [Boo]  
    > 静的ページが表示できる-- 表示する都度、DBアクセスしない
    「静的ページ=DBに保存したデータを必要としないページ」
    なら、その様な内容で記述するだけでしょうから特に問題は無いかと。

    また
    > 表示レイアウトの加工できる-- 広告掲載・注意文など
    と合わせて、簡易なテンプレート式にするのが良いだろうと思います。
    静的にHTMLを記述し、必要なところで
    <div class="thread">
    <?=$thread;?>
    </div>
    とか、ループ処理とかを素のPHPで書くだけで実現できますし。
    それを、実行ファイルに記述してもいいし、
    include '../template/hoge.html';
    の様にインクルードしてもいいと思います。
    無題 Name 6 2019/12/01(日)01:58 ID:Rb3..SZ. No.18   (3 pts.) [GJ]  [Boo]  
    > 同じ画像をアップロードさせない(画像のMD5チェック)
    MD5 で良ければ、ファイルの保存時にMD5をファイル名にすれば確認が容易だと思います。
    じゃないと、どこかにハッシュ値を記録しないといけないですから。
    そういうファイル名を嫌がる人も居ますけどね。
    無題 Name 6 2019/12/11(水)17:43 ID:Lg.PSQYY No.19   (5 pts.) [GJ]  [Boo]  
    マイナス評価ってのは、そういうファイル名が嫌って事?
    今の様なファイル名だと、DBに記録する他無いから、余分なコストが掛かるって事だけど?
    それに、何らかの条件で検索しなければならないならDBで保持する必要性もあるけど、ハッシュ値だけしか無いなら理由としては薄いと思う。


    【記事削除】[画像だけ消す]
    削除キー
    - GazouBBS + futaba + Customize -