728x90
반응형

php 76

PHP에서 클라이언트 IP 주소를 얻는 방법

질문 : PHP에서 클라이언트 IP 주소를 얻는 방법 PHP를 사용하여 클라이언트 IP 주소를 얻으려면 어떻게해야합니까? 자신의 IP 주소를 통해 내 웹 사이트에 로그인 한 사용자의 기록을 유지하고 싶습니다. 답변 무엇을하든 클라이언트에서 보낸 데이터를 신뢰하지 않도록하십시오. $_SERVER['REMOTE_ADDR'] 에는 연결 당사자의 실제 IP 주소가 포함됩니다. 이것이 가장 신뢰할 수있는 가치입니다. $_SERVER['HTTP_X_FORWARDED_FOR'] 설정했을 수있는 프록시 서버 뒤에있을 수 있지만이 값은 쉽게 스푸핑됩니다. 예를 들어 프록시가없는 사람이 설정하거나 IP가 프록시 뒤의 LAN에서 내부 IP가 될 수 있습니다. 즉, $_SERVER['HTTP_X_FORWARDED_FOR'] ..

PHP에서 문자열의 마지막 문자를 얻는 방법

질문 : PHP에서 문자열의 마지막 문자를 얻는 방법은 무엇입니까? 문자열의 마지막 문자를 가져와야합니다. 입력 문자열로 "테스터"가 있고 결과가 "s"가되기를 원한다고 가정합니다. PHP에서 어떻게 할 수 있습니까? 답변 substr("testers", -1); // returns "s" 또는 멀티 바이트 문자열의 경우 : substr("multibyte string…", -1); // returns "…" 출처 : https://stackoverflow.com/questions/2681786/how-to-get-the-last-char-of-a-string-in-php

htmlentities () vs htmlspecialchars ()

질문 : htmlentities () 대 htmlspecialchars () htmlspecialchars() 와 htmlentities() 의 차이점은 무엇입니까? 둘 중 하나를 언제 사용해야합니까? 답변 htmlentities에 대한 PHP 문서에서 : 이 함수는 모든면에서 htmlspecialchars() htmlentities() 제외하고는 HTML 문자 엔티티와 동등한 모든 문자가 이러한 엔티티로 변환됩니다. htmlspecialchars에 대한 PHP 문서에서 : 특정 문자는 HTML에서 특별한 의미를 가지며 의미를 유지하려면 HTML 엔티티로 표시되어야합니다. 이 함수는 이러한 변환 중 일부가 수행 된 문자열을 반환합니다. 만들어진 번역은 일상적인 웹 프로그래밍에 가장 유용합니다. 모든 HT..

PHP에서 정적 코드 분석을 수행하는 방법

질문 : PHP에서 정적 코드 분석을 수행하려면 어떻게해야합니까? PHP 소스 파일에 대한 정적 분석 도구가 있습니까? 바이너리 자체는 구문 오류를 확인할 수 있지만 다음과 같이 더 많은 작업을 수행하는 것을 찾고 있습니다. 사용하지 않는 변수 할당 먼저 초기화되지 않고에 할당 된 배열 그리고 아마도 코드 스타일 경고 ... 답변 php 를 실행하여 실행하지 않고 구문의 유효성을 검사합니다. php -l FILENAME 상위 수준의 정적 분석기에는 다음이 포함됩니다. php-sat -http ://strategoxt.org/ 필요 PHP_Depend PHP_CodeSniffer PHP 메스 감지기 PHPStan PHP-CS-Fixer 팬 하위 수준 분석기에는 다음이 포함됩니다. PHP_Parser tok..

PHP 배열이 연관 또는 순차적인지 확인하는 방법

질문 : PHP 배열이 연관 또는 순차적인지 확인하는 방법은 무엇입니까? PHP는 모든 배열을 연관성으로 취급하므로 내장 함수가 없습니다. 누구든지 배열에 숫자 키만 포함되어 있는지 확인하는 상당히 효율적인 방법을 추천 할 수 있습니까? 기본적으로 나는 이것을 구별 할 수 있기를 원합니다. $sequentialArray = [ 'apple', 'orange', 'tomato', 'carrot' ]; 이: $assocArray = [ 'fruit1' => 'apple', 'fruit2' => 'orange', 'veg1' => 'tomato', 'veg2' => 'carrot' ]; 답변 똑같지 않은 두 가지 질문을했습니다. 첫째, 배열에 숫자 키만 있는지 확인하는 방법 둘째, 배열에 0부터 시작하는 순차..

PHP에서 주어진 키의 값으로 연관 배열의 배열을 정렬하는 방법

질문 : PHP에서 주어진 키의 값으로 연관 배열의 배열을 정렬하는 방법은 무엇입니까? 이 배열이 주어지면 : $inventory = array( array("type"=>"fruit", "price"=>3.50), array("type"=>"milk", "price"=>2.90), array("type"=>"pork", "price"=>5.43), ); $inventory 의 요소를 가격별로 정렬하여 다음을 얻고 싶습니다. $inventory = array( array("type"=>"pork", "price"=>5.43), array("type"=>"fruit", "price"=>3.50), array("type"=>"milk", "price"=>2.90), ); 어떻게 할 수 있습니까? 답변 당신이..

PHP에서 "Headers already sent"오류를 수정하는 방법

질문 : PHP에서 "Headers already sent"오류를 수정하는 방법 내 스크립트를 실행할 때 다음과 같은 몇 가지 오류가 발생합니다. 경고 : 헤더 정보를 수정할 수 없습니다 -23 행의 /some/file.php에서 (/some/file.php:12에서 시작된 출력) 이미 보낸 헤더 오류 메시지에 언급 된 줄에는 header() 및 setcookie() 호출이 포함됩니다. 그 이유는 무엇일까요? 그리고 그것을 고치는 방법? 답변 HTTP 헤더를 전송 / 수정하는 함수는 출력이 이루어지기 전에 호출되어야합니다. 요약 ⇊ 그렇지 않으면 호출이 실패합니다. 경고 : 헤더 정보를 수정할 수 없습니다. 헤더가 이미 전송되었습니다 ( script : line 에서 시작된 출력). HTTP 헤더를 수정..

command line에서 사용하는 php.ini 파일을 찾는 방법

질문 : 명령 줄에서 사용하는 php.ini 파일을 찾는 방법은 무엇입니까? EasyPhp 환경에서 pdo_mysql을 활성화해야하므로 php.ini 파일로 이동하여 다음 줄의 주석 처리를 제거했습니다. extension=php_pdo_mysql.dll 불행히도 나는 여전히 같은 문제가 있습니다. CLI를 사용하고 있으므로 CLI에서 사용하는 php.ini 파일을 찾아야한다고 가정합니다. 어떻게 찾을 수 있습니까? 답변 php --ini 실행하고 출력에서 Loaded Configuration File 에서 CLI에서 사용하는 php.ini 출처 : https://stackoverflow.com/questions/2750580/how-to-find-the-php-ini-file-used-by-the-com..

PHP에서 날짜 형식 변환

질문 : PHP에서 날짜 형식 변환 yyyy-mm-dd 에서 dd-mm-yyyy 로 변환하려고합니다 (SQL에서는 아님). 그러나 날짜 함수에 타임 스탬프가 필요한 방법을 모르고이 문자열에서 타임 스탬프를 가져올 수 없습니다. 이것이 어떻게 가능한지? 답변 strtotime() 및 date() : $originalDate = "2010-03-21"; $newDate = date("d-m-Y", strtotime($originalDate)); (PHP 사이트 의 strtotime 및 date 문서를 참조하십시오.) 이것은 원래 질문에 대한 빠른 해결책이었습니다. 보다 광범위한 변환을 위해서는 실제로 DateTime 클래스를 사용하여 구문 분석하고 형식을 지정해야합니다. :-) 출처 : https://sta..

PHP 암호를위한 보안 해시 및 솔트

질문 : PHP 암호를위한 보안 해시 및 솔트 현재 MD5는 부분적으로 안전하지 않다고합니다. 이를 고려하여 암호 보호에 사용할 메커니즘을 알고 싶습니다. 이 질문 은 "이중 해싱"이 암호를 한 번만 해싱하는 것보다 덜 안전합니까? 여러 번 해싱하는 것이 좋은 생각 일 수 있지만 개별 파일에 대한 암호 보호를 구현하는 방법은 무엇입니까? 소금 사용을 제안합니다. PHP를 사용하고 있습니다. 안전하고 빠른 암호 암호화 시스템을 원합니다. 암호를 백만 번 해시하는 것이 더 안전 할 수 있지만 느릴 수도 있습니다. 속도와 안전 사이의 균형을 잘 잡는 방법은 무엇입니까? 또한 결과가 일정한 수의 문자를 갖는 것을 선호합니다. 또한 데이터베이스에 두 개의 필드를 저장해야합니까 (예 : MD5를 사용하는 필드와 S..

PHP에서 리디렉션(redirect) 하는 방법

질문 : PHP에서 어떻게 리디렉션합니까? PHP를 사용하여 사용자를 다른 페이지로 리디렉션 할 수 있습니까? www.example.com/page.php 로 이동하여 www.example.com/index.php로 리디렉션하고 싶다고 www.example.com/index.php 해 보겠습니다. 메타 새로 고침을 사용하지 않고 어떻게해야합니까? 가능할까요? 이것은 권한이없는 사용자로부터 내 페이지를 보호 할 수도 있습니다. 답변 기존 답변과 내 2 센트 요약 : header() 함수를 사용하여 새 HTTP 헤더를 보낼 수 있지만 HTML이나 텍스트 이전에 (예를 들어 header('Location: '.$newURL); die () 또는 exit () header("Location: http://exa..

Laravel에는 Mcrypt PHP 확장이 필요합니다.

질문 : Laravel에는 Mcrypt PHP 확장이 필요합니다. OSX의 Laravel 4에서 migrate 기능을 사용하려고합니다. 그러나 다음과 같은 오류가 발생합니다. Laravel requires the Mcrypt PHP extension. 내가 아는 한 이미 활성화되어 있습니다 (아래 이미지 참조). 무엇이 잘못되었으며 어떻게 해결할 수 있습니까? 답변 웹 사용 확장과 명령 줄 사용 확장은 다를 수 있습니다. php -m 을 실행 mcrypt 가 나열되어 있는지 확인하십시오. 그렇지 않은 경우 터미널에서 php --ini php.ini 파일을로드하는 위치를 확인합니다. 이 php.ini 파일에서 확장을 활성화 할 수 있습니다. OSX와 함께 제공되는 기본 PHP를 가리키는 터미널로 인해 문제..

PHP에서 유용한 오류 메시지를 얻는 방법

질문 : PHP에서 유용한 오류 메시지를 어떻게 얻을 수 있습니까? 자주 PHP 스크립트를 실행하고 빈 화면이 나타납니다. 오류 메시지가 없습니다. 빈 화면뿐입니다. 원인은 간단한 구문 오류 (잘못된 대괄호, 세미콜론 누락), 실패한 함수 호출 또는 완전히 다른 것일 수 있습니다. 무엇이 잘못되었는지 파악하는 것은 매우 어렵습니다. 코드를 주석 처리하고 모든 곳에 "echo"문을 입력하는 등 문제를 좁히기 위해 노력합니다. 하지만 분명히 더 나은 방법이있을 것입니다. Java와 같이 PHP가 유용한 오류 메시지를 생성하도록하는 방법이 있습니까? 답변 구문 오류의 경우 php.ini에서 오류 표시를 활성화해야합니다. "고객"에게 오류 메시지가 표시되는 것을 원하지 않기 때문에 기본적으로이 기능은 꺼져 있습..

PHP에서 빈 배열에 요소를 추가하는 방법

질문 : PHP에서 빈 배열에 요소를 추가하는 방법은 무엇입니까? PHP에서 다음과 같이 배열을 정의하면 (크기를 정의하지 않습니다) : $cart = array(); 다음을 사용하여 단순히 요소를 추가합니까? $cart[] = 13; $cart[] = "foo"; $cart[] = obj; PHP의 배열에는 예를 들어 cart.add(13) 과 같은 add 메소드가 없습니까? 답변 array_push 와 설명한 방법이 모두 작동합니다. $cart = array(); $cart[] = 13; $cart[] = 14; // etc //Above is correct. but below one is for further understanding $cart = array(); for($i=0;$i

PHP에서 현재 날짜와 시간을 얻는 방법

질문 : PHP에서 현재 날짜와 시간을 어떻게 얻습니까? 현재 날짜 / 시간을 반환 할 수있는 PHP 함수는 무엇입니까? 답변 시간은 서버 시간으로 이동합니다. date() 또는 time() 함수가 호출되기 전에 date_default_timezone_set 을 사용하여 수동으로 시간대를 설정하는 것입니다. 나는 호주 멜버른에 있으므로 다음과 같은 것이 있습니다. date_default_timezone_set('Australia/Melbourne'); 또는 다른 예는 LA- US입니다 . date_default_timezone_set('America/Los_Angeles'); 또한 다음을 통해 서버가 현재 어떤 시간대에 있는지 확인할 수 있습니다. date_default_timezone_get(); 그래..

PHP에서 die ()와 exit ()의 차이점

질문 : PHP에서 die ()와 exit ()의 차이점은 무엇입니까? PHP에서 die() 와 exit() 함수의 차이점은 무엇입니까? 둘 다 동일한 기능을 가지고 있다고 생각하지만 둘 다 다른 점이있는 것 같지 않습니다. 무엇입니까? 답변 차이가 없습니다. 동일합니다. exit 위한 PHP 매뉴얼 : 참고 :이 언어 구조는 die() 와 동일합니다. die 위한 PHP 매뉴얼 : 이 언어 구조는 exit() 와 동일합니다. 출처 : https://stackoverflow.com/questions/1795025/what-are-the-differences-in-die-and-exit-in-php

PHP에서 문자열이 JSON인지 확인하는 방법

질문 : PHP에서 문자열이 JSON인지 확인하는 가장 빠른 방법은 무엇입니까? 문자열이 JSON인지 아닌지 확인하는 정말 정말 빠른 방법이 필요합니다. 이것이 최선의 방법이 아니라고 생각합니다. function isJson($string) { return ((is_string($string) && (is_object(json_decode($string)) || is_array(json_decode($string))))) ? true : false; } 이 방법을 개선할 수 있습니까? 답변 function isJson($string) { json_decode($string); return json_last_error() === JSON_ERROR_NONE; } 출처 : https://stackoverfl..

PHP 세션이 이미 시작되었는지 확인하는 방법

질문 : PHP 세션이 이미 시작되었는지 확인 세션을 시작한 페이지와 세션이 시작되지 않은 페이지에서 호출되는 PHP 파일이 있습니다. session_start() 가있을 때 가끔 "세션이 이미 시작되었습니다"라는 오류 메시지가 표시됩니다. 이를 위해 다음 줄을 넣었습니다. if(!isset($_COOKIE["PHPSESSID"])) { session_start(); } 하지만 이번에는 다음과 같은 경고 메시지를 받았습니다. 주의 : 정의되지 않은 변수 : _SESSION 세션이 이미 시작되었는지 확인하는 더 좋은 방법이 있습니까? @session_start 를 사용하면 제대로 작동하고 경고가 종료됩니까? 답변 PHP> = 5.4.0, PHP 7 버전에 권장되는 방법 if (session_status()..

PHP에서 SQL 공격(injection)을 방지하는 방법

질문 : PHP에서 SQL 주입을 어떻게 방지 할 수 있습니까? 사용자 입력이 SQL 쿼리에 수정없이 삽입되면 다음 예제와 같이 애플리케이션이 SQL 주입에 취약 해집니다. $unsafe_variable = $_POST['user_input']; mysql_query("INSERT INTO `table` (`column`) VALUES ('$unsafe_variable')"); 사용자가 값과 같은 것을 입력 할 수 있기 때문입니다 value'); DROP TABLE table;-- , 쿼리는 다음과 같습니다. INSERT INTO `table` (`column`) VALUES('value'); DROP TABLE table;--') 이를 방지하기 위해 무엇을 할 수 있습니까? 답변 준비된 문과 매개 변수..

PHP에서 작은 따옴표와 큰 따옴표 문자열의 차이점

질문 : PHP에서 작은 따옴표와 큰 따옴표 문자열의 차이점은 무엇입니까? PHP에서 문자열이 작은 따옴표로 묶이고 때로는 큰 따옴표로 묶인 코드를 보는 이유가 약간 혼란 스럽습니다. .NET 또는 C 언어에서 작은 따옴표로 묶인 경우 문자열이 아니라 문자라는 의미입니다. 답변 PHP 문자열 은 두 가지 방법이 아닌 네 가지 방법으로 지정할 수 있습니다. 참고 : 작은 따옴표 안의 작은 따옴표와 큰 따옴표 안의 큰 따옴표는 이스케이프해야합니다. $string = 'He said "What\'s up?"'; $string = "He said \"What's up?\""; 속도: 나는 큰 따옴표보다 작은 따옴표에 너무 많은 가중치를 두지 않을 것입니다. 특정 상황에서는 아마도 더 빠를 것입니다. 다음은 PH..

PHP 배열의 복사본을 다른 배열로 옮기는 방법

질문 : PHP 배열의 복사본을 다른 것으로 만드는 기능이 있습니까? PHP 배열의 복사본을 다른 것으로 만드는 기능이 있습니까? PHP 배열을 복사하려고 몇 번 불에 탔습니다. 개체 내부에 정의 된 배열을 외부 전역에 복사하고 싶습니다. 답변 PHP에서 배열은 복사로 할당되고 객체는 참조로 할당됩니다. 이는 다음을 의미합니다. $a = array(); $b = $a; $b['foo'] = 42; var_dump($a); 산출 : array(0) { } 이므로: $a = new StdClass(); $b = $a; $b->foo = 42; var_dump($a); 수율 : object(stdClass)#1 (1) { ["foo"]=> int(42) } 배열과 똑같이 작동하는 객체 인 ArrayObject..

dyld: Library not loaded:/usr/local/opt/icu4c/lib/libicui18n.62.dylib Mac에서 brew를 사용하여 노드를 설치 한 후 php 실행 오류

질문 : dyld : 라이브러리가로드되지 않음 : /usr/local/opt/icu4c/lib/libicui18n.62.dylib Mac에서 brew를 사용하여 노드를 설치 한 후 php 실행 오류 homebrew (Mojave)를 사용하여 노드를 설치 한 후 PHP가 작동을 멈 췄고 php -v 를 실행하려고하면이 오류가 발생합니다. php -v dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.62.dylib Referenced from: /usr/local/bin/php Reason: image not found 노드와 icu4c를 모두 제거하려고했지만 문제가 계속 발생합니다. 답변 업데이트-일부 주석에서 언급했듯이 brew cleanup..

PHP의 enumerations

질문 : PHP의 enumerations PHP에는 아직 네이티브 열거 형이 없다는 것을 알고 있습니다. 하지만 저는 자바 세계에서 익숙해졌습니다. IDE의 자동 완성 기능이 이해할 수있는 미리 정의 된 값을 제공하는 방법으로 열거 형을 사용하고 싶습니다. 상수가 트릭을 수행하지만 네임 스페이스 충돌 문제가 있고 (또는 실제로는 왜냐하면 ) 전역 적입니다. 배열에는 네임 스페이스 문제가 없지만 너무 모호하고 런타임에 덮어 쓸 수 있으며 IDE는 추가 정적 분석 주석이나 속성없이 키를 자동으로 채우는 방법을 거의 알지 못합니다. 일반적으로 사용하는 솔루션 / 해결 방법이 있습니까? PHP 녀석이 열거에 대해 생각이나 결정을 내 렸는지 기억하는 사람이 있습니까? 답변 사용 사례에 따라 일반적으로 다음과 같은..

객체 배열에 대한 PHPDoc 유형

질문 : 객체 배열에 대한 PHPDoc 유형 힌트? 따라서 PHPDoc에서 멤버 변수 선언 위에 @var 를 지정하여 해당 유형을 암시 할 수 있습니다. 그런 다음 예를 들어 IDE입니다. PHPEd는 작업중인 객체 유형을 알고 해당 변수에 대한 코드 통찰력을 제공 할 수 있습니다. 이것은 나중에 해당 객체를 반복 할 때 적절한 힌트를 얻을 수 있도록 객체 배열에 동일한 작업을 수행해야 할 때까지 훌륭하게 작동합니다. SomeObj 배열임을 지정하기 위해 PHPDoc 태그를 선언하는 방법이 있습니까? @var 배열은 충분 @var array(SomeObj) 은 유효하지 않은 것 같습니다. 답변 사용하다: /* @var $objs Test[] */ foreach ($objs as $obj) { // Typ..

728x90
반응형