URL 주소 중 기호 부분을 두 자리의 16 진수로 변환하여 표현하고 있습니다. 
요새는 통 들여다 볼 일이 없어서 자꾸 가물거리기에 그냥 정리 해 둡니다. 
저같은 경우에는 다운로드 파일의 다이렉트 주소를 소스에서 뽑아올 때 자주 썼습니다.

%26   &
%2F   /
%3A   :
%3F   ?
%3D   =

아래는 예제입니다.

☞ 원래 주소

http://example.com/index.php?page=260&id=22

☞ 변환된 모습

http%3A%2F%2Fwww.example.com%2Findex.php%3Fpage%3D260%26id%3D22

☞ PHP 에서 원래 주소로 다시 변환하기

<?php

$raw_url = "http%3A%2F%2Fwww.example.com%2Findex.php%3Fpage%3D260%26id%3D22";

$decoded_url = rawurldecode($raw_url);

echo $decoded_url;

?>

출처: https://shinb.tistory.com/398 [신비 블로그:티스토리]

phpMyAdmin 설정 스토리지가 완전히 설정되지 않아, 일부 확장 기능들이 비활성화 된 상태입니다. 원인을 확인하려면 여기를 클릭하세요.

위 메세지가 나올때 숨기는 법
config.inc.php 파일에서

$cfg['PmaNoRelation_DisableWarning'] = true;

You are using an incomplete translation, please help to make it better by contributing.

위 메시지가 나올 때 숨기는 법 (대충 더 나은 번역을 위해 기여좀 하라는거 같은데..;;)
마찬가지로 config.inc.php 파일에서

$cfg['TranslationWarningThreshold'] = 1;

 

출처 : https://tistory.kkwang.com/221


PHP 에서 mail 함수 정상 동작하는지 확인하는 소스

<?php
 //$mailto="받는주소";
 $mailto="sample@a.com";
 $subject="mail test";
 $content="test";
 $result=mail($mailto, $subject, $content);
 if($result){
  echo "mail success";
  }else  {
  echo "mail fail";
 }
?>


test.php 로 저장하여,
웹페이지에서 로드했을때
mail success 가 찍혀야 정상

만약, 위 소소에서 mail success 가 찍히는데
각종 커스텀 보드에서 메일 발송이 되지 않는다면,
php소스에서 mail 함수의 각 인자들을 확인해본다.

error_log($mailto, 0);  // mailto 변수를 서버의 에러로그에 찍는다.
error_log($subject, 0);

가령,

<?php
 //$mailto="받는주소";
 $mailto="sample@a.com";
 $subject="mail test";
 $content="test";
 $result=mail($mailto, $subject, $content);
 if($result){
  echo "mail success";
  }else  {

  error_log($mailto, 0); 

  echo "mail fail";
 }
?>

일 경우,
Apache 서버를 구동중이라면,
Apache\logs\error.log
파일에 mailto 변수의 내용이 찍힌다.

지금 내가 사용중인 환경은
Apache2.2.8
+ SMTP(W2K3 R2) + PHP5.2.5


위와 같이 테스트에서 이상이 없었으나,
제로보드에서는 메일을 보내지 못하는 현상이 발생한다.

따라서,
제로보드의 메일발송 소스를 확인해보니,
받는 사람(Receiptor) 변수에

위의 예제에서는 "sample@a.com" 이지만,
제로보드는 "받는사람 이름 <sample@a.com>"을 설정한다.

Receiptor 변수를 임의로 "sample@a.com"으로 수정하고
정상 작동하는 것을 확인
해당 소스를 수정해주었다.

제로보드\classes\mail\Mail.class.php

function getReceiptor() {
  //if($this->receiptor_name) return sprintf("%s <%s>", '=?utf-8?b?'.base64_encode($this->receiptor_name).'?=', $this->receiptor_email);
  return $this->receiptor_email;
}


수정이후 정상 발송 확인

출처: https://lifeful.tistory.com/19 [SEIZ THE DAY.]


[리눅스 sendmail 로 폼메일사용시 nobody@localhost.localhost.com 으로 발송될 경우 ]


보내는 사람 계정 명이 nobody@localhost.localdomain 으로 발송이 되서 

다음이나 다른 포털에서 반송되는 경우를 볼수 있습니다 

이럴때에 조치 방법으로 

php.ini에서 

 

메일 함수 사용시 

리눅스

php.ini 를 수정하는 방법.(Linux) 
; PHP mail() 함수에서 발송하는 메일에는 모두 적용됨.  수정후 아파치 재시작해야함. 
;sendmail_path = 

sendmail_path = “/usr/sbin/sendmail -t -i -f 계정@도메인” 

 

위에 처럼 수정후 발송 하면 잘 적용 되십니다 

무조건 적용 

 

 

윈도우

php.ini 를 수정하는 방법(windows)
; 모든 메일발송자가 고정적으로 지정됨.  수정후 아파치 재시작해야함. 
;sendmail_from = master@example.com 
=> 
sendmail_from = 계정@도메인



출처: https://cnisoft.tistory.com/10 [씨엔아이소프트]


출처 : http://www.cgmarina.co.kr/computer/13720

 

[Session]

session.save_handler = files
session.save_path = /tmp
session.use_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path = /
session.gc_maxlifetime = 1440
session.cache_expire = 180

session.save_handler :
기본적으로 Files 방식을 이용한다.
session_module_name() 을 통하여 현재 설정된 정보를 볼 수 있다. 공유 메모리를 사용하는 MM방식과 USER방식을 지원하다.
USER방식을 사용하는 경우에는 session_set_save_handler(string open, string close,string read, string write, string destroy, string gc)을 이용하여session_set_save_handler("함수명", "함수명", "함수명", "함수명", "함수명", "함수명")과 같이콜백 함수를 정의하고 콜백 함수를 호출하여 세션 데이터나 세션ID등을 데이터베이스 등에 보관하여 사용할 수도 있다.

session.save_path :
세션 파일을 저장할 경로을 의미하고 files 방식에서는 /tmp가 기본적인 파일이 저장되는 디렉토리의 절대 경로이다.

session.use_cookies :
세션과 함께 쿠키를 사용할 것인가에 대한 설정으로 기본적으로 쿠키와 함께 사용하도록 되어 있다.
쿠키를 사용하지 않는 경우에는 0으로 설정하고 버전에 따라서는 On과 Off로 설정하기도 한다.

session.name :
세션ID를 쿠키에 저장한 경우 PHP에서 세션ID를 확인하기 위한 변수명을 의미한다.
기본값으로 PHPSESSID로 설정되어 있으며$PHPSESSID라고 하면 세션ID를 확인할 수 있다.

session.auto_start :
PHP시작과 동시에 세션이 자동으로 스타트 되도록 하는 옵션이다.
기본값은 0으로 자동으로 시작되지 않도록 되어 있다.
그러므로 세션을 사용하기 전에는 session_start()를 호출해야 하고, 자동으로 시작하게 하려면 1로 설정하면 된다.
버전에 따라서는 On과 Off로 설정하기도 한다.

session.cookie_lifetime :
세션ID를 저장한 쿠키의 활성화 시간 또는 유효 시간을 설정하는 것이다.
기본값으로는 0이 설정되어 있어 브라우저가 종료되면 자동으로 쿠키값은 삭제된다.
session_set_cookie_params()함수를 이용하여 쿠키의 유효 시간을 변경할 수 있으며 PHP.INI를 수정하여 쿠키 적용 시간을 변경 가능하다.

session.cookie_path :
세션ID가 저장된 쿠키가 적용될 유효 경로(디렉토리)를 설정하는 부분이다.
기본값은 "/"로 모든 경로에서 적용 가능하도록 설정되어 있다.
session.cookie_lifetime과 같이 session_set_cookie_params()함수를 이용하여 쿠키의 적용 디렉토리를 변경할 수 있다.

session.gc_maxlifetime :
사용되지 않는 것으로 보이는 세션 데이터를 삭제한다.
세션ID를 삭제하는 것이 아니라 기본 설정 시간인 1440초 동안 아무런 요청이 없을때 자동으로 세션 데이터를 삭제하도록 되어 있다.
이렇게 자동으로 삭제하는 이유는 서버의 부하를 줄이기도 하지만 클라이언트에서 접속을 종료하였는지 여부를 확인할수 없으므로1440초 동안 사용하지 않는 데이터는 삭제하게 한다.

session.cache_expire :
서버에 저장된 세션ID의 활성화 시간이다.
클라이언트에서 브라우저를 닫아버리면 서버에서는 클라이언트가 연결중인지 아닌지 확인하는 방법이 없으므로 미리 세션데이터를 삭제하고 세션ID는 180분 이후에 삭제시킨다.
만약 세션 ID를 삭제하지 않으려면 PHP.INI를 수정하여 시간을 늘려주면 된다.


세션을 핸들링하려면 세션 저장 디렉토리를 별도로 사용해야 한다.

session_save_path("저장디렉토리");
ini_set("session.cache_expire", 180); // 세션 유효시간 : 분
ini_set("session.gc_maxlifetime", 86400); // 세션 가비지 컬렉션(로그인시 세션지속 시간) :

 

 

 

 

 

실제 사용할때에는  
session_save_path($_SERVER['DOCUMENT_ROOT']."/세션폴더");
ini_set("session.cache_expire", 180); // 세션 유효시간 : 분
ini_set("session.gc_maxlifetime", 86400); // 세션 가비지 컬렉션(로그인시 세션지속 시간) :
session_start();

 

위와같이 사용 하면 됨.



출처: https://jaweb.tistory.com/entry/php-session-유지시간-설정-작업관련 [잡다구리 파크]


php.in 에 설정된 date.timezone 은 글로벌 설정으로 시스템에 등록된 모든 계정에 적용되는데

이를 특정 계정에 대해서 다른 date.timezone 으로 설정하려고 한다면 아래와 같이 하면 된다.

php.ini 의 date.timezone 이 date.timezone "Asia/Seoul" 일 때

특정 계정의 date.timezone을 America/New_York 로 바꾸고 싶으면

해당 계정의 Virtualhost 설정에 php_admin_value date.timezone "America/New_York" 를 추가해주고

웹서버 재시작을 해준다.

적용 여부 확인은 아래 php 구문이 담긴 php 파일을 만들어 웹상에서 호출한다.

echo date_default_timezone_get();


LINUX 웹 서버를 운영하면서 문제가 생겼다.

 

각각의 사이트들을 하루에 한번씩 백업 폴더로 카피하는데 PHP 세션디렉토리를 지우지 않아 몇달간 모인 세션파일이 수백만개가 넘어가 버려 rm 으로 지워 지지 않는다.

 

문제는 리눅스의 파티션에 들어갈수 있는 파일 갯수(inode)가 정해져 있다는 것이다.

df -i 로 확인 해보면 된다.

이문제로 운영중인 서버에 세션이 생성되지 않아 서버가 죽는 경우가 생겼다.

 

하여간 몇가지 방법으로 삭제를 시도를 해보았지만 실패....

 

시도한 방법을 나열하자면...

1. rm -rf *

2. find . -type f -exec rm -fv {} \;

3. find . -type f -delete

4. perl 을 이용한 스크립트

 

너무 파일이 많은지 서버 자원만 엄청 사용하고 결국 포기 했다.

 

그래서 시도한 방법이 현재 운영중인 사이트를 다른 폴더로 옮기고 재빨리 파티션자체를 포멧하고 다시 복구 시키는 방법을 썻다.

손이 많이 가지만 가장 깔끔한 방법...

 

하지만 다른 한대의 서버에는 다른쪽으로 옮길 파티션(하드)가 존재하지 않아 포기

 

몇일후 PHP 를 이용해서 지워도 되겠다는 생각에 아래 스크립트를 실행 시켰다.

 

$dir = "/home/linkFolder/img";
$dh = opendir( $dir);
$i = 0;
while (($file = readdir($dh)) !== false) {
  $file = "$dir/$file";
  if (is_file( $file)) {
    unlink( $file);
    if (!(++$i % 1000)) {
      echo "$i files removed\n";
    }
  }
}

 

오호~~ 잘 지워 진다. 속도로 빠르다. 50만개정도 삭제 하는데 20분도 안걸렸다.

 

역시 내가 PHP를 사랑할 수 밖에 없는 이유다. 보안이 어쩌고 하지만 안되는게 없는 PHP이다. ㅎㅎ



출처: http://blog.yesyo.com/entry/리눅스-대량의-파일-지우기 [MintState WebLog]


이 프로그램은 이미 오래 전에 나돌던 프로그램입니다.

아시는 분은 다 아실 프로그램 dezend 입니다.

젠드엔코더로 암호화된 젠드 엔코더파일을 디코더하는 프로그램으로 방법은 간단합니다.

압축해제해서 디코더할 PHP소스 파일을 해당폴더에 넣어 php.exe 파일에 끌어넣기만 하면 됩니다.

예를 들어 test.php 파일을 php.exe 파일에 끌어넣기 하면 test.de.php 파일로 디코더되어 생성됩니다.

Dezend Encoder.zip

[출처] http://blog.habonyphp.com/383#.WWNC2-S1uUn


php.ini 설정에서 register_globals = on/off 차이점과 기능설명

rester_globals 를 On 으로 하면 변수가 get, post, session 변수인지 체크하지 않아도 됩니다. 
쓰기에 따라서 보안적인 부분에 문제가 생길 수 있습니다
 

register_globals = on
가능 -> $_POST['u_id']
가능 -> $u_id
 
register_globals = off
가능 -> $_POST['u_id']
불가능 -> $u_id  
* extrract()로 처리하면 가능

php.ini에서 register_globals=off 일경우 헤더나 인클루드를 이용해서 상단에
@extract($_GET);
@extract($_POST);
@extract($_SERVER);
@extract($_FILES);
@extract($_ENV);
@extract($_COOKIE);
@extract($_SESSION);
 
위와 같이 처리해 주면 기존 소스를 그대로 사용할 수 있다.
혹은 받아오는 변수의 전체코드를 다 써주면 됨
$HTTP_GET_VARS[변수] 또는 $_GET[변수]
$HTTP_POST_VARS[변수] 또는 $_POST[변수]
$HTTP_COOKIE_VARS[변수] 또는 $_COOKIE[변수]
$HTTP_SESSION_VARS[변수] 또는 $_SESSION[변수]
$HTTP_POST_FILES[변수] 또는 $_POST_FILES[변수]



출처: http://gocoding.tistory.com/156 [Developer Factory]

'Works > PHP' 카테고리의 다른 글

리눅스 대량의 파일 지우기  (0) 2017.11.20
Dezend Encoder  (0) 2017.07.10
sqlsrv 함수로 mssql 접속하는 테스트페이지  (0) 2017.03.29
php 퍼미션 관련 함수  (0) 2016.10.25
PHP 문자열 함수  (0) 2016.06.30


<?php

$serverName = "서버IP";
$connectionInfo = array ("Database"=>"DB명","UID"=>"DB유저명","PWD"=>"DB패스워드");
$conn = sqlsrv_connect($serverName, $connectionInfo);
    

if ($conn) {

echo "연결 성공!\n";

} else {

echo "연결 실패!\n";

die ( print_r (sqlsrv_errors(), true)); 

}

sqlsrv_close($conn);

?>

'Works > PHP' 카테고리의 다른 글

Dezend Encoder  (0) 2017.07.10
PHP의 php.ini 설정에서 register_globals = on/off 차이  (0) 2017.06.21
php 퍼미션 관련 함수  (0) 2016.10.25
PHP 문자열 함수  (0) 2016.06.30
도메인을 판별하여 목적도메인으로 리다이렉션  (0) 2016.04.28