※$cfg_reg[kt_min] 〜$cfg_reg[kt_max] 個まで選択できます ";
}
else{
echo "
※$cfg_reg[kt_max] 個選択してください ";
}
?>
※各カテゴリの詳細は「カテゴリ一覧 」を参考にしてください
size=7>
" . full_category($category_list[$category_no]) . "\n"; $select="";
}
?>
>--指定しない--
rowset_assoc($query) or $db->error("Query failed $query".__FILE__.__LINE__);
foreach ($rowset as $row) {
if($_POST[changer] == "admin" or !$row[regist]){
echo " " . full_category($row[path]) . "\n";
}
}
?>
";
}
#(f2)メッセージ画面出力(mes)
#書式:mes($arg1,$arg2,$arg3);
#機能:メッセージ画面を出力する
#引数:$arg1=>表示するメッセージ
# $arg2=>ページのタイトル(省略時は「メッセージ画面」)
# $arg3=>・JavaScriptによる「戻る」ボタン表示=java
# ・HTTP_REFERERを使う場合=env
# ・管理室へのボタン=kanri
# ・通常のURL又はパスを指定する場合にはそのURL又はパスを記入
# ・省略時は非表示
#戻り値:なし
function mes($mes, $title="", $arg3=""){
global $cfg, $cfg_reg, $db;
if(!$title) {$title = "メッセージ画面";}
if($arg3 == "java" || ($arg3 == "back_reg" && $_POST[mode] == "act_mente")){
$back_url = " ";
}
elseif($arg3 == "env"){
$back_url = "【戻る 】";
}
elseif($arg3 == "kanri"){
$back_url = "";
}
elseif(!$arg3){$back_url = "";}
elseif($arg3 == "back_reg"){
$_POST[Fsyoukai]=str_replace(" ", "\n", $_POST[Fsyoukai]);
if($_POST[changer] == "admin"){$_POST[in_mode]="new_dairi";}
else{$_POST[in_mode]="form";}
$back_url = <<
EOM;
for($i = 1; $i <= $cfg_reg[kt_max]; $i++){
$back_url .= ' \n";
}
$back_url .= <<
EOM;
}
else{$back_url = "【戻る 】";}
header("Content-type: text/html; charset=EUC-JP");
require "$cfg[temp_path]mes.html";
$db->close();
exit;
}
#(f3)入力内容のチェック(check)
function check(){
##禁止ワードのチェック
global $cfg, $cfg_reg, $db;
if(get_magic_quotes_gpc()) {
$_POST = array_map("stripslashes", $_POST);
}
$_POST = array_map("htmlspecialchars", $_POST);
if($cfg_reg[kt_no_word]){
#ワードチェック対象の項目
$check_str = implode(" ",$_POST[Fname],$_POST[Femail],$_POST[Furl],$_POST[Fbana_url],$_POST[Ftitle],$_POST[Fsyoukai],$_POST[Fkey]);
$no_words = explode(" ",$cfg_reg[kt_no_word]);
foreach ($no_words as $word){
if(stristr($check_str,$word)){
mes("登録データの中にが禁止されている言葉が入っています。 登録しようとしているデータのジャンルをこのサーチエンジンが禁止している可能性があります。","ワードチェックエラー","back_reg");
}
}
if(!$_SERVER['REMOTE_HOST']){$_SERVER['REMOTE_HOST'] = gethostbyaddr($_SERVER['REMOTE_ADDR']);}
$addr_host = $_SERVER['REMOTE_ADDR'] . " " . $_SERVER['REMOTE_HOST'];
foreach ($no_words as $word){
if(stristr($addr_host,$word)){
mes("このIP又はホスト名からの登録は禁止されている可能性があります。 $_SERVER[REMOTE_ADDR]/$_SERVER[REMOTE_HOST] ","IP/HOSTチェックエラー","back_reg");
}
}
}
##名前
if ($cfg_reg[Fname] and !$_POST[Fname]){
mes("お名前 は記入必須項目 です","記入ミス","back_reg");
}
$num = strlen($_POST[Fname]) - $cfg_reg[Mname] * 2;
if ($num > 0){
mes("お名前 は全角$cfg_reg[Mname] 文字以内でご記入ください","文字数オーバー(半角換算で${num}文字分)","back_reg");
}
$_POST[Fname] = str_replace(array("\r", "\n"), "", $_POST[Fname]);
##メールアドレス
if ($cfg_reg[Femail] and !$_POST[Femail]){
mes("メールアドレス は記入必須項目 です","記入ミス","back_reg");
}
elseif (strlen($_POST[Femail]) - $cfg_reg[Memail] > 0){
$num = strlen($_POST[Femail]) - $cfg_reg[Memail];
mes("メールアドレス は半角$cfg_reg[Memail] 文字以内でご記入ください","文字数オーバー(半角換算で${num}文字分)","back_reg");
}
elseif ($cfg_reg[Femail] and !preg_match("/(.+)\@(.+)\.(.+)/", $_POST[Femail])){
mes("メールアドレス の入力が正しくありません","記入ミス","back_reg");
}
$_POST[Femail] = str_replace(array("\r", "\n"), "", $_POST[Femail]);
##パスワード
if ($_POST[mode] != "act_mente"){
if(!$_POST[Fpass]){
mes("パスワード は記入必須項目 です","記入ミス","back_reg");
}
elseif (preg_match("/\W/", $_POST['Fpass'])) {
$_POST['Fpass'] = "";
$_POST['Fpass2'] = "";
mes("パスワード には全角文字は使用できません","入力ミス","back_reg");
}
elseif (strlen($_POST['Fpass']) > 8){
$num = strlen($_POST['Fpass']) - 8;
mes("パスワード は半角英数8 文字以内でご記入ください","文字数オーバー(${num}文字分)","back_reg");
}
elseif ($_POST[Fpass] != $_POST[Fpass2]){
mes("2回のパスワード 入力が一致しませんでした","入力ミス","back_reg");
}
$_POST[Fpass] = str_replace(array("\r", "\n"), "", $_POST[Fpass]);
}
##ホームページアドレス(2重登録チェックは別のところに記述)
if ($_POST[Furl] == "http://"){
$_POST[Furl]="";
}
if ($cfg_reg[Furl] and !$_POST[Furl]){
mes("ホームページアドレス は記入必須項目 です","記入ミス","back_reg");
}
elseif (strlen($_POST[Furl]) - $cfg_reg[Murl] > 0){
$num = strlen($_POST[Furl]) - $cfg_reg[Murl];
mes("ホームページアドレス は半角$cfg_reg[Murl] 文字以内でご記入ください","文字数オーバー(半角換算で${num}文字分)","back_reg");
}
elseif ($_POST[Furl] and !preg_match("/^https?:\/\/.+\..+/", $_POST[Furl])){
mes("ホームページアドレス の入力が正しくありません","記入ミス","back_reg");
}
$_POST[Furl] = str_replace(array("\r", "\n"), "", $_POST[Furl]);
##タイトルバナーのURL
if ($cfg_reg[bana_url]){
if ($_POST[Fbana_url] == "http://"){
$_POST[Fbana_url]="";
}
if ($cfg_reg[Fbana_url] and !$_POST[Fbana_url]){
mes("タイトルバナーのURL は記入必須項目 です","記入ミス","back_reg");
}
elseif (strlen($_POST[Fbana_url]) - $cfg_reg[Mbana_url] > 0){
$num = strlen($_POST[Fbana_url]) - $cfg_reg[Mbana_url];
mes("タイトルバナーのURL は半角$cfg_reg[Mbana_url] 文字以内でご記入ください","文字数オーバー(半角換算で${num}文字分)","back_reg");
}
elseif ($_POST[Fbana_url] and !preg_match("/^https?:\/\/.+\..+\.(gif|jpg|jpeg|png)$/", $_POST[Fbana_url])){
mes("タイトルバナーのURL の入力が正しくありません","記入ミス","back_reg");
}
}
else {
$_POST[Fbana_url] = "";
}
$_POST[Fbana_url] = str_replace(array("\r", "\n"), "", $_POST[Fbana_url]);
##ホームページのタイトル
if ($cfg_reg[Ftitle] and !$_POST[Ftitle]){
mes("ホームページのタイトル は記入必須項目 です","記入ミス","back_reg");
}
if (strlen($_POST[Ftitle]) - ($cfg_reg[Mtitle] * 2) > 0){
$num = strlen($_POST[Ftitle]) - ($cfg_reg[Mtitle] * 2);
mes("ホームページのタイトル は全角$cfg_reg[Mtitle] 文字以内でご記入ください","文字数オーバー(半角換算で${num}文字分)","back_reg");
}
$_POST[Ftitle] = str_replace(array("\r", "\n"), "", $_POST[Ftitle]);
##ホームページの紹介文
if ($cfg_reg[Fsyoukai] and !$_POST[Fsyoukai]){
mes("ホームページの紹介文 は記入必須項目 です","記入ミス","back_reg");
}
if (strlen($_POST[Fsyoukai]) - ($cfg_reg[Msyoukai] * 2) > 0){
$num = strlen($_POST[Fsyoukai]) - ($cfg_reg[Msyoukai] * 2);
mes("ホームページの紹介文 は全角$cfg_reg[Msyoukai] 文字以内でご記入ください","文字数オーバー(半角換算で${num}文字分)","back_reg");
}
if (!$cfg[syoukai_br]){
$_POST[Fsyoukai] = str_replace(array("\r", "\n"), "", $_POST[Fsyoukai]);
}
else {
$_POST[Fsyoukai] = str_replace(array("\r\n", "\r", "\n"), " ", $_POST[Fsyoukai]);
}
##管理人コメント
$_POST[Fkanricom] = str_replace(array("\r\n", "\r", "\n"), " ", $_POST[Fkanricom]);
##カテゴリ
$kt_fl=array();
for ($i = 1; $i <= $cfg_reg[kt_max]; $i++){
if (!$_POST["Fkt$i"]) {
$_POST["Fkt$i"] = 0;
}
$query = "SELECT id, regist FROM $cfg[sqltb]category WHERE path='".$_POST["Fkt$i"]."'";
$regist = $db->single_assoc($query) or $db->error("Query failed $query".__FILE__.__LINE__);
$_POST["Fkt$i"] = str_replace(array("\r", "\n"), "", $_POST["Fkt$i"]);
if ($kt_fl[$_POST["Fkt$i"]]){
$_POST["Fkt$i"]="";
}
elseif ($regist[id]){
$kt_fl[$_POST["Fkt$i"]]=1;
}
else {
$_POST["Fkt$i"]="";
}
##禁止カテゴリに登録しようとした場合
if ($_POST[changer] != "admin" and $regist[regist]){
mes("登録者の登録ができないカテゴリに変更しようとしています","カテゴリ選択ミス","back_reg");
}
}
$j = count($kt_fl);
if ($cfg_reg[kt_min] == $cfg_reg[kt_max]){
$PR_kt="$cfg_reg[kt_max] 個";
}
else {
$PR_kt="$cfg_reg[kt_min] 〜$cfg_reg[kt_max] 個";
}
if ($cfg_reg[kt_min] > $j or $j > $cfg_reg[kt_max]){
mes("カテゴリ は${PR_kt}選択してください","選択数ミス","back_reg");
}
##キーワード
if ($cfg_reg[Fkey] and !$_POST[Fkey]){
mes("キーワード は記入必須項目 です","記入ミス","back_reg");
}
if (strlen($_POST[Fkey]) - ($cfg_reg[Mkey] * 2) > 0){
$num = strlen($_POST[Fkey]) - ($cfg_reg[Mkey] * 2);
mes("キーワード は全角$cfg_reg[Mkey] 文字以内でご記入ください","文字数オーバー(半角換算で${num}文字分)","back_reg");
}
$_POST[Fkey] = str_replace(array("\r\n", "\r", "\n"), " ", $_POST[Fkey]);
##追加して欲しいカテゴリ
if ($_POST[mode] != "act_mente" and $_POST[changer] != "admin"){
if($cfg_reg[Fadd_kt] and !$_POST[Fadd_kt]){
mes("追加して欲しいカテゴリ は記入必須項目 です","記入ミス","back_reg");
}
if (strlen($_POST[Fadd_kt]) - ($cfg_reg[Madd_kt] * 2) > 0){
$num = strlen($_POST[Fadd_kt]) - ($cfg_reg[Madd_kt] * 2);
mes("追加して欲しいカテゴリ は全角$cfg_reg[Madd_kt] 文字以内でご記入ください","文字数オーバー(半角換算で${num}文字分)","back_reg");
}
$_POST[Fadd_kt] = str_replace(array("\r\n", "\r", "\n"), " ", $_POST[Fadd_kt]);
}
##相互リンクの有無
$sougo[1]="する";
$sougo[0]="しない";
if ($_POST[Fsougo] != "1"){
$_POST[Fsougo]=0;
}
##管理人へのメッセージ
if ($_POST[mode] != "act_mente" and $_POST[changer] != "admin"){
if ($cfg_reg[Fto_admin] and !$_POST[Fto_admin]){
mes("管理人へのメッセージ は記入必須項目 です","記入ミス","back_reg");
}
if (strlen($_POST[Fto_admin]) - ($cfg_reg[Mto_admin] * 2) > 0){
$num = strlen($_POST[Fto_admin]) - ($cfg_reg[Mto_admin] * 2);
mes("管理人へのメッセージ は全角$cfg_reg[Mto_admin] 文字以内でご記入ください","文字数オーバー(半角換算で${num}文字分)","back_reg");
}
if (!$cfg[syoukai_br]){
$_POST[Fto_admin] = str_replace(array("\r", "\n"), "", $_POST[Fto_admin]);
}
else {
$_POST[Fto_admin] = str_replace(array("\r\n", "\r", "\n"), " ", $_POST[Fto_admin]);
}
}
}
#(f4)カテゴリを表示1(preview_category1)
function preview_category1(){
global $cfg_reg;
for ($kt_no = 1; $kt_no <= $cfg_reg[kt_max]; $kt_no++){
$value = $_POST["Fkt$kt_no"];
echo " \n";
}
}
#(f5)カテゴリを表示2(preview_category2)
function preview_category2(){
global $cfg_reg;
for ($kt_no = 1; $kt_no <= $cfg_reg[kt_max]; $kt_no++){
$value = $_POST["Fkt$kt_no"];
echo full_category($value);
echo " \n";
}
}
#(f6)入力内容の整形(join_fld)
function join_fld($id = ""){
#登録更新用のデータ配列
#$id=登録用のデータID
#[モード]
# $_POST['changer'] => 変更者(なし,admin)
#※登録内容変更の場合の変更前データは「$pre_log」に格納されている
global $pre_log, $cfg, $cfg_reg;
##登録No(データID)(0)
$log_data[0] = $id;
##タイトル(1)
$log_data[1] = $_POST['Ftitle'];
##URL(2)
$log_data[2] = $_POST['Furl'];
##マークデータ(3)
if ($_POST['changer'] == "admin"){ #変更者が管理人
$_POST['Fmark'] = "";
for ($i = 1; $i <= 2; $i++){ #←マーク数を増やすときは修正
if ($_POST["Fmark$i"]){
$_POST['Fmark'] .= "1_";
}
else {$_POST['Fmark'] .= "0_";}
}
$_POST['Fmark'] = substr($_POST['Fmark'], 0, -1);
$log_data[3] = $_POST['Fmark'];
}
elseif ($_POST[mode] == "act_mente"){ #登録者の変更
$log_data[3] = $pre_log[3];
}
else { #登録者の新規登録
$log_data[3]="0_0";
}
##更新日(4)
#日時の取得
$log_data[4] = get_time(0, 1);
##パスワード(5)
$log_data[5] = crypt($_POST['Fpass'], "ys");
##紹介文(6)
$log_data[6] = $_POST['Fsyoukai'];
##管理人コメント(7)
if ($_POST['changer'] == "admin"){ #変更者が管理人
$log_data[7] = $_POST['Fkanricom'];
}
else { #登録者の変更
$log_data[7] = $pre_log[7];
}
##お名前(8)
$log_data[8] = $_POST['Fname'];
##E-mail(9)
$log_data[9] = $_POST['Femail'];
##カテゴリ(10)
if ($cfg[user_change_kt] and $_POST[mode] == "act_mente" and $_POST['changer'] != "admin"){ #登録者の変更でカテゴリ変更禁止の場合
$i = 0;
$category = explode("&", $pre_log[10]);
$log_data[10] = $pre_log[10];
foreach ($category as $tmp){
$_POST["Fkt$i"]=$tmp;
$i++;
}
}
else { #その他の場合
$log_data[10] = "&";
for ($i = 1; $i <= $cfg_reg[kt_max]; $i++){
$log_data[10] .= $_POST["Fkt$i"] . "&";
}
}
##time形式(11)新規or更新(13)
$times = time();
$log_data[11] = $times;
if ($_POST[mode] == "act_mente"){ #内容変更時
if (!$pre_log[13] and $times - $pre_log[11] < $cfg[new_time] * 86400){
$log_data[13] = "0";
}
else {
$log_data[13] = "1";
}
}
else { #新規登録時
$log_data[13] = "0";
}
##バナーURL(12)
$log_data[12] = $_POST['Fbana_url'];
##最終アクセスIP(14)
$log_data[14] = $_SERVER[REMOTE_ADDR];
##キーワード(15)
$log_data[15] = $_POST['Fkey'];
##仮登録モードの場合の設定
if ($cfg[user_check] and $_POST[changer] != "admin" and $_POST[mode] == "act_regist"){
$log_data[7] = implode("<1>",array($_POST[Fsougo],$_POST[Fadd_kt],$_POST['Fto_admin']));
}
if ($_POST['changer'] == "admin" and $pre_log) {
$log_data[4] = $pre_log[4];
$log_data[11] = $pre_log[11];
$log_data[13] = $pre_log[13];
}
ksort($log_data);
return($log_data);
}
#(f7)2重URL登録チェック(get_id_url_ch)
#$fl => (新規登録=1/内容変更=2)
function get_id_url_ch($fl){
global $cfg, $db;
$i = 0;
$log_data = array();
$query = "SELECT * FROM $cfg[sqltb]log WHERE url='$_POST[Furl]' LIMIT 1";
$log_data = $db->single_num($query) or $db->error("Query failed $query".__FILE__.__LINE__);
if ($log_data) {
if ($_POST[Furl] == $log_data[2]){
$i++;
$pre_title = $log_data[1];
}
if ($_POST[id] == $log_data[0]){
$pre_log = $log_data;
}
if ($fl <= $i){
mes("そのURLはすでに登録されています $log_data[1] : $log_data[2]","2重登録エラー","java");
}
if ($fl == "2" and $i == "1" and $pre_log[2] != $_POST[Furl]){
mes("そのURLはすでに登録されています $pre_title : $_POST[Furl]","2重登録エラー","java");
}
}
if($_POST[changer] != "admin" and $cfg[user_check] and $_POST[mode] == "act_regist" and $fl == 1){
#仮登録モードでユーザの新規登録時
$query = "SELECT title FROM $cfg[sqltb]log_temp WHERE url='$_POST[Furl]' LIMIT 1";
$log_data = $db->single_num($query) or $db->error("Query failed $query".__FILE__.__LINE__);
if ($log_data){
mes("そのURLは現在登録申請中です $log_data[0] : $_POST[Furl]","2重登録エラー","java");
}
}
}
#(f8)登録結果画面出力(PRend)
function PRend(){
global $cfg;
require "$cfg[sub_path]regist_new_end.php";
}
#(f9)マークForm管理者画面出力(PR_mark)
function PR_mark($data=""){
global $cfg;
if($_REQUEST['changer'] == "admin"){
$mark = explode("_",$data);
?>
【マーク】
" . $cfg["name_m$i"] . " ";
}
?>
$2", $url));
}
?>