티스토리 뷰

Study

php(피에이치피) 관련

메디츠 2024. 1. 14. 14:49
반응형

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

 

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함