PHP cURL POST 전송을 위한 함수를 생성합니다.

function post($url, $fields)

{

    $post_field_string = http_build_query($fields, '', '&');

    $ch = curl_init();                                                            // curl 초기화

    curl_setopt($ch, CURLOPT_URL, $url);                                 // url 지정하기

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);              // 요청결과를 문자열로 반환

    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);               // connection timeout : 10초

    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);                 // 원격 서버의 인증서가 유효한지 검사 여부

    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_field_string);      // POST DATA

    curl_setopt($ch, CURLOPT_POST, true);                               // POST 전송 여부

    $response = curl_exec($ch);

    curl_close ($ch);

    return $response;

}

 

 

POST 전송을 위한 데이터 (예제)

$DATA = array(

    'MY_EMAIL'=>$MY_EMAIL, 

    'MY_KEY'=>$MY_KEY, 

    'MY_NAME'=>$MY_NAME

);

 

 

POST 전송을 위한 함수 호출

$result = post('https://www.도메인.com/submit.php', $DATA);

 

 

전송 받은 데이터 처리를 위한 submit.php 

$MY_EMAIL = trim($_POST['MY_EMAIL']);   

$MY_KEY = trim($_POST['MY_KEY']);   

$MY_NAME = trim($_POST['MY_NAME']);

...

echo 'success';                                      // 처리 성공시 리턴 값

 

 

post 함수에서 리턴값 확인

$result 변수에는 전송 및 처리 성공시 'success' 값이 리턴됩니다.

echo $result;   ->   success 출력

 

 

 

 

 

 

 

https://www.kiwisoft.kr 

 

키위소프트

 

www.kiwisoft.kr

 

비콘을 아시나요? 아주 작고 동그란 물체인데 근거리 무선 통신의 일종으로 스마트폰 사용자가 비콘의 범위 안으로 지나가면 스마트폰으로 정보를 자동으로 전달 할 수 있는 기기입니다. 블루투스를 기반으로 하고요. 주로 매장에 입장하거나 근처에 지나가는 사람들을 대상으로 모바일 광고 서비스를 하는 용도로 많이 사용합니다. 

코로나19 바이러스나 각종 재난 알림 등에 실시간으로 유용하게 사용 할 수 있을거라 보는데요, 감염지역 통과 시 자동 알림 등 다양한 용도로 사용 할 수 있을 것 같습니다.

이태원 클럽 사태 같은 경우에도 감염 위험 지역을 통과하는 시민들에게 실시간 자동으로 알림을 전달하거나 경고하는 등의 예방 활동도 같이 할 수 있다고 봅니다.

비콘은 가격도 비싸지 않고 설치도 간편하고요.

우리나라 IT 기술이 많이 발전했지만 기존의 기술들을 활용한 더 많은 재난 대비 시스템들이 나왔으면 좋겠습니다.

 

Android Studio : 타이틀바(액션바) 없애기



styles.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<resources>
 
    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorDarkBlue</item>
        <item name="colorAccent">@color/colorAccent</item>
        <!-- No Title Bar-->
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
 
    </style>
 
</resources>



<!-- No Title Bar-->
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>


위 코드 적용






안드로이드 스튜디오 - 데이터 전달 없이 현재 액티비티에서 새로운 액티비티를 띄울 경우 소스 코드



* MainActivity에 버튼을 추가하여 onClick 이벤트를 사용 할 경우



public void onButtonClicked(View v) {

        Intent intent = new Intent(this, NewActivity.class);

        startActivity(intent);

}



NewActivity : 새로운 액티비티 이름


안드로이드 스튜디오를 실행하고 새로운 프로젝트를 만들게 되면 아래의 오류가 생길 경우가 있습니다.


Failed to load AppCompat ActionBar with unknown error.



[해결방안]


안드로이드 스튜디오 3.1.3 버전 기준입니다.




새 프로젝트를 생성하면 아래 처럼 오류 메시지가 뜹니다.




오류 메시지가 뜨면서 디자인 영역에는 각종 뷰들이 보이지 않습니다.





해결책은 아래와 같습니다. (아래 이미지를 함께 참조하세요.)


- Gradle Scripts에서 build.gradle (Module: app) 파일을 더블클릭하여 열어줍니다.

- 23번 라인 implementation 'com.android.support:appcompat-v7:28.0.0-alpha3'에서 alpha3alpha1으로 수정합니다.




- 수정 후 우측 상단 Sync now를 클릭합니다.




- Sync가 진행된 후 정상적으로 뷰들이 표시됩니다.




위의 오류는 안드로이드 스튜디오 버그로 2018년 6월 14일 안드로이드 스튜디오 3.1.3 버전 기준입니다.

안드로이드 스튜디오 업데이트 등으로 인하여 향후 버전이 높아질 경우 달라 질 수 있습니다.







C# 기본 예제 코드


1. VisualStudio Community 2017 실행

2. 파일 > 새로 만들기 > 프로젝트 > Visual C# > 콘솔 앱


using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;


namespace HelloWorld

{

    class HelloWorld

    {

        static void Main(string[] args)

        {

            Console.WriteLine ("Hello, World!");

        }

    }

}


디버그 > 디버깅 시작(F5)
명령 프롬프트 창 실행(윈도우+R키 > cmd 입력)
해당 프로젝트내 bin > Debug 폴더로 이동 
생성된 .exe 응용프로그램 파일 실행


Hello, World! 출력


using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;


namespace HelloWorld

{

    class HelloWorld

    {

        static void Main(string[] args)

        {

            Console.WriteLine ("Hello, {0}!", args[0]);

        }

    }

}


디버그 > 디버깅 시작(F5)
명령 프롬프트 창 실행(윈도우+R키 > cmd 입력)
해당 프로젝트내 bin > Debug 폴더로 이동 
생성된 .exe 응용프로그램 파일 실행


HelloWorld 뒤에 매개변수 입력
Hello, C# 출력








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

Visual Studio Community 2017 다운로드  (0) 2018.04.14
Microsoft Visualstudio community 2015 다운로드  (1) 2017.01.15

Visual Studio Community 2017 다운로드


vs_community_2017.exe


첨부파일 다운로드 또는 Microsoft 다운로드 URL : https://www.visualstudio.com/ko/downloads/



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

C# 기본 예제 코드  (0) 2018.04.14
Microsoft Visualstudio community 2015 다운로드  (1) 2017.01.15

<div> 태그 width:100%일 때 border 값 있을 경우 100% 초과해서 레이아웃이 깨지는 경우


div 태그에서 width:100%인 경우에 border값을 주게 되면 width가 100%를 넘어서면서 레이아웃이 깨져 문제가 생깁니다. 

border 값을 주더라도 기존 100% 너비를 유지하려면 아래와 같이 CSS를 적용하시면 됩니다.


HTML

<div id="example1"></div>


CSS

#example1 {

-webkit-box-sizing: border-box;

-moz-box-sizing: border-box;

box-sizing: border-box;

}




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

버튼(button) 디자인 CSS 예제  (0) 2016.06.04

Microsoft Visualstudio community 2015 설치파일 다운로드

개인사용자는 무료로 사용할 수 있습니다.


vs_community_KOR__1904219915.1484448939.exe


첨부파일을 다운로드 하셔도 되고 아래 웹사이트에서 다운로드 받을 수 있습니다.


다운로드 홈페이지 : https://www.visualstudio.com/ko/vs/



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

C# 기본 예제 코드  (0) 2018.04.14
Visual Studio Community 2017 다운로드  (0) 2018.04.14



버튼(button) 디자인 CSS 예제


<style type="text/css">

.button1 

{

background: #5BB6FF;

border: none;

border-radius: 3px;

color: #ffffff;

display: block;

width: 100px;

height: 30px;

font: 13px "Gulim", "Dotum", Georgia, "Times New Roman", Times, serif;

margin: 0 0 0 0; 

padding: 1px 1px 1px 1px;

text-shadow: 0px 0px 0px 0px #e7e7e7; 

}

</STYLE>


<input type="button" value="버튼" class="button1">







HTML <div>태그를 웹브라우저 화면 중간에 정렬하는 간단한 소스입니다.


1. CSS 지정


#wrap{ 

margin:0 auto;

}


2. DIV 태그 


<div id="wrap" style="width:1000px;">내용</div>



margin:0 auto;를 사용하여 자동으로 화면 가운데에 위치하도록 지정할 수 있습니다.

주의할 점은 <div> 태그의 가로폭을 반드시 지정해주어야 합니다. 가로폭은 CSS또는 div태그에서 직접 지정하시면 됩니다.



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

<div> 태그 height 100% 적용하기  (0) 2016.01.19
[HTML] 모바일웹 명함 기본 HTML 소스  (0) 2016.01.09


VB.NET 에서 WinHttp GET 방식으로 특정 웹 URL 으로 값을 전송하는 간단한 소스코드입니다.


' 웹 전송

Dim mytext As String

Dim WinHttp As Object

WinHttp = CreateObject("Winhttp.WinHttpRequest.5.1")

WinHttp.Open("GET", "http://www.도메인.co.kr/index.php?text=" & mytext)

WinHttp.Send()


text라는 변수병에 mytext 값을 담아 GET 방식으로 넘겨줍니다.

index.php 에서 $mytext = $_GET['text']; 으로 받아서 사용하면 됩니다.





<div> 태그 높이를 100% 적용 (height="100%")하는 예제입니다. 100%로 적용하면 웹브라우저 화면 세로로 높이가 100%로 적용됩니다.


index.html 


<!DOCTYPE html>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<link rel="stylesheet" href="./style.css" />

</head>

<body>

<div id="container_div"></div>

</body>

</html>



style.css


HTML { 

height: 100%;

}

BODY { 

height: 100%;

}


#container_div 

height:100%

}


설명: 

style.css 파일에서 div 태그의 id 높이를 100%로 지정합니다. 

HTML과 BODY 태그의 높이도 100%로 함께 지정해야 적용됩니다.







PHP에서 회원 로그인 기능을 구현할 때 비밀번호 암호화 처리 과정을 살펴봅니다.

bcrypt를 이용하여 비밀번호를 암호화합니다. PHP 5.3.7 버전 이상에서 사용할 수 있습니다. PHP 5.5 버전 이상에서는 내장함수로 포함하고 있습니다. 추천하는 암호화 기법입니다.



1. 비밀번호를 암호화 하여 회원 DB Table에 기록하는 방법입니다.


<?

$id = "test";

$password = "1234567";  // 회원 가입시 입력받은 회원 비밀번호 


include "./password.php"; // 본 글 아래 첨부파일을 다운 받아 사용하세요. 

$hash = password_hash($password, PASSWORD_DEFAULT);  // 비밀번호 암호화 


// 회원가입시에는 비밀번호를 위의 암호화 과정을 거쳐 $hash 변수 값을 회원 DB Table에 저장합니다. 

$sql = "INSERT INTO member (num,id,password) VALUES ('$num', '$id', '$hash')"; 

if ($conn->query($sql) == TRUE) {

    echo "success";

} else {

    echo "Error";

}

$conn->close(); 

?>



2. 회원 로그인시 비밀번호를 비교하여 일치하면 로그인 세션을 생성합니다.


<?

$password = "1234567"; // 회원 로그인시 입력받은 비밀번호


// 회원 DB에서 회원 정보를 가져옵니다.

$result = mysql_query("SELECT * FROM  member WHERE id = '$id' LIMIT 1"); 

$array = mysql_fetch_array($result);

$hash_password  = $array['password'];


include "./password.php"; // 본 글 아래 첨부파일을 다운 받아 사용하세요. 

if (password_verify($password, $hash_password)) { // 비밀번호가 일치하는지 비교합니다. 

echo "비밀번호 일치 !!!";  // 비밀번호가 일치할 경우 로그인 세션을 생성합니다.

} else { 

echo "비밀번호 불일치 !!!";

}

?>



* 비밀번호 암호화 방법 중 오래전 부터 사용하던 md5() 암호화는 보안에 취약하기 때문에 사용하지 마세요.


password.php 파일을 아래 첨부합니다. 다운받아서 사용하시면 됩니다.


password.zip






모바일웹 명함을 제작할 때 사용할 수 있는 가장 기본적인 HTML 예제 소스입니다.

아래 소스코드에서는 <a> 태그로 전화걸기, SMS보내기 기능을 사용할 수 있습니다.


<html>

<head>

<title>ooo 모바일 명함</title>

<style type="text/css">

img{width:100%;}

</style>

</head>

<body>

<div><img src="./이미지파일명1.png" border="0"></div>

<div><img src="./이미지파일명2.png" border="0"></div>

<div><a href="tel:010-7777-8888"><img src="./전화기이미지.png" border="0"></a></div>

<div><a href="sms:010-7777-8888"><img src="./sms이미지.png" border="0"></a></div>

</body>

</html>


홈페이지 링크, 지도 서비스 api 연동, 카카오톡 연동 등 모바일웹 명함에서는 다양한 기능을 함께 사용할 수 있습니다.


위지위그(WYSIWYG: What You See Is What You Get, "보는 대로 얻는다")


위지윅 에디터가 필요해서 어떤걸 사용해볼까 고민하다 다음 위지윅 에디터를 사용해보려고 며칠 동안 틈틈히 소스를 고쳐보고 해서 1차적으로 게시판에 적용해서 테스트 해볼 수 있을 정도로 수정해봤습니다. 인터넷 검색 및 나름 고쳐보면서 테스트도 함께 진행했습니다.

게시판에 적용해서 정식 테스트는 아직 하지 않았지만 조만간 해 볼 생각입니다. 아직 어떤 문제가 있는지는 모두 파악하지 않았습니다.


다음 위지윅 에디터는 아래 주소에서 설치파일을 다운로드 받을 수 있습니다.

https://github.com/kakao/DaumEditor


다음 위지윅 에디터는 다른 위지윅 에디터에 비해 설치법이 좀 어렵(?)습니다. 소스코드를 내 입맛에 맞도록 고치는게 좀 더 까다롭다는거죠. 

소스코드 수정은 1차 테스트 정도라 웹페이지상에서 보이는 불필요한 부분들을 제외하는 수정과 사진&파일 업로드 기능 적용 등 몇 가지 정도입니다.

첨부된 소스파일을 실제 게시판 제작시 적용해보셔도 되고, 추가로 소스를 수정해보셔도 됩니다. 자유롭게 사용 또는 수정해보세요.

테스트 정도의 수정이지만 가급적 사용하기 쉽게 수정된 소스입니다. 소스 코드별로 수정된 부분에 대해 자세히 설명을 드리기는 힘듭니다. 실제로 보시면 크게 어렵지는 않을 듯 합니다.



주요 수정 내용 : 

- 사진(이미지) 파일 업로드 적용(글 본문에 이미지 적용)

- 첨부파일 업로드 적용

- 글등록 버튼 클릭시 FORM으로 넘기는 변수값 확인

- 글제목 text 입력박스 추가

- 글수정 모드 페이지 추가

- 기타 화면에서 불필요한 부분 삭제 등



첨부파일 안내 : 

글 마지막에 위치한 첨부파일(editor.zip)을 다운받아 압축을 풀면 아래의 폴더와 파일들이 존재합니다. editor폴더 안에 위치하도록 압축을 풀어주세요.


폴더 설명

css : 다음 에디터에 기본으로 포함된 css 폴더입니다.

images 다음 에디터에 기본으로 포함된 image 폴더입니다.

js 다음 에디터에 기본으로 포함된 자바스크립트 폴더입니다.

pages다음 에디터에 기본으로 포함된 폴더입니다. 이미지파일 첨부 페이지(image.html), 파일업로드 페이지(file.html) 등이 포함되어 있습니다.

upload : 이미지파일 업로드나 첨부파일 업로드시 실제 파일이 서버상에서 저장되는 폴더입니다. 수정 과정에서 임의로 생성한 폴더입니다.


주요 웹페이지 기능 설명

editor.html : 실제 게시판 글쓰기 페이지에 적용될 소스가 있는 페이지입니다. ftp로 서버 최상위 경로에 업로드 하였을 경우 테스트시 http://www.도메인.com/editor/editor.html 경로로 접속하여 테스트 하시면 됩니다.

editor_modify.html : 게시판 글수정 모드 테스트 페이지입니다. 글수정시 textarea에 등록된 글 내용을 불러와야 할 경우 이 페이지의 소스코드를 수정하여 사용하시면 됩니다. 테스트시 http://www.도메인.com/editor/editor_modify.html 경로로 접속하여 테스트 하시면 됩니다. 임의로 생성한 웹페이지입니다.

file_upload.php : /editor/pages/trex/file.html 페이지에서 파일을 첨부하여 form submit시 이 페이지에서 실제 서버로 파일을 업로드 시켜줍니다. 서버에 업로드시 파일명 자동 변경 및 PHP파일 관련 변수값들을 받을 수 있습니다. 글쓰기 본문에 첨부된 파일명이 보여지게 적용시켜줍니다. 임의로 생성한 PHP파일입니다.

image_upload.php /editor/pages/trex/image.html 페이지에서 이미지 파일을 첨부하여 form submit시 이 페이지에서 실제 서버로 이미지 파일을 업로드 시켜줍니다. 서버에 업로드시 파일명 자동 변경 및 PHP파일 관련 변수값들을 받을 수 있습니다. 글쓰기 본문에 첨부된 이미지 파일이 보여지게 적용시켜줍니다. 위지윅 게시판에서 가장 많이 쓰이는 기능이죠. 임의로 생성한 PHP파일입니다.

post.php : editor.html에서 글제목과 글내용 입력 후 form submit시 글제목과 글내용이 제대로 POST방식으로 전달되었는지 확인할 수 있습니다. DB에 저장을 할 때 이 페이지에서 DB 저장 소스 코드를 추가하면 됩니다. 임의로 생성한 PHP파일입니다.



지금까지 내용대로 수정된 다음 위지윅 에디터 설치파일은 아래 첨부된 파일을 다운로드 해주세요.


editor.zip



쉽게 설치할 수 있게 하기 위해 1차적으로 수정한 파일이라 완벽하지는 않습니다. 추후에 실제 게시판에 적용시켜보고 DB에 저장도 해보면서 2차 수정을 할 계획입니다.

위지윅 게시판 설치파일이 필요한 분들이나 다음 위지윅 에디터 설치에 어려움을 느끼는 분들에게 아주 조금이나마 도움이 되셨길 바랍니다. ^^




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

비콘을 활용한 재난 알림 기능  (0) 2020.05.13



PHP 파일업로드 기능 기본 소스 코드 및 변수 예제입니다.

홈페이지 제작시 수정하여 사용하시면 됩니다.


특징: 

1. 업로드 되는 파일명을 자동 변경하여 한글파일명, 특수기호가 들어간 파일명 등을 DB에 저장 또는 파일 다운로드 구현시 오류가 나지 않도록 해줍니다.

2. 업로드 전의 실제 파일명을 별도 변수에 담아 DB에 저장할 수 있어 파일 다운로드 구현시 실제 파일명으로 다운로드 받을 수 있습니다.

3. 파일 확장자를 체크하여 특정 파일의 업로드 금지를 지정할 수 있습니다.



파일업로드 HTML 코드


예제 파일명: file_upload.html (파일첨부를 할 수 있는 웹페이지입니다.)

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

</head>

<body>

<form method="post" enctype="multipart/form-data" action="./upload.php">

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

<input type="submit" value="업로드">

</form>

</body>

</html>


예제 파일명: upload.php (첨부된 파일을 파일 변수에 지정하고 서버로 업로드합니다.)

<?

$file_name = $_FILES['upload_file']['name'];                // 업로드한 파일명

$file_tmp_name = $_FILES['upload_file']['tmp_name'];   // 임시 디렉토리에 저장된 파일명

$file_size = $_FILES['upload_file']['size'];                 // 업로드한 파일의 크기

$mimeType = $_FILES['upload_file']['type'];                 // 업로드한 파일의 MIME Type


// 첨부 파일이 저장될 서버 디렉토리 지정(원하는 경로에 맞게 수정하세요)

$save_dir = './upload/file/';


// 업로드 파일 확장자 검사 (필요시 확장자 추가)

   if($mimeType=="html" || 

   $mimeType=="htm" || 

   $mimeType=="php" || 

   $mimeType=="php3" || 

   $mimeType=="inc" || 

   $mimeType=="pl" || 

   $mimeType=="cgi" || 

   $mimeType=="txt" || 

   $mimeType=="TXT" || 

   $mimeType=="asp" || 

   $mimeType=="jsp" || 

   $mimeType=="phtml" || 

   $mimeType=="js" || 

   $mimeType=="") { 

echo("<script> 

alert('업로드를 할 수 없는 파일형식입니다.'); 

document.location.href = './file_upload.html';    

</script>"); 

exit;

   } 

   

   // 파일명 변경 (업로드되는 파일명을 별도로 생성하고 원래 파일명을 별도의 변수에 지정하여 DB에 기록할 수 있습니다.)

$real_name = $file_name;     // 원래 파일명(업로드 하기 전 실제 파일명) 

$arr = explode(".", $real_name); // 원래 파일의 확장자명을 가져와서 그대로 적용 $file_exe

$arr1 = $arr[0];

$arr2 = $arr[1];

$arr3 = $arr[2];

$arr4 = $arr[3];

if($arr4) { 

$file_exe = $arr4;

} else if($arr3 && !$arr4) { 

$file_exe = $arr3;

} else if($arr2 && !$arr3) { 

$file_exe = $arr2;

}

$file_time = time(); 

$file_Name = "file_".$file_time.".".$file_exe; // 실제 업로드 될 파일명 생성 (본인이 원하는 파일명 지정 가능)  

$change_file_name = $file_Name;  // 변경된 파일명을 변수에 지정 

$real_name = addslashes($real_name); // 업로드 되는 원래 파일명(업로드 하기 전 실제 파일명

$real_size = $file_size;                         // 업로드 되는 파일 크기 (byte)


 

//파일을 저장할 디렉토리 및 파일명 전체 경로

   $dest_url = $save_dir . $change_file_name;

 

//파일을 지정한 디렉토리에 업로드

   if(!move_uploaded_file($file_tmp_name, $dest_url))

   {

      die("파일을 지정한 디렉토리에 업로드하는데 실패했습니다.");

   }



// DB에 기록할 파일 변수 (DB에 저장이 필요한 경우 아래 변수명을 기록하시면 됩니다.)

/*

$change_file_name : 실제 서버에 업로드 된 파일명. 예: file_145736478766.gif

$real_name : 원래 파일명. 예: 풍경사진.gif 

$real_size : 파일 크기(byte)

*/

?>


PHP 파일업로드 기능의 가장 기본적인 소스 코드입니다.

홈페이지 제작시 적절히 수정하여 사용하시면 됩니다.







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

PHP cURL POST 전송 사용법 예제  (0) 2020.11.26
[PHP] 로그인 비밀번호 암호화 처리  (8) 2016.01.11

+ Recent posts