スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

WordPressのwp-login.phpへのアタック

ここにも、WordPressのアタックがやってきました


188.143.XXX.XXX - - [27/Mar/2013:22:51:49 +0900]
"POST /wordpress/wp-login.php HTTP/1.1" 200 3408 "-"
"Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0;
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1); .NET CLR 3.5.30729)"


こんな感じで、総当りをやってきます。
たまたまアクセスログを見ている最中だったので、こわくなってwordpressのディレクトリを変えましたが
おそろしいですね。

http://wingedlove.com/post/1763
で、この攻撃はUserAgentがIEでやってくるのでhtaccessでIEをはじく方法がありましたので
その対応もやっておきました。

wordpressのwp-login.phpがあるディレクトリの .htaccessファイルに


<Files wp-login.php>
order allow,deny
allow from all
SetEnvIfNoCase User-Agent "(MSIE)" loginspam
Deny from env=loginspam
</Files>

を入れておきました。
これだとIEでのアタックははじいてくれますが、それ以外でのアタックはだめですが
まあ、とりあえずは、こうしておきます。

スポンサーサイト

WordPressでmoreタグがきかない場合

WordPressでは文章の中にmoreタグを

<!--more-->

と入れておけば一覧ページではmoreタグの前まで表示されて、
「続きを読む」等のリンクが表示されます。

ところが、固定ページの中に、一覧ページを埋め込むような場合
このmoreタグの機能が効かずに、文章が全部表示されてしまいます。

調べてみた結果、$moreという変数があって、これが1の場合、moreタグがきかず、
0の場合にmoreタグがきくようです。
ソースではwp-includes/query.phpというファイルの中で


if ( is_single() || is_page() || is_feed() )
$more = 1;

というコードがありました。
固定ページでは初期値で$more = 1になってしまうので、
固定ページの中に、一覧ページを埋め込むような場合はmoreタグの機能が効かないんですね。
したがって、解決方法としては


<?php the_content('続きを読む'); >

の前に

<?php $more = 0; ?>

をいれればいいですね。

http://chattera.net/
http://chattera.net/chaberilist.php

WordPressのページごとのリクエスト

WordPressでは、リクエストが行われるごとに、そのページで使うであろう情報をSQLで取ってきて
そのページに即したテンプレートを使って表示するということをしているみたいですね。
そこで、どのテンプレートからでも呼ばれるheader.phpに

</div>
request:<?php print_r($wp_query->request);?><br>
found_posts:<?php print_r($wp_query->found_posts);?><br>
</div>

を入れてみると、どのページでも、そこで使われたSQLと、結果の件数が表示されます。
例えばブログの一覧ページだと

request:SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts
WHERE 1=1 AND wp_posts.post_type = 'post'
AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'private')
ORDER BY wp_posts.post_date DESC LIMIT 0, 5
found_posts:14

ブログの個別ページだと

request:SELECT wp_posts.* FROM wp_posts
WHERE 1=1 AND wp_posts.ID = 126 AND wp_posts.post_type = 'post'
ORDER BY wp_posts.post_date DESC
found_posts:1

固定ページだと

request:SELECT wp_posts.* FROM wp_posts
WHERE 1=1 AND (wp_posts.ID = '23') AND wp_posts.post_type = 'page'
ORDER BY wp_posts.post_date DESC
found_posts:1

のようになります。
これを眺めていると、WordPressがMySQLのDBにどんな感じで記事を格納していて、どうやって検索し、どうやって表示しようとしているか、垣間見れる気がして面白いですね。

WP-PageNaviとWp Pagenavi Styleのプラグイン

WP-PageNaviとWp Pagenavi Styleのプラグインをインストールしてみました。
WP-PageNaviはサイトの下によくあるページ移動ができるナビゲーションです。
Wp Pagenavi StyleはWP-PageNaviをあらかじめ用意してあるスタイルから選べるようになっている
プラグインです。
結構簡単にかっこいいページナビができますね。

使い方は簡単で、ページナビを入れたい部分に

<?php wp_pagenavi(); ?>

を入れます。

見た目はこんな感じです。
WP PageNavi Sample

でもWP-PageNaviはsingleのページには配置しても表示されませんね。
そういうものなんですかね。
このあたりはもっと研究してみないとわかりません。

http://chattera.net/
http://chattera.net/chaberilist.php

SyntaxHighlighterを使ったソース表示

SyntaxHighlighterを使ってソースをきれに表示する方法をやってみました。
直前の記事はこれを使って表示してみました。

これは備忘録です。

まず
http://alexgorbatchev.com/SyntaxHighlighter/
から最新版をダウンロードして、解凍する。
この記事を書いた時点ではバージョンは3.0.83なので
今後バージョンがかわると、方法も変わるかもしれないので注意。

FC2の管理画面の、ツールのファイルアップロードで
styles/shCore.css
をアップロードする。

つづいて
scripts/shCore.js
と、使いそうな言語のscript/shBrushXXX.js
をいくつかアップロードする。

次にテンプレートの設定画面からHTMLを編集する。
HTMLはheadの中に
<link href="http://blog-imgs-56.fc2.com/c/h/a/chattera/shCoreDefault.css" type="text/css" rel="stylesheet">

を記述し
bodyの中に
<script type="text/javascript" src="http://blog-imgs-56.fc2.com/c/h/a/chattera/shCore.js"></script>
<script type="text/javascript" src="http://blog-imgs-56.fc2.com/c/h/a/chattera/shBrushPhp.js"></script>
<script type="text/javascript" src="http://blog-imgs-56.fc2.com/c/h/a/chattera/shBrushXml.js"></script>
<script type="text/javascript" src="http://blog-imgs-56.fc2.com/c/h/a/chattera/shBrushSql.js"></script>
<script type="text/javascript" src="http://blog-imgs-56.fc2.com/c/h/a/chattera/shBrushPerl.js"></script>
<script type="text/javascript" src="http://blog-imgs-56.fc2.com/c/h/a/chattera/shBrushJScript.js"></script>
<script type="text/javascript" src="http://blog-imgs-56.fc2.com/c/h/a/chattera/shBrushJava.js"></script>
<script type="text/javascript" src="http://blog-imgs-56.fc2.com/c/h/a/chattera/shBrushCss.js"></script>
<script type="text/javascript" src="http://blog-imgs-56.fc2.com/c/h/a/chattera/shBrushCpp.js"></script>
<script type="text/javascript" src="http://blog-imgs-56.fc2.com/c/h/a/chattera/shBrushBash.js"></script>
<script type="text/javascript">SyntaxHighlighter.all();SyntaxHighlighter.config.bloggerMode = true;</script>

をいくつか記述する。
パス中の「blog-imgs-56.fc2.com/c/h/a/chattera」ここのブログのパスなので各自にあわせて修正する。
最後の行の、SyntaxHighlighter.config.bloggerMode = true;がないと一行になってしまい、
BRもつくのでみにくくなってしまう。

記事を書く際には

<pre class="brush: java;">
javaコード
</pre>

のようにclassで言語を指定する。指定できるものは大体言語名を小文字にしたものであるが
http://alexgorbatchev.com/SyntaxHighlighter/manual/brushes/
に細かくのっている。

またpreの中はエスケープしないといけないが、個別にかきかえるのは面倒なので
http://www.mapee.jp/tools/pretagmaker/
というような便利なサイトを使うとよい。

プロフィール

chattera.net

Author:chattera.net
フリーでソフト開発の仕事をしています。
自作したこのチャットシステムは、何か世の中に役に立つこともあるかと思いますので、お呼びがかかるとうれしいですね。

連絡先は chatteranet@gmail.com です。

また、ソフト開発関連のお誘いもうけたまわっております。

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。