mysqlでの簡単なセキュリティ処理とページングアルゴリズム

2459 ワード

単純ページングアルゴリズム
//合計エントリ数$sql=「select count(*)from tablename」;
ページング
いくつかスキップ(オフセット)$offset=($page-1)*$pagesize
  • 現在のページ$page=isset($_GET['page']):1 ;
  • ページあたり$pageSize=3を表示します.
  • すべてのメッセージを検索し、$messageList変数/$sql="SELECT*FROM message LIMIT{$offset},{$pageSize}";1.各ページに数個のデータ$pagesize=3を表示することを規定する.2.最大ページ番号($pageCount)を計算するには、合計レコード数($itemCount)の計算式を問い合わせる必要があります.$pageCount=ceil($itemCount/$pageSize);3.現在のページ番号$page=isset($_GET['page']):1 ; 4.現在のページ番号有効性処理(ページ番号が1未満の場合は1に等しくする)$page=max($page,1);5.ページングのオフセット$offset=($page-1)*$pagesizeを計算する.6.SQLのlimit部分「SELECT*FROM table_name LIMIT$offset,$pagesize」;
  • ページング検索フォーム用get値転送(検索条件を維持するために次のページをクリックしても変わらず使用)//配列を作成$condition=[];//もし$GETから送られてきた値は空ではなく、配列にif(!empty($_GET['id']){$condition[]='''id='{$_GET['id']}';}if(!empty($_GET['title']))}${condition[]=''title like'%{$_GET['title']}%']]]}%';}//$conditionが空でない場合は、関数jion()でつなぎ合わせ、ページング検索where条件$where=''を構成します.if(count($condition)>0){$where='where'.join('and',$condition);//and程度にスペース}
  • $sql="SELECT*FROM表名where$where LIMIT$offset,$pagesize";
  • 検索ページング条件保持
  • $get = $_GET; unset($get['page']);//前にpageがあったので、つなぎ合わせる前に前のpageを削除し、$query='&'.http_build_query($get);//検索条件が渡されると$queryの文字列が接続され、$queryがurlに接続されます.次のページをクリックすると、条件はurlを介して末尾ページに再渡されます.
    データのセキュリティ処理
    1.文字列:
    $title = mysqli_real_escape_string($title);
    
    $title = mysqli_real_escape_string($link, $title);
    
    $name = mysqli_real_escape_string($link, $name);
    
    $email = mysqli_real_escape_string($link, $email);
    
    $content = mysqli_real_escape_string($link, $content);
    

    2.数値処理$id=intval($id);*アップロードされたデータの特殊な文字をエスケープしないと、アップロードされたデータがaであるなど、データベースの安全性が低下します.drop table catogory(テーブル名);データのcategoryテーブルが削除されます
    sql増删改查成功判断
    phpにはいくつかの拡張(extension)が開いていません.例えばPHP_mysqli.ext、phpを使用する必要があります.iniでextension_dir=ext書き込みオープンerrorエラー表示mb_などの関数が見つからない場合strlenはphpに達する必要がある.iniで拡張子を見つけて*$link=mysqli_を開くconnect()/mysqli_set_charset()/mysqli_select_db/および増減/変更はブール値を返し、selectクエリはオブジェクトを返し、結果を解放する必要がある.mysqliの削除/変更affected_rows()は、mysqliの追加を判断します.inset_id()メールボックスの長さを判断するにはvarchar(225)を設定する必要がある.テーブルの作成時にフィールドのプロパティtextの後に制約はありません