ȸ¿ø°¡ÀԡžÆÀ̵ð/ºñ¹øã±â
ȨÀ¸·Î


PHP·Î ±¸ÇöÇÑ °Ô½ÃÆÇ ÀÚµ¿ µî·Ï±â Ŭ·¡½º
12³â Àü
====== DB ½ºÅ°¸¶ ========================================
CREATE TABLE autopost (
  num int(6) NOT NULL auto_increment,
  title varchar(250) NOT NULL default '',       // »çÀÌÆ® À̸§
  type varchar(30) default NULL,                // Àü¼Û¹æ¹ý (formdata, urlencoded)
  site varchar(250) NOT NULL default '',        // ¸®½ºÆ® ÆäÀÌÁö ÁÖ¼Ò
  port int(5) default '80',                     // Á¢¼Ó Æ÷Æ® (±âº» 80)
  referer varchar(250) NOT NULL default '',     // ±Û¾²±âÆû ÆäÀÌÁö ÁÖ¼Ò
  cookie text,                                  // ±Û¾²±âÆû¿¡¼­ÀÇ ÄíÅ°°ª
  method varchar(4) default 'POST',             // Àü¼Û¹æ¹ý (POST,GET)
  target varchar(250) NOT NULL default '',      // ±Û¾²±â ÆäÀÌÁöÀÇ ÁÖ¼Ò
  ff_name varchar(40) NOT NULL default '',      // ÀÛ¼ºÀÚ Çʵå À̸§
  ff_password varchar(40) NOT NULL default '',  // ºñ¹Ð¹øÈ£ Çʵå À̸§
  ff_email varchar(40) default NULL,            // À̸ÞÀÏ Çʵå À̸§
  ff_homepage varchar(40) default NULL,         // ȨÆäÀÌÁö Çʵå À̸§
  ff_subject varchar(40) NOT NULL default '',   // Á¦¸ñ Çʵå À̸§
  ff_content varchar(40) NOT NULL default '',   // ³»¿ë Çʵå À̸§
  ff_etc text NOT NULL,                         // Ãß°¡º¯¼ö
  count int(4) NOT NULL default '0',            // Àü¼ÛȽ¼ö
  date datetime NOT NULL default '0000-00-00 00:00:00',
  PRIMARY KEY  (num)
) TYPE=MyISAM;


$sbh¶õ °´Ã¼¸¦ ¸¸µé°í °Ô½ÃÆÇ¿¡ ÀÔ·ÂÇÒ À̸§,ºñ¹Ð¹øÈ£,Á¦¸ñ,³»¿ë,À̸ÞÀÏ µîµîÀÇ °ªÀ» ¼³Á¤ÇÕ´Ï´Ù.
±×·± ´ÙÀ½ DB¿¡ ³»¿ëÀ» Àоî $sbh->setData($row)·Î ³Ñ°ÜÁÝ´Ï´Ù.
±×·± ´ÙÀ½ $result·Î °á°ú°ªÀ» ¹Þ¾Æ¿É´Ï´Ù.
ÀÀ´ä Äڵ尡 200ÀÎ °Í¿¡ ´ëÇؼ­ ¼º°øÀ¸·Î ó¸®ÇÕ´Ï´Ù.
ÀÌ°ÍÀº À¥¼­¹ö¿¡¼­ º°´Ù¸¥ ¿¡·¯¾øÀÌ Ã³¸®Çß´Ù´Â ¸Þ¼¼ÁöÀÌÁö °Ô½Ã¹°ÀÇ µî·ÏÀÌ ¼º°øÀûÀ¸·Î µÇ¾ú´Ù´Â °ÍÀ» ÀǹÌÇÏÁö´Â ¾Ê½À´Ï´Ù.
====== write.php ÆÄÀÏ ¼Ò½º ==============================
    include("send_board.inc");
    $sbh = new sendBoard($name,$password,$email,$subject,$content,$homepage);

    $i = 0;
    $total_success = 0;
    $total_fail = 0;
    $sql_order = " order by num desc";
    $query = mysql_query("select * from autopost where $sql_where $sql_order");
    while($row = mysql_fetch_array($query)){
            // 1ÀÌ¸é ¿äûÇì´õ¿Í ÀÀ´äÇì´õ¸¸ º¸¿©ÁÖ°í µ¥ÀÌŸ¸¦ Àü¼ÛÀº ¾ÈÇÔ
            // 2ÀÌ¸é ¿äûÇì¾îµÂ ÀÀ´äÇì´õ¸¦ º¸¿©ÁÖ°í µ¥ÀÌŸ¸¦ Àü¼ÛÇÔ
            $sbh->setDebug(2);
            $result = $sbh->setData($row);
            $print_num[$i]     = $row[num];
            $print_title[$i]   = $row[title];
            $print_site[$i]    = $row[site];
            $print_message[$i] = $sbh->getHttpStatusName($result[code]);

            if($result[code] == 200){
                $print_result[$i] = "<font color=blue>¼º°ø</font>";
                $dbh->sql_update("autopost","count=count+1","num='$row[num]'");
                $print_count[$i] = $row[count] + 1;
                $total_success++;
            }else{
                $print_result[$i] = "<font color=red>½ÇÆÐ</font>";
                $total_fail++;
                $print_count[$i] = $row[count];
            }
            $i++;
    }

====== send_board.inc ÆÄÀÏ ¼Ò½º =========================
<?
class sendBoard{
    var $time_out = 60;
    var $debug_level;
    var $row;
    var $data_name;
    var $data_password;
    var $data_email;
    var $data_subject;
    var $data_content;
    var $data_homepage;

    // ÀÔ·ÂÇؾßÇÒ °ªµéÀ» ¼³Á¤ÇÔ
    //{{{ function sendBoard()
    function sendBoard($name,$password,$email,$subject,$content,$homepage=""){
        $this->data_name     = $name;
        $this->data_password = $password;
        $this->data_email    = $email;
        $this->data_subject  = $subject;
        $this->data_content  = $content;
        $this->data_homepage = $homepage;
    }
    //}}}

    // µð¹ö±× ·¹º§À» ¼³Á¤ÇÔ
    //{{{ function setDebug($debug_level=1);
    function setDebug($debug_level=1){
        $this->debug_level = $debug_level;
    }
    //}}}

    // ±âº» °Ô½ÃÆÇ ¼³Á¤ Á¤º¸¸¦ °¡°øÇÏ¿© ¼³Á¤ÇÏ°í ±× Á¤º¸¸¦ ¹ÙÅÁÀ¸·Î ¿äûÇì´õ¸¦ ¸¸µé¾î
    // sendData()ÇÔ¼ö¿¡ ³Ñ°Ü¼­ Àü¼ÛÀÛ¾÷À» ÇÏ°í °á°ú¸¦ ¹Þ¾Æ¼­ ¸®ÅÏÇÔ
    //{{{ function setData($row)
    function setData($row){
        $server = parse_url($row[site]);
        $row[server] = $server[host];
        if(!$row[referer]) $row[referer] = "http://".$server[host]."/";

        $this->row = $row;

        $request_header = $this->getRequestHeader($row[type]);
        $result = $this->sendData($row[server],$row[port],$this->time_out,$request_header);
        return $result;
    }
    //}}}

    // ¿äûÇì´õ¸¦ ¸¸µå´Â ÇÔ¼ö
    //{{{ function getRequestHeader($type="")
    function getRequestHeader($type=""){

        ## request header¸¦ Á¤ÀÇÇÔ
        $request_header  = $this->row[method]." ".$this->row[target]." HTTP/1.0\r\n";
        $request_header .= "Host: ".$this->row[server]."\r\n";
        $request_header .= "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, */*\r\n";
        $request_header .= "Accept-Language: ko\r\n";
        $request_header .= "Accept-Encoding: gzip, deflate\r\n";
        $request_header .= "Referer: ".$this->row[referer]."\r\n";
        $request_header .= "User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows 98)\r\n";
        $request_header .= "Cache-Control: no-cache\r\n";
        $request_header .= "Connection: Keep-Alive\r\n";
        if($this->row[cookie]) $request_header .= "Cookie: ".trim($this->row[cookie])."\r\n";

        if($type == "formdata"){
            $boundary = uniqid("");
            $boundary_header = "boundary=---------------------------".$boundary."\r\n";
            $boundary_body   = "-----------------------------".$boundary."\r\n";
            $boundary_footer = "-----------------------------".$boundary."--\r\n";
            $formdata = $this->getFormData($boundary_body);
            $content_length = strlen($formdata);

            $request_header .= "Content-Type: multipart/form-data; $boundary_header";
            $request_header .= "Content-Length: $content_length\r\n\r\n";
            $request_header .= $formdata;
            $request_header .= $boundary_footer;
        }else{
            $formdata = $this->getFormData();
            $content_length = strlen($formdata)."\r\n";

            $request_header .= "Content-Type: application/x-www-form-urlencoded\r\n";
            $request_header .= "Content-Length: $content_length\r\n";
            $request_header .= $formdata;
        }
        $request_header .= "\r\n";

        if($this->debug_level) $this->printDebug("¿äû Çì´õ",$request_header);
        return $request_header;
    }
    //}}}

    // °Ô½ÃÆÇ¿¡ ÀÔ·ÂµÉ Á¤º¸µéÀ» ¿äûÇì´õ¿¡ ÇÔ²² º¸³¾ Çü½ÄÀ¸·Î °¡°ø
    //{{{ function getFormData()
    function getFormData($boundary_body=""){
        if($this->row[type] == "formdata"){
            $formdata .= $boundary_body."Content-Disposition: form-data; name=\"".$this->row[ff_name]."\"\r\n\r\n".$this->data_name."\r\n";
            $formdata .= $boundary_body."Content-Disposition: form-data; name=\"".$this->row[ff_password]."\"\r\n\r\n".$this->data_password."\r\n";
            $formdata .= $boundary_body."Content-Disposition: form-data; name=\"".$this->row[ff_email]."\"\r\n\r\n".$this->data_email."\r\n";
            $formdata .= $boundary_body."Content-Disposition: form-data; name=\"".$this->row[ff_homepage]."\"\r\n\r\n".$this->data_homepage."\r\n";
            $formdata .= $boundary_body."Content-Disposition: form-data; name=\"".$this->row[ff_subject]."\"\r\n\r\n".$this->data_subject."\r\n";
            $formdata .= $boundary_body."Content-Disposition: form-data; name=\"".$this->row[ff_content]."\"\r\n\r\n".$this->data_content."\r\n";
            $etc_data = explode("&",$this->row[ff_etc]);
            for($t=0; $t<sizeof($etc_data); $t++){
                $tmp = explode("=",$etc_data[$t]);
                $formdata .= $boundary_body."Content-Disposition: form-data; name=\"".$tmp[0]."\"\r\n\r\n".$tmp[1]."\r\n";
            }
        }else{
            if($this->row[ff_etc]) $formdata .= trim($this->row[ff_etc])."&";
            $formdata .= $this->row[ff_name]."=".$this->data_name."&";
            $formdata .= $this->row[ff_password]."=".$this->data_password."&";
            $formdata .= $this->row[ff_email]."=".$this->data_email."&";
            $formdata .= $this->row[ff_homepage]."=".$this->data_homepage."&";
            $formdata .= $this->row[ff_subject]."=".$this->data_subject."&";
            $formdata .= $this->row[ff_content]."=".$this->data_content;
            $formdata .= "\r\n";
        }
        return $formdata;
    }
    //}}}

    // ¼ÒÄÏÀ» ÀÌ¿ëÇÏ¿© °¡°øµÈ ¿äûÇì´õ¸¦ º¸³»°í °á°ú¸¦ ¸®ÅÏÇÏ´Â ÇÔ¼ö
    //{{{ function sendData($server,$port,$time_out,$request_header)
    function sendData($server,$port,$time_out,$request_header){

        if($this->debug_level > 1){
            $header = "";
            $result = "";

            ## ¼ÒÄÏ ¿äû ¿¬°á
            $socket = @fsockopen($server,$port,$errno,$errstr,$time_out);

            ## ¼ÒÄÏ ¿¬°áÀÌ ¼º°øÇßÀ» ¶§
            if($socket){
                fwrite($socket,$request_header);

                ## response header ¸¦ Àоî¿È
                do $header .= fread($socket,1); while (!preg_match('/\\r\\n\\r\\n$/',$header));

                ## chunked encoding °Ë»ç
                if (preg_match('/Transfer\\-Encoding:\\s+chunked\\r\\n/',$header))
                    do {
                        $byte = "";
                        $chunk_size="";
                        do {
                            $chunk_size.=$byte;
                            $byte=fread($socket,1);
                        } while ($byte!="\\r");

                        fread($socket, 1);
                        $chunk_size = hexdec($chunk_size);
                        $result .= fread($socket,$chunk_size);
                        fread($socket,2);
                    } while ($chunk_size);
                else {
                    ## content length °¡ Á¤ÀÇ µÇ¾ú´ÂÁö °Ë»ç
                    if(preg_match('/Content\\-Length:\\s+([0-9]*)\\r\\n/',$header,$matches)) {
                        $result = fread($socket,$matches[1]);
                    }else{
                        while (!feof($socket)) $result .= fread($socket, 4096);
                    }
                }

                ## ¼ÒÄÏ ´Ý±â
                fclose($socket);
            ## ¼ÒÄÏ ¿¬°áÀÌ ½ÇÆÐÇßÀ» ¶§
            }else{
                errorMsg("$server:$port ¼­¹ö·Î ¿¬°áÇÒ ¼ö ¾ø½À´Ï´Ù.");
            }

            $return_value[header] = $header;
            $return_value[result] = $result;
            $return_value[code]   = substr($header,9,3);

            if($this->debug_level) $this->printDebug("ÀÀ´ä Çì´õ",$return_value[header]);
            return $return_value;
        }
    }
    //}}}

    // ¿¡·¯¸Þ¼¼Áö Ãâ·Â ÇÔ¼ö
    //{{{ function errorMsg($msg,$url="javascript:history.go(-1)",$frame="document")
    function errorMsg($msg,$url="javascript:history.go(-1)",$frame="document"){
    echo "
        <table width=100% height=350 border=0 cellpadding=0 cellspacing=0>
        <tr>
        <td>
            <table border=0 cellpadding=3 cellspacing=1 width=350 bgcolor=8d8d8d align=center>
            <tr bgcolor=e5e5e5>
            <td align=center height=30  style=font-family:Tahoma;font-size:8pt;><b>Error Message</font></td>
            </tr>
            <tr bgcolor=f5f5f5>
            <td align=center height=30 style=font-family:Tahoma;font-size:8pt;>
                <table width=90% border=0 cellpadding=0 cellspacing=0>
                <tr>
                <td>
                    <br>
                    <span style=line-height:150%;font-size=12;>$msg</span>
                </td>
                </tr>
                <tr>
                <td>
                    <br>
                    <center><input type=button value=\"   Move Back   \" onclick=\"$frame.location.href='$url'\" style=border-color:#b0b0b0;background-color:#3d3d3d;color:#ffffff;font-size:8pt;font-family:Tahoma;height:23px;>
                    <br>
                    <br>
                </td>
                </tr>
                </table>
            </td>
            </tr>
            </form>
            </table>
        </td>
        </tr>
        </table>
    ";
    exit;
    }
    //}}}

    // µð¹ö±× Á¤º¸¸¦ Ãâ·ÂÇÏ´Â ÇÔ¼ö
    //{{{ function printDebug($title,$data)
    function printDebug($title,$data){
        $data = nl2br($data);
        $debug  = "==== $title ==============================================================================================================================\r\n<br>";
        $debug .= $data;
        $debug .= "============================================================================================================================================\r\n\r\n<br>";

        echo $debug;
    }
    //}}}

    // ¼ÒÄÏÀ¸·Î ¿äûÇÑ ÈÄ ³Ñ¾î¿À´Â ÀÀ´äÄڵ带 ¾Ë·ÁÁÜ
    //{{{ function getHttpStatusName($code)
    function getHttpStatusName($code){
        switch($code){
            case 100 : $name = "Continue";break;
            case 101 : $name = "Switching protocols";break;
            case 200 : $name = "Complete, Àü¼Û ¼º°ø";break;
            case 201 : $name = "Created, POST ¸í·É ½ÇÇà ¹× ¼º°ø";break;
            case 202 : $name = "Accepted, ¼­¹ö°¡ Ŭ¶óÀ̾ðÆ® ¸í·ÉÀ» ¹ÞÀ½";break;
            case 203 : $name = "Non-authoritative information, ¼­¹ö°¡ Ŭ¶óÀ̾ðÆ® ¿ä±¸ Áß ÀϺΠ¸¸ Àü¼Û";break;
            case 204 : $name = "No content, Ŭ¶ó¾ðÆ® ¿ä±¸¸¦ ó¸®ÇßÀ¸³ª Àü¼ÛÇÒ µ¥ÀÌÅÍ°¡ ¾øÀ½";break;
            case 205 : $name = "Reset content";break;
            case 206 : $name = "Partial content";break;
            case 300 : $name = "Multiple choices, ÃÖ±Ù¿¡ ¿Å°ÜÁø µ¥ÀÌÅ͸¦ ¿äû";break;
            case 301 : $name = "Moved permanently, ¿ä±¸ÇÑ µ¥ÀÌÅ͸¦ º¯°æµÈ Àӽà URL¿¡¼­ ã¾ÒÀ½";break;
            case 302 : $name = "Moved temporarily, ¿ä±¸ÇÑ µ¥ÀÌÅÍ°¡ º¯°æµÈ URL¿¡ ÀÖÀ½À» ¸í½Ã";break;
            case 303 : $name = "See other, ¿ä±¸ÇÑ µ¥ÀÌÅ͸¦ º¯°æÇÏÁö ¾Ê¾Ò±â ¶§¹®¿¡ ¹®Á¦°¡ ÀÖÀ½";break;
            case 304 : $name = "Not modified";break;
            case 305 : $name = "Use proxy";break;
            case 400 : $name = "Bad request, Ŭ¶óÀ̾ðÆ®ÀÇ À߸øµÈ ¿äûÀ¸·Î ó¸®ÇÒ ¼ö ¾øÀ½";break;
            case 401 : $name = "Unauthorized, Ŭ¶óÀ̾ðÆ®ÀÇ ÀÎÁõ ½ÇÆÐ";break;
            case 402 : $name = "Payment required, ¿¹¾àµÊ";break;
            case 403 : $name = "Forbidden, Á¢±ÙÀÌ °ÅºÎµÈ ¹®¼­¸¦ ¿äûÇÔ";break;
            case 404 : $name = "Not found, ¹®¼­¸¦ ãÀ» ¼ö ¾øÀ½";break;
            case 405 : $name = "Method not allowed, ¸®¼Ò½º¸¦ Çã¿ë¾ÈÇÔ";break;
            case 406 : $name = "Not acceptable, Çã¿ëÇÒ ¼ö ¾øÀ½";break;
            case 407 : $name = "Proxy authentication required, ÇÁ·Ï½Ã ÀÎÁõ ÇÊ¿ä";break;
            case 408 : $name = "Request timeout, ¿äû½Ã°£ÀÌ Áö³²";break;
            case 409 : $name = "Conflict";break;
            case 410 : $name = "Gone, ¿µ±¸ÀûÀ¸·Î »ç¿ëÇÒ ¼ö ¾øÀ½";break;
            case 411 : $name = "Length required";break;
            case 412 : $name = "Precondition failed, ÀüüÁ¶°Ç ½ÇÆÐ";break;
            case 413 : $name = "Request entity too large";break;
            case 414 : $name = "Request-URI too long, URLÀÌ ³Ê¹« ±è";break;
            case 415 : $name = "Unsupported media type";break;
            case 500 : $name = "Internal server error, ³»ºÎ¼­¹ö ¿À·ù";break;
            case 501 : $name = "Not implemented, Ŭ¶óÀ̾ðÆ®¿¡¼­ ¼­¹ö°¡ ¼öÇàÇÒ ¼ö ¾ø´Â ÇൿÀ» ¿ä±¸ÇÔ";break;
            case 502 : $name = "Bad gateway, ¼­¹öÀÇ °úºÎÇÏ »óÅÂ";break;
            case 503 : $name = "Service unavailable, ¿ÜºÎ ¼­ºñ½º°¡ Á×¾ú°Å³ª ÇöÀç ¸ØÃã »óÅÂ";break;
            case 504 : $name = "Gateway timeout";break;
            case 505 : $name = "HTTP version not supported";break;
        }
        $message = "[$code] $name";
        return $message;
    }
    //}}}
}
?>
ÃßõÃßõ : 461 Ãßõ ¸ñ·Ï
¹øÈ£ Á¦¸ñ
193
³×Æ®¿öÅ© ¿ë¾îµé
192
¿©·¯ Å×À̺íÀÇ ÃÖ±Ù °Ô½Ã¹° ÃßÃâ (union all »ç¿ë)
191
°°Àº ·¹ÄÚµåÁß¿¡ ÃÖ°í°ª ±¸Çϱâ
190
¿Ã¹Ù¸¥ ¼øÀ§ Á¤·Ä °á°ú¸¦ ¾ò´Â ¹æ¹ý
189
[MySQL] Áߺ¹µÈ ÇʵåÀÇ °¹¼ö ±¸Çϱâ
188
À¯´ÏÄÚµå ÀÎÄÚµùÇϱâ
187
jquery cookie
186
´Ù¸¥ ¼­¹ö·Î °ªÀ» Àü¼ÛÈÄ °á°ú°ªÀ» ¹Þ´Â ¹æ¹ý
185
DB¿¡¼­ DATA ¸¦ ºÒ·¯¿À´Â ¹æ¹ý
184
find ¸í·ÉÀ¸·Î ÃÖ±Ù º¯°æµÈ ÆÄÀÏ °Ë»ö / ÆÄÀÏ ³»¿ë °Ë»ö
183
¾ÆÀÌÆù, ¾Èµå·ÎÀÌµå ¹ÙÅÁÈ­¸é¿¡ ¹Ù·Î°¡±â ¸¸µé±â
182
À¥È£½ºÆà ÀÌ¿ëÀÚ°¡ ¾÷·Îµå ¿ë·® ´Ã¸®±â
181
PHP·Î HTTP ÀÎÁõÇϱâ
180
phpinfo Á¤º¸ - ¹Ì¸® Á¤ÀÇµÈ º¯¼ö
179
¼¼¼ÇÀ» ÀÌ¿ëÇÑ µ¿½Ã ·Î±×ÀÎ ¹æÁö
178
µð·ºÅ丮³»ÀÇ ¸ðµç ÆÄÀÏ ¹× Æú´õ »èÁ¦ ÇÔ¼ö (Recursive call)
177
Flex¿Í MySQLÀÇ ¿¬µ¿ (PHP»ç¿ë)
176
flex + php + mysql
175
»çÀÌÆ® ȯ°æ¼³Á¤ÀÇ ¹æ¹ý
174
$_SERVER[DOCUMENT_ROOT]ÀÇ Ç¥Çö¹æ¹ý
173
$PHP_SELF °¡ ¾ÈµÉ¶§
PHP·Î ±¸ÇöÇÑ °Ô½ÃÆÇ ÀÚµ¿ µî·Ï±â Ŭ·¡½º
171
MD5¸¦ ÀÌ¿ëÇÑ ¾Ïȣȭ/º¹È£È­
170
linux command ¸®´ª½º È°¿ë ¸í·Éµé..
169
º¸¾ÈÀ» À§ÇÑ php ÇÔ¼ö Á¦ÇÑ
168
mysql¿¡¼­ ÇѱÛÀÌ ±úÁú¶§ Áï ¹®ÀÚ¼ÂÀÌ ¸ÂÁö ¾ÊÀ»¶§
167
Mysql ³¯Â¥/½Ã°£ °ü·Ã ÇÔ¼ö
166
PHP È®ÀåÀÚ ¼û±â±â
165
PHP ¿¡·¯ Ãâ·Â ¾ÈÇϱâ
164
phpinfo() ¸¦ ¼û°Ü¶ó...
¸ñ·Ï
¹ÂÁ÷Æ®·ÎÆ® ºÎ»ê±¤¿ª½Ã ºÎ»êÁø±¸ °¡¾ßµ¿ ¤Ó °³ÀÎÁ¤º¸Ãë±Þ¹æħ
Copyright ¨Ï musictrot All rights reserved.