プログラミング中、あった問題 08

・!"#$%&'()=~<>+? というIDが登録されること
問題点:記号が影響されました。SQLが実行できません。
解決方法:特殊記号を変わります。

 

    id = id.replaceAll("(?i)(')", "''");
    pw = pw.replaceAll("(?i)(')", "''");


・アカウント削除 パスワード変更 Todo編集機能 Todo追加機能 Todo削除機能
問題点:HTMLで特殊記号が影響されました。
解決方法:特殊記号を変わります。

    String userid = shain.getId();
    String userpw = shain.getPw();
    userid = userid.replaceAll("(?i)(&)", "&amp;");
    userid = userid.replaceAll("(?i)(')", "&#039;");
    userid = userid.replaceAll("(?i)(\")", "&quot;");
    userpw = userpw.replaceAll("(?i)(&)", "&amp;");
    userpw = userpw.replaceAll("(?i)(')", "&#039;");
    userpw = userpw.replaceAll("(?i)(\")", "&quot;");
    userid = userid.replaceAll("(?i)(<)", "&lt;");
    userid = userid.replaceAll("(?i)(>)", "&gt;");
    userpw = userpw.replaceAll("(?i)(<)", "&lt;");
    userpw = userpw.replaceAll("(?i)(>)", "&gt;");

   
   
・HTMLのディスプレイ
想定結果と違いました。余計な記号を表しました。
正しい:!"#$%&'()=~<>+?
結果:+?"> !"#$%&'()=~<>+?
解決方法:特殊記号を変わります。

     String todo_text = rset.getString("todo_text");
     todo_text = todo_text.replaceAll("(?i)(&)", "&amp;");
     todo_text = todo_text.replaceAll("(?i)(')", "&#039;");
     todo_text = todo_text.replaceAll("(?i)(\")", "&quot;");
     todo_text = todo_text.replaceAll("(?i)(<)", "&lt;");
     todo_text = todo_text.replaceAll("(?i)(>)", "&gt;");



・記号のアカウントは編集機能が使えません。
問題点:URLで遷移することができませんでした。
解決方法:IDとPASSWORDをエンコードします。

    String userid_utf8 = URLEncoder.encode(userid, "UTF-8");
    String userpw_utf8 = URLEncoder.encode(userpw, "UTF-8");



DataBaseの日時を修正しました。
以前:年月日だけです。
現在:時分秒を追加しました。

    Timestamp timestamp = new Timestamp(System.currentTimeMillis());
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    String time = sdf.format(timestamp);


・日時の追加
実行方法:DataBaseからデータの保存時間をもらいます。

sql.append("SELECT `todo_id`,`todo_text`,`finished`,`upload_date` FROM `todo` WHERE user_id = '" + userid + "'");

・編集機能の更新日時を追加しました。

String sql = "UPDATE `todo` SET `todo_text` ='" + data + "',`upload_date` ='" + time + "' WHERE `todo_id` = '" + todoid + "'";

・改善方向
日時の型が変わります。
現在の型:2019-05-09 00:00:00
想定の型:2019年05月09日(木)00:00