PHPSpreadsheet installation and basic usage | Make an Excel File in PHP | PHPSpreadsheet Tutorial #1

안녕 모두 내 PHP 튜토리얼 비디오에 오신 것을 환영합니다

이 비디오에서는 PHP 스프레드 시트를 사용하여 PHP에서 파일을 생성하는 방법을 설명하려고합니다 그렇다면 PHP Excel 라이브러리와의 차이점은 무엇입니까? 사실,이 라이브러리는 PHP Excel의 동일한 작성자가 만듭니다 readme에서 말한 것처럼, PHP 스프레드 시트는 PHP Excel의 다음 버전 일뿐입니다 이는 코드 기반의 품질을 향상시키기 위해 호환성을 파괴합니다 모든 노력이 PHP 스프레드 시트로 옮겨 졌기 때문에, PHP Excel은 더 이상 유지 관리되지 않습니다

따라서이 라이브러리 사용을 고려해야합니다 당신의 다음 프로젝트를 위해 오래된 PHP Excel 대신 문서를 살펴 보겠습니다 이 라이브러리는 더 많은 파일 형식을 지원하고 스프레드 시트에서 pdf 파일을 만들 수 있습니다 이 라이브러리를 실행하려면 PHP 버전 5

6 이상이 필요합니다 또한 일부 PHP 확장 설치시이 라이브러리는 종속성을 관리하기 위해 작성자가 필요합니다 작곡가에 익숙하지 않은 분들을 위해 작곡가는 PHP의 의존성 관리자입니다 시작 페이지에서 설치 프로그램을 사용하여 Linux에 작곡가를 설치하는 방법을 볼 수 있습니다

지역적으로나 전 세계적으로 또는 Windows에서 실행 설치 프로그램을 다운로드하여 실행할 수 있으며 나머지는 처리합니다 작성기는 텍스트 기반 프로그램이므로 명령 터미널에서 실행해야합니다 내 컴퓨터에는 이미 작곡가가 있습니다 진행하기 전에 작곡가가 이미 로컬 컴퓨터에서 실행되고 있는지 확인하십시오 이제 루트 디렉토리에 새로운 디렉토리를 만들자

터미널에서 현재 작업 디렉토리를 새 디렉토리로 변경하십시오 cd 명령 다음에 경로를 사용하십시오 우리는 그것의 repo 이름을 사용하여 PHP 스프레드 시트를 설치할 수 있습니다 저장소 이름 형식은 소문자 github URL과 비슷해야합니다 지금은 작곡가 명령을 붙이자

작성자는 프로젝트에 패키지 이름이 들어있는 새 json 파일을 만듭니다 그런 다음 작곡가는 PHP 스프레드 시트에 필요한 필수 패키지를 다운로드하려고합니다 우리는 여기서 문제가 발생하는 것 같습니다 우리가 메시지를주의 깊게 읽으면, 패키지 중 하나에 fileinfo라는 PHP 확장이 필요하다는 것을 알 수 있습니다 어떤 식 으로든 내 컴퓨터에서 사용할 수 없습니다

이제 사용 가능하도록하겠습니다 PHP 구성 파일을 엽니 다 보통 phpini라고 부릅니다 텍스트 "fileinfo"를 찾으십시오

필자의 구성에서 fileinfo 확장자가 주석 처리 된 것으로 보입니다 그래서 고쳐 주자 동일한 문제가 있지만 컴퓨터에서 다른 확장명을 사용하여 실행할 수도 있습니다 그렇게되면, PHP에서 필요한 확장 기능을 사용하는 방법에 대한 간단한 Google 검색을 수행하십시오 아무 것도 잘못되지 않으면 필요한 종속성이 오류없이 설치됩니다

당신은 또한 PHPSpreadsheet가 PDF를 다루고 차트를 렌더링하기 위해 라이브러리를 설치할 것을 권장한다는 것을 여기에서 볼 수 있습니다 작곡가가 만든 공급 업체 디렉토리가 있습니다 내부에서이 프로젝트에 설치된 모든 패키지와 모든 종속 항목을 찾을 수 있습니다 autoload라는 파일이 있습니다 PHPSpreadsheet를 사용하기 위해 스크립트에서이 자동로드를 호출하면됩니다

작곡가를 사용하는 좋은 점은 fpdf와 같은 라이브러리를 추가 할 수 있다는 것입니다 domPDF 또는 tcpdf를 하나의 명령으로 실행합니다 스크립트에서이 파일을 사용하려면 동일한 자동로드 파일을 사용하십시오 이 라이브러리를 사용하려면 autoloadphp를 사용할 수 있습니다

PHPSpreadsheet src 디렉토리 내에서 직접 Bootstrapphp를 호출하십시오 기본적으로 둘 다 자동로드를 호출하는 동일한 작업을 수행합니다 autoloadphp를 사용하는 것이 좋습니다

그래서 스프레드 시트 스크립트 이름을 simple1php로 지정하겠습니다 먼저 autoload 파일을 호출하십시오 그런 다음 스프레드 시트 라이브러리를 사용하려면 다음을 사용하여 여기에서 호출합니다 PhpOffice PhpSpreadsheet Spreadsheet를 사용하십시오

지금은 시작 페이지를보고 hello world 스크립트를 복사 해 봅시다 이제이 코드가하는 것을 설명하겠습니다 먼저 autoload 스크립트를 호출합니다 PHPSpreadsheet 라이브러리를 네임 스페이스로로드하십시오 그리고 엑셀 파일을 만들기위한 xlsx 작가 클래스

당신은 PHP 네임 스페이스에 대한 설명을 넣은 링크에서 더 많은 것을 읽을 수 있습니다 그런 다음 새로운 스프레드 시트 개체를 만듭니다 첫 번째 시트 인 현재 활성화 된 시트를 가져옵니다 A1 셀의 값을 "Hello World!"로 설정하십시오 다음으로 방금 만든 스프레드 시트로 xlsx 개체를 만듭니다

서버에 hello world dot xlsx라는 파일에 저장하십시오 이제 브라우저에서 스크립트를 실행 해 봅시다 죄송합니다, 아파치 서버를 시작하는 것을 잊어 버린 것 같습니다 브라우저에는 아무 것도 일어나지 않습니다 왜냐하면 전에 말했듯이 파일 결과가 서버에 저장되기 때문입니다

이제 서버에 저장하는 대신이 파일을 브라우저에 다운로드하려고하면 어떻게 될까요? 그렇게하기 위해서는 생성이 완료된 후 페이지를 파일로 리디렉션하면됩니다 그러나 나는이 방법을 추천하지 않는다 지금은 그냥 사용해 보자 세미콜론을 잊어 버렸고 이름이 다소 틀린 것 같습니다 내가 말했듯이, 나는이 방법을 추천하지 않는다

이제, PHPSpreadsheet와 함께 제공되는 IOFactory 클래스를 사용하는 것이 좋습니다 IOFactory는 파일에서 읽고 쓸 수있는 내장 클래스입니다 IOFactory는 또 다른 PHPOffice 라이브러리와 함께 제공됩니다 PHPWord 및 PHPPresentation과 같은 이제 스크립트를 새로운 스크립트로 복사 해 봅시다 쓰기 부분을 제거하고 대신 IOFactory를 사용합시다

우리는 IOFactory의 createWriter 메소드를 사용할 것이다 또한 스크립트에서 IOFactory 클래스를로드하는 것을 잊지 마십시오 엑셀을 파일로 저장할 필요가 없으므로 PHP 출력에 직접 저장합니다 그것을 시도해 봅시다 그것은 뒤섞여 보인다

이상한 캐릭터가 많이 있습니다 이것은 우리가 기대했던 것이 아닙니다 우리가하는 일은 이진 파일을 만드는 것이므로, 아직 서버와 브라우저는이를 일반 텍스트 파일로 취급합니다 헤더를 변경하여이 파일을 Excel 파일로 처리하도록 브라우저와 서버에 지시합시다 Google의 마술을 통해 Excel 헤더가 어떻게 보이는지 봅시다

콘텐츠 형식 헤더를 복사하여 콘텐츠 형식을 Excel 파일로 정의 해 봅시다 이제 작동 중입니다 파일 이름이 Excel 파일의 경우 다소 잘못되었습니다 헤더에 뭔가를 추가해 봅시다 이제 예상대로 작동합니다

이것으로이 장의 튜토리얼을 마칩니다 설명에 소스 코드에 대한 링크를 넣습니다 댓글 섹션에서 무엇이든 물어보십시오 내 비디오를 친절하게 좋아하고 내 채널을 구독하십시오 다음 챕터에서 만나요

15 Technique to Exploit File Upload Pages – Ebrahim Hegazy, HackIT-2017

내 이름은 Ibrahim Hegazy입니다 오늘은 약 15 가지 기법을 사용하고 있습니다

파일 업로드 페이지 나는 현재 Deloitte Netherlands의 고위 컨설턴트입니다 나는 나 자신을 보안 녀석이라고 부르고 싶지만 실제로는 이런 종류의 보안이 아니다 물론, 아니, 물론, 아니 네

나는 최고 안보로 평가 받았다 야후의 연구원,하지만 2014 년 3 개월 전, 그들의 버그 현상금 프로그램의 취약점들 예, Ali는 이미 버그 현상금 프로그램이 무엇인지 설명합니다 예 오늘의 의제입니다

음, 이 개념을 설명하는 "내가 누구인가"의 핵심 개념은 개발자가 코드를 더 나은 방법으로 수정하는 방법을 알고 싶습니다 개발자는 40 명의 공격자를 갖고 있습니다 즉, "앱 경량 펜 테스터 (testers) "또는"화이트 모자 해커 (white hat hackers) "라고 불렀다 개발자 그래서 이것은 오늘날의 밑입니다

어떤 파일을 설명 할게 업로드는, 파일 업로드 페이지의 주요 구성 요소는 무엇이며, 나는 개발자가 완화를 위해 수행하는 작업과 같이 각 부분을 설명합니다 파일 이름 확인, 콘텐츠 사이트 유효성 검사, 파일 콘텐츠 유효성 검사 그리고 나서, 어떻게 해커가 그것을 우회 할 수 있는지 그렇습니다 그리고 결론적으로, 저는 최선의 관행처럼 개발자 : 이러한 공격을 완화 할 수있는 가장 좋은 방법은 무엇입니까? 너도 알다시피

개발자들은 결국 이겨야 만합니다 또는 해커가 항상 이기고, 누군가는 결국 승리해야한다 예, 이것은 세션 마치 한 곳에서 최고의 기술로 모든 파일 업로드를 모으는 것과 같습니다 그래서, 침투 테스터 나 버그 사냥꾼이라면 꼭 가야 할 필요는 없습니다

파일 업로드 작업을 우회하는 방법을 검색하는 인터넷 크롤링 한 곳에서 모든 것을 갖췄습니까? 물론 개발자에게 도움이됩니다 예, 이것은 티저입니다 이것은 YouTube에서 누군가가 발견 한 취약점입니다 이것은 YouTube의 진짜 등 'passwd 파일입니다 그래서, 그는 파일을 읽을 수있었습니다

YouTube 서버에서이 파일은 실제 파일입니다 나는 이것을 설명 할 것이다 세션 나는 티저로 여기에 넣었습니다 그래, 많은 사람들이 티저가 뭔지 알지? 네

괜찮아 그래서, 주 파일은 "청색 페이지"에는 거의 다섯 가지 주요 구성 요소 인 불이 들어 있습니다 언젠가, 파일 크기 부분은 아니지만 항상 헤더 자체와 함께 보내야합니다 그래서 우리는 첫 번째가 있습니다 – 파일 이름은 파일 번호입니다 확실해, 당신은 그 파일 유형을 볼 수 있어야합니다

파일 유형은 실제로 예를 들어 PNG가있는 경우 확장 프로그램을 기반으로 일부 테이블에서 거의 이미지 백 슬래시, 미안, / PNG 또는 MS PDF, 죄송합니다, PDF 파일 인 경우, PHP와 같은 응용 프로그램은 / XPHP와 비슷합니다 네 그리고, 매직 넘버 따라서 개발자를 위해 거기의 파일 내용은 모든 파일간에 유사성이 없습니다 맞습니까? 그러나 비슷한 것은 언제나 – 매직 넘버입니다

마법 번호는 무엇입니까? 매직 넘버는 마치 시작 줄을 시작하거나 GIF가있는 경우와 같이 파일 식별자를 보냅니다 모든 이미지를 GIF로 시작합니다 좋아, 89,98,83,89 GIF89 또는 GIF87 그런 다음 ":"다음 이미지 자체의 내용을 표시합니다 그래서, 이것이 마술입니다

숫자가 작동합니다 일부 개발자는 이것을 검증하고 있습니다 (예 : WordPress) 당신이 이것을 사용했다면 Alex는 우리가 어떻게 그것을 우회 할 수 있는지에 대해서도 이야기했습니다 그 종류의 검증 그리고 나서 파일 내용과 파일 크기는 물론, 예, 개발자 검증 시나리오를 건너 뛰도록하겠습니다

좋아요, 개발자들은 블랙리스트를 정말 좋아합니다 그래서, 오, PHP 파일, 아니, 나는 싫어 이 하나는 PHP를 블랙리스트로 보겠습니다 이것이 첫 번째 시나리오입니다 사용할 수 있습니까? 이런 종류의 검증에 무슨 문제가 있습니까? 뭔가 있어요? 고르그에가는거야? 나는 이미 그 해결책을 썼다

당신은 그것에 대해 생각해야합니다 이 유효성 검사에서 무엇이 잘못 될 수 있습니까? 괜찮아 따라서 개발자는 주로 파일 이름의 유효성을 검사합니다 regex "정규 표현식"이라고 불린다 그래서,이 경우, 세 번째 라인 "if"로 시작하는 것입니다

정규식은에서 유효성을 검사합니다 파일의 확장자는 PHP 또는 PHP1 또는 PHP2 등입니다 마지막에는 "$"기호와 같은 기호가 있기 때문에 파일이 끝나면 이러한 확장 기능 중 하나를 사용하십시오 그러나 사례 인스턴스의 유효성을 검사하지는 않습니다 PHP 같은 대문자와 같아 지려고한다면, 무언가와 같은 무감각 대문자, 대문자 일 경우이 유효성 검사를 건너 뜁니다

그래서, 이것이 첫 번째입니다 유효성 검사 블랙리스트 작성 개발자가 파일을 완화하는 방법 업로드 그들은 파일이 PHP로 끝나지는 않지만 파일이 대소 문자를 구분하지 않습니다 그래서 PHP를 작성할 수 있습니다 쉘처럼, PHP 버튼의 대문자를 쓰면, 이런 종류의 것을 무시할 것입니다

확인 네, 두 번째 시나리오 블랙리스트 그리고 우리는 적절하게 파일 확장자의 유효성 검사, 파일 이름의 민감도 그 자체 그들은 실제로 모든 것을 유효하게하고 있지만, 다른 확장, 내 말은, 이런 식으로, 코드가 나빠지는 것입니다 블랙리스트에 대해 나쁜 것

당신은 블랙리스트에 올 수 없습니다 모든 가능한 확장 기능을 알고 있지? 그리고 매일 매일 같이 새로운 것이 있습니다 기술의 변화, 새로운 기술이있을 수도 있고 새로운 기술이있을 수도 있습니다 신장 예를 들어, 해당 파일은 PHT라고합니다

PHT는 PHP 파일을 실행할 수있는 확장 기능입니다 그래서, 그들이 개발되면 개발자는 PHP, PHP1로 끝나는 모든 파일을 대문자로 차단합니다 작은 등 당신은 그것을 무시할 수 있습니다, 예를 들어, PHT 파일 따라서 블랙리스트 기술을 우회하는 방법이지만 Linux에서는 사용하지 마십시오 Windows에서 이에 상응하는 기능은 무엇입니까? 여기에 우리가 Windows에서 이에 상응하는 이동합니다

만약, 예를 들어, 개발자가 완화하거나, 말하자면 ASP, ASPX를 블랙리스트에 올리면됩니다 파일 여전히 호출 된 확장명을 사용할 수 있습니다 미안 해요, 때문에 speedodll, 나는 괜찮아요

그래서, 당신은 이것을 감당할 수 있습니다 예를 들어, ASA 또는 CER이라는 확장을 사용할 수 있습니다 CER은 무엇입니까? 우리는 일반적으로 그것을 사용하지 않기 때문에 CER은 다음과 같습니다 증명서, 맞지? 그러나 아니, 제 생각에, 저는 오래된 ASA라고 생각합니다

해결되지 않았습니다 터치 된 버전 75 그것은 ASA로 끝나는 파일을 다음과 같이 실행하는 것을 정말 좋아합니다 이것이 ASP 파일 인 경우

예를 들어, 여기에 ASP Shell이 ​​있습니다 CET, CER을 볼 수있는 이름은 죄송합니다 파일 업로드를 우회했습니다 왜? 개발자는 ASP 및 ASPX 확장 만 블랙리스트에 올리기 때문입니다 그러나 여전히 동일한 ASP 코드를 실행할 수 있지만 다른 확장명을 사용하면됩니다

예 시나리오 시나리오 3 블랙리스트 모든 실행 확장 프로그램을 우회합니다 그래서 예를 들면 개발자는 모든 ASP에 모든 PHP, 모든 HTML 또는 AHTML, BHTML을 블랙리스트에 올렸습니다

모든 것, 모든 가능한 것, 실제로 XSS를 실행하거나 저장할 수는 있지만, EML이라는 확장을 사용합니다 EML이 무엇인지 알고 있습니까? 네, 예를 들어 Thunderbird를 사용하는 경우 Thunderbird는 다음과 같습니다 아웃룩,하지만 리눅스에 Windows에서도 사용할 수 있습니다

예, 전자 메일로 보내면 EML로 내 보냅니다 그래서, 이것은 일반적으로 EML을 여는 경우입니다 파일이 처리되지만 실제로는 Internet Explorer에서만 작동합니다 따라서이 기능은 Internet Explorer에서만 악용 될 수 있습니다 그래,이 경우 끈의 XSS는 일종의 HTML 컨텐트로 실행되기 때문에 트리거됩니다

그래서, 파일 내용과 검은 스크린 샷을 볼 수 있습니다 "안녕하세요"라고 말하면서 XSS 페이로드는 배포 된 단어를 확인하는 것과 같습니다 괜찮아 네 그 링크에 대한 자세한 내용은 여기에 있습니다 당신이 가고 있다면, 정말로 원한다면 이 인코딩 때문에 POC 자체 및이를 악용하는 방법에 대해 자세히 알아 보려면 인코딩은 까다로운 일입니다

쉽지만 까다 롭습니다 네 그래서 우리는 이제 개발자가 사용하는 블랙리스트 기술을 알고 있습니다 허용 목록이란 무엇입니까? 개발자가 블랙리스트에 올라 있지는 않지만 화이트리스트에 올라 있다면, like, 허용 된 확장 기능 만 웹 사이트에 업로드 할 수 있습니다 괜찮아

대본 4이 정규식에 어떤 문제가 있는지 알아볼 수 있습니까? 뭐라고 생각하니? 이 거절에 여기에 잘못 가고 있니? 네 따라서 개발자는 파일에는 해당 확장이 들어 있습니다 하지만 그는 만들고 있으며, 만들고 있지 않습니다 파일은이 확장자로 끝납니다

그래서, shellJPGPHP라는 파일을 업로드하면 JPG가 포함되어 있습니다 그러나 그것으로 끝난다 PHP

따라서 파일에 해당 이름이 포함되어 있는지 확인하는 중이지만 만들지는 않습니다 물론, 허용 된 확장 기능으로 만 끝납니다 그래서, 이것은 우리의 백색입니다 네 그래서, 예를 들어,이 정규식에서 이것을 볼 수 있습니다 : regex 101이라는 사이트가 있다면이 웹 사이트를 사용하여 일종의 문자열에 대한 정규 표현식, 작동하는지 여부

예, 예를 들어 JPGPHP를 동일한 파일로 저장하는 것을 보았습니다 이전 코드에서 사용 된 regex와 일치하는 바이 패스입니다 파일에 JPG가 있지만 JPG로 끝나지 않습니다 맞습니까? 괜찮아

지금 시나리오 번호 5 널 바이트 주입입니다 null 바이트 란 무엇입니까? 누군가가 우리에게 손을 줄 수 있습니까? null 바이트 란 무엇입니까? 네, null 바이트는이 사람들을위한 터미네이터입니다 "C"배경에서 그것은 터미네이터의 일종으로 100 % 0입니다

제로 이것은 null 바이트입니다 내 말은, 코드처럼, PHP는 갈래졌습니다 C, 맞지? 따라서, 그들은 "C"에 주로 기초를두고 있습니다 구문에 상관없이 C에있는 문제가 PHP에 존재할 수 있습니다

네 그래서, 터미네이터 건 뭐니? 예를 들어 일부 개발자는 파일 이름은 자신을 업로드하지만, 파일의 이름을 지정하면 쉘과 같은 이름이됩니다 PHP100 % 00JPG JPG, 무슨 일이 일어날 지 알 수 있습니다

우연히 있다 문제는 관찰자가 점만 이해하고 처음에는 확장자는 일반적으로 100 % 00이므로 종료 문자입니다 그래서, PHP는 무엇이든지 후, "P"는 종료됩니까? 그것은 존재하지 않는다 당신은 그것이 존재하지 않는다고 말할 수 있습니다 이제 파일의 이름은 shadow PHV입니다

너는 할 수있다 또한 16 진수 표현을 사용하여 바꿉니다 그것은 또한 작동합니다 어쨌든 같은 기술 이것은 샘플 코드입니다

만약 당신이 이것을보고 있다면, 나는 의미합니다 이것은 코드 자체 내에서 어떻게 보이는지입니다 시나리오 6 예 약간 웹 사이트는 SVG이기 때문에 그렇습니까? SVG는 일종의 이미지이지만 거의 발명 했어

내 말은, 그들은 html5와 관련이있다 그것이 갔을 때, html5는 html5로 시작하여 성장하기 시작했습니다 SVG는 비슷한 XML 컨텐츠 따라서 개발자가 SVG 이미지를 업로드 할 수 있도록 허용하는 경우 여전히 XML 콘텐츠를 넣을 수 있습니까? XML 컨텐트는 무엇을 할 수 있습니까? 정확하게 XXE 또한 XML에서 많은 것을 할 수 있지만 왜 개발자가 SVG 파일에 XML이 포함되어있는 경우 SVG 파일을 신뢰합니까? 왜냐하면 이것은 개발자가 생각하는 방식입니다 개발자는 항상 보안이 아닌 유용성에 대해 생각하고 있습니다

그들은 이 방법을 사용하여 고객이 만족하게 될지에 대해 생각해보십시오 신청 우리 고객을 만족시키는 것은 무엇이든 허용해야합니다 이것은 개발자의 업무 방식과 해커가 좋아하는 방식입니다 네, 이것은 비디오 업로드 된 것을 허용합니다

이것은 착취입니다 나는 설명 할거야 그것은 VK에 반대 해왔다 VK, 나는 러시아의 페이스 북이 비슷하다고 생각한다 또한, facebook

com에는 동일한 취약점이 있었지만 YouTube에는 동일한 취약점이 있으며 이게 바로 솔직히 말하면, 이것은 개발자를 악용하는 것이 아닙니다 잘못 당신은 당신이 개발 한 서버 측 라이브러리를 이용하고 있습니다 FFmpeg, 예 그래서 FFMPEG 일 때, 예를 들어 YouTube와 같은 비디오를 업로드 할 때, 이 명령을 실행합니다

예를 들어,이 명령을 실행할 것입니다 그것은 FFMPEG-I 배치 끝에 있습니다 videoavi 또는 m3u 또는 기타 확장을 누른 다음 mp4로 변환합니다 따라서 사용자는 미리보기 할 수 있습니다

이 파일은 내용이 다음과 같이 보이는 경우입니다 예를 들어 m3u로 저장하면됩니다 그래서, 당신이 알아 차릴 때, 거기에 무언가가 고무로되어 있고 ETC passwd를 제출하지 않은 파일입니다 너는 ETC passwd 파일을 읽으려고합니다 파일이 서버에 업로드되면 이 명령을 사용하여 변환 된 다음 파일을 볼 때 명령이 실행됩니다

그래서 FFMPEG의 취약점이었습니다 당신이 개발자들을 비난 할 수있는 무언가가 아닙니다 왜냐하면, 모든 것이 YouTube와 같은 모든 웹 사이트, Facebook은 어쨌든 취약했고 트릭은 여전히 ​​작동합니다 사실, 나는 많은 침투를 경험했다 테스트, 맹세,이 트릭을 사용하고 작동하지만 지금은 수정되었습니다

내말은, 물론 서버를 업데이트하면 문제가 해결됩니다 네, 트래버스 덕분에 여전히 화이트리스트에 포함됩니다 예를 들어, 개발자는 흰색입니다 JPG 이미지 만 업로드되고 올바른 방식으로이를 수행하고 있음을 나열하면, 그것을 무시할 수는 없으며 PHP 파일을로드 할 수 없습니다 네가 할 수 있는게 뭐지? 케이스? 왜냐하면, 내가 말했듯이, 테스터 또는 취약성 사냥꾼으로서, 당신은 여전히 시원한 걸 찾으려면, 맞지? 당신은 버그 현상금 창조자를 편리하게해야합니다

프로그램 제작자 또는 소유자와 마찬가지로 관리자 일 수도 있습니다 복용하는 경우 침투 테스트, 당신은 뭔가 멋지다는 것을 발견해야합니다, 맞습니까? 그러나, 당신은 단지 JPG 파일 업로드 허용 이 경우 "디렉토리"라는 것을 사용할 수 있습니다 탐색 (traversal) "을합니다 따라서 PHP / images / 2017 / thumbnails / images

JPG, 이것은 매우 긴 것입니다 정상이야, 맞지? 하지만 내 파일을 logoJPG 또는 logoPNG를 클릭 한 다음 "/", "/"을 실행하면 메인 웹 사이트 디렉토리에 저장하고 파일을 대체했습니다 내말은, 그것은 웹 사이트의 로고를 대체했습니다

이제 로고 웹 사이트를 대체 할 수 있습니다 내 회사 이름과 같은 멋진 정보 또는 시체를 해킹하거나 테스트를 원한다면 테스트하십시오 이것은 불리는 것입니다 – "디렉토리 트래버 설" 파일을 업로드하여 디렉토리를 벗어나려고합니다 디렉토리가 아닌 다른 디렉토리 에있다

그래서, 이것은 정상적인 것입니다, 당신은 단지 당신의 파일 이름을 유지할 수 있습니다 로고 그대로입니다 JPG 그리고 /

// 이것이 될 것입니다 당신의 파일 이름

그리고 이것은 취약한 코드 샘플입니다 예, 복사되었습니다 페이스 북 팀에서 예 그리고 시나리오 번호 9 그럼, 또한 전체 내용 및 파일 이름

PHP 라이브러리라는 펑크가 있습니다 PHP-GD 그래서, 개발자로서, 나는 파일 업로드가 JPG로만 파일 이름을 가지고 있지만 내용도 JPG입니다 그래서, 어떤 개발자는 이미지 리사이즈 또는 PHP 함수 호출을 PHP 함수에 전달하고자합니다 같은,하지만 그들은 주로 PHP는 – GD 일에 따라 변환하는 업로드 된 파일을 이미지 파일에 업로드하면 파일을 JPG 파일입니다

그들은 악의적 인 내용을 업로드하지 않도록하고 싶습니다 내용을 파일 자체에 저장합니다 예 그 놈이 여기 멋진 물건을 만들었 어 이것에 대해

이것은 "책 신선한"이라는 웹 사이트의 취약점이었습니다 네 그래서 그것을 우회하는 방법? 이미지 파일을 동일한 정확한 개발자 설정 따라서 PHP 코드를 로컬 서버 또는 뭔가 그런 다음 JPG 파일을 일반 JPG 파일을 선택한 다음 해당 파일의 변경 내용을 확인합니다 그래서, 어떻게 했어? 후

변환 중입니다 이전 파일과의 유사점은 무엇입니까? 그리고 새로운 파일, 왜냐하면 무언가와 JPG 자체가 대체 될 수 없었기 때문에, 권리? 예를 들어 공격자가 업로드 또는 삽입하는 것을 보았 기 때문에 메타 데이터 내부의 PHP 코드도 추적됩니다 이 PHP-GD는 이미지 내부에 메타 데이터가 존재하지 않도록합니다 따라서,이 작업을 우회하려면 16 진수를 사용하여이 작업을 수행 할 수 있습니다 사실은

그래서 이미지를 JPG로 변환하고 있습니다 PHP-GD를 사용하는 것과 같습니다 의회 이제 JPG 파일 두 개, 이전 파일과 JPG, 새 파일 인 JPG가 있습니다 개종했습니다

그는 두 가지 모두를 16 진수로 변환 한 다음 검색을 시작합니다 유사점 페이로드와 유사한 유사성 예를 들어, 페이로드가 20 자와 같은 경우 20 개를 찾아야합니다 문자, 20 유사점 따라서 코드에서 20 비트 유사도로 다음과 같이 할 수 있습니다

PHP 컨텐츠로 대체하십시오 삽입하고 싶습니다 그런 다음 이미지가있는 페이지를 업로드하십시오 변환 될 때, 같은 비트가 거기에 남아있을 것이고 PHP 코드를 실행할 수 있습니다 이 스크린 샷과 같습니다 이것은 링크이거나 POC 파일로 이동할 수도 있습니다

그만큼 당신이 사용할 수있는 링크와 POC 파일은 실제로 중요하지 않습니다 SVG Facebook에서 4 만 달러를 샀던 사람에 대해 들어 본 적이 있습니까? 그것은 약간이었다 "이미지 매직 (image magic)"이라 불리는 도서관에서 악용됩니다 "Image magic"은 취약점이있었습니다 영향을받는 서버 나 "이미지"를 사용하는 서버가 실행될 때 코드를 실행할 수 있습니다 마술 "이라고 부르며 그 이미지를"비극적 인 이미지 "라고 부릅니다

그렇지 않았습니다 아무도 없었습니다 그 사람은 페이스 북에서 그것을 발견하고 40,000 달러를 얻을만큼 충분히 운이 좋았다 하나 네

따라서 코드 자체를 볼 수 있는지 잘 모르겠지만 나는 여기에서 이것을 극대화 할 수 없다 그러나 어쨌든, 그가 사용한 페이로드는 간단하게, 당신이 실행하는 것을 쓰고있을 때, 나는 말할 수있다 괜찮아 그래서, 그는 리눅스 '/'의 메인 디렉토리에있는 디렉토리 목록 '/'다음 도메인으로, 하위 도메인으로 자신의 도메인 이름으로 하위 도메인을 보냅니다 그래서, 이 경우 어떻게됩니까? 핵심은 모든 DNS 로그 작업을 수행하기 때문에 DNS 쿼리 먼저

따라서 DNS 쿼리가 공격자 서버로 이동하면 로그를 모니터링 할 수 있습니다 이제는 서버의 데이터가 무엇인지 알고 있습니다 파일, ETC / PASSWD 코드의 내용은 무엇입니까? 그것 하지만 아시다시피 도메인 이름의 최대 크기는 64입니다 따라서 할 수 없습니다 따라서 64 비트를 16 진수로 변환하거나 Base64와 같이 변환 할 수 있습니다

각 요청에 대해 64 바이트를 보내는 동일한 시작 네 그래서 그 남자는 좋은 페이 스북 서버에서 명령을 실행합니다 네 시나리오 번호 11

이것은 모든 해커 또는 모든 오래된 학교와 같습니다 IIS 버전 6 및 65의 사용자 7이 작동하는지 여부는 확실하지 않지만, 왜냐하면 내가 그렇게하지 않았기 때문입니다 7 따라서 파일 이름을 ASPX로 업로드 할 수 있습니다

ASPX : 1JPG 그래서,이 일은 어떻게 될까요? 케이스? IIS 서버, 서버 자체가 다음 첫 번째 실행합니다 신장 그러나 개발자 코드는 항상 마지막 확장자에서 유효성을 검사합니다 그러나 거기 구분 기호입니다

구분 기호는 ':'입니다 그래서 IIS는 IIS가 ':'를 볼 때 거의 실행 된 FRX가 첫 번째 확장 프로그램입니다 첫 번째 명령 만 실행합니다 신장 그래서,이 경우 어떻게됩니까? 즉, 파일을 검증하는 개발자 그가 원하는 파일 이름이 같기 때문에 이름이 만족됩니다

웹 서버 자체가 첫 번째 확장을 실행합니다 그래서, 그 공격자도 만족, 이것이 실행되고 있기 때문입니다 더 이상 작동하지 않습니다 나는 아무도 IIS 6 또는 65를 사용하지 않는 것처럼 말입니다

하지만 내가 말했듯이, 나는 모든 것을 갖기를 기대하고있다 한 곳에서 가능한 기술 그래서 나는 옛 학교에 대해서도 이것을 언급했다 해커 물론 DOS

그것은 파일 크기 유효성 검사의 일부였습니다 그래서, 개발자가 거의 모든 것을 검증한다고 가정 해 봅시다 업로드 할 수 없습니다 악의적 인 파일, 디렉토리 트래버 설을 할 수 없으며, 자신을 우회 할 수 없다 파일 이름에 대한 유효성 검사가 가능하지만 여전히 파일의 가능성이 있습니다

크기가 확인되지 않습니다 그래서, 업로드 할 수 있다면 100 개의 요청을 보내고, 백 업로드 요청 및 각 파일은 20MB와 같습니다 이 서버는 DOS가 될 것입니다 모두 서비스 거부 공격입니다 그래서, 그것은 여전히 ​​가능성이 있습니다

개발자는 파일 업로드 크기의 유효성을 검사해야하며 네 그리고 나서, 시나리오 11, 그저 돌아온 것과 같습니다 승인 WordPress의 마법의 숫자 플러그인에서 뭔가를 가리 키려면 페이지, 너, 너, 미안, 이미지 업로드, 페이지 업로드 중

파일을 업로드 한 경우 PHP는 여전히 파일이지만 이미지에 마법 번호가 포함되어 있습니다 예를 들어, GIF 이미지에서 GIF와 같은 것입니다 98 죄송합니다 89 또는 87을 입력하고 ':'다음 일반 PHP 콘텐츠를 입력하십시오 PHP는 그 당시에는 WordPress를 사용 했었지만 그 당시에는 파일 내용 만 검증하고 있었고, 이 코드는 어쨌든 작동하도록 이미징됩니다

그리고 나서, 매직 넘버 이 마법 번호를 PHP 코드에 삽입하여 우회 할 수도 있습니다 또한 RCE의 zip 파일을 통해 그래서 페이스 북에서도이 사이트를 시도 할 때 정상적인 운영 체제 명령 인 파일을 압축 해제합니다 이상해 네

시나리오 14 당신이 할 수 있다면 잘 모르겠다 속도 태깅에서 페이로드를 확인 하시겠습니까? 그래서,이 경우, 나는 시나리오, 내가 테스트 한 웹 사이트에서 묻고있는 시나리오 사용자가 직업을 신청할 수 있습니다 그래서, 그들의 웹 사이트 또는 무엇인가 그렇게, 그들은 묻고있다 당신은 CV를 업로드 할 수 있습니다

하지만 업로드 한 파일이나 시도하려는 파일 업로드가 파일 이름의 유효성을 검사하지 않습니다 방금 데이터베이스에 삽입되었습니다 그 자체로 파일 이름 자체는 검증되지 않습니다 따라서 파일이 삽입 된 경우 다시 데이터베이스에 직접 들어가면 두 번째 주사를 할 수 있습니다 맞습니까? 하지만 너는 이것은 데이터베이스 측에 저장된 것이기 때문에 출력을 볼 수 없습니다

HR 직원과 같은 사람 또는 누구나 볼 수 있습니다 출력을 볼 수 없습니다 이 때 시간이 흐르면 ​​"대역 외 (out-of-band)"보안 주입이라고하는 것을 사용해야합니다 뭐 "out-of-band"안전한 주입은 무엇입니까? 너는 보통처럼 요청,이 경우 정상 요청은 요청해야합니다 외부 파일은 귀하가 관리합니다

따라서 개발자, 예를 들어 X가 실행되면 코드가 실행되고 일부 HR 담당자는 다음과 같습니다 이 메시지는 서버 로그에서 정상적인 요청으로 간주됩니다 그래서, 이제 우리가 작성한 SQL 명령이 실행되었음을 알게되었습니다 그러나 이것은 단지 SQL Server 및 aspnet에서만 작동합니다

불행히도 PHP에서는 작동하지 않습니다 및 MySQL 예, 이것이 마지막 기술입니다 "십자가 도메인 데이터 하이재킹 (hijacking) "또는"크로스 사이트 데이터 하이재킹 (cross site data hijacking) "등이 있습니다 그래서

이 경우 우리는 플래시 파일을 이용하고 있습니다 파일 그래서, 왜 플래시 파일입니까? 네, 이름을 바꿀 수 있다면 PDF, JPG 또는 확장명이 허용되는 것과 같은 플래시 파일 그리고 파일 내용 자체, 웹 서버를 기반으로 파일을 업로드합니다 주문 했어, 알았어, 알았어

웹 브라우저는 실제로 사이에 무엇이든 실행하는 것을 좋아합니다 플래시 파일과 마찬가지로 일반 객체 태그입니다 예를 들어,이 페이로드입니다 만약 너라면 이 태그 안에 언로드 된 플래시 파일이나 JPG 파일을 넣으면 객체 태그가 실행되지 않으면 일반 플래시 파일로 실행됩니다 사용 당신이 그것을 제어 할 수 있기 때문에 플래시 파일, 당신은 크로스 도메인 요청을 할 수있는, 권리? 교차 할 수 있으며 교차 도메인 요청을 제어 할 수 있습니다

플래시 그것은 항상 같은 스트라이크와 같습니다 : 허용 된 모든 것, 모두 허용하는 것 태만 네, 이제 우리는 이것을 URL과 함께 할 것입니다 POC 파일 그리고 지금, 개발자들을위한 결론

당신이 할 수있는 일은 무엇입니까? 이 모든 우회 기술을 완화하거나 유효성 검사를 우회 할 수 있습니까? 그래, 우선, 나는 그것을 좋아한다 사실, CDN 콘텐츠 전송 네트워크를 사용할 때 콘텐츠 배달 네트워크, 정말, 캐시에만 모든 콘텐츠의 캐시, 같은 JS 파일, CSS 파일은 일반적인 파일을 캐싱하고 실행할 수있는 것처럼 말합니다 하지만 그들은 기본적으로 PHP 나 HTML과 같은 내용을 실행합니다 실행 파일을 무시하십시오 항상 가장 먼저 파일을 만드는 것입니다

다운로드 가능하며 실행 가능하지 않습니다 그래서, "content position"이라는 헤더가 있습니다 이 헤더를 사용하여 예를 들어 당신은 브라우저가 항상 실행 불가능한 파일을 다운로드하도록 요청할 수 있습니다 따라서 파일이 다운로드되고 있기 때문에 대부분의 공격에 안전합니다 실행되지 않으면 PHP 코드가 실행되지 않습니다

그래서, 당신은 대부분 안전합니다 또한 파일 크기를 항상 확인하십시오 왜냐하면 물론 당신이 원하지 않기 때문입니다 귀하의 사이트에 대한 DoS 공격처럼 느껴지십시오 또 다른 좋은 기술은 – 거의 업로드 된 파일의 이름을 바꿉니다

그래서, 파일 이름이 무엇이든간에; 너는해야한다 신경 쓰지 마세요 무작위로 파일 이름을 바꾸면됩니다 허용 된 확장자를 파일 끝에 추가하십시오 그래서 이것이 PHP이고 그것이 어떻게 든 우회 되었더라도 여전히 무대입니다

JPG로 이름을 바꾸고 임의의 파일처럼 만들면 공격자가되지 않습니다 그것을 붙잡을 수 있습니다 그리고 그것을 잡으면 여전히 JPG 파일입니다 맞습니까? 예 그것들은 개발자를위한 조언입니다

바라건대, 너희들, 이거 좋아 그리고 우크라이나 사람을 읽는 사람들은 내가 생각하기에, 당신은 내가 무엇인지 이해할 것입니다 여기에 [음악]

Google Drive SDK: Writing your first Drive app in PHP

남성 GDG는 매우 친절합니다 흥미로운 개발자 커뮤니티

여성 연사 : 나는 기쁘다 이 질문을했습니다 MALE SPEAKER : 마술이 일어나는 곳입니다 여성 연설자 : 이것은 주로 질문이며 대답해라 그래서 당신 중 누구라도 질문을하고 싶다면 – 에릭 길모어 : 다시 Google 개발자 라이브에 오신 것을 환영합니다

저는 Google 드라이브의 기술 작가 인 Eric Gilmore입니다 개발자 관계 팀 그리고 오늘 나와 함께 클라우디오입니다 CLAUDIO CHERUBINO : 안녕하세요 에릭 길모어 : – 같은 팀의 엔지니어 인 케루 비노

그리고 훌륭한 엔지니어, 나는 덧붙일지도 모른다 최근에, 그는 새로운 일을 쓰는 꽤 많은 일을했습니다 우리가 공개적으로 선보이는 코드 샘플 선적 서류 비치 그리고 오늘 그 중 하나에 대해 자세히 이야기하고 싶습니다 CLAUDIO CHERUBINO : 고마워, 에릭

그래서 우리는 최근에 – 아마 이번 주 초에 – 우리는 새 문서를 문서 도구에 추가하십시오 developersgoogl의 빠른 시작 페이지입니다 ecom/drive/quickstart를 참조하십시오

드라이브 API는 약 10 분 정도 소요됩니다 그래서 당신은 아무것도 시작하지 않습니다 그리고 완전한 명령 행 응용 프로그램으로 끝납니다 우리가 지원하는 언어 중 하나 인 Java, 파이썬, PHP, NET 및 루비

그리고이 응용 프로그램은 당신을 위해 인증을 수행합니다 파일을 Google 드라이브에 업로드 할 수 있습니다 마지막으로 다른 Google 개발자 라이브 이벤트를 진행했습니다 일주일에 파이썬에서 이와 비슷한 것을 다루고 있습니다 그래서 파이썬에서 이것에 대해 배우고 싶다면, 당신이 볼 수있는 우리 도서관의 비디오 오늘 우리는 다음을 수행하여 같은 일을 할 것입니다

하지만 PHP에서 그래서 우리는 그들이 가리킬 수있는 비디오 목록을 가지고 있습니다 맞습니까? 에릭 길모어 : 물론 YouTube의 모든 드라이브가있는 드라이브 YouTube 재생 목록이 있습니다 최근 동영상 및 Google I / O의 일부 동영상 너는 볼 수 있었다

우리 개발자 옹호자 중 한 명이 웹 세미나를 열었습니다 그러니 제발, 재생 목록을보고 그것을 확인하십시오 그러나 특히, 파이썬을 찾고 있다면 빠른 시작, 설명되어 있습니다 이 페이지에서도 설명합니다 이 페이지는 모든 언어를 다룹니다

클라우디오 (Claudio)가 말했듯이 오늘날 우리는 PHP에 중점을 둘 것입니다 그러나 모든 언어는 여기에서 다룹니다 CLAUDIO CHERUBINO : 네, 맞습니다 실제로, 원하는 언어가 무엇이든, 언제 이 명령 줄 응용 프로그램을 작성하려면, 따라야하는 5 단계가 있습니다 Google 문서 도구와이 페이지에 설명되어 있습니다

우리 앞 첫 번째 단계는 드라이브 API를 사용 설정하는 것입니다 그런 다음 Google 클라이언트 라이브러리를 설치합니다 우리가 선택한 프로그래밍 언어 샘플을 설정하고 샘플을 실행하십시오

그리고 당신이 그것을 좋아하고 더 많이하고 싶다면, 다음에 할 일에 대한 제안 에릭 길모어 : 궁금한 점이 있으시면, 클라우디오는 샘플을 읽으면이 페이지를 씁니다 그리고 우리는 당신에게 이것을주기 위해 사물에 대해 논쟁합니다 당신이보고있는 최종 광택 제품 CLAUDIO CHERUBINO : 네

그리고 그것은 연마됩니다 하지만 어쩌면 여전히 문제가 있거나 여전히 뭔가있을 수 있습니다 그것은 분명하지 않다 이 페이지에 의견이나 의견이 있으면 Google+에서 연락하세요 또는 스택 오버플로를 모니터링합니다

Google 드라이브 SDK에 대한 질문입니다 기술적 인 질문이 있으시면 스택 오버플로 그리고 우리는 그 질문에 기꺼이 대답 할 것입니다 에릭 길모어 : 당신이 매우 빨리 찾고 있다면 만족감을 느끼기 위해 바로 의견 링크가 있습니다 우리가보고있는이 페이지

CLAUDIO CHERUBINO : 그것은 절대적으로 맞습니다 우리가 명령 줄을 작성하는 방법을 보자 PHP 응용 프로그램 첫 번째 단계는 드라이브 API를 사용하도록 설정하는 것입니다 Google API 프로젝트를 구글 API 콘솔

그런 다음 필요한 서비스를 활성화하고 우리가 필요로하는 자격 증명 이 단계를 단계별로 수행해 보겠습니다 그래서 Google API 콘솔을 엽니 다 나는 프로젝트가 없다 새 프로젝트를 만드는 것은 이번이 처음입니다

아마도 처음 시도한다면 무엇을 볼 것인가? Google API 프로젝트 작성 그리고 Create 큰 프로젝트 버튼이 있습니다 그리고 이것이 제가 클릭 할 것입니다 그래서 내가 할 때, 나는이 페이지로 간다 내 응용 프로그램에 대해 활성화 및 비활성화 할 수있는 서비스

샘플에서 Drive API 서비스를 사용하도록 설정해야합니다 그러나 드라이브 API 및 기타 서비스를 사용해야하는 경우, 캘린더 API를 사용하면 여기에서 두 가지를 모두 사용 설정할 수 있습니다 여기에서 필요한만큼의 API를 활성화 할 수 있습니다 아래로 스크롤하여 드라이브 API를 찾아서 on-off 스위치를 클릭하십시오 또한 하루에 최대 50 만 건의 요청이 있음을 확인합니다

오늘이 샘플로 충분합니다 에릭 길모어 : 관대 한 쿼터입니다 CLAUDIO CHERUBINO : 예, 그렇습니다 나는 나의 서비스를 가능하게했다 내 자격 증명을 생성해야합니다

드라이브 API는 인증 메커니즘으로 OAuth2를 사용합니다 그리고 인증 흐름을 실행하려면 클라이언트 ID가 필요합니다 고객의 비밀 ERIC GILMORE : API에 대한 모든 요청이 인정 받은? 아직도 사실입니까? CLAUDIO CHERUBINO : 당신이 원할지도 모르는 경우가 있습니다 일반 대중에게 문서를 게시 할 수 있습니다

그래서 자격 증명이없는 사람이 누구라도 액세스하십시오 특별한 경우라고 가정 해 봅시다 그러나 일반적으로 거의 모든 API 호출에는 인증이 필요합니다 에릭 길모어 : 네 CLAUDIO CHERUBINO : 저는 새로운 것을 만들고 싶다고 말했습니다

자격증 명, OAuth2 자격증 명 왼쪽 탐색 메뉴에서 API 액세스를 클릭합니다 그리고 나는 신임장이 없기 때문에 OAuth 20 클라이언트 ID 그것은 단계별 절차입니다

제품 이름을 지정해야합니다 제품 이름 일 수 있습니다 나는 Drive PHP를 말할 것입니다 어쩌면 당신은 더 많은 것을 선택할 것입니다 설명 적

제품 로고가 있으면 여기에 추가 할 수 있습니다 방금 테스트 중이라면 나중에 추가 할 수 있습니다 제품을 출시 할 준비가되면 로고와 설명, 다른 많은 것들을 추가하십시오 그러나 이번에는 로고가 필요 없습니다 그럼 다음을 클릭하겠습니다

그리고 우리는 우리의 응용 프로그램이 웹 응용 프로그램, 서비스 계정 응용 프로그램 또는 설치된 응용 프로그램 일반적으로 웹 응용 프로그램을 선택하려고합니다 하지만 오늘은 명령 행을 작성하려고합니다 응용 프로그램, 설치된 응용 프로그램입니다 그것은 설치된 응용 프로그램이라고합니다

에릭 길모어 : 우리의 목표는 빨리 시작되었습니다 CLAUDIO CHERUBINO : 네 이 말의 끝에 우리는 사용자가 명령 줄 응용 프로그램에 대한 경험이 많지 않습니다 웹을 가지고있을 때의 사용자 경험 응용 프로그램이 훨씬 좋네요 그러나 예를 들어, 이것은 아마도 더 좋은 방법 일 것입니다

시작하겠습니다 드라이브 API 사용에 대해 똑같을거야 그리고 그 위에 응용 프로그램을 만들어야합니다 그러나 여기서 배운 내용은 모두 웹에서 사용할 수 있습니다 신청

에릭 길모어 : 그렇습니다 CLAUDIO CHERUBINO : 그럼 Installed Application이라고 해 봅시다 그리고 이것은 Android가 아닙니다 이것은 iOS가 아닙니다 명령 줄 응용 프로그램 인 기타 내 컴퓨터에서 실행 중입니다

클라이언트 ID 생성을 클릭합니다 그리고 내가 얻은 것은 설치용 클라이언트 ID라는 새 상자입니다 응용 프로그램 : 클라이언트 ID와 클라이언트 비밀을 포함합니다 이름에서 알 수 있듯이 클라이언트 비밀은 비밀이어야합니다 따라서이 고객을 절대 공유하지 않도록해야합니다

누구와도 비밀 에릭 길모어 : 예를 들어 일반인이 아닌 비디오 인터넷 클라우디오 쉐 루비 노 : 오, 그래 그래, 좋은 생각이야 그러니 당신이 나처럼 영리하지 못하다고합시다

공개 동영상으로 고객의 비밀을 보여 주셨습니다 그리고 다른 사람들이 당신을 사용하는 것을 원하지 않습니다 신임장 너 뭐하니? 이 강의가 끝나면 API 콘솔로 돌아갑니다 Set Client Secret 아래에서이 현재 클라이언트 비밀 키를 누릅니다

취소되어 더 이상 유효하지 않습니다 또한 응용 프로그램에서 사용할 수있는 새로운 기능을 사용할 수 있습니다 클라이언트 ID는 그대로 유지됩니다 따라서 클라이언트 비밀 만 바꾸면됩니다 클라이언트 ID 및 클라이언트 비밀번호를 다음과 같이 간주 할 수 있습니다

사용자 이름과 비밀번호 사용자 이름을 알고 싶지만 다른 사람이 자신의 암호를 알고 싶습니다 에릭 길모어 : 네 CLAUDIO CHERUBINO : 이렇게하면 문서 도구로 돌아갑니다 우리가 첫 번째 단계를 완료했는지 확인하십시오

드라이브 API를 사용하도록 설정합니다 우리는 두 번째 단계로 넘어갈 수 있습니다 원하는 언어의 클라이언트 라이브러리 나는 오늘 파이썬을 선택했다 그리고 파이썬을 설치하려면 – PHP를 설치하려면, 죄송합니다

오늘 PHP를 선택했습니다 나는 지난주에 Python을 선택했다 이것이 제가 말하려고했던 것입니다 PHP의 경우 지침이 매우 쉽습니다 우리가 실행할 수있는 단 한 줄의 명령어가 있습니다

공개 저장소에서 소스를 체크 아웃하십시오 그래서 나는이 선을 취할 수있다 에릭 길모어 : 파이썬의 수비에서 설정도 쉽습니다 CLAUDIO CHERUBINO : 예, 여전히 한 줄에 있습니다 그래서 나는 그 명령을 받아 내 커맨드 라인에서 실행할 수 있습니다

그리고 내가 얻는 것은 Google API 클라이언트의 소스입니다 PHP 용 라이브러리 폴더로 이동하면 Google API가 있다는 것을 알 수 있습니다 우리가 방금 가지고있는 PHP 클라이언트 폴더 두 개 더 우리는 그들이 무엇을 위해 있는지 바로 볼 것입니다

에릭 길모어 : 덧붙여 말하면, PHP 클라이언트는 최근에 상당한 리팩토링을 거쳤습니다 그래서 몇 가지 개선 사항을 볼 수 있습니다 이전 사본이있는 경우 복사본을 업그레이드하십시오 CLAUDIO CHERUBINO : 네, 그게 100 % 정확합니다 우리는이 소식을 변경 로그에 게시했습니다

따라서 Google에서 문서 또는 In에 항목을 추가 할 때마다 라이브러리 또는 드라이브 SDK와 관련된 모든 항목 이 문서의 릴리스 정보를 업데이트합니다 그래서 이것은 단지 며칠 전에 추가되었습니다 승인 문서 도구로 돌아가서 우리가 다음에해야 할 일을 살펴 봅시다 이제 2 단계를 완료했습니다

Google 클라이언트 라이브러리 세 번째 단계를 수행하고 샘플을 설정해야합니다 이 샘플을 실행하려면 두 개의 파일이 필요합니다 PHP의 소스 파일과 업로드 할 문서 구글 드라이브 텍스트 문서를 만들었습니다

그래서 documenttxt라고했습니다 그리고 몇 가지 샘플 콘텐츠가 포함 된 텍스트 문서입니다 샘플 콘텐츠 Google 드라이브에 업로드 할 파일입니다

그리고 나서 나는 drivephp도 가지고있다 파일은 비어 있습니다 빠른 시작을 원할 경우 바로 가기 만하면됩니다 이 코드를 가져 와서 파일에 복사하십시오

그리고 나서 우리는 그것을 시도 할 것입니다 그리고 나서 나는 무엇이 일어나고 있는지 한 줄씩 설명 할 것이다 너의 컴퓨터 그럼 그 파일을 내 파일에 복사 해 보겠습니다 이걸 더 커 보자

그럼이 선을 보자 먼저 Google 클라이언트 라이브러리가 필요합니다 Google 클라이언트 라이브러리는 google-api-php-client / src 그래서 방금 다운로드했습니다 그래서 우리가했던 것처럼 다운로드하면, 이것은 될 것입니다

정확하게 정확한 경로 다음으로 자격 증명을 설정해야합니다 API 콘솔에서 따라서 샘플 코드에는 분명히 place holder가있을 것입니다 그리고 클라이언트 ID 나 클라이언트를 교체해야합니다

API 콘솔에서 가져온 값으로 그래서 저는 그렇게 할 것입니다 다시 API 콘솔로 돌아가겠습니다 내 고객 ID를 받아 여기에 복사 할 수 있습니다 그리고 나서 나는 나의 고객과 똑같이 할 수있다 비밀, 그리고 거기에 넣어

그리고 이것은 시작하기 위해해야 ​​할 유일한 편집입니다 새로운 기능을 추가하려면 당연히 당신이 그들을 써야 해 그러나 시작하고 싶다면 그게 유일한 것입니다 너가해야되는 다른 모든 것은 이미 작동 중입니다

우리가 가서 한 줄씩 설명하기 전에, 나는 말할 것이다 우리는 이것을 실행하고 무슨 일이 일어나는가를 봅니다 에릭 길모어 : 당연하지 CLAUDIO CHERUBINO : 좋습니다 에릭 길모어 : 한 가지 질문을해도 될까요? CLAUDIO CHERUBINO : 물론입니다

에릭 길모어 : 거기에 주어진 리디렉션 URI는 설치된 응용 프로그램의 표준 URI? CLAUDIO CHERUBINO : 네 이것은 표준 URI로 설치에 사용됩니다 응용 프로그램 웹 응용 프로그램이 있으면 나만의 것을 지정하십시오 그러나 설치된 응용 프로그램을 사용하면 표준 가치

그것은 – API 콘솔에서 볼 수 있습니다 동일한 리디렉션 URI 그리고 설치되어 있다면 그것을 변경할 필요가 없습니다 응용 프로그램 그리고 1 분 – 우리가 여기서 이야기하는 동안, 우리는 이야기하고 있습니다 범위에 대해서

인증 범위는 기본적으로 사용자에게 묻는 것입니다 우리가 원하는 권한 그리고 우리의 경우 전체 드라이브 사용 권한을 요청하고 있습니다 따라서이 샘플을 통해 우리는 모든 샘플을 실행하는 사용자의 문서 다른 범위가 있습니다 드라이브 API의 경우에도 사용할 수있는 범위

따라서 전체 드라이브 액세스 권한을 요청하지 않아도됩니다 우리는 실제로 그것을 권장하지 않습니다 정확 하네 우리의 일반적인 권고는 가장 구체적인, 제한된 범위를 요청할 수 있으며 응용 프로그램 작업 CLAUDIO CHERUBINO : 네

그러나 이것은 샘플입니다 그리고 물론, 당신은 그것을 조정할 수 있습니다 그럼 내가 이걸 실행하게 해줘 나는 나의 터미널로 돌아 간다 PHP를 사용하고 파일 이름을 drive

php로 지정하면 커맨드 라인에서 실행하면, 가장 먼저 응용 프로그램이 말하길,이 URL을 방문하십시오 따라서 인증 흐름을 사용하려면 사용자가 브라우저에서 응용 프로그램 그러나 우리의 명령 줄 응용 프로그램에는 브라우저가 없습니다 따라서 할 수있는 것은 방문 할 URL을 보여줍니다 그리고 나서 당신이 뭔가를 할 때까지 기다립니다

그래서 이것은 내가 말했던 때였 다 사용자 경험이 가장 크지 않습니다 사용자는 명령 줄 응용 프로그램에서 링크를 클릭하고 브라우저로 이동하여 해당 페이지를 방문하면 유명한 OAuth2 흐름 대화 어느 것이 drivephp라는 응용 프로그램입니다

방금 생성 한,보기 및 관리 권한을 요청하고 있습니다 파일 및 문서를 Google 드라이브에 저장하십시오 자세한 내용을 알고 싶으면 확장하고 확장 할 수 있습니다 자세한 내용을 참조하십시오 이 응용 프로그램을 알고 있으므로 그것에 접근을 허용하십시오

그리고 내가 설치 한 응용 프로그램이므로 내가 복사하여 붙여 넣어야하는 코드를 되 찾는다 명령 행 이 코드를 입력하면 신청서가 작성됩니다 인정 받은 그리고 다음으로 시도 할 것은 파일을 업로드하는 것입니다 드라이브를 클릭 한 다음 모든 메타 데이터를 인쇄하십시오

드라이브에서 돌아 오십시오 따라서 인증 코드를 삽입합니다 그리고 나는 많은 것을 얻는다 그것은 JSON 구조입니다 그것이 바로 우리가 드라이브에서 얻은 것입니다

물론 이것은 하나의 예입니다 그래서 당신은 아마 당신이 얻는 모든 것을 버리고 싶지 않을 것입니다 API에서 콘솔로 돌아갑니다 다른 것을하고 싶을 수도 있습니다 그러나 여전히 이것은 당신이 볼 수있는 것을 배우는 데 유용합니다

드라이브 API에서 얻은 정보 그래서 우리는 파일을 업로드했습니다 여기에 ID를 입력합니다 우리는 그것에 대한 링크를 얻습니다 우리는 다른 링크를 얻습니다 우리는 그것에 대해 이야기 할 수 있습니다

우리는 제목을 얻는다 문서 유형, 설명 등 많은 플래그, 많은 레이블 이 문서에는 당신이 할 수있는 모든 것이 있습니다 이 문서에 대한 필요성

에릭 길모어 : 샘플의 목적 상, 그 제목이 당신이 찾고자하는 것임을 주목하는 것은 흥미 롭습니다 파일 이름이 아니라 드라이브 UI로 이동하면 CLAUDIO CHERUBINO : 네 확인 해보자 따라서 Google 드라이브로 이동하면 내 문서라는 문서가 표시됩니다 이 문서가 내 문서라는 이유를 알 수 있습니다

하지만 내 문서라는 문서 방금 업로드되었습니다 그리고 그것을 열면 텍스트 파일 일뿐입니다 그래서 Google Viewer는 그것을 열 수있을 것이며 단지 내용을 보여라 안녕하세요, 테스트 문서입니다 그래서 효과가있었습니다

그것이 어떻게 작동하는지 보자 코드로 돌아 가자 그래서 기억한다면, 우리가 한 첫 번째 일은 사용자에게 인증 URL을 보냅니다 이 작업은 클라이언트 라이브러리를 사용하여 수행됩니다 당신은 그것을하기 위해 많은 것을 할 필요가 없습니다

너는 클라이언트에게 물어 보았다 그것은 우리가 보낸 사람이다 자격증 명과 클라이언트에게 승인 URL 그런 다음이 승인 URL을 가져 와서 보냅니다 사용자에게 이 URL을 방문하도록 요청하십시오 사용자가 인증 코드를 삽입하면 그것은 인증 코드라고하는 다른 변수에 있습니다

우리는 클라이언트 라이브러리에 인증 흐름을 수행하도록 요청합니다 이 코드로 인증하십시오 일단 완료되면 액세스 토큰을 얻습니다 당신은 요청을 보내야합니다 OAuth2 흐름에 대한 자세한 내용은 다루지 않을 것입니다

하지만 허가를하면 두 토큰 유형, 새로 고치기 토큰 및 액세스 토큰 액세스 토큰은 수명이 짧고 보낼 필요가 있습니다 요청, 권한 부여 요청 새로 고침 토큰을 요청과 함께 보내지 말아야하지만 새로운 액세스 토큰을 재생성하는 데 사용할 수 있습니다 필요할 때

그래서 우리는 그것에 대해 좋은 권고안을 가지고 있습니다 나는 여기서 그것을 설명하지 않을 것이다 더 많은 것을 알고 싶다면 좋은 페이지가 있습니다 이것이 우리가해야 할 모든 것, 승인입니다 이제 고객에게 유효한 액세스 권한이 있습니다

토큰, 요청을 보낼 수 있습니다 그래서 우리가 다음에하고 싶은 것은 파일을 삽입하는 것입니다 파일을 삽입하려면 다음과 같이 메타 데이터를 지정해야합니다 제목, 설명 및 MIME 유형, 및 우리가 업로드하고 싶은 파일 그래서 우리의 경우,이 샘플 하드 코드 그 중 일부 값

이것이 바로 예를 들어, 항상 My라는 제목을 설정하는 이유입니다 문서 [? 이거?] 선 즉, Google 드라이브에서 문서가 어디에 있든, 이것은 내 문서라고 불릴 것입니다 물론, 실제 응용 프로그램을 작성하면 이 제목은 좀 더 기술적 인 것입니다 예를 들어 파일에서 파일 이름을 가져올 수 있습니다

당신은 그것을 업로드하거나 사용하고 있습니다 파일을 고유하게 만듭니다 그런 다음 설명을 추가 할 수 있습니다 케이스 하드 코드 물론 더 나은 설명을 제공해야합니다

그리고 MIME 유형도 지정합니다 따라서이 샘플 애플리케이션은 항상 텍스트 파일을 업로드합니다 그래서 우리는 그것을 하드 코딩했습니다 그러나 이미지 나 다른 이미지를 업로드하고 싶을 수도 있습니다 파일 종류

그리고이 경우 MIME 형식이 일치해야합니다 당신의 파일은 무엇입니까 에릭 길모어 : 만약 당신이 저를 좋아한다면,이 샘플을 실행 한 후에 처음으로 돌아가서이 중 일부를 변경합니다 하드 코딩 된 값은 실제로 실행 중입니다 CLAUDIO CHERUBINO : 좋습니다

네 에릭 길모어 : 그렇게하지 않아도됩니다 CLAUDIO CHERUBINO : 당신이 나를 믿지 않는다면 당신은 그렇게 할 수 있습니다, 그는 그렇지 않습니다 에릭 길모어 : 다행히도 효과가있었습니다 CLAUDIO CHERUBINO : 네

우와 따라서 메타 데이터가 필요하다고 말했지만 파일도 필요합니다 내용, 문자열, 안녕하세요, 나는 테스트 문서입니다 그리고 우리는 PHP 메소드 인 file_get_contents를 사용하여이를 수행합니다 문서, 파일을 문자열로 읽습니다

따라서 데이터에는 모든 콘텐츠가 포함됩니다 그 내용은 그리고 실제로 우리는 하나의 요청 인 요청을 보냅니다 이 서비스 클래스는 드라이브 서비스입니다 여기에는 파일 목록, 그것은 우리가 원하는 것입니다

그리고 각 리소스마다 메소드가 있습니다 예를 들어, Files에는 Insert가 있습니다 새 파일을 만듭니다 삽입하려면 파일을 전달합니다이 메타 데이터는 방금 생성 된 데이터 및 나머지 데이터 (예 : 콘텐츠) 및 MIME 유형

그게 전부 야 요청을 보내면 변수 생성 파일이 객체 인 API의 응답을 포함하거나 우리의 경우 인접한 구조 그리고 기억 하듯이, 우리는 방금이 내용을 명령 행 그리고 그것이 마지막 행이하는 것입니다 진정해? 그리고 그걸로 Docs로 돌아가서 우리가 3 단계와 4 단계를 마쳤습니다

샘플을 설정하고 샘플을 실행하십시오 이제는이 점을 개선하는 것이 전부입니다 그래서 샘플이 작동합니다 파일을 업로드합니다 그러나 당신이하고 싶은 다른 것들이있을 수 있습니다

예를 들어? 에릭 길모어 : 아, 파일을 나열하고 싶을 수도 있습니다 CLAUDIO CHERUBINO : 예를 들어 파일을 나열합니다 그렇게하고 싶다면 매우 쉽습니다 나는 지금 그것을하지 않을 것이다 그러나 Service, Files, Insert를 호출했다는 것을 기억하십시오

Service, Files, List라는 또 다른 호출이 있습니다 또는 특정 파일을 가져 오려면 서비스, ​​파일, 가져 오기 등 귀하가 할 수있는 다른 모든 요청은 참조 가이드 따라서 파일을 관리 할 수 ​​있고 파일을 관리 할 수 ​​있습니다 사용 권한, 수정 내용 등을 관리 할 수 ​​있습니다

하지만 아마도 당신이 할 수있는 다른 것들 중 하나는 웹 응용 프로그램을 빌드하십시오 또한 응용 프로그램을 드라이브 UI와 통합하십시오 따라서 사용자는 드라이브에서 파일을 클릭하고에서 착륙 할 수 있습니다 너의 어플리케이션 이 모든 것이 지원됩니다

또한이 모든 작업은 Drive SDK를 통해 수행 할 수 있습니다 그것에 대한 문서가 있습니다 이 퀵 스타트 페이지에서 시작하면, 우리가 언급 한 모든 것들에 대한 링크를 볼 수 있습니다 그래서 당신은 바로 거기에 가서 당신의 더 나은 응용 프로그램 에릭 길모어 : 물론

그리고 많은 에너지와 용기가 있다면 인증 문서를 검토하십시오 나는 거짓말을하지 않을 것이고 쉬운 일이라고 말할 것입니다 재미있는 그리고 우리는 그것에 대한 링크를 가지고 있습니다 CLAUDIO CHERUBINO : 확실히, 가장 쉬운 부분은 아닙니다

그러나 안전해야하기 때문에 우리는 – 이것은 보안 표준입니다 OAuth는 표준입니다 물론 우리의 신임장이 도난 당하지 않고, 당신이 누구인지, 그리고 네가 원하는대로 해 좋은 점은 도서관이 모든 무거운 일을한다는 것입니다 당신을 위해 들어 올려

따라서 인증 흐름이 어떻게 작동하는지 실제로 알 필요가 없습니다 라이브러리를 사용하십시오 당신이 보았 듯이, 나는 실행할 수있는 몇 가지 지침이 있는데, 그리고 그게 다야 그래서 확실히 알고 흥미 롭습니다 그리고 모든 측면을 처리하려면 OAuth에 대해 알아야합니다

사례, 모든 특수 사례 등이 포함됩니다 그러나 시작하기 위해 – 당신은 그것없이 시작할 수 있습니다 우리가 마무리하기 전에, 나는 단지 그것을 말할 것이다 이것은 첫 번째 샘플입니다 그러나 우리는 문서에서 좀 더 복잡한 샘플을 가지고 있습니다

이 페이지에서 5 분 안에 시작할 수 있습니다 그러나 당신이 할 수있는 실제 웹 애플리케이션을 작성하고자한다면 더 많은 예제 애플리케이션에 대한 섹션이 있습니다 그것들은 동일한 파일 언어 따라서 Java, Python, PHP, NET 및 Ruby가 있습니다

그리고이 응용 프로그램은 완전한 관리하는 드라이브 UI와 통합되는 웹 앱 인증 및 모든 엣지 케이스, 기본적으로 모두 PHP를하고 싶다고 가정 해 봅시다 왜냐하면 오늘날 우리는 PHP에 대해 이야기하기 우리는 DrEdit라는이 응용 프로그램을 가지고 있습니다 또는 "Dred-it", 우리는 아직 결정하지 않았다 – Google 드라이브의 텍스트 편집기입니다

분명히 더 긴 문서입니다 시작하기위한 추가 단계가 있습니다 그러나 단계별로 그것에 대해 알 수 있습니다 또한 소스를 다운로드하여 시도 할 수 있습니다 귀하의 컴퓨터에

나는 이것을 확실히 확인하기를 권할 것입니다 에릭 길모어 : 당연하지 CLAUDIO CHERUBINO : 멋지다 그리고 그걸로 오늘 우리가 마무리해야한다고 생각합니다 이것이 유용했기를 바랍니다

궁금한 점이 있으시면 곧 Google에 문의하십시오 가능한 한 에릭 길모어 : 귀하를 상기시키기 위해 문서를 통해 무엇이든지 신속하게 응답해야합니다 당신이 원하는 문서에서 찾을 수 있습니다 에 대해 의견을 말하십시오

스택 오버플로는 지속적으로 모니터링됩니다 엔지니어들도 마찬가지입니다 CLAUDIO CHERUBINO : 멋지다 완전한 고마워요

다음에 또 봐요

AT006 Admin Tools Professional – PHP File Scanner

고급 기능 중 하나 도구 전문의 PHP 파일 변경 스캐너입니다 이름에서 알 수 있듯이 모든 내용을 내부에서 확인합니다 당신을 구성하는 PHP 파일 Joomla 웹 사이트 그들 중 누구도 변경되었습니다

더하여 그것은 또한 볼 것이다 그 파일 안에 그것이 탐지 할 수 있는지보기 위해 악성 콘텐츠의 흔적 스캔을 수행하려면을 클릭하십시오 아이콘 스캔을 수행 할 때 처음으로 클릭하는 것이 필수적입니다 구성 옵션에서

파일이 검사 할 유형은 다음을 포함합니다 PHP 파일 확장자 만약 그렇다면, 저장 및 닫기를 클릭하여 저장하십시오 그 선호 이제 첫 번째 스캔을 수행 할 수 있습니다

너는 이것을 알아야한다 시간을내어 그러니 그냥 뛰쳐 나가십시오 스캔이 완료되면 보고서에 레코드가 표시됩니다 스캔 일시 총 스캔 한 파일 수 가지고있는 파일의 수 마지막 스캔 이후 수정되었습니다 가능한 위협으로 표시된 파일 및 파일 수 이전 스캔 이후 추가되었습니다

가능한 위협 가능하면 중요한 단어입니다 이것은 단지 시도를 할 수 있기 때문에 문자열 찾기 파일 안에 문제가 될 수 있습니다 꼭 그런 것은 아닙니다 보고서보기를 클릭하면 모든 파일의 목록을 볼 수 있습니다 스캔 한 예상과 함께 위협 점수

나는 방금 Joomla를 설치했습니다 내 확장 기능 만 나는 그것이 파일들이 안전하다는 것을 안다 여기에 나열된 모든 것 거짓 긍정이다 그래서 나는 그들 모두를 선택할 수있다 Mark Safe를 누릅니다

나는 단지 표시하고 있다는 것을 기억하고있다 일부는 클릭해야합니다 다음 페이지에 있는지 확인하십시오 나는 그 모든 것을 표시한다 모든 항목을 안전한 것처럼 잘못된 판단 다시 클릭 할 수 있습니다

다른 스캔을 수행하면 나는 이제 아무 것도 볼 수 없다 파일이 수정되었습니다 마지막 스캔 이후 기록 된 위협이 없다 파일이 추가되지 않았습니다 따라서 어떠한 보고서도 생성되지 않았습니다

나는 당신이 사용하고 있다면 강력히 추천한다 PHP 파일 변경 스캐너 당신은 이것을 정기적으로 수행합니다 특히 전에 및 직후 새 확장을 설치하십시오 너 그렇게 확신 할 수있어 오 탐지를 표시 안전하다고

또한 이 스캔을 자동화하십시오 커맨드 라인 크론 작업을 통해 정기적으로 수행 할 수있는 작업 그 결과를 가져라 이메일을 보냈다 이것은 모두에 설명되어 있습니다 akeebabackupcom 웹 사이트

기억하십시오 이 스캔은 단지 잠재적 위협 탐지 그래서 그것은 물건을 감지 할 것이다 위협이 아닌 그리고 그것은 또한 놓칠지도 모른다 다른 것들 도구는 단지 도구 일뿐입니다

제공하지 않기 위해 확실한 답

Belajar PHP Penyimpanan File Mengenal Echo dan Komentar #1

Bismillahirrohmanirrohim, Assalamualaikum Warahmatullahi 와바로 카투 오케이 친구들 우리는 PHP 프로그래밍 언어를 계속 학습합니다 확인 프로그래밍 언어를 기억하고 허위 희망을주지 말라

잘, 나는 짐작한다 친구가 준비하거나 설치했다 텍스트 편집기 및 XAMPP 우리는 단지 시작한다 먼저 웹 서버를 실행합니다 좋습니다

길은 파일 탐색기를 엽니 다 다음 XAMPP 친구들은 어디에 저장합니까? 내가 E에 있다면 괜찮아 찾고있어 이제 여기있어 그런 다음 두 번 클릭하십시오 확인 그럼,이게 다야 많은 폴더가있다 친구는 그것을 삭제하지 않는다

예 나중에 나중에 오류가 발생합니다 그러니 그냥 이것처럼 남겨주세요 시도하지 마라 그것을 삭제, 알았어 그럼 여기, 여기 있네

xampp_controlexe 이름을 찾습니다 두 번 클릭 확인 잠깐만 그래, 그래 여기 우리가 본다 그래, 그래

그래서 여기 우리가 시작한다 나는 이미 길을 가지고있다 친구, 걸어 가지 않았다면 앱에서 시작을 클릭하십시오 우리는 학습을 시작하기 때문에 그냥 충분 한 apachenya 이 우물, 우리는 다른 우물을 위해 그것을 달린다 하느님, 나중에 괜찮아

잘이 일을 우리가 본 후에 우리 웹상에, 우리는 웹 사이트에 들어간다 이미 입력했는지 여부 그 뜻은 이미 달리고있다 좋아, 여기를 클릭 해 이 url localhost에 로컬 호스트 확인 우물 이 오케이, 기다려 그는로드 중이다

음, 이것처럼 보이고 나서 그럼 우리 서버는 이미 잘 걷다 오케이

하느님 감사합니다 음, 이제 우리는 파일로 돌아 간다 우리의 탐험가 이 XAMPP 여기 특별한 폴더가 있습니다 매우 특별한 폴더 htdocs 이것은 htdocs입니다 매번

저장 파일을 저장하려면이 htdocs 저장소에 여기에 저장해야합니다 그래서 htdocs는 쉽다 localhost는 이것입니다

localhost는 이것입니다 그것은 htdocs와 같은 것입니다 확인 여기 와서 잘 그런 다음 우리는 여기에 폴더를 만듭니다 그래서 매번 나중에 교육이 여기에 저장됩니다 우리는 폴더를 만든다 예를 들어 폴더의 이름은 무엇입니까? PHP 배우기 친구가 작은 텍스트를 사용하는 습관을 갖도록하십시오 그래, 여기있어

소문자 예를 들어 배우기 그런 기본적인 것들을 배워라 확인 알았어 잘 했어

그 후 우리는 여기에 폴더를 만든다 phpdasar를 클릭하십시오 아직 비어 있습니다 여기에 들어가 봅시다 우리 웹 사이트에 우리가 입력 무슨 일이 있었는지 신경 써라

여기에 htdocs에서 그것들을 비교하라 learnphp 기본 형식 잘 보인다 이것도 비어있어 우리는 아직 그것을 채우지 않았다 이제 우리는 숭고한 마음을 엽니 다

그것을여십시오 또는 해당 텍스트 편집기 내가 숭고한 것을 좋아한다면 확인 우리는 숭고한 잘 됐네요 내가 좋아하는 배경은이 색이다 볼만 큼 좋기 때문이야 내가 좋아한다면 이걸 좋아해

다음 구문 PHP 쉽습니다 그래서 우리가이 숭고함을 사용한다면 우리는 단지 PHP를 입력하고, 나중에 탭을 누를 것입니다 하지만 그 전에 나는 파일을 먼저 저장하고 싶다 그래서 우리는 파일을 먼저 저장한다 파일로 저장 한 다음 저장하십시오

잘이 CTRL + S도 가능합니다 잠깐만 우리는 전에 그것을 구했습니다 htdocs는 PHP 기초를 배운다 그러면 파일 이름은 무엇입니까? 바로 이것 운동 1 php 이것은 필수 항목이다 확장자는 PHP 여야합니다

알았어, 친구 구해준 후에 이게 맘에 든다 이 후에 우리는 그것을 만든다 PHP를 작성하려면 구문은 다음과 같습니다 다시 한 번 사용하면됩니다 숭고 그냥 PHP를 입력 어를 누르십시오 그런 다음 탭을 누릅니다

잘, 즉시 만들었다 확인 그래서 문법 <? php 그 다음에 닫았습니까?> 이것은 괜찮습니다 우리는 의 기본 기능 중 하나 PHP는 에코입니다 확인 echo는 PHP의 기본 기능입니다 하나 이상의 기능을 표시하는 기능 데이터를 브라우저로 스트링 브라우저에 무엇인가 표시하기 그것을 증명하자 우리가 여기에 입력하자

당신이 숭고한 것을 사용한다면 그것은 쉽게 만들어졌습니다 잘 그게 좋아 에코 " 끝내라 실제로 사인을 사용하십시오 '할 수 있니? 하지만 난 그냥 기호를 사용하는 것이 좋습니다 네

여기 입력 해 봅니다 이 말을 해봅시다 나는 기본적인 PHP를 공부하고있다

그래, 그래 좋아요 저장하겠습니다 CTRL + S 우리는 브라우저를 체크인합니다 이미 출연했는지 아닌지 좋아, 여기

우리는이 주소를 일찍 타이핑했다 이 폴더 이름이 뭐지? latihan1php 확인 이전에 htdocs 그런 다음 enter 키를 누릅니다 이것, 그래,이게 다야 이건 벌써 괜찮아 보이는구나

나는 기본적인 PHP를 공부하고있다 좋아, 좋아 그건 에코예요 알았어 이제 우리는 주석을 알고있다

예 우리는 주석을 알고있다 주석은 PHP 코드에 메모를 남기는 역할을합니다 프로그램에 표시되지 않습니다 예 또는 쉬운 PHP는 기록을위한 것입니다 프로그래머 용 그래서 나는 잊지 않는다 그래서 우리는 주석을 사용한다

코멘트는 브라우저에 표시되지 않습니다 확인 어떻게 승화를 사용한다면 CTRL을 누릅니다 슬래시 (/) 다시 한번 CTRL 나중에 만든 의견 이 슬래시 (//) 네, 두 번 예를 들어 입력합니다 이것은 주석이다 우리는 저장하려고

CTRL + S 그런 다음 브라우저로 이동합니다 우리는 새로 고침 이것은 웹상에 표시되지 않습니다, 우리는 브라우저입니다 이 한 줄 주석 이 한 줄 주석 어떻게 우리가 많은 라인을 원하니? 그게 다야 거기도있다

글쓰기가 다르다 우리가 슬래시 (/)를 누른 다음 별 (*)을 누르는 방법입니다 그래, 그래 우리는 그 다음에 별표를 씁니다 잘 그게 좋아

이것은 하나 이상의 주석을위한 것이다 예를 들어이 한 가지 주석 의견 하나 다음은 두 가지 주석입니다 등등 좋아, 아마도 괜찮아 잘하면 그것은 이해된다 기다리다 나에게서 다음 비디오는 괜찮아

Assalamualaikum 와하로 카투 Warahmatullahi

File Upload Part 2 – Telugu

다시 오신 것을 환영합니다 이 튜토리얼의 첫 번째 부분에서는이 양식을 사용하여 업로드 된 파일의 특정 속성을 가져 오는 방법을 설명했습니다

이제이 파일을 업로드하고 현재 비어있는 업로드 된 폴더로 이동하는 방법을 보여 드리겠습니다 기억 나면 웹 서버에 저장되는 임시 영역을 가리 킵니다 그것의 지금 많은 사용의 아닙니다 우리는 여기에 모든 속성을 가지고 있으므로 업로드 된 파일의 속성을 말해서 우리가하는 일을 안다 우리는 여기에 모든 특성을 가지고 있습니다

우리 모두는 변수 이름을 기억하기 쉽도록 했으므로 각각을 개별적으로 주석 처리 할 필요가 없습니다 먼저 오류가 있는지 확인하기 위해 'if'문을 작성합니다 여기에 오류 코드가 0보다 큰 경우 오류 코드에 의해 발행 된 것이므로 '죽습니다'라고 말합니다 그리고 "File can not "라는 오류 메시지를 출력합니다 또는 '파일 업로드 중 오류, 코드 오류' 이렇게하면 사용자에게 오류 코드가 제공됩니다 이제 '다른'부분

이 중괄호를 추가하여 간단하고 한 줄로 유지합니다 그래서 'else'는 'move_uploaded_file'이라는 함수를 사용하고 싶습니다 그런 다음이 함수의 첫 번째 매개 변수 인 임시 이름 'temp'를 가져오고 두 번째 매개 변수는 '업로드 된 폴더'인 대상입니다 그래서 '업로드'와 슬래시를 입력하겠습니다 그리고 그 끝에 우리가 업로드 한 파일의 이름을 연결합니다

그래서 여기에 '이름'이됩니다 이것은 사용자가 여기에 인터 변수를 추가하는 것을 보여줍니다 그렇지 않으면 우리는 이것을 – 예를 들어 – 임시 이름과 같이 입력해야합니다 그런 다음 여기에 가서 이렇게 배치하십시오 그것은 꽤 지저분 해지고 읽기가 어렵습니다

따라서이 변수를 여기에 보관하는 것이 더 쉽습니다 좋아요, 이제는 이것들을 없애 버리거나 이것들을 유지할 것입니다 마지막으로 '업로드 완료'라는 메시지가 표시됩니다 이것을 시도 할 수 있습니다 나는 우리 페이지에 로그온하고 우리의 파일 – 'avi에 소개'를 선택합니다

업로드를 클릭하면 업로드가 완료되었음을 알 수 있습니다 내 파일을 확인해 보자 업로드 폴더를 클릭하고 업로드 된 하위 디렉토리를 클릭하면 파일이 여기에있는 반면 이전에는 웹 서버의 임시 디렉토리에 저장되어있는 것을 볼 수 있습니다 여기에 파일을 업로드했습니다 우리가해야 할 일이 몇 가지 더 있습니다

다른 'if'문을 실행 취소하거나 'if'문을 실행 취소하십시오 우리는 업로드하고 싶지 않은 특정 파일 형식을 검사 할 것입니다 예를 들어 내가 avi 파일을 업로드하는 것을 원하지 않는다고 말할 수 있습니다 내가 여기서 할 수있는 말은 오류가 0보다 큰 경우 파일을 업로드하지 않는다는 것입니다 그렇지 않으면 else 안에 새로운 if 문을 시작하겠다

여기에 블록을 만듭니다 그리고 이것들이 파일의 조건입니다 내가 말하자면 – 파일의 유형 – 그것이 우리의 유형 변수, 유형, 2 기호와 같음, 비디오와 동일합니다 avi 이 부분의 처음 부분에서 보았 듯이, 나는 그것을 반향시키면서, 비디오 점 avi와 같았다

그리고 나서 우리가 비디오 점 avi와 같으면 파일을 업로드한다고 말하고 있습니다 나는 그것을 여기 아래로 움직일 것이고, 나는 그것을 'else'블록에 넣을 것이다 이제 비디오가 avi와 같고 죽으면 메시지가 '그 형식은 허용되지 않습니다'입니다 이제 업로드 된 디렉토리에서이 파일을 삭제하고 초기 업로드 파일로 돌아갑니다

나는 intro dot avi를 선택할 것이고 업로드를 클릭하면 '형식이 허용되지 않습니다'라고 표시됩니다 업로드 한 디렉토리로 이동하면 폴더가 비어 있음을 알 수 있습니다 아무것도 업로드되지 않았습니다 이제는 avi 대신에 'png'확장자를 가진 이미지를 금지하고 싶다고 말하자 여기에서 변경하고 파일을 다시 업로드하겠습니다

허용 된 파일 형식이므로 '업로드 완료'라는 메시지가 나타나고 업로드 된 폴더로 전송되었음을 알 수 있습니다 다시 삭제할 수 있습니다 오! 나는 그것을 취소했다 다시 삭제할 수 있습니다 괜찮아

그래서 우리가 여기서 본 것은 특정 유형을 지정하는 방법입니다 우리가 할 수있는 일은 특정 파일 크기를 지정하는 것입니다 나는 '또는'이 연산자 '또는'연산자를 사용하여 말할 것입니다 '또는'크기가 반 메가 바이트보다 큽니다 이것은 반 메가 바이트입니다 이는 500,000 비트의 미안한 바이트입니다

나는 실수를하고 바이트 대신에 비트라고 말했다 그래서 그것은 0 포인트 4 메가 ​​바이트와 같은 50 만 바이트입니다 나는 지금 당장 반 메가 바이트라고 말할 것입니다 이렇게하면 크기가 평가되고 반 메가 바이트보다 커집니다 그러면이 형식이 허용되지 않는다고 말할 것입니다

그래서 '형식이 허용되지 않거나 파일 크기가 너무 큽니다'를 수용하기 위해이 메시지를 변경하겠습니다 따라서 유형을 평가하고 크기를 평가하기위한 각각의 if 문을 작성할 수 있습니다 이 조건을 받아 다른 'if'문에 입력하면됩니다 그래서 나는 여기로 돌아가서 나의 파일을 다시 선택할 것이다 그냥 거기에 있는지 확인하십시오

업로드를 클릭하면 '형식이 허용되지 않습니다'라고 표시됩니다 이제 우리 코드로 돌아 가면 이것은 png 형식이 아니지만 크기 제한을 초과합니다 이 값을 2MB로 2 메가 바이트로 변경할 수 있습니다 새로 고침하고 보냅니다 크기가 1MB에 불과하기 때문에 업로드가 완료되었음을 알 수 있습니다

그게 내가 지금 파일 업로드에있는 전부 야 이 기능을 사용하여 웹 서버에 비해 너무 큰 특정 파일 형식과 파일 크기를 유지하는 데 필요한 사항 만 있으면됩니다 웹 서버에 큰 파일을 원하지 않으면이 파일을 제어하는 ​​좋은 방법입니다 당신이 본 것처럼 아주 쉽게 만들 수 있습니다 이것을 연습하면 유용 할 수 있다는 것에 깊은 인상을 받게 될 것입니다

궁금한 점이 있으시면 언제든지 문의하십시오 또한 업데이트 된 비디오 또는 새 비디오에 대한 알림을 받으려면 구독하십시오 지켜봐 줘서 고마워 이것은 Spoken Tutorial Project의 Joshua Mathew 더빙입니다 안녕

How to Edit wp-config.php File in WordPress

WPBeginner에 오신 것을 환영하며 시청 해 주셔서 감사드립니다 이 비디오에서는 워드 프레스에서 wp-config 파일을 편집하십시오

wp-config 파일은 자체 호스팅 된 WordPress 사이트의 구성 파일입니다 그것은 포함한다 귀하의 사이트에 대한 정보를 많이 말하는 것처럼, 데이터베이스 설정 및 기타 민감한 정보 따라서이 파일로 작업 할 때는주의해야합니다 예방 차원에서 사이트를 백업해야합니다 다음으로 ftp 클라이언트를 사용하여 웹 사이트에 연결하려고합니다

일반적으로 wp-content 폴더에있는 파일은 여기에서 보는 것처럼 찾을 수 있습니다 컴퓨터에 다운로드하고 싶습니다 다운로드 한 후에 메모장이나 텍스트 편집기를 사용하여 변경하십시오 이 영역은 데이터베이스 연결 설정을 처리하며 해당 영역을 찾을 수 있습니다 귀하의 cpanel mysql 데이터베이스 영역에서 또는 여기에 변경해야 할 경우 귀하의 웹 호스트에 문의 할 수 있습니다

아래에는 인증 키와 소금이 있습니다 사이트 보안 사이트가 해킹 당했다고 생각하면 WordPress 보안을 생성 할 수 있습니다 열쇠를 여기에 붙여 넣으세요 이렇게하면 모든 사용자가 사이트에서 로그 아웃되고 강제로 다시 로그인하십시오

WordPress 데이터베이스 테이블 접두사가 여기에 있습니다 디버깅 모드는 WordPress를 학습 할 때 true로 설정하는 것이 유용합니다 PHP 코드를 실행할 때 PHP 통지가 생성되는 것을 알고 싶다면 절대 경로 설정은 구성 파일의 마지막 부분이며 경로입니다 WordPress는 변수 및 포함 된 파일을 사용합니다 당신은 이것을 변경할 필요가 없습니다

업로드 디렉토리를 변경하려면 여기에서 할 수 있습니다 그리고 WordPress에서 자동 업데이트를 사용하지 않으려면이 코드 줄을 추가하면됩니다 당신의 파일에 개정판의 경우이 코드 줄을 추가하고 개정판 수를 제한 할 수 있습니다 귀하의 데이터베이스에 보관됩니다 wp-config 파일을 편집하는 방법에 대한 간단한 개요입니다

이 비디오가 마음에 들면 버튼을 클릭하십시오 계속해서 우리에게 의견을 남겨주세요, 우리는 당신에게서 듣고 싶습니다 YouTube 채널에 가입하여 최신 동영상을 다운로드하십시오

file uploading in PHP – Lesson 28 – Telugu

https://edusoftdownloadsblogspot

com에서 예제를 다운로드하십시오 구독 버튼을 클릭하면 최신 동영상을 볼 수 있습니다 구독 버튼을 클릭하면 최신 동영상을 볼 수 있습니다 https://edusoftdownloadsblogspot

com에서 예제를 다운로드하십시오 구독 버튼을 클릭하면 최신 동영상을 볼 수 있습니다 https://edusoftdownloadsblogspotcom에서 예제를 다운로드하십시오

구독 버튼을 클릭하면 최신 동영상을 볼 수 있습니다 https://edusoftdownloadsblogspotcom에서 예제를 다운로드하십시오 구독 버튼을 클릭하면 최신 동영상을 볼 수 있습니다

https://edusoftdownloadsblogspotcom에서 예제를 다운로드하십시오 구독 버튼을 클릭하면 최신 동영상을 볼 수 있습니다 https://edusoftdownloads

blogspotcom에서 예제를 다운로드하십시오 https://edusoftdownloadsblogspotcom에서 예제를 다운로드하십시오

구독 버튼을 클릭하면 최신 동영상을 볼 수 있습니다 https://edusoftdownloadsblogspotcom에서 예제를 다운로드하십시오 구독 버튼을 클릭하면 최신 동영상을 볼 수 있습니다

https://edusoftdownloadsblogspotcom에서 예제를 다운로드하십시오 구독 버튼을 클릭하면 최신 동영상을 볼 수 있습니다 구독 버튼을 클릭하면 최신 동영상을 볼 수 있습니다

https://edusoftdownloadsblogspotcom에서 예제를 다운로드하십시오 구독 버튼을 클릭하면 최신 동영상을 볼 수 있습니다 구독 버튼을 클릭하면 최신 동영상을 볼 수 있습니다

https://edusoftdownloadsblogspotcom에서 예제를 다운로드하십시오 구독 버튼을 클릭하면 최신 동영상을 볼 수 있습니다

8.15: Drag and Drop a File – p5.js Tutorial

이 비디오에서 나는 웹 브라우저의 기능과 당신이 할 수있는 것을 보았습니다 자바 스크립트에서 일반적으로 할뿐만 아니라이 것은 p5

js 라이브러리에 내장되어있다 그리고 내가 좋아하는 다소 좋은 방법으로이 기능은 파일을 드래그합니다 브라우저에 넣고 해당 파일을 사용하면 파일이 이미지가 될 수 있습니다 그것은 텍스트 파일 일 수 있습니다, 그것은 일종의 데이터 파일 일 수 있습니다; 데이터가 일이다 장래의 비디오에는 여러 가지가 있습니다

데이터 형식을 사용하면 요청할 경우 할 수있는 많은 잠재력이 있습니다 사용자가 이봐, 내게 이미지를주고 정말 흥분되는 것을 할거야 그 이미지가있는 브라우저에서 재미 있거나 수백 개의 이미지를 제공합니다 그리고 심지어 그럼 그게 어떻게 작동하는지 살펴 보겠습니다

우선 무엇을 의미합니까? 그리고 아마도 나는이 다이어그램이 필요 없을 것 같아요 (웃음)하지만 어쨌든 그것을 그립니다; 웹 페이지에 있습니다 페이지에 영역을 만들 것입니다 권리? 왜냐하면 캔버스를 가지고있을 것이고 나는 페이지에서 파일을 드래그하여 거기에 놓으면 어떤 종류의 파일이있는 경우 이것이 이미지라면 나는 그 이미지가 갑자기 나타나고 싶을 것입니다 캔버스에 그려 어떻게 그렇게합니까? 가자 그러면 나는 이것을 미리 설정해 놓았다

나는이 특별한 것을 가지고있다 예를 들어, 정확히 무엇을 말하고 있는지 알 수 있습니다 이 캔버스는 createCanvas () 함수로 만들어지며 background ()가 호출되어서 검은 색임을 알 수 있습니다 blackground, 그러면 캔버스 위가 파선 영역과 같습니다 여기에 파일을 끌어다 놓는다고 화면에 표시됩니다

이제 그게 어디에서 왔습니까? 그것은 HTML 파일에 기록되므로 여기를 살펴보고 볼 수 있습니다 ahh – 취소 할거야 – HTML 파일을보고 너 그것이 있음을 알 수 있습니다 단락 요소가 있습니다

'여기에 파일 끌기' 나는 dropzone이라는 ID를 주었다 그것을 참조 할 필요가 있기 때문에 헤이! 그건 제가 뭔가를 떨어 뜨릴 수있는 단락 요소입니다 그리고 나는 방금 일부 스타일을 그 dropzone을 참조하는 몇 가지 스타일로 작성했습니다 어쩌면 글꼴 크기가 36pt라고 말할 수도 있습니다 어쩌면 너비가 50 % 인 것처럼 할 것입니다 그래서 이것은 또한 뭔가입니다

이전에 보지 못했을 수도있는이 단위가 모두 있습니다 CSS에서 일어나고 있습니다 : 픽셀의 픽셀; 실제로 픽셀 수와 비슷합니다 그 패딩, 타이포그래피와 관련이있는 것에 대한 pt (포인트) (웃음) 누군가가 내가하는 것보다 훨씬 잘 이해한다고 확신하지만, 점이 클수록 글꼴 크기는 커지지 만 백분율은 %입니다 상대적인; 그래서이 DOM 요소가 항상 크기의 50 %가 될 경우 당신이 지금 다시 볼 수 있다면 당신은 내가 볼 수있는 페이지 크기를 볼 수 있습니다 DOM 요소의 크기가 고정되어 있지 않은 페이지는 항상 크기가 50 % 페이지의 그것은이 비디오에 추가되는 멋진 작은 팁 비트입니다

어떻게 파일을 드래그 할 수 있도록 만들 수 있습니까? 필자가 지금 파일을 드래그하면 어떤 일이 발생합니까? 나는이 파일을 여기로 끌고, 나는 그것을 버리고 잃어버린 것이다 나는 페이지에서 사라져 버렸다 당신은 그것이 무엇인지 볼 수 있습니다 그 파일은 문자 그대로 문자 그대로 페이지 그것은 내가 모르는 박테리아 파일 일뿐입니다

무지개와 유니콘이 아닌 박테리아가있는 것 외에 나는 갔다 잘못된 방향으로 (웃음)하지만 재미 있습니다 좋아, 음 그래서 나는해야한다 먼저이 작업을 수행해야합니다

자바 스크립트 이벤트를이 요소에 추가합니다 이벤트를 처리하고 싶습니다 브라우저가 저를 위해 그 사건을 바로 처리 했습니까? 파일을 드래그하여 브라우저는 '우'처럼 가정합니다 브라우저이고, 파일을 드래그하고 있습니다 열어 봐

' 나는 브라우저에 말하고 싶다 "아뇨, 아뇨, 아뇨, 여기 책임자예요 네가 할 일을 하지마, 너를 위해서 다른 걸 얻었 어 뭔가 다른 계획을 세웠습니다 "그래서 내가 여기 와서 내가 먼저해야 할 일은, 아, 변수를 만들고 select ()를 호출하여 select, let 's 다른 곳에서 액세스하려고 할 수 있으므로이 변수를 전역 변수로 지정하십시오

나는 dropzone을 선택한다고 말할거야, 지금 여기서하고있는 것 어느정도 혼란 스러울 지 모르지만 나는 이것을 매우 편리하게 생각한다 나는 변수를 똑같이 이름 짓기를 좋아한다 id라는 이름으로, 그것은 절대적으로 재발행되지 않습니다 이드는 완전히 될 수있다

diff, 그리고 아무도 그들이 알고 있는지 여부를 알지 못한다 그냥 프로그래머, 나에게 조금 편리하지만, 나는 그렇지 않다 거기서 일어나는 일과 같은 것이 있다는 것을 혼란스러워하기 바란다 그게 바로 변수 이름에 이드와 같은 이름을 붙이는 것입니다 좋아 다음엔 (한숨) 당신이 지역에 이벤트를 첨부 할 수 있다는 것을 알고 있습니다

해당 이벤트를 호출하여 해당 객체에서 호출되는 함수로 그래서 mousePressed () 이벤트, changed () 이벤트, input () 이벤트 mouseOver (), mouseOut () 이것은 내가 본 이벤트입니다 이전 동영상에서 새로운 이벤트가있어 (웃음) 기억 안나 그것이 무엇인지 불렀지 만 드래그되는 것이 하나 있다는 것을 안다

dragOver () so dragOver 이벤트는 highlight라는 함수로이를 처리합니다 그래서 나는 함수 highlight (), dropzone dot 스타일, 배경을 말할 것이다 색상을 좀 알려주세요 여기를 축소하면됩니다

그래서 지금 이것은 최소한 하나의 이벤트 드래그를 처리했습니다 이 파일을 드래그하면 회색으로 변합니다 이제는 절대로 회색이 되긴했지만 적어도 나는 그 사건을 가지고있다 그래서 이것은 아무 것도 아니다 지금까지해야 할 일은 파일을 처리하는 것과 아무 관련이 없습니다

그 위에 끌면; 그 위에 마우스를 올려 놓으면 아무것도하지 않습니다 파일없이 마우스를 끌면 아무 것도하지 않습니다 이 이벤트는 파일을 드래그하여 회색으로 표시되는 경우에만 표시됩니다 그래서 내가 할 수있는 한 가지는 파일을 드래그하는 것과 그럼 "아니, 아니, 아니 나쁜 생각 나쁜 생각은 파일을 가져 가라 어쩌면 내가 그것을 강조하고 싶지 않을까? 그래서 나는 기억할 수 없다고 말할 수있다

그것은 무엇이라고하지만 나는 그것을 dragOut () unhighlight 생각하고 난 그냥 다시 설정합니다 배경색이 어색해요 다른 기능을 쓸거야 배경색을 흰색으로 바꾼다면 이제는 자신에게 질문을 할 수도 있습니다 다른 동영상에서이 문제를 해결할 수 있지만 질문 할 수 있습니다

왜 내가이 두 가지 기능을 필요로합니까? 정말 그 중 하나의 기능만을 사용할 수 있습니다 논쟁을 받아 들인다 : 백색 또는 검정 나는 백색 또는 회색을 의미한다, 그리고 나서 dragOver는 회색으로 그 기능을 호출 할 수 있습니다 white gray huuh dragOut 흰색과 함께 그 함수를 호출합니다 이것은 실제로 javascript 나는이 방법을 편의상 다시하고 있기 때문에이 방법을 사용하고있다 방법은 어떤 종류의 논쟁을 얻을 수있는 일종의 까다 롭습니다 그 기능들 나는 그것에 도착하고 싶다, 나에게 상기 시켜라! 나에게 상기 시켜라! 나에게 상기시켜

나는 기억할 것이다, 좋은 시나리오를 생각하고 좋은 비디오를 만들려고 노력할 것이다 자바 스크립트의 근본적인 측면과 같은 일종의 원인 그것은 closure라고 이름이 지어지는 ok를 사용한다 그래서 우리는 지금 그것을하지 않고있다 지금 당장이 일을하고 있지 않다 하지만 그 질문을하는 것이 옳습니다 (웃음)

내가 은유 적으로 말하는 사람이라고 생각하는 사람은 너를 의미한다 음 예 좋아, 음, 정의되지 않은 함수 라인 8 드래그

아마도 dragOut이 잘못되었습니다 (웃음) 그래서 우리가 이것을 어떻게 알아낼 수 있을까요? p5 DOM API가 무엇인지 상상해보십시오 이걸 좀 봐라 그러면 네가이 일을하고이 오류가 생기면

당신은 그것을 찾는 방법을 찾고 싶었습니다 당신은 브라우저를 열 수 있습니다 너는 p5jsorg에 가서이 uuhh 음을 클릭 할거야 당신이 참조 아래에 이것을 찾을 수 있어야하고 그것이 바뀔 것이라 확신합니다

어느 시점에서 곧 찾을 수있는 더 쉬운 방법은 도서관 밑으로 갈 것입니다 그리고 p5 DOM으로 갈거야 그리고 이제 나는 이것들 모두를 봐야 해 이 모든 방법들을 살펴보고 나는 드래그라고 불렀다하지만 우리는 볼 수있다

여기 혼란 이벤트는 실제로 dragLeave ()라는 이름입니다 dragLeave 함수와 addClass () 및 removeClass ()가 있습니다 흥미롭게도 수업 시간에 일어난 일에 대해 생각하고 있습니다 이전 동영상과 나는 그것이 실제로 변경되어야하지만 어쨌든 궁금해 아, 그것은 내 자신의 시간에 그렇게 생각해야 할 부차적 인 주제입니다 dragLeave ()는 내가 원한 함수의 이름입니다

그래서 그것을 최소화하고, 돌아와서 나는 그것을 클릭하여 볼 수있었습니다 좀 더 자세한 정보는 있지만 지금 당장 할 필요는 없습니다 여기에 dragLeave를 입력하면됩니다 다시 그리고 여기 우리는 파일을 떠난다, 파일은 그 일을 떠난다 좋은 작은 UI가 사용자 인터페이스 상호 작용 설계에 얼마나 좋았는지 (웃음) 풍자적이다

음,하지만 이걸 좀 더 직관적으로 처리 할 수 ​​있다는 것을 알 수 있습니다 너가 너의 것을 끝낼 때의이 유형의 사건 그런 것, 그러나 우리는 흥미 진진한 종류를 놓치고 있습니다 이것은 마치 내가 좋아하는 것 같이 아무 일도 일어나지 않을거야 저것 똑같은 일이 생겼어

그 이벤트는 마우스를 놓을 때의 드롭 이벤트입니다 해제 조치; 이것은 내가 릴리스 동작을 흉내 낸다 나는 처리 할 필요가있다 그 이벤트와 그 이벤트는 drop () 함수로 처리됩니다 이제 어떻게 될까? 여기에서? 이것에 대해 잠시 생각해 봅시다

이것을 실행해라 일어날 일이 두 가지있다 교활한; 한 가지 일은 다른 파일을 읽어야한다는 것입니다 일어날 필요가있는 일이 있습니다 저는 이것을 실제로 알고 싶습니다

거기에는 정말 두 가지가 없습니다 그렇지 않습니다 직관적으로 두 가지가 없습니다 소지품; 바로 그 순간이 있단 말인가? 나는 떨어졌다 그래서 내가 떨어질 때 나는 같은 스타일을 적용하는 것과 같이 해당 이벤트를 처리하고 싶습니다

unhighlighitng 그것을 누른 다음 나는 또한 떨어지고있는 파일을 읽고 싶다 하지만 실제로는 두 개의 분리 된 콜백으로 나뉘며 실제로 그것에 대한 좋은 이유와 좋은 이유는 내가 이 모든 이미지들을 가져 가라 이 모든 이미지를 브라우저로 드래그하면 어떻게 될까요? 한 번에 하나씩 각 파일을 처리하기 위해 콜백이 필요하지만 단 하나만 있습니다 그런 의미에서 그렇게 떨어지는 순간과 나는 어느 것을 잊어 버릴까요? 참조로 돌아가서, 아아아, 내가 여기에 참조로 돌아 가게 해줘 이 드롭 이벤트를 클릭하면 이걸 읽을 수 있습니다

(콜백, 콜백) 그래서이 callb보세요 첫 번째 콜백이 발생했습니다 파일이 삭제 될 때 이벤트가 실제 이벤트를 삭제합니다 두 번째 콜백은 파일이로드되고 실제로는 별도의 시간에 발생하므로 드래그 앤 드롭 방식으로 500MB 이미지 파일 맞지? 그 순간은 즉시 발생하지만 브라우저를 사용하게 될 수도 있습니다 그 아주 큰 파일을 읽는 동안 꽤 오랜 시간이 걸렸습니다

그래서 그것들은 두 개의 분리 된 파일입니다 이벤트가 끝나면 내 코드로 돌아갈 수 있으며 언제 내가 알 수 있다고 말할 수 있습니다 그것을 놓으십시오 나는 또한 상자 권리를 unhighlight하고 싶다? 그건 내가 그것을 강조하고 싶네 그리고 파일을 처리하고 싶습니다 그래서 지금은 acc입니다

두 가지 일을하고 있습니다 내가 그것을 버리 자마자 상자를 비우고 새로운 함수를 불러올 것입니다 gotFile () 흥미롭게도 함수 gotFile (file) 그러니 이걸 실행하고 여기에 유니콘을 끌 때 적어도 한번 보자 그냥 유니콘 만 보자 하이라이트가 맞다 그것을 강조 표시합니다

강조 표시를 해제하고, 강조 표시를 해제합니다 나는 기본 브라우저 동작을 기본 브라우저 동작으로 변경했습니다 그 파일을 열어봤을 텐데 지금은 여기에 간다 이제는 원하는대로 할 수 있고 무엇이든 할 수있을뿐만 아니라 내가 원하는; 그 파일에있는 데이터로 원하는대로 할 수 있습니다 예를 들어, createImg (file)라고 말할 수 있습니다

이제는 실제로 생각하지 않습니다 일 (웃음) 나는 그것이 작동하지 않을 것이라는 것을 안다 그러니 그걸로 시도해 보자

이 무지개가 맞습니까? 뭔가가 거기에 등장했지만 깨진 것 같아요 이미지이므로 여기에이 함수가 제공하는 인수 이것은 실제로 당신에게 다소 새로운 것이 될 수 있습니다 highlight () 또는 unhighlight ()와 같은 Google 콜백에는 데이터가 없습니다 그것과 함께 도착; 그래서 이것은 새로운 시나리오입니다이 콜백 p5는 파일을로드 할 준비가되었을 때 콜백을 트리거하지만 전달도 가능합니다

변수와 그 내부 변수는 단지 p5는 정말 멋지 네요 친구가 p5와 같은 모습을 보여 주면이 기능을 부르겠다 이 변수를 건네고 그 변수를 채울거야

해당 파일과 관련된 모든 데이터와 함께,이 파일 변수는 실제로 p5 파일 객체의 인스턴스와 같은 모든 정보가 있습니다 나는 그 파일의 이름이 얼마나 큰지 알고있다 많은 메타 데이터가있다 그 파일과 관련이 있고 그 파일에있는 것이 뭔가라는 속성입니다 데이터와 그 데이터가 파일에있는 텍스트 일 ​​수 있습니다

다른 일부 데이터 형식은 파일에 있거나 이미지 데이터 일 수 있습니다 그래서 만약 내가 createImg (filedata) 이제 이것을 보아라! 오, 오, 오케이, 참조를 보자 나는 내가 도망 간 것을 구했다 꽤 맞았다는 것이 확실하지만 여기에 약간의 문제가 있다는 것을 알고 있습니다

작동하므로 참조로 돌아가서 참조 및 파일 mmmh 파일을 찾고 싶습니다 이 파일은 p5 파일 객체입니다 누군가 나를 위해 그것을 빨리 찾아라! (웃음) p5 이미지 p5file 음이 보이지 않아서 어째서 어떤 이유로인지 알 수 없습니다 그것이 아마 있어야하는 참조는 과감한 복용입니다

여기서 측정하고 p5js GitHub 저장소로 이동합니다 나는 단지 실제로 찾아야 만한다 내가 뭘 찾아야하는지 알지 예

실제로이 작업을 수행하는 예제가 있습니다 나는 갈 수 있었다 나는 이것을 GItHub 저장소에 넣을 예정이었다 네가 좋아하는 것처럼 느껴질거야 빨리 비디오를 통해 좋아

30 초 또는 1 분이면이 부분을 건너 뛸 수 있지만 찾아 볼 것입니다 어쩌면 배우기도하고 DOM 아래에서 아 봐요 p5 요소 아래에있는 아아가 아마도이 드롭을 찾을 수 있습니다 올바른 장소 예 예 아니오 예 아래에 있습니다 ran-dom dom, 아하 거기에 우리가 아 아 아 아 파일

data 잘 골리에 의해 나는 옳았다 나는 아니었다? createImg (filedata) 그래서 그것의 내가 뭘하려고했는지, 왜 그 일을하지 않았 니? (웃음) 그냥 좋아, 그럼 어쩌면 이것에 대해 조금 체계적으로 보자 내가 잘 모르겠다

예를 들어 보자 거기에 메타 데이타가 있는지 봅시다 Imma는 createP (filename)라고 말합니다 ahh createP (file

type), createP (filesize) 등등 거기에 모두 파일에는 이와 관련된 모든 메타 데이터가 있습니다 그것의 이름, 그것은 형식이야 크기이기 때문에 단지 문자열 일 뿐이며 데이터는 실제로 문자열이어야합니다

이미지 물건 그래서 이것을 실행 하고이 무지개 파일에 드래그하자 정의되지 않은 드롭이 정의되지 않은 것을 볼 수 있습니다 우, 너는 내가 뭘했을지 짐작할 지 모르겠다 내가 한 일을 안다 나는 아마도 그것들의 순서를 뒤집었다 나는 그 콜백의 순서를 바꾸었다

그래서 이것은 매우 흔한 일입니다 일어나는 일, 내가 너를 그냥 망쳐 놓는 걸 즐기지 않는거야? 항상 지껄 인다? 나는 네가 정말로 희망한다 그래서 이것은, 이것은 여러분이 우리가 이것을 보았고 깨달았 음을 알려주는 것입니다 콜백이 트리거하는 것처럼 나는 트리거한다는 것을 의미합니다 두 콜백이 있기 때문에 둘 다 트리거됩니다

하지만 아마도 잘못된 순서로 그들을 유발하고 있습니다 그래서 p5 참고 문헌 ahh ahh library로 돌아가 봅시다 DOM; 이 드롭 함수를 여기서 보시고 다시 읽도록하겠습니다 첫 번째 콜백은 파일이 삭제 될 때 트리거됩니다 두 번째 콜백이로드 된 파일을 수신하도록 트리거합니다

내가 그랬던 것처럼 그게 아니야? 처음 콜백하지만 하지만 나는 완전히 내 실수가 아니므로 참조를 느끼고있다 나는 참조가 나를 잘못 인도했다는 느낌이 들었다 아마 첫 번째 인자는 파일을 다루는 calback 일 것이다

두 번째 인수는 그냥 이벤트를 처리하는 콜백입니다 떨어지는 사건 그래서 이것을 다시 시험해 봅시다 그리고 우리는 여기 야아! 그래서 나는 내 를 얻었고, 내가 var 이미지가 같다고 말할 무언가를 해봅시다

crreateImg () imagesize (100,100)라고 말하면 createP를 할 것입니다 하나의 문자열에 합류하게 될 것입니다 이 모양이 좀 더 짧아서, 이제 다시 한번 보겠습니다 우리가 드래그하는 좋은 순간을 가질 수있는 더 큰 창을 만들거야

여기 유니콘, 우리 유니콘이 있어요 나는 무지개를 끌고 있습니다 무지개 나는 여기에 또 다른 무지개를 끌고있다 여기서 볼 수 있습니다

파일이 들어오고 있습니다 파일을 페이지에 추가하고 있습니다 또한 정보를 얻습니다 파일의 크기, 파일 이름 나는 그 정보를 사용할 수 있었다 그래서 (심호흡을가집니다) 이것은 잘하면 흥미 롭습니다

내 말은, 정말 아무 것도하지 않고 또한 언급해야한다는 것입니다 이게 효과가 있음을 증명해 보겠습니다 다시 시작하려면이 페이지 새로 고침 한 번에 모든 이미지를 드래그하자 그러면 모든 이미지가 나타납니다 그래서 우리는 처리했습니다

콜백은 각각 여러 번 트리거되었습니다 이미지 um 그래서 내가 생각하기에 좀 더 할거야 DOM 요소가 있으므로 마술처럼 보일 것입니다 여기에 파일을 드래그한다고하는 점선과 같습니다 DOM 요소를 드래그하여 버튼처럼 사용할 수 있음을 알 수 있습니다

또는 슬라이더는 간신히 어떤 의미를 갖지만 하지만 실제로이 예제에 대해 무언가를 해 보겠습니다 아아아, 드래그 앤 드롭 2 잊어 버리는 걸 말 할거야 이 dropzone 것에 관하여 저것을 거기에서 가지고 가십시오, 저것에서 그것을 가지고 가십시오; 캔버스를 변수에 저장하고 canvasdragOver라고 말하지 않는 이유는 무엇입니까? canvasdragLeave, canvas

Drop 그래서 이것을 실행하면 이것을 볼 수 있습니다 이제이 이미지를 가져 와서 드래그 할 수 있습니다 그것은 캔버스 위에; dropzone 정의되지 않습니다 아, 오, 좋아, 난 아무것도 필요 없어 이 스타일링 물건의 정직 당신과 정직하게 나는 내가 훨씬 더 간단하게 할 수 있다는 것을 신경 쓰지 않기로 결정했다 내가 아는 한 통화 콜백을 사용할 수 있습니다 그냥 시각적 인 피드백 부분을 건너 뛰는거야? 그래서 무엇이든 끌고 갈 수 있습니다

drop 요소와 이제는 이것에 대해 다른 방식으로 생각해 봅시다 if 캔버스에 요소를 드래그하면 이미지를 볼 수 있습니다 캔버스, 그래서 내가 뭘 할 수 있을까? 이미지 함수를 호출 할 수 있습니다 이미지 (img, 0, 0, width, height) 이것은 다시 차이점입니다 DOM 요소 이미지를 만든 다음 그림을 그리는 것과 이미지를 캔버스에 넣습니다 image () 함수는 그 이미지가 드로잉 이미지를 사용하거나 캔버스에 이미지를 생성하면 createImg는 DOM 요소; 그래서 이제 우리는 이걸 아셔야합니다 지금은 이미지의 왼쪽 상단 모서리가 작아 보입니다 그걸 놀라게하는 이유는 아마도 너비가 그리고 음 의 높이가 놀랍습니다 나는 그것이 조금있는 것처럼 느낀다 거기에 p5 버그 같은 비트 나 작동하지 않는 wh이 뭔지 모르겠다

그걸 조사 해봐 하지만 내가 너에게 보여주고 싶었던 것도 나는 그것이 음을 통해 이미지를 만드는 방법으로 그것을 할지라도 나는하지 않는다 이 ahh 음 데이터를 얻는 것 같은 방법으로 이미지를 만드는 방법 아 내가 사용할 수있는 파일, p5 함수 imagehide ()를 사용할 수 있습니다

그래서 나는 그 DOM을 만들 수있다 요소를 사용하여 파일을 열면 즉시 숨길 수 있습니다 그것은 캔버스에 그리고 저는 실제로 이것이 일하고 있다는 것에 놀라움을 금치 못했습니다 내가 깨달았 기 때문에 나는

다른 생각이 들었다고 생각했다 이것과 관련된 문제 오,하지만 지금은 효과가 있습니다 내가 너비와 높이로 놓친 것은 어쩌면 그 전에

그 크기 아마 물건을 엉망으로 만들었을거야 하지만 이걸 봐라 당신이 지금 볼 수있는 투명한 이미지였습니다 나는 이미지를 드래그 앤 드롭합니다 캔버스에 나는 그곳에 이미지를 본다 그래서이 특정 비디오를 마칩니다 음, 내가 보여주고 싶은 것이 내가 한 것 같아 그것은 페이지의 모든 요소에서 만들 수있는 아이디어입니다

그 위에 파일을 드래그 할 때 처리합니다 그 위에 파일을 드래그하면 실제로 드롭합니다 그 파일을 이미지 파일이라면 그 이미지를 사용하여 이미지 데이터와 음 앞으로 다른 비디오에 대해 이야기하기

아마 텍스트 파일을 가지고 그것을 어떻게 할 것인지를 보여줄 것입니다 텍스트 파일에서 단어를 계산하는 것과 비슷하지만 조사 할 수는 있습니다 loadStrings () 함수와 일종의 어떻게 당신이 그것을 할 수 있습니다 음 나는 좋은 운동이 없다

나는 생각할 수 없다 나는 무엇인가를 쓸 것이다 기술 감사합니다 DOM 비디오가 한 가지 더 있습니다

이 후 자막 Amaraorg 커뮤니티