자동글쓰기 문의

자동글쓰기 문의

QA

자동글쓰기 문의

답변 4

본문

예전에 자동글쓰기 파일을 받아놓은적이있는데 사용하려고하니깐

사용을 잘되는데 원하는 닉네임과 원하는 제목으로 설정하고싶습니다

문제는 닉네임을 1000개 정도 넣어놓고 그중에 랜덤하게 나오게끔 하려고합니다

제목은 10개중에 한개 랜덤으로 나오게 설정하고싶은데 어떻게 해야하나요?

 

 

<?php
    header('Content-Type: text/html; charset=utf-8');
?>

<!DOCTYPE html>
<head>
    <meta charset="utf-8">
</head>

<body>
<html>
<?php
    ini_set('display_errors', '0'); // 에러를 출력하지 않습니다.
    define('_INDEX_', true);
    include_once('./_common.php');

function board_write($bo_table, $subject, $content, $mb_id) // 글 생성 함수입니다.
{
    global $g5;
    $mb = get_member($mb_id); 
    $write_table = "g5_write_{$bo_table}";
    $wr_num = get_next_num($write_table);
    $wr_reply = '';
    $ca_name = "";
    $html = "html1"; $secret=""; $mail = "";
    $wr_subject = addslashes(trim($subject));
    $wr_content = addslashes(trim($content));
    $wr_link1 = "";
    $wr_link2 = "";
    $wr_email = "";
    $wr_name = addslashes($bo[bo_use_name] ? $mb[mb_name] : $mb[mb_nick]);
  
    $sql = " insert into $write_table
                     set wr_num = '$wr_num',
                     wr_reply = '$wr_reply',
                     wr_comment = 0,
                     ca_name = '$ca_name',
                     wr_option = '$html,$secret,$mail',
                     wr_subject = '$wr_subject',
                     wr_content = '$wr_content',
                     wr_link1 = '$wr_link1',
                     wr_link2 = '$wr_link2',
                     wr_link1_hit = 0,
                     wr_link2_hit = 0,
                     wr_hit = 0,
                     wr_good = 0,
                     wr_nogood = 0,
                     mb_id = '$mb_id',
                     wr_password = '',
                     wr_name = '$wr_name',
                     wr_email = '$wr_email',
                     wr_homepage = '',
                     wr_datetime = '".G5_TIME_YMDHIS."',
                     wr_last = '".G5_TIME_YMDHIS."',
                     wr_ip = '{$_SERVER['REMOTE_ADDR']}',
                     wr_1 = '',
                     wr_2 = '',
                     wr_3 = '',
                     wr_4 = '',
                     wr_5 = '',
                     wr_6 = '',
                     wr_7 = '',
                     wr_8 = '',
                     wr_9 = '',
                     wr_10 = '' ";
    sql_query($sql);
    $wr_id = sql_insert_id();
    sql_query(" update $write_table set wr_parent = '$wr_id' where wr_id = '$wr_id' ");
    sql_query(" insert into {$g5['board_new_table']} ( bo_table, wr_id, wr_parent, bn_datetime, mb_id ) values ( '{$bo_table}', '{$wr_id}', '{$wr_id}', '".G5_TIME_YMDHIS."', '$mb_id' ) ");
    sql_query(" update {$g5['board_table']} set bo_count_write = bo_count_write + 1 where bo_table = '{$bo_table}'");
    return true;
}
 

function parsehtml($site_url) { // curl을 이용하여 사이트를 불러오는 함수입니다.
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $site_url);
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36');
    curl_setopt ($ch, CURLOPT_HEADER, 0); 
    curl_setopt ($ch, CURLOPT_TIMEOUT, 10); 
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 
    $html = curl_exec($ch);
    curl_close($ch);
    return $html;
}


function maxim() { // 명언 CSV 파일에서 명언을 랜덤하게 하나 불러오는 함수입니다.
    $lines = file('g5_maxim.txt', FILE_IGNORE_NEW_LINES);
    $randint = mt_rand(0, count($lines)-1);
    return $lines[$randint];
}


function get_img_src($site_url) { // img 태그에서 src 속성을 불러오는 함수입니다.
    $html2 = parsehtml($site_url);
    $doc = new DOMDocument();
    $doc->loadHTML($html2);
    $xpath = new DOMXPath($doc);
    $query = '//*[="img1"]';
    $src = $xpath->query($query);
    $img_url = $src[0]->getAttribute('src');
    return $img_url;
}


$mb_id = 'admin'; // 글을 생성할 때 사용할 id를 입력합니다. 없는 id의 경우 공백으로 처리될 수 있습니다.
$bo_table = $_POST['select_table'];
$number = $_POST['number'];
$check = $_POST['check_image'];

if ($number < 1) {
    echo '<br>'.'양수값을 입력해야 합니다.';
} else {
    if ($check ==! 'no_image') { // 이미지를 불러오는 경우입니다.
        $html1 = parsehtml('https://m.search.naver.com/search.naver?where=m_image&sm=mtb_jum&query=트와이스');
        preg_match('|<div.class..timeline.thumb(.*)div>|U', $html1, $div1);
        preg_match_all('|main.read.nhn.(.*)\"|U', $div1[0], $hrefs, PREG_PATTERN_ORDER);
        $result = array();
        for ($p=1; $p <= $number; $p++) {
            $randint = mt_rand(0, count($hrefs[1]));
            $site_url = 'https://entertain.naver.com/read?'.$hrefs[1][$randint];
            $img_url = get_img_src($site_url);
            $img_tag = '<img src = "'.$img_url.'"><br><br>';
            $source = '출처 : '.$site_url.'<br><br>'; // 이미지의 출처를 표시합니다.
            $text = maxim();
            $temp = explode('-', $text); // 제목은 명언에 포함된 성명으로 합니다.
            $subject = trim($temp[count($temp) - 1]);            
            $content = $img_tag.$source.$text.'<br><br> 테스트 목적으로 작성된 글입니다.';
            $result = board_write($bo_table, $subject, $content, $mb_id);
        }
    } else { // 원칙적으로 이미지 없이 텍스트로만 작성합니다.
        for ($p=1; $p <= $number; $p++) {
            $text = maxim();
            $temp = explode('-', $text); // 제목은 명언에 포함된 성명으로 합니다.
            $subject = trim($temp[count($temp) - 1]);
            $content = $text.'<br><br> 테스트 목적으로 작성된 글입니다.';
            $result = board_write($bo_table, $subject, $content, $mb_id);
        }
    }
    echo '<br>'.$bo_table.' 게시판에 '.$number.'개의 게시글을 생성하였습니다.';
}
?>
</html>

이 질문에 댓글 쓰기 :

답변 4

$wr_name = 뒤 부분을 주석처리 하시고, 배열정보의 array_rand 함수를 넣으세요.

function board_write($bo_table, $subject, $content, $mb_id) // 글 생성 함수입니다.
{
    global $g5;
    $mb = get_member($mb_id);
    $write_table = "g5_write_{$bo_table}";
    $wr_num = get_next_num($write_table);
    $wr_reply = '';
    $ca_name = "";
    $html = "html1"; $secret=""; $mail = "";
    $wr_subject = addslashes(trim($subject));
    $wr_content = addslashes(trim($content));
    $wr_link1 = "";
    $wr_link2 = "";
    $wr_email = "";
    $array_data = array("홍길동", "홍길순");
    $wr_name = array_rand($array_data);;


이렇게 넣었더니 이름이 0 이랑 1만뜨네요


// 배열 정보선언
$array_data = array("홍길동", "홍길순");
$nick_name = array_rand($array_data);
 
// 배열로 데이터를 만드신 뒤 array_rand 함수로 그중에 하나를 가져옵니다.

// 이렇게 변경을 해보세요.
$array_data = array("홍길동", "홍길순");
$array_rand = array_rand($array_data);
$wr_name = $array_data[$array_rand];

<?php
    header('Content-Type: text/html; charset=utf-8');
?>
<!DOCTYPE html>
<head>
    <meta charset="utf-8">
</head>
<body>
<html>
<?php
    ini_set('display_errors', '0'); // 에러를 출력하지 않습니다.
    define('_INDEX_', true);
    include_once('./_common.php');
function board_write($bo_table, $subject, $content, $mb_id) // 글 생성 함수입니다.
{
    global $g5;
    $mb = get_member($mb_id);
    $write_table = "g5_write_{$bo_table}";
    $wr_num = get_next_num($write_table);
    $wr_reply = '';
    $ca_name = "";
    $html = "html1"; $secret=""; $mail = "";
    $wr_subject = addslashes(trim($subject));
    $wr_content = addslashes(trim($content));
    $wr_link1 = "";
    $wr_link2 = "";
    $wr_email = "";
    // $wr_name = addslashes($bo[bo_use_name] ? $mb[mb_name] : $mb[mb_nick]); // ★ 주석 처리
    static $wr_names = ['철수', '영희', '둘리','별명1', '별명2', '별명3']; // ★ 원하는 별명 추가
    shuffle($wr_names); // ★ 배열 섞기
    $wr_name = $wr_names[0]; // ★ 배열 첫 번째 값
 
    $sql = " insert into $write_table
                     set wr_num = '$wr_num',
                     wr_reply = '$wr_reply',
                     wr_comment = 0,
                     ca_name = '$ca_name',
                     wr_option = '$html,$secret,$mail',
                     wr_subject = '$wr_subject',
                     wr_content = '$wr_content',
                     wr_link1 = '$wr_link1',
                     wr_link2 = '$wr_link2',
                     wr_link1_hit = 0,
                     wr_link2_hit = 0,
                     wr_hit = 0,
                     wr_good = 0,
                     wr_nogood = 0,
                     mb_id = '$mb_id',
                     wr_password = '',
                     wr_name = '$wr_name',
                     wr_email = '$wr_email',
                     wr_homepage = '',
                     wr_datetime = '".G5_TIME_YMDHIS."',
                     wr_last = '".G5_TIME_YMDHIS."',
                     wr_ip = '{$_SERVER['REMOTE_ADDR']}',
                     wr_1 = '',
                     wr_2 = '',
                     wr_3 = '',
                     wr_4 = '',
                     wr_5 = '',
                     wr_6 = '',
                     wr_7 = '',
                     wr_8 = '',
                     wr_9 = '',
                     wr_10 = '' ";
    sql_query($sql);
    $wr_id = sql_insert_id();
    sql_query(" update $write_table set wr_parent = '$wr_id' where wr_id = '$wr_id' ");
    sql_query(" insert into {$g5['board_new_table']} ( bo_table, wr_id, wr_parent, bn_datetime, mb_id ) values ( '{$bo_table}', '{$wr_id}', '{$wr_id}', '".G5_TIME_YMDHIS."', '$mb_id' ) ");
    sql_query(" update {$g5['board_table']} set bo_count_write = bo_count_write + 1 where bo_table = '{$bo_table}'");
    return true;
}
 
function parsehtml($site_url) { // curl을 이용하여 사이트를 불러오는 함수입니다.
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $site_url);
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36');
    curl_setopt ($ch, CURLOPT_HEADER, 0);
    curl_setopt ($ch, CURLOPT_TIMEOUT, 10);
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
    $html = curl_exec($ch);
    curl_close($ch);
    return $html;
}

function maxim() { // 명언 CSV 파일에서 명언을 랜덤하게 하나 불러오는 함수입니다.
    $lines = file('g5_maxim.txt', FILE_IGNORE_NEW_LINES);
    $randint = mt_rand(0, count($lines)-1);
    return $lines[$randint];
}

function get_img_src($site_url) { // img 태그에서 src 속성을 불러오는 함수입니다.
    $html2 = parsehtml($site_url);
    $doc = new DOMDocument();
    $doc->loadHTML($html2);
    $xpath = new DOMXPath($doc);
    $query = '//*[="img1"]';
    $src = $xpath->query($query);
    $img_url = $src[0]->getAttribute('src');
    return $img_url;
}

$mb_id = 'admin'; // 글을 생성할 때 사용할 id를 입력합니다. 없는 id의 경우 공백으로 처리될 수 있습니다.
$bo_table = $_POST['select_table'];
$number = $_POST['number'];
$check = $_POST['check_image'];
if ($number < 1) {
    echo '<br>'.'양수값을 입력해야 합니다.';
} else {
    if ($check ==! 'no_image') { // 이미지를 불러오는 경우입니다.
        $html1 = parsehtml('https://m.search.naver.com/search.naver?where=m_image&sm=mtb_jum&query=트와이스');
        preg_match('|<div.class..timeline.thumb(.*)div>|U', $html1, $div1);
        preg_match_all('|main.read.nhn.(.*)\"|U', $div1[0], $hrefs, PREG_PATTERN_ORDER);
        $result = array();
        for ($p=1; $p <= $number; $p++) {
            $randint = mt_rand(0, count($hrefs[1]));
            $site_url = 'https://entertain.naver.com/read?'.$hrefs[1][$randint];
            $img_url = get_img_src($site_url);
            $img_tag = '<img src = "'.$img_url.'"><br><br>';
            $source = '출처 : '.$site_url.'<br><br>'; // 이미지의 출처를 표시합니다.
            $text = maxim();
            $temp = explode('-', $text); // 제목은 명언에 포함된 성명으로 합니다.
            $subject = trim($temp[count($temp) - 1]);            
            $content = $img_tag.$source.$text.'<br><br> 테스트 목적으로 작성된 글입니다.';
            $result = board_write($bo_table, $subject, $content, $mb_id);
        }
    } else { // 원칙적으로 이미지 없이 텍스트로만 작성합니다.
        for ($p=1; $p <= $number; $p++) {
            $text = maxim();
            $temp = explode('-', $text); // 제목은 명언에 포함된 성명으로 합니다.
            $subject = trim($temp[count($temp) - 1]);
            $content = $text.'<br><br> 테스트 목적으로 작성된 글입니다.';
            $result = board_write($bo_table, $subject, $content, $mb_id);
        }
    }
    echo '<br>'.$bo_table.' 게시판에 '.$number.'개의 게시글을 생성하였습니다.';
}
?>
</html>
답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 16,790
© SIRSOFT
현재 페이지 제일 처음으로