相互リンク自動設置確認機能追加

PHP版のYomi-Searchに登録する場合に、自動で相互リンクの設置確認機能をつける方法です。

相互リンク設置URLはバナーのURLのデータベースに格納しますので、相互リンク継続チェックをリンクアシスタントで行う改造と連携した仕様になります。

機能説明

新規ホームページ登録から申請する際に、相互リンク設置URL自体の確認を行います。
具体的には、URLの最後が「/」「.html」「.htm」で終わっている場合のみ、登録を許可します。

また、登録ドメインと相互リンク設置ドメインが同じかを確かめます。

そして、最後に、「相互リンクの有無」のチェックボックスが相互リンクをするになっているかを確認します。

上記のチェックでスパム登録を弾く事ができます。

環境設定の変更

まず、管理画面よりログインして、「環境設定」→「審査登録システム」を仮登録モードにしないに設定。
さらに、「記入必須項目」のバナーURLを必須に設定し、 「新規登録時の相互リンク連絡項目」で表示するを選択してください。

テンプレート、PHPの変更

php/act_regist.phpの3行目以下に追加(赤削除青追加)

if($_POST[mode] == "act_regist"){
#相互リンクの設置を確認
if($_POST[changer] != "admin"){

$Fsougo = $_POST["Fsougo"]; //相互リンクの有無
$Furl = $_POST["Furl"]; //登録サイトのURL
$relinkURL = $_POST["Fbana_url"]; //バナーURLを相互リンク設置URLに
$linktag = "<a href=\"".$cfg[home]."\">".$cfg[search_name]."</a>";//相互リンクタグ

//相互リンクの有無のチェックボックス確認
if ($Fsougo != "1") {
mes("<p>相互リンクの有無のチェックボックスを正しく入力してください。</p>");
}
//相互リンク設置URL確認
if ($relinkURL == "") {
mes("<p>相互リンク設置URLを入力してください。</p>");
}
if (strpos($relinkURL, "http://") === false){
mes("<p>相互リンク設置URLを正しく入力してください。</p>");
}

$UnixSockString = "";

//http://を削除
$ChkrelinkURL = str_replace("http://", "", $relinkURL);
$Furl = str_replace("http://", "", $Furl);

//Hostをゲット
$Host = substr($ChkrelinkURL, 0, strpos($ChkrelinkURL, "/"));
$Furl = substr($Furl, 0, strpos($Furl, "/"));

// 登録URLとリンク設置URLが同じか確認
if ($Host != $Furl) {
mes("<p>登録サイトURLと相互リンク設置URLのドメインが違います。あなたのサイト内へ相互リンクを設置してください。</p><p>登録サイトURLのドメイン : <b>".$Furl."</b><br />相互リンク設置URLのドメイン : <b>".$Host."</b></p>");
}

//Pathをゲット
$Path = substr($ChkrelinkURL, strpos($ChkrelinkURL, "/"));

//80接続
$fp = fsockopen($Host, "80", $ErrNo, $ErrStr, 10);
if (!$fp) {
mes("相互リンク設置URLのページが存在しない、または取得できません。");
}
else {
// 読み込みのタイムアウト設定
socket_set_timeout($fp, 2);
fputs($fp, "GET ". $Path . " HTTP/1.0\r\nHost:" . $Host . "\r\n\r\n");
while(!feof($fp))
$UnixSockString.=fgets($fp, 128);
// タイムアウトしたか調べる
$stat = socket_get_status($fp);
if ($stat["timed_out"]) {
mes("相互リンク設置URLのページを取得中にタイムアウトしました。");
}
}
fclose($fp);
$pos = strpos($UnixSockString, $cfg[home]);

//リンク済みの場合True
if ($pos > 0) {
$bln = true;
} else {
mes("<p>相互リンクの設置が確認できません。</p><p>相互リンク設置URLのドメイン : <a href=\"".$relinkURL."\" target=\"_blank\">".$relinkURL."</a></p><p>あなたのサイト内へリンクタグ<br />".$linktag."<br />を設置してください。</p>");
}
}

#(1)プレビュー画面(preview)

functions_reg.php の195行目以下を変更

##タイトルバナーのURL
if ($cfg_reg[bana_url]){
if ($_POST[Fbana_url] == "http://"){
$_POST[Fbana_url]="";
}
if ($cfg_reg[Fbana_url] and !$_POST[Fbana_url]){
mes("<b>タイトルバナーのURL</b>は<font color=red>記入必須項目</font>です","記入ミス","back_reg");
mes("<b>相互リンク設置URL</b>は<font color=red>記入必須項目</font>です","記入ミス","back_reg");
}
elseif (strlen($_POST[Fbana_url]) - $cfg_reg[Mbana_url] > 0){
$num = strlen($_POST[Fbana_url]) - $cfg_reg[Mbana_url];
mes("<b>タイトルバナーのURL</b>は半角<b>$cfg_reg[Mbana_url]</b>文字以内でご記入ください","文字数オーバー(半角換算で${num}文字分)","back_reg");
mes("<b>相互リンク設置URL</b>は半角<b>$cfg_reg[Mbana_url]</b>文字以内でご記入ください","文字数オーバー(半角換算で${num}文字分)","back_reg");
}
elseif ($_POST[Fbana_url] and !preg_match("/^https?:\/\/.+\..+\.(gif|jpg|jpeg|png)$/", $_POST[Fbana_url])){
mes("<b>タイトルバナーのURL</b>の入力が正しくありません","記入ミス","back_reg");

elseif ($_POST[Fbana_url] and !preg_match("/^https?:\/\/.+\..+(\.htm|\.html|\/)$/", $_POST[Fbana_url])){
mes("<p><b>相互リンク設置URL</b>の入力が正しくありません</p><p>URLの最後は「/」「.html」「.htm」のいずれかで終わるようにしてください。</p>","記入ミス","back_reg");

}
}
else {
$_POST[Fbana_url] = "";
}
$_POST[Fbana_url] = str_replace(array("\r", "\n"), "", $_POST[Fbana_url]);

template/regist_new.html の71行目以下を変更

<?php
if($cfg_reg[bana_url]){
?><!--タイトルバナーのURL-->
<li>【タイトルバナーのURL】<font color=red><?=$cfg_reg[Fbana_url]?></font>
<ul>※バナー(画像)のURLの最後が「.gif」「.jpg」「.png」のいずれかで終わるようにしてください。
<br>※表示されるサイズは 横<b><?=$cfg_reg[Mbana_w]?></b>×縦<b><?=$cfg_reg[Mbana_h]?></b>(ピクセル)</b> です。
<br>※半角英数字<b><?=$cfg_reg[Mbana_url]?></b>文字以内

<li>【相互リンク設置URL】<font class="red"><?=$cfg_reg[Fbana_url]?></font><br />
※相互リンクを設置したURLを記入ください。<br />
※URLの最後が「.gif」「.jpg」「.png」のいずれかで終わるようにしてください。<br />
※URLの最後が「.htm」「.html」「/」のいずれかで終わるようにしてください。<br />
※半角英数字<b><?=$cfg_reg[Mbana_url]?></b>文字以内<br />

<br><input type=text name=Fbana_url value="<?=$_POST[Fbana_url]?>" size=60>
</ul><br>
<?php
}
?>

その他、regist_new_preview.html、regist_tmp_end.html、regist_new_end.htmlに記載されている「タイトルバナーのURL」の文字をすべて「相互リンク設置URL」に変更してください。