PHP20.1 Example: Hit Counter

위로 월드 와이드 웹 초기에, 대부분의 웹 사이트의 매우 일반적인 특징은 히트 카운터라고하는 것 적중 횟수 카운터가 너무 자주 보이지 않지만 백 – 백 그 이전 웹 일에서는 매우 흔했습니다

거의 모든 곳에서 볼 수 있습니다 웹 사이트 및 그들은 기본적으로 얼마나 많은 사람들이 그 웹 사이트를 방문했는지에 대한 다른 사람들에게 어떻게 보여줄 수 있는지, 얼마나 멋지고 얼마나 인기가 있는지를 보여줄 수 있습니다 귀하의 웹 사이트는 히트 카운터를 만드는 것은 우리가 상당히 쉽게 할 수있는 것입니다 이 점은 PHP를 사용합니다 히트 카운터를 만들 수 있다는 것은 기본적으로 우리에게 번호를 입력하고 스크립트가 실행될 때마다 그 번호에 하나를 추가하십시오

페이지에 액세스합니다 우리는이 번호를 장기간 저장할 수 있어야하고 거기에 모든 사용자가 공유하는 하나의 숫자가 될 수는 있습니다 잠재적으로 HTML 또는 JavaScript를 사용하여 수행 할 수 있습니다 PHP와 같은 서버 측 스크립팅 언어 정말 유일한 방법입니다 그래서 내가 여기에 기본 HTML 페이지를 설정하고 결국 내가하고 싶은 일은 몸에 있습니다

히트 카운트를 보여주고 싶습니다 나는 본문에서 PHP 태그 집합을 여기에 넣고 변수를 반향 출력합니다 라는 current_count 아직 변수를 만들지는 않았지만 이 스크립트의 목적을 일종의 것으로, 현재 카운트 변수가 있는지 확인하고 이 스크립트가 액세스 될 때마다 현재 카운트 변수가 하나씩 올라갑니다 뒤로 문서가 시작되기도 전에 스크립트의 맨 위에 현재 카운트가 무엇인지 판단하는 데 필요한 처리를 수행합니다

악 시작 부분에 PHP 태그 집합을 여기에 넣으면 시작할 수 있다고 생각합니다 현재 카운트 변수를 생성합니다 그리고 저는 그 현재의 것을 초기화 할 것입니다 count 변수를 사용하여 0에서 시작합니다 기본적으로 아이디어는 우리가 이미 존재하는 파일의 현재 카운트가 없습니다

이것은 우리의 기본값 우리의 현재 카운트의 가치를위한 시작 장소 나는 또한 어딘가에 여기에있다 현재 카운트를 증가 시켜서 하나씩 증가시키고 자 할 때 그래서 내가 현재 넣을 게 count는 현재 카운트 +1과 같습니다

그래서 실제로는 무엇이든 걸리는 라인이됩니다 이전 수는 하나 였고 그 수를 더하면 그 성명 뒤에 어딘가에있을 것입니다 그런 다음 그 번호를 다시 저장하려고합니다 그래서 그것은 단순한 종류의 것입니다 나는해야 해

조금 더 재미있는 부분은 이전 카운트? 있다면, 나는 현재 카운트 0부터 시작하고 싶지 않다 나는 무엇인가? 대신에 원하는 것은 이미 가지고있는 것부터 시작하는 것입니다 그래서 가정 해 봅시다 우리가 이미 가지고있는 모든 카운트는 단순히 파일에 저장됩니다 그 안에 아무것도 없지만 우리의 수는 숫자입니다

그 파일을 열어 보겠습니다 이 파일의 이름은 counttxt이고, 당분간이 파일을 열어 보겠습니다 읽기 모드의 파일 이 시점에서 모든 일에 정말로 관심이 있기 때문에 읽기 모드

현재 카운트가 무엇인지 읽는 중입니다 물론, 그 가능성은 방금 스크립트를 시작했거나 방금 새 서버로 이동했거나 심지어 뭔가 잘못되어 파일이 존재하지 않을 수 있으므로 항상 확인해야합니다 그에 대한 우리는 거기에 갈 그래서 그 파일이 실제로 존재한다면, 다시 그 파일을 가정하면 숫자가 저장되어 있으면, 그 숫자를 읽고 그 숫자를 현재 값으로 할 수 있습니다

그래서 내가 말하자면 현재 카운트는 내가 fgets를 할 때 돌아 오는 것과 동등 해지고, 내 파일에서 줄을 왜 fgets인가? 음,이 특별한 경우에 제가하고있는 모든 것은 독서입니다 그 위에 하나의 줄이 있습니다 그게 내가 정말로 읽고 싶은 모든 것입니다 파일

나는 더 복잡한 일을 할 필요가 없다 부서 지거나 나눌 필드가 없습니다 실제로, 파일에있는 하나의 숫자 만 읽으면됩니다 내가 완료되면 파일을 닫고 그 트릭을해야합니다 그래서 스크립트가 처음 시작될 때 현재 카운트가 0이라고 가정하지만, 카운트 파일에서 더 현실적인 현재 카운트를 얻으려고 시도하십시오

그 카운트 파일 존재하지 않는다면 현재 카운트는 0으로 유지되고 그것은 우리의 시작 장소가 될 것입니다 파일이 존재하고 그 번호를 읽을 수 있다면 우리는 그것은 우리의 현재 카운트입니다 우리는 그것에 하나를 더할 것입니다 그 값은 실제로 페이지 아래에 아래에 표시됩니다 그것은 사용자가 보는 현재 카운트가 될 것입니다

내 히트 카운터의 형태로 지금 당장은 상황을 처리하지 않을 것입니다 다음 방문이 어떻게 될지 다음 방문은 동일한 현재에서 시작하고 싶지 않습니다 카운트하고 1을 더하십시오

기본적으로 모든 사람들에게 항상 현재를 보여줄 것입니다 1의 수 그래서 내가해야 할 일은 내가 필요로하는 나의 현재 수를 늘린 후에이다 실제로 다시 저장하기 때문에이 숫자를 카운트 파일에 저장하는 것을 의미합니다 다시

카운트 파일을 다시 열어 보겠습니다 이번에 내가 파일을 다시 열면 나는 쓰기 모드, W 모드로 열립니다 쓰기 모드에서 열면 나는 물론 파일을 사용하여 데이터를 쓸 수 있지만 추가 이점으로 W 모드는 파일에 쓰는 내용이 자동으로 이미 덮어 쓴 것을 파일에 그래서 저는 이것보다 더 복잡한 것을 할 필요가 없습니다 W 모드는 나의 새로운 카운트가 나의 오래된 카운트를 대체하게한다

물론 아직도있다 어쩌면 파일을 어떤 이유로 열 수 없기 때문에 언제든지 다시 확인하고 파일이 실제로 열려 있는지 확인한 다음 파일을 실제로 열면 그것에 쓰십시오 그래서 나는 fwrite 문을 할 것이다 내 파일에 쓰고 싶다 파일에 기록하고 싶은 것은 현재의 수입니다

따라서 현재 카운트는 내 현재 파일이 증가 된 후에 무엇이든지 내 파일에 기록됩니다 그 시점에서 나는 파일을 닫을 수 있으며 다음 번에이 페이지에 액세스 할 때 표시되는 계수는 표시된 마지막 계수에서 다음 번호가됩니다 그래서 스크립트가 액세스 될 때마다 계속해서 실행되는 카운트를 얻어야합니다 시도 해보자 좋아, 여기 내 웹 브라우저에서 내게 가서 내 카운트 스크립트를 처음으로, 그리고 이것이 내가 얻는 것입니다

나는 1의 계산을 얻는다 이것이 내가 처음 만난 적이 있기 때문에 옳다 페이지 나도 그래, 당신은 여기에서주의 할 것이다, 경고를 얻는다 : fopen counttxt는 열리지 않았다

stream, 기본적으로 PHP는 존재하지 않는 파일에 접근하려고했음을 알려주고 있습니다; 그런 파일이나 디렉토리가 없다는 것을 알려줍니다 그래서 count 파일을 열려고 할 때 그것으로부터의 초기 카운트, 그것은 그것을 열 수 없었고 그것에 대해 불평하고 있습니다 우리는 다시 여기로 와서 1 초 만에 보게 될 것입니다 페이지를 새로 고치면 계산됩니다 올라가고, 내가 계속해서 또 다시 새로 고침하면, 카운트가 계속 올라간다

그래서 우리는이 시점에서 작동하는 히트 카운터가있는 것처럼 보입니다 내가 돌아 가면 그리고 실제로 내 카운트 파일을 삭제합니다 보통은 그렇지 않습니다 너무 끔찍하게 자주해야하지만이 경우 문제를 파악하는 데 도움이됩니다 내 계산 파일을 지우고, 브라우저로 돌아가서 새로 고침을 다시하면, 우리는 가야한다

1로 예상되는 동작이지만 다시 약간 불쾌한 경고입니다 메시지가 다시 온다 그 경고 메시지는 정말로 그 모든 굉장히 큰 거래가 아닙니다 부품 내가 개발 모드에서 PHP를 실행하고 있기 때문에 그 이유를 알 수 있습니다 나는 기본적으로 내 경고, 모든 오류, 가능한 모든 문제를 보여주기 위해 PHP 서버에 알려 줬습니다

잘못했다면 나 한테 말해줘 프로덕션 모드에서는 설정되지 않을 가능성이 큽니다 그래서 이것이 실제 웹 사이트에 나온다면 경고가 나타나지 않을 가능성이 있습니다 우리는 그 상황에서 경고가 나올 수도 있다는 것을 깨닫지는 못하지만, 여전히 저를 귀찮게합니다 그 경고가 거기에 터져 나오고 있습니다

그것에 대해 신경 쓰이는 부분 나는 그것을 기대했다 그 문제가있을 수 있다는 것을 알았고 실제로 계획을 세웠습니다 그것을 위해 여기 네 줄에서 나는 counttxt 파일을 읽기 모드로 열려고했는데 이 시점에서 오류가 발생할 수도 있고 파일이 존재하지 않을 수도 있다는 것을 알고 있어야합니다

이 if 문은 무엇을위한 것인가? 기본적으로 내가 열 수 없다면 어떻게 될지 스스로 준비한다 파일 음, 파일을 열 수 없으면 파일을 열려고하지 않을 것입니다 파일을 닫고 파일을 닫지 않을 것입니다 나는 계속해서 내 몸무게를 늘릴거야

현재 카운트의 기본값 그래서 이것은 완전히 계획되었지만 그렇게하지는 않았습니다 특별한 해를 끼치 지 않으면 경고 메시지가 나타나고 있다는 것을 여전히 귀찮게합니다 에서 PHP에서 그런 종류의 상황이 있다는 것을 모르는 특별한 연산자가 있습니다 내가 이전 비디오에서 다루었 기 때문에 지금 당신에게 언급 할 것입니다

이 연산자 실제로는 그냥 "at"기호 (@)이고 당신이 할 수있는 일은 처음에 그것을 넣을 수 있다는 것입니다 오류 또는 경고를 유발하는 행 @는 실제로 PHP에서 오류 억제 연산자, 그리고 본질적으로 당신이 처음에 그것을 넣으면 어떻게됩니까? 기본적으로 PHP는이 줄에서 오는 오류나 경고를 표시하지 않는다고 말합니다 당신은 그것을 꽤 현명하게 사용하고 싶습니다 그걸 앞에두고 싶지 않을거야 발생하는 모든 오류를 알지 못할 것입니다 스크립트가 작동하지 않습니다

더 좋거나 나 빠졌지 만, 문제가 있다면 전혀 알려주지 않을 것입니다 그들의 하지만 난 오류 억압 연산자가 완벽한 해결책이라고 생각합니다 내가 경고를보고있는 상황의 일종이며 PHP가 뭔가를 가져다 주었다고 느낍니다 내가하지 않은 것은 근본적으로 무엇이 내려 지는지입니다

그래서 그 앞에 @를 넣음으로써 그 라인의 나는 PHP에게 "이봐,이 라인은 경고를 일으킬 수 있지만, 그것에 대해 걱정하십시오; 처리됩니다 "그 줄 앞에 @를 붙이면 PHP가 경고를 표시하지 않도록 지시하십시오 그럼 실제로 시도해 봅시다 다시 돌아가서 카운트 파일을 다시 지울거야 거기는; 악 그것을 닦아 내면 경고가 나타날 수있는 상황에 처하게됩니다

우리가 처음 페이지에 액세스 할 때 내 브라우저에서 새로 고침을하면 1이됩니다 그것은 단지 파일을 읽을 수 없었고, 1의 카운트를 생성 한 다음, 파일 및 이번에는 경고가 표시되지 않았습니다 그래서 오류 억제 연산자는 직업과 매번 새로 고침 할 때마다 세상이 놀라 울 정도로 놀라워 할 수 있습니다 거대한 조회수