<?php $_SERVER['REMOTE_ADDR']; // 접속한 사용자의 ip 주소 불러오기 $_SERVER['SERVER_PORT']; // 사용되고 있는 포트 불러오기 $_SERVER['HTTP_USER_AGENT']; // 접속자의 사용자 환경값 가져오기 ?>


'PHP' 카테고리의 다른 글

php에서 MySQL DB 목록 가져오기  (0) 2019.09.12
php 문자열 함수  (0) 2019.09.12
php MySQL DB가져오기  (0) 2019.09.12
php MySQL 연결  (0) 2019.09.12
php (include,required)_(once)  (0) 2019.09.12

php에서 테이블 목록을 조회하는 방법은 'SHOW TABLES'이다.

처음에 테이블 내의 목록은 가져오겠는데, DB의 목록은 어떻게 가져올까 생각을 하다가 SQL을 직접 넣어 봤더니 이렇게 나왔다.

-> USE 'DB명'; Database changed -> SHOW TABLES; +------------------------+ | Tables_in_'DB명' | +------------------------+ | table1 | | table2 | +------------------------+

행 명이 Tables_in_'DB명' 이었던 것이다. 그러므로 php에서 이 행명으로 테이블 명들을 출력할 수 있게 된다.

foreach($connect->query("SHOW TABLES") as database_row){ echo "<h2>".database_row["Tables_in_'DB명'"]."</h2>"; echo "<br>"; }


'PHP' 카테고리의 다른 글

PHP의 접속자의 ip, port, 접속 환경 조사  (0) 2019.09.12
php 문자열 함수  (0) 2019.09.12
php MySQL DB가져오기  (0) 2019.09.12
php MySQL 연결  (0) 2019.09.12
php (include,required)_(once)  (0) 2019.09.12

substr()

- 문자열을 자르는 함수

- substr(문자열, 시작위치(0부터 시작), 자를길이)

$text = "대한민국 만세"; $new_text = substr(text,5,2); echo $new_text; # 만세

strlen()

- 문자열 길이를 반환하는 함수(아스키 값으로 계산을 하는 거 같다. 한글은 정확하지 않다.)

$text = "abcde"; strlen(text); # 5


'PHP' 카테고리의 다른 글

PHP의 접속자의 ip, port, 접속 환경 조사  (0) 2019.09.12
php에서 MySQL DB 목록 가져오기  (0) 2019.09.12
php MySQL DB가져오기  (0) 2019.09.12
php MySQL 연결  (0) 2019.09.12
php (include,required)_(once)  (0) 2019.09.12

MySQL에 DB를 가져오는 방법을 알아보려고 한다.

먼저 phpmyadmin으로 db와 table을 작성한 후 시작되겠다.

필자는 'attendancedb' 라는 DataBase에 'db'라는 table을 만들었다.

'attendancedb' DataBase

'db' table

이름

전화번호

성별

출석

홍길동

010-1111-2222

O

김익녀

010-3333-4444

O

돈절래

010-5555-6666

X

여기서 돈절래의 출석여부를 확인 하고 싶을 때 쓰는 코드이다.

물론 db를 연결한 상태에서 진행되는 코드이다.

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> 이름 : <input type="text" name="name"><!-- 돈절래 삽입 --> <br> <input type="submit" value="전송"> <br> </form> <?php if ($_SERVER["REQUEST_METHOD"] == "POST") { $name = $_POST["name"]; } foreach($connect->query('SELECT * FROM db') as $row){ if($row["이름"] == $name){ echo " | "; echo $row["이름"]." | "; echo $row["출석"]." | "; break; } } ?>

위와 같이 진행되면 값은 아래와 같다.

| 돈절래 | O |


'PHP' 카테고리의 다른 글

php에서 MySQL DB 목록 가져오기  (0) 2019.09.12
php 문자열 함수  (0) 2019.09.12
php MySQL 연결  (0) 2019.09.12
php (include,required)_(once)  (0) 2019.09.12
windows10 환경 APM설치 및 오류 수정  (0) 2019.09.12

################################################################################

autoset10 은 php.ini 수정 필요없이 DB에 바로 연결 됩니다.

################################################################################

DB를 연결해 볼려고 한다.

먼저

php.ini을 설정하여야 한다.

apm을 수동으로 설치하였다면 받은 php파일\php.ini ,

autoset으로 설치하였다면 AutoSet\server\conf\php.ini 이 있을 것이다.

php.ini에서

;extension=php_pdo_firebird.dll

;extension=php_pdo_mysql.dll

;extension=php_pdo_oci.dll

;extension=php_pdo_odbc.dll

;extension=php_pdo_pgsql.dll

;extension=php_pdo_sqlite.dll

이부분들에 ' ; ' 세미콜론을 떼어 주자( 주석제거 )

이 작업들을 해주지 않으면 pdo driver를 찾지 못해 연결 에러가 난다.

DBConnectionTest

Fatal error: Uncaught PDOException: SQLSTATE[HY000] [1049] Unknown database 'attendancedb' in C:\AutoSet10\public_html\DB.php:13 Stack trace: #0 C:\AutoSet10\public_html\DB.php(13): PDO->__construct('mysql:host=loca...', 'root', 'autoset') #1 C:\AutoSet10\public_html\DB.php(26): DBConnection->getConnect() #2 {main} thrown in C:\AutoSet10\public_html\DB.php on line 13

만들어져 있는 DB의 table에 연결할려고 하는데 MySQL의 사용법을 조금 알고 있으면 편할 듯 하다.

<?php class DBConnection{ function getConnect(){ $mysql_hostname = 'localhost'; $mysql_username = 'root'; $mysql_password = 'autoset'; $mysql_database = 'attendancedb'; $mysql_port = '3306'; $mysql_charset = 'utf8'; // dbconnect $dsn = sprintf('mysql:host=%s;dbname=%s;charset=%s',$mysql_hostname, $mysql_database, $mysql_charset); $connect = new PDO($dsn, $mysql_username, $mysql_password); if(!$connect){ echo '[연결실패] : '.mysql_error().''; die('MySQL 서버에 연결할 수 없습니다.'); } return $connect; } } echo "DBConnectionTest"; $dbConnection = new DBConnection(); $connect = $dbConnection->getConnect(); ?>

아래는 DATABASE 구문 정리이다.


'PHP' 카테고리의 다른 글

php 문자열 함수  (0) 2019.09.12
php MySQL DB가져오기  (0) 2019.09.12
php (include,required)_(once)  (0) 2019.09.12
windows10 환경 APM설치 및 오류 수정  (0) 2019.09.12
php MySQL다루기  (0) 2019.09.12

include 와 required 의 차이는 오류가 없을 때의 결과에서는 차이가 없다.

둘 다 외부의 php 파일을 읽어 들어온다는 점에서는 같은 역할을 한다.

그렇다면 어떤 차이점이 있는 지 한번 알아보았다.

- include는 파일을 인클루드한다.

만약 파일이 없으면 경고(E_WARNING)가 발생하지만 스크립트의 작동은 멈추지 않는다.

- require는 include 처럼 파일을 인클루드하지만, 만약 파일이 없으면 에러(E_ERROR)가 발생하고 스크립트의 작동이 멈춘다.

- include_once는 스크립트의 실행 도중 같은 파일이 인클루드 된 적이 없는 경우에만 파일을 인클루드한다.

스크립트의 실행 도중 같은 파일이 인클루드 된 적이 있는 경우 무시.

만약 파일이 없으면 경고(E_WARNING)가 발생하지만 스크립트의 작동은 멈추지 않는다.

include('file.php'); // 인클루드 include('file.php'); // 인클루드 include_once('file.php'); // 다시 인클루드 하지 않고 무시

- require_once는 include_once 처럼 같은 파일이 인클루드 된 적이 없는 경우에만 파일을 인클루드하지만, 만약 파일이 없으면 에러(E_ERROR)가 발생하고 스크립트의 작동이 멈춘다.

require('file.php'); // 인클루드 require('file.php'); // 인클루드 require_once('file.php'); // 다시 인클루드 하지 않고 에러


'PHP' 카테고리의 다른 글

php MySQL DB가져오기  (0) 2019.09.12
php MySQL 연결  (0) 2019.09.12
windows10 환경 APM설치 및 오류 수정  (0) 2019.09.12
php MySQL다루기  (0) 2019.09.12
php 세션  (0) 2019.09.12

필자는 가상환경으로 우분투를 돌리고 있는 상태이다.

고로 느리다.

정말 느리다.

화가 날 정도로 느리다.

그래서 windows 환경에서 코드를 작성하고 우분투로 넘겨주기로 하여 windows에 apm을 설치하려고 한다.

아래는 apm을 설치하는데 참고 하기 좋은 사이트이다.

https://yongku.tistory.com/entry/%EC%9C%88%EB%8F%84%EC%9A%B0-10Windows-10-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C%EC%97%90%EC%84%9C-APMApache-PHP-MySQL-%EC%84%A4%EC%B9%98-%EB%B0%8F-%EC%9B%B9%EC%84%9C%EB%B2%84-%EA%B5%AC%EC%B6%95%ED%95%98%EA%B8%B01-Apache-%EC%84%A4%EC%B9%98

Apache2 오류 시

☞ Could not reliably determine the server's fully qualified domain name 이라는 오류가 발생하면

httpd.conf에 ServerName localhost를 추가해보면 될것이다.

☞ 파일경로(환경변수 path 등록 시)를 처음 사이트에 다운을 받으면 httpd-.....-... 이런식으로 되어있을 것이다.

그럴 때 하이픈을 다 빼주고 깔끔하게 만들어도 줘본다.

☞ 포트 오류시 ( 가상환경의 아파치와 겹칠 때)

(OS 10048)각 소켓 주소(프로토콜/네트워크 주소/포트)는 하나만 사용할 수 있습니다. : AH00072: make_sock: could not bind to address [::]:80

(OS 10048)각 소켓 주소(프로토콜/네트워크 주소/포트)는 하나만 사용할 수 있습니다. : AH00072: make_sock: could not bind to address 0.0.0.0:80

AH00451: no listening sockets available, shutting down

AH00015: Unable to open logs

포트를 변경해주면 된다. 방법은 아래와 같음

Listen에서 포트 번호 변경

httpd.conf

ServerName에서 포트 번호를 일치시켜줘서 열어본다.

PHP 오류시

httpd.exe: Syntax error on line 542 of C:/httpd/Apache24/conf/httpd.conf: Cannot load C:\\php7.3.3/php7apache2_4.dll into server: \xc1\xf6\xc1\xa4\xb5\xc8 \xb8\xf0\xb5\xe2\xc0\xbb \xc3\xa3\xc0\xbb \xbc\xf6 \xbe\xf8\xbd\xc0\xb4\xcf\xb4\xd9 이런 오류가 발생했을 때

만약 ThreadSafe 버전을 받았을 시 아래에 사이트에서 설치를 진행하면 된다.

https://www.microsoft.com/ko-KR/download/details.aspx?id=30679

만약 NonThreadSafe 버전을 받았다면(Windows에서는 2개로 나뉜다.) 아파치와 연동이 불가능 하기 때문에 ThreadSafe버전으로 다운 받아야한다고 한다.

MySQL 오류 시

☞ my.ini 파일이 없을 시

https://dev.mysql.com/downloads/mysql/

아마 설치하면 mysql디렉터리에 my.ini이 없을 것이다. 아마 다른 디렉터리에 있는 모양이다. (필자도 없어서 당황하여 구글링을 하여 보았다.)

주로 구버전에서는 my.ini이 나와 있다고 하는데

어쨌든, 설정 파일 확인하는 방법은 mysql 접속 후

아래 명령어 입력하면 확인 가능하다고 한다.

mysql> SHOW VARIABLES WHERE Variable_Name LIKE "%dir"

해답은 아래 사이트에서 찾았다. MySQL이 버전 업이 되고 나서 my.ini을 직접 만들어 줘야하고 그 까지 가는 데 셋팅이 많이 필요하다.

https://jimnong.tistory.com/614

여기서 installer를 받아서 server용을 설치하자.

설치했다면 경로 지정을 해줘야 cmd에서 쉽게 적을 수 있다.

아니면

여기에 mysql 전용 cmd가 있다.


'PHP' 카테고리의 다른 글

php MySQL 연결  (0) 2019.09.12
php (include,required)_(once)  (0) 2019.09.12
php MySQL다루기  (0) 2019.09.12
php 세션  (0) 2019.09.12
php 쿠키  (0) 2019.09.12

쿼리(Query)

PHP에서는 쿼리(query)를 사용하여 MySQL과 같은 데이터베이스에 작업을 요청할 수 있다.

쿼리(query)란 데이터베이스에 보내는 요청(request) 또는 질문이라고 이해할 수 있다.

예를 들어, 다음과 같은 쿼리는 Student 테이블에서 Name이라는 필드를 모두 선택해 줄 것입니다.

SELECT Name FROM Student;

어느 프레임워크, 언어든지 간에 데이터베이스를 연결할 수 있는 방법이 있다.

php또한 데이터베이스를 연결하여 사용하는데 php7.0.0 미만 버전까지는 MySQL extension 이라는 API를 이용하였다고 한다.

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

API(Application Programming Interface, 응용 프로그램 프로그래밍 인터페이스)는 응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다. -위키피디아 백과사전 참고

아래는 API관련 설명 블로그

https://medium.com/@dydrlaks/api-%EB%9E%80-c0fd6222d34c

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

현재는

· MySQL improved extension(MySQLi extension)

· PHP Data Objects(PDO)

이렇게 API를 이용한다고 한다.

필자는 PDO를 사용할려고한다. 다음은 PDO Installation site이다.

http://php.net/manual/en/pdo.installation.php

여기는 우분투에 pdo_mysql을 설치 하는 방법이라고 한다.

https://zetawiki.com/wiki/%EC%9A%B0%EB%B6%84%ED%88%AC_pdo_mysql_%EC%84%A4%EC%B9%98

그런데 아무래도 우분투에서 php를 설치하는 도중에 필자는 설치를 한거 같다. 설치가 되어있다.


'PHP' 카테고리의 다른 글

php (include,required)_(once)  (0) 2019.09.12
windows10 환경 APM설치 및 오류 수정  (0) 2019.09.12
php 세션  (0) 2019.09.12
php 쿠키  (0) 2019.09.12
php form검증  (0) 2019.09.12

세션이란?

세션(session)이란 웹 사이트의 여러 페이지에 걸쳐 사용되는 사용자 정보를 저장하는 방법을 의미.

사용자가 브라우저를 닫아 서버와의 연결을 끝내는 시점까지를 세션이라고 한다.

쿠키는 클라이언트 측에 저장이 되지만, 세션은 데이터가 서버측에 저장이 되고 세션의 키값만 클라이언트 측에서 저장을 한다.

브라우저는 클라이언트 측의 키 값을 이용하여 서버측에 저장되어 있는 데이터를 이용한다.

세션 시작

session_start();

session_start() 함수는 세션 아이디가 이미 존재하는지를 확인하고, 존재하지 않으면 새로운 아이디를 만든다.

만약 이미 존재하는 세션 아이디가 있을 때는 원래 있던 세션 변수를 다시 불러와서 사용할 수 있도록 한다.

세션 아이디는 웹 서버에 의해 무작위로 만들어진 숫자이다.

이 세션 아이디는 세션이 유지되는 동안 클라이언트 측에 저장되며, 세션 변수를 등록하는 키로 사용된다.

웹 서버에서는 클라이언트로부터 받아온 세션 아이디를 가지고, 해당 아이디에 대응되는 세션 변수에 접근할 수 있다.

세션 변수 등록

$_SESSION["city"] = "부산"; // 세션 변수의 등록 $_SESSION["gu"] = "해운대구"; echo "세션 변수가 등록되었습니다!";

션이 생성되고 나면 세션 변수를 수퍼 글로벌인 $_SESSION 배열에 등록할 수 있다.

이때 세션 변수의 이름이 키값이 되며, 이 내용은 서버 측에 저장된다.

$_SESSION["키값(클라이언트 측 저장)"] = "내용(서버 측 저장)";

등록된 세션 변수는 등록을 해지하지 않는 한 세션이 끝날 때까지 유지된다.

세션 변수에 접근하기

생성된 세션 변수는 $_SESSION["세션변수이름"]으로 접근할 수 있다.

echo "제가 살고 있는 도시는 {$_SESSION['city']}입니다.<br>"; echo "그 중에서도 {$_SESSION['gu']}에 살고 있습니다.<br>"; print_r($_SESSION); // 모든 세션 변수의 정보를 연관 배열 형태로 보여줌.

세션 변수 등록 해제

unset() 함수를 사용하면, 특정 이름의 세션 변수만을 해지할 수 있다.

현재 등록된 모든 세션 변수를 해지하고자 할 때에는 session_unset() 함수를 사용하면 된다.

또한, 세션을 자체를 완전히 종료하려면 session_destroy() 함수를 사용하여 세션 아이디를 삭제하면 된다.

// 특정 세션 변수의 등록 해지 /* if(!isset($_SESSION["city"])) { echo "{$_SESSION['city']} 세션 변수가 삭제되었습니다."; unset($_SESSION["city"]); } else { echo "해당 세션 변수가 등록되어 있지 않습니다."; } */ session_unset(); // 모든 세션 변수의 등록 해지 session_destroy(); // 세션 아이디의 삭제 echo "모든 세션 변수가 등록 해지되었으며, 세션 아이디도 삭제되었습니다.";


'PHP' 카테고리의 다른 글

windows10 환경 APM설치 및 오류 수정  (0) 2019.09.12
php MySQL다루기  (0) 2019.09.12
php 쿠키  (0) 2019.09.12
php form검증  (0) 2019.09.12
php 와 html form(html과의 교류)  (0) 2019.09.12

쿠키란 ?

웹사이트에 접속했을 때 내가 했던 기록들이 마치 과자를 먹고 나면 남은 부스러기 처럼 남아 있어서 붙여진 이름이다. 웹사이트는 클라이언트 측 컴퓨터에 정보를 저장해두고 필요할 때 마다 꺼내 쓴다.( 예로 장바구니 같은 기능에서 많이 쓰인다.) 편리하지만 편리한만큼 보안에는 취약해진다는 단점이 있다.

쿠키 생성

setcookie ( $name [, $value [, $expire [, $path [, $domain [, $secure [, $httponly ]]]]]] )

setcookie() 함수의 매개변수 중에서 쿠키 명을 제외한 매개변수는 모두 옵션.

쿠키는 명시된 지속 시간이 지나면 무효가 되며, 지속 시간을 전달하지 않으면 브라우저가 닫히기 전까지 계속 유효.

또한, 사용자가 직접 삭제하지 않는 한 브라우저에 계속 남아 있다.

쿠키를 생성할 때 유효한 주소와 경로를 매개변수로 전달할 수 있다.

만약 HTTPS 프로토콜에서 사용하려면 secure 값을 true로,

HTTP 프로토콜에서만 사용하도록 하려면 httponly 값을 true로 설정하면 된다.

$_cookie 예제)

<?php $cookieName = "city"; //default 값으로 넣어준다. $cookieValue = "서울"; setcookie($cookieName, $cookieValue, time()+60, "/"); // 쿠키가 60초 간 지속됨. ?> ... <?php if(!isset($_COOKIE[$cookieName])) { // 해당 쿠키가 존재하지 않을 때 echo "{$cookieName}라는 이름의 쿠키는 아직 생성되지 않았습니다."; } else { // 해당 쿠키가 존재할 때 echo "{$cookieName}라는 이름의 쿠키가 생성되었으며, 생성된 값은 '".$_COOKIE[$cookieName]."'입니다."; } ?>

쿠키 삭제

<?php $cookieName = "city"; $cookieValue = "서울"; setcookie($cookieName, $cookieValue, time()-60, "/"); // 쿠키를 삭제함. unset($_COOKIE["city"])와 같음. ?> ... <?php echo "{$cookieName}라는 이름의 쿠키가 삭제되었습니다."; ?>


'PHP' 카테고리의 다른 글

php MySQL다루기  (0) 2019.09.12
php 세션  (0) 2019.09.12
php form검증  (0) 2019.09.12
php 와 html form(html과의 교류)  (0) 2019.09.12
php 제어문  (0) 2019.09.12

+ Recent posts