mysql 레코드를 가져오는 방법중 하나

프로그래밍/PHP|2017. 9. 1. 15:17
반응형

$records = mysql_query("select * from USER") or die("Query failed: " . mysqli_error());


while($row = mysql_fetch_assoc($records)) {

    echo $row["no"];

    echo $row["name"];

    echo $row["age"];

}



반응형

댓글()

php 로 소켓 프로그램 만들기 (다중 처리, 멀티스레드)

프로그래밍/PHP|2016. 10. 28. 17:17
반응형

- 본 예제는 client 의 연결을 자식 프로세스(thread) 로 구동시켜 여러 client 의 요청을 다중 처리하도록 하는 코드 입니다.

- 본 예제는 client 와 서버가 메세지를 한 번씩 주고 받는 예제 입니다.



1. 서버에서 데몬 생성


# vi server.php


#!/usr/local/php/bin/php -q

<?php

set_time_limit(0);


define("_IP",    "0.0.0.0");    // 접속 허용할 IP. 모든 IP 에 대하여 오픈할 경우 0.0.0.0 으로 설정

define("_PORT",  "81");


$sSock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);


socket_bind($sSock, _IP, _PORT);

socket_listen($sSock);


pcntl_signal(SIGCHLD, SIG_IGN);


while($sock = socket_accept($sSock))

{

    socket_getpeername($sock, $sockIp, $sockPort);

    msg("\nclient connect : ".$sockIp.":".$sockPort."\n");


    $pid = pcntl_fork();

    if($pid == -1)

    {

        msg("fork failed\n");

        exit;

    }

    // 자식 프로세스 일때 

    if($pid == 0)

    {

        $buf = socket_read($sock, 4096);


        // 클라이언트에서 받은 데이타 처리하는 부분

        msg("recive data : ".$buf."\n");    // 클라이언트에게 받은 메세지

        msg("client(".$sockPort.") time data request\n");

        $re = "Complete launching server";    // 클라이언트에게 응답할 메세지

        socket_write($sock, $re);

        msg("client disconnect : ".$sockIp.":".$sockPort."\n");

        socket_close($sock);

        exit;

    }

}


function msg($msg)

{

    echo "SERVER >> ".$msg;

}

?>


실행 권한 부여 및 작성후 데몬 구동


# chmod 700 server.php

# ./server.php &




2. 클라이언트에서 접속 파일 생성


# vi client.php


#!/usr/local/php/bin/php -q

<?php

define("_IP",    "192.168.10.2");    // 접속할 서버 IP

define("_PORT",  "81");                // 접속할 서버 PORT


$sock      = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

socket_connect($sock, _IP, _PORT);

msg("socket connect to "._IP.":"._PORT."\n");


// 서버로 보낼 데이타

$stdin = "time";

socket_write($sock, $stdin);

$sMsg  = socket_read($sock, 4096);


msg("result : ".$sMsg."\n");


socket_close($sock);

exit;


// 로그를 출력합니다. 디버그용

function msg($msg)

{

    echo "CLIENT >> ".$msg;

}

?>




3. 테스트


client 에서 생성한 client.php 파일을 실행합니다.


# ./client.php

# ./client_multi.php

CLIENT >> socket connect to 192.168.30.20:444

CLIENT >> result : Complete launching server


* 참고로 (client 접속 당시) 서버 콘솔에 출력된 메세지 입니다.


# SERVER >> client connect : 192.168.30.40:32966

SERVER >> recive data : time

SERVER >> client(32966) time data request



[참조하여 작성함] http://www.phpschool.com/class/php_multi_socket_server3.html

반응형

댓글()

값이 배열 안에 존재하는지 확인하는 in_array함수

프로그래밍/PHP|2016. 10. 17. 12:28
반응형

<?php 

 $os = array("Mac", "NT", "Irix", "Linux"); 


 if (in_array("NT", $os)) { 

      echo "NT가 존재합니다."; 

 } 

 // 결과: NT가 존재합니다. 


 // 이 함수는 대소문자를 구분하므로 false입니다. 

 if (in_array("mac", $os)) { 

      echo "찾는 문자가 존재합니다."; 

 } 

 // 결과: 

 ?>



[출처] http://habony.tistory.com/82

반응형

댓글()

php 로 소켓 프로그램 만들기 (다중 처리 불가, queue 진행 방식)

프로그래밍/PHP|2016. 10. 14. 13:32
반응형

- 본 예제는 client 의 다중 접속 처리가 되지 않는 1 client 를 위한 코드 입니다.

  동시에 두개의 요청이 들어오게 되면 먼저 들어온 요청 처리 후, 대기 되었던 두번째 요청을 처리하게 됩니다.


- 본 예제는 server 에서 보내주는 메세지를 client 에서 확인하는 예제입니다.




1. 서버에서 데몬 생성


# vi server.php


#!/usr/local/php/bin/php -q    // php 실행 파일

<?php

set_time_limit(0);    // 작업을 마칠때까지 세션을 끊지 않음

define("_IP",    "192.168.10.2");    // 서버 IP

define("_PORT",  "443");                // 서버에서 사용할 PORT


$sSock      = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

socket_bind($sSock, _IP, _PORT);

socket_listen($sSock);

while($cSock = socket_accept($sSock))

{

    socket_getpeername($cSock, $addr, $port);

    echo "SERVER >> client connected $addr:$port \n";

    $date = date("Y/m/d H:i:s");

    socket_write($cSock, $date);

    socket_close($cSock);

    echo "SERVER >> client Close.\n";

}

?>


실행 권한 부여 및 작성후 데몬 구동


# chmod 700 server.php

# ./server.php &




2. 클라이언트에서 접속 파일 생성


# vi client.php


#!/usr/bin/php -q    // php 실행 파일

<?php

set_time_limit(0);    // 작업을 마칠때까지 세션을 끊지 않음

define("_IP",    "192.168.10.2");    // 서버 IP

define("_PORT",  "443");               // 서버에서 사용하는 PORT


$sock      = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

socket_connect($sock, _IP, _PORT);

echo "CLIENT >> socket connect to "._IP.":"._PORT."\n";

$date = socket_read($sock, 4096);

echo "CLIENT >> this time is $date \n";

socket_close($sock);

echo "CLIENT >> socket closed.\n";

?>




3. 테스트


client 에서 생성한 client.php 파일을 실행합니다.


# ./client.php

CLIENT >> socket connect to 192.168.10.2:443

CLIENT >> this time is 2016/10/14 13:27:49 

CLIENT >> socket closed.


* 참고로 (client 접속 당시) 서버 콘솔에 출력된 메세지 입니다.


SERVER >> client connected 192.168.10.3:44450 

SERVER >> client Close.




* 내용 추가


client 에서 server 로 메세지를 보내기 위해서는 각각의 파일에 아래 내용을 추가해줍니다.


# vi client.php


$message="Hero";

socket_write($sock, $message, strlen($message)) or die("Could not send data to server\n"); 


# vi server.php


$input = socket_read($cSock, 4096) or die("Could not read input\n");

echo "$input";


반응형

댓글()

한글 및 공백이 포함된 URL 주소를 UTF-8 로 변환 (urlencode)

프로그래밍/PHP|2015. 12. 10. 10:36
반응형

한글 및 공백이 포함된 URL 주소로 접근하기 위해서는 urlencode 함수를 이용하면 됩니다.

웹문서가 euckr 로 만들어진 경우는 utf-8 로 문자를 변환한 뒤에, urlencode 를 사용해야 합니다.

 

아래 예제 참조..

 

<?
if(mb_detect_encoding($str) != "UTF-8") {
$str = iconv("EUC-KR", "UTF-8", $str);    // 웹문서가 euckr 일 경우 utf-8 로 변환 합니다.
}

$str = urlencode($str);                          // urlencode 로 변환
echo $str;
?>
<form method="post">
<input name="str" type="text">
<input value="submit" type="submit">
</form>


반응형

댓글()

파일 첨부하여 메일 보내기

프로그래밍/PHP|2015. 6. 23. 15:25
반응형

<?php
        /*
        ** 함수 : makeAttachment
        ** 입력 : ARRAY attachment
        ** 출력 : STRING
        ** 설명 : 하나의 첨부에 대한 헤더들과 데이터를 돌려준다.
        ** 입력 배열에는 name, type, content 원소들이
        ** 있어야 한다. 첨부파일은 무조건 base64로 인코딩한다.
        */
        function makeAttachment($attachment)
        {
                $headers = "Content-Type: " . $attachment["type"];
                
                if($attachment["name"] != "")
                {
                        $headers .= "; name=\"{$attachment["name"]}\"";
                }       
                
                $headers .= "\r\n";

                $headers .= "Content-Transfer-Encoding : base64\r\n";

                $headers .= "\r\n";
                $headers .= chunk_split(base64_encode($attachment["content"]));
                $headers .= "\r\n";

                return($headers);
        }
        
        /*
        ** 함수 : mailAttachment
        ** 입력 : STRING to, STRING from, STRING subject, ARRAY attachment
        ** 출력 : 없음
        ** 설명 : 파일이 첨부된 메세지를 전송, attachment 는 2차원 배열이다
        ** 각 원소는 type, name, content 를 원소로 하는 연관 배열이다.
        */
        function mailAttachment($to, $from, $subject, $attachment)
        {
                // From : 헤더를 추가
                $headers = "FROM : $from\r\n";

                // MIME 버전 1.0을 지정
                $headers .= "MIME-Version: 1.0\r\n";

                // 첨부파일이 여러 개인 경우 특별한 처리가 필요하다.
                if(count($attachment) > 1)
                {
                        //첨부파일이 여러 개인 경우 특별한 처리가 필요하다.
                        $boundary .= uniqid("COREPHP");

                        $headers .= "Content-Type: multipart/mixed";
                        $headers .= "; boundary = $boundary\r\n\r\n";
                        $headers .= "This is a MIME encoded message. \r\n\r\n";
                        $headers .= "--$boundary";

                        foreach($attachment as $a)
                        {
                                $headers .= "\r\n";
                                $headers .= makeAttachment($a);
                                $headers .= "--$boundary";
                        }
                        $headers .= "--\r\n";
                }
                else
                {
                        $headers .= makeAttachment($attachment[0]);
                }
                // 메시지를 보낸다.
                mail($to, $subject, "", $headers);
        }
        // 메시지 본문과 형식을 지정
       $bodyText = "한글 is best text.";

       $bodyText = iconv('utf-8', 'euc-kr', $bodyText);   // 문자셋 설정하여 보내면 한글이 본문 내용이 안깨집니다.

       $attach[] = array("content"=>"$bodyText","type"=>"text/plain");  // 마지막을 text/html 로 바꾸면 본문에 html 적용 가능

 

        // 첨부목록에 스크립트를 추가
        //******************************************
        //         mail 인자값        *************
        //*****************************************     
        $fileName = "/tmp/sales.xls";
        $mailTo = "받을놈 메일주소";
        $mailFrom = "보낸놈 메일주소";
        $mailTitle = "메일제목 ";

        $mailTitle = "=?UTF-8?B?".base64_encode($mailTitle)."?=";  // 문자셋 설정하여 보내면 한글이 안깨집니다. (깨진 코드 아님)

        $fp = fopen($fileName, "r");
        $attach[] = array("name"=>basename($fileName),
                        "content"=>fread($fp, filesize($fileName)),
                        "type"=>"application/octet-stream");
        fclose($fp);

        // send message maru
        mailAttachment($mailTo,$mailFrom,$mailTitle,$attach)
?>


[출처] http://blog.naver.com/marufloor/33446917

반응형

댓글()

특정 날짜로 요일 알아내기

프로그래밍/PHP|2015. 6. 11. 16:07
반응형


$wday = date("w", mktime("0","0","0","6","11","2015")); // 0:일요일, ~ 6:토요일

echo $wday;


결과 : 4

2015년 6월 11일은 '4' 입니다.  (목요일)

반응형

댓글()

php 에서 mysql 접근시 캐릭터셋 지정하기

프로그래밍/PHP|2015. 5. 14. 11:13
반응형

mysql_set_charset("utf8");

한글

 

 <meta charset="utf-8">

 

 <?

 $connect = mysql_connect('127.0.0.1','root','apmsetup');

 mysql_select_db('aaa',$connect);

 mysql_set_charset('utf8');

 echo mysql_client_encoding(); //mysql 인코딩 확인

 echo "<br/>";

 

 $sql = "INSERT INTO biz_card (name,company,tel,hp,address) 

   VALUES ('홍길동','부산it','0510000','0101111','부산')";

 

 $result = mysql_query($sql);

 

 if($result){

  echo "삽입완료";

 }else{

  echo "삽입실패";

 }

 

 mysql_close($connect); 

?>



[출처] [PHP MySql] ★아주중요★ mysql_set_charset("utf8"); 한글|작성자 칼스

반응형

'프로그래밍 > PHP' 카테고리의 다른 글

파일 첨부하여 메일 보내기  (0) 2015.06.23
특정 날짜로 요일 알아내기  (0) 2015.06.11
세션 생성 및 종료  (0) 2015.05.12
초간단 파일 업로드 소스  (0) 2015.05.08
[jQuery] 다양한 효과 URL  (0) 2015.05.04

댓글()

세션 생성 및 종료

프로그래밍/PHP|2015. 5. 12. 16:50
반응형

[세션 생성]


session_start();    // 세션 시작할때.. 또는 기존 세션 이용할때 꼭 필요합니다. 세션이 필요한 모든 페이지에 삽입해야 합니다.

(참고로  php.ini 에서 session.auto_start = 1 옵션을 주면 모든 웹페이지에 적용되므로 해당 행은 필요가 없어집니다)


아이디와 패스워드 비교해서 일치하면 아래와 같이 생성해주면 됩니다.


$_SESSION['id']="user";           // 생성

$_SESSION['name']="SYSDOCU";     // 생성

 


[세션 확인]


echo "$HTTP_SESSION_VARS[id]";

echo "<br>";

echo "$HTTP_SESSION_VARS[name]";



[세션 활용]


if 문을 사용하여 세션 생성(로그인) 전과 후의 화면을 다르게 할 수 있습니다.


if ($HTTP_SESSION_VARS) {

echo "로그인 성공!!";

}

else {

echo "로그인 실패!!";

}



[세션 삭제]


session_start();

unset($_SESSION['id']);

unset($_SESSION['name']);

session_destroy();


반응형

댓글()

초간단 파일 업로드 소스

프로그래밍/PHP|2015. 5. 8. 16:44
반응형

upload.php


<?

if($myFile) {

  $uploadfile = $_FILES['myFile'] ['name'];

  if(move_uploaded_file($_FILES['myFile']['tmp_name'],$uploadfile)){

  }

  else {

  echo "Upload failed!!<br><br>";

  }

}

?>


<br><br>


<form method="post" enctype="multipart/form-data">

  <input type="file" name="myFile">

  <input type="submit" value="UPLOAD">

</form> 


upload.php 파일이 있는곳으로 파일 업로드가 되므로,

해당 디렉토리는 웹서버 구동 사용자에 쓰기권한을 주어야 합니다. (chown 또는 chmod)


반응형

'프로그래밍 > PHP' 카테고리의 다른 글

php 에서 mysql 접근시 캐릭터셋 지정하기  (0) 2015.05.14
세션 생성 및 종료  (0) 2015.05.12
[jQuery] 다양한 효과 URL  (0) 2015.05.04
배열 출력하기 (foreach)  (0) 2015.01.27
URL 의 한글 인자값 넘기기  (0) 2015.01.27

댓글()

[jQuery] 다양한 효과 URL

프로그래밍/PHP|2015. 5. 4. 15:18
반응형

http://stove99.tistory.com/

반응형

'프로그래밍 > PHP' 카테고리의 다른 글

세션 생성 및 종료  (0) 2015.05.12
초간단 파일 업로드 소스  (0) 2015.05.08
배열 출력하기 (foreach)  (0) 2015.01.27
URL 의 한글 인자값 넘기기  (0) 2015.01.27
[jquery] FAQ와 같은 슬라이드 기능  (0) 2015.01.27

댓글()