티스토리 뷰
10년 7월 기준.
포워딩시 쿠키 설정
<?
header("P3P: CP=:NOI CURa ADMa DEVa TAIa OUR DELa BUS IND PHY ONL UNI COM NAY INT DEM PRE");
?>
function msDate($format, $_date)
{
$tmpDate = strtotime(preg_replace('/:[0-9][0-9][0-9]/','',$_date));
return date($format, $tmpDate);
}
// mssql datetime을 php에서 사용
file_get_contents() 함수 에러
.htaccess에 PHP_FLAG allow_url_fopen 1 추가
php.ini
short_open_tag = On
// <?php를 <?로 사용
WAMP php not working
use <?php instead of <? left click wamp-php-settings-short_open_tags
php 특정 문자열 추출
<?php
$whois_server = "URL 주소";
$fp = fsockopen($whois_server, 43);
// Getting string
$string = "";
while(!feof($fp)) {
$string = fgets($fp, 128);
}
fclose($fp);
// $string 에서 특정부분을 검출.
// strstr() 특정단어부터 문자열 끝까지
// 이걸 응용하여 잘라내기
$string = strstr($string, '특정단어');
?>
private $array = [
'total' => 0,
'success' => 0,
];
// array 선언
PHP 5.5's simplified password hashing API
// 같은 데이터라도 암호화 해시값이 다름. 시간값이 들어간 듯.
use of undefined constant filename
// 배열 인덱스가 문자열이니 문자열( ' ' )로 처리
$arr = ['a','b','c'];
echo count($arr);
// arr length
$arr = explode(' ', $str);
// 공백을 기준으로 구분해서 배열에 넣음
$claims = explode('.', $response->id_token)[1]
// 페이로드 가져오기. .을 기준으로 분할해서 [0]은 헤더, [1]은 페이로드. [2]은 인증.
index.php
<?php
echo "<meta http-equiv='Refresh' content='0; URL=/kor/main.html'>";
?>
// 페이지 연결
$text = iconv("EUC-KR","UTF-8", $text);
// 인코딩
$data = array(
'test' => 'test'
);
preg_replace($pattern, '', $str);
// 패턴 제거
$original = [ 'foo' => 'bar', 'fiz' => 'baz' ];
foreach($original as $key => $value){
$value = 'ddd';
}
var_dump($original);
// foreach 배열값 변경 안됨.
if($key == 'fiz')
$original[$key] = 'ddd';
// 이렇게 변경.
$currentDateTime = '08/04/2010 22:15:00';
$newDateTime = date('h:i A', strtotime($currentDateTime));
// 날짜 변환, AM, PM은 자동. 24시 기준.
$hostname=$_SERVER["HTTP_HOST"];
$uri= $_SERVER['REQUEST_URI'];
$query_string=getenv("QUERY_STRING");
$phpself=$_SERVER["PHP_SELF"];
$basename=basename($_SERVER["PHP_SELF"]);
echo$hostname."<br>";
echo$uri."<br>";
echo$query_string."<br>";
echo$phpself."<br>";
echo$basename."<br>";
// url 얻기
echo date('D d M Y H:i:s O',strtotime('sunday this week 23:59:59'));
// 이번주의 주말 date값 얻기
session_start();
// 세션 초기화
rand() 32767까지 난수. mt_rand() 0에서 2147483647까지 정수 난수. 더 복잡한 알고리즘.
array_rand()
$input = array("Neo", "Morpheus", "Trinity", "Cypher", "Tank");
$rand_keys = array_rand($input, 2);
// $rand_keys = array_rand($input, count($input)); 랜덤 작동 안함. 배열에서 필요한 키만 pick하는 함수 전체길이를 잡으면 작동 안함. 대신 shuffle() 사용.
shuffle()
shuffle($input);
// 값 리턴을 안함. 사용할 배열을 넣어서 실행.
class Test
{
public $temp;
// 클래스 내의 변수는 권한 명시해야함. 사용시 $this->temp
print_r($array);
var_dump($array);
// 배열 출력
$arr = ['a','b','c'];
echo $arr[rand(0, count($arr)-1)];
// random
header('Location: '.'../');
exit();
// 헤더로 페이지 이동. echo가 없어야 페이지 이동함.
$arr = array( 'one', 'two', 'three' );
$str = implode( '/', $arr); // one/two/three
// implode 배열을 구분자 넣어서 합침.
isset($var);
// $var가 세팅되었으면 true 아니면 false.
inset($var); // 변수 추가
unset($var); // 변수 제거
bin2hex(random_bytes(5));
// 랜덤 hex값 생성(5*2자리)
== 약한 비교. === 엄격한 비교. (same variable type)
$var = '1234'; // 숫자로 인식해서 오류. 문자열을 넣기.
class Person {
public $name;
function __construct( $name ) {
$this->name = $name;
}
};
$jack = new Person('Jack');
echo $jack->name;
// 클래스의 생성자 정의 __construct.
foreach($array as $val){
echo $val."</br>";
}
// foreach
$array = array("name"=>"이름", "id"=>"아이디", "email"=>"이메일");
echo "isArray=".$array."<br>";
foreach($array as $key=>$value){
echo $key . " : " . $value . "</br>";
}
// key, value
strip_tags($str, '<br>');
// <br>을 제외한 태그 제거
/* */주석
$str = preg_replace('/\/\*(.*?)\*\//is', '', $str);
<!-- -->주석
$str = preg_replace('/<!--(.*?)-->/is', '', $str);
//주석
$str = preg_replace('/\/\/(.*)\n', '', $str);
#주석
$str = preg_replace('/#(.*)\n/', '', $str);
'주석
$str = preg_replace('/\'(.*)\n/', '', $str);
// 주석 제거
http_build_query()
// array를 query로 변환
function createFile($oid, $aid, $title, $content)
{
$file = fopen($oid."_".$aid.".html", "w") or die("Unable to open file!");
$txt = '<!DOCTYPE html>'.PHP_EOL;
$txt .= '<html>'.PHP_EOL;
$txt .= ' <head>'.PHP_EOL;
$txt .= ' <meta charset="UTF-8">'.PHP_EOL;
$txt .= ' <title>'.$title.'</title>'.PHP_EOL;
$txt .= ' </head>'.PHP_EOL;
$txt .= ' <body>'.PHP_EOL;
$txt .= ' <h3 id="articleTitle">'.$title.'</h3><br>'.PHP_EOL;
$txt .= ' '.$content.PHP_EOL;
$txt .= ' </body>'.PHP_EOL;
$txt .= '</html>'.PHP_EOL;
fwrite($file, $txt);
fclose($file);
}
// file write
echo "<script>alert('".$title."');</script>";
// php alert
include
// 파일 여러번 포함 가능. 파일 없어도 코드 실행
include_once
// 파일 한번 포함. 파일 없어도 코드 실행
require
// 파일 여러번 포함 가능. 파일 없으면 코드 실행안함
require_once
// 파일 한번 포함. 파일 없으면 코드 실행안함
$headers = array("content-type: application/json", "Authorization: ".$token);
$article = array("title" => $title,
"content" => $content);
$json = json_encode($article);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
// json 보내기
$str = <<<EOD
긴 문자
EOD;
// 긴 문자 할당.
stripslashes();
// 백슬래시를 제거
date("ymdHis"); // 연월일시분초. 시가 i인것 주의.
h // 12시단위 표시
g // 0없는 시간 표시
$title = array();
$content = array();
$title["title"] = $title;
$content["content"] = $content;
$article[0]["title"] = $title;
$article[0]["content"] = $content;
// 각각 선언. 0번째의 해당이름이 그냥 넣는것과 같음.
json_encode null 에러
// json_encode 한글 인코딩 안됨. urldecode로 넣어서 urldecode로 받는건 해결방법 아님.
json_encode($arrJson, JSON_UNESCAPED_UNICODE);
// 한글 유니코드 변환 안함.
function han ($s) { return reset(json_decode('{"s":"'.$s.'"}')); }
function to_han ($str) { return preg_replace('/(\\\u[a-f0-9]+)+/e','han("$0")',$str); }
to_han(json_encode($arr));
// 5.4 이하
php 7 mysql_connect()대신 mysqli_connect() 사용.
$characters[mt_rand(0, strlen($characters) - 1)];
// 랜덤함수 mt_rand();
echo exec('test.exe');
// exe 실행. Apache or Nginx등의 서버가 service.msc(서비스 관리자)에 등록 되어있으면 Windows 보안 정책상 GUI 실행 안됨.
$payload = explode('.', $id_token); // jwt 자르기
$arr = json_decode(base64_decode($payload[1]), true);
// payload 얻기. decode 2번째 파라미터 true. convert object to array.
<?= $checked['couponEventType']['birth'] ?> // 값이 birth면 checked
<?= $checked['couponEventBirthSmsType']['y'] ?> // 값이 y면 checked
"' WHERE memNo='$memNo' AND handleCd='5'"
"' WHERE memNo='".$memNo."' AND handleCd='5'"
// 둘다 적용됨. 위의 코드는 내가 착각해서 쓴건데; 적용이 됨.
nl2br();
// 문자열 내의 줄바꿈 기호(new line)를 HTML <br>변환. 문자열 중 "\n"을 "<br>"로 변환.
\n // 소스만 줄바꿈
<br> // 브라우저만 줄바꿈
<br>\n // 소스, 브라우저 줄바꿈
nl2br("a<br>b"); // 브라우저 줄바꿈, 소스 미적용.
nl2br("a\nb"); // 브라우저, 소스 줄바꿈.
strpos($str, $findstr);
// 문자열 찾기, int return. 비교시 === 사용.
$num = 37.6;
ceil($num); // 소수점 올림 값 = 38
$val = floor($num); // 소수점 버림 값 = 37
$val = round($num); // 소수점 반올림 값 = 38
// round 반올림 함수는 소수부분이 5보다 크면 올림.
$num = 37.377
$val = round($num, 1); // 소수점 한자리표현 37.4
// round 함수는 파라미터가 하나 더 있으며 소수점 자리수를 나타냄.
$contents = explode('<br>',$list['data'][$k]['contents']); // 줄단위 arr로 쪼개기
$echo $contents[0]; // 첫줄만
substr_count('this', 't') // 1
// 해당 문자열의 개수
mb_substr(str,0,10,'utf-8');
// 한글깨져서 mb_substr 사용
strtotime('monday this week 09:00')
// 요일 값 가져오기. next, last 가능
array_shift();
// 배열의 맨 앞에 있는 원소를 시프트
is_numeric(data)
// 숫자 여부 판단
UTF-8과 EUC-KR url encode 값이 다름.
urlencode(iconv("EUC-KR","UTF-8",$str))
// UTF-8로 변경해서 인코딩
$ch.chr($i);
// 문자열 변환
header('Content-type: application/json');
// JSON 형태로 response
'Study' 카테고리의 다른 글
Android(안드로이드) Error(에러) 관련 (0) | 2024.01.14 |
---|---|
MS-SQL(엠에스 에스큐엘) 관련 (0) | 2024.01.14 |
Android(안드로이드) 설치 관련 (0) | 2024.01.14 |
php(피에이치피) error(에러) 관련 (0) | 2024.01.14 |
Linux(리눅스) Firewall(방화벽) 설정 (0) | 2024.01.14 |