2011-12-21 4 views
3

을 제목으로 말했습니다. "사용 가능"이라고 말한 버튼을 만들고 싶습니다. 아무도 클릭하지 않으면 모든 미래의 사용자가 "사용할 수 없음"이됩니다. 아이디어가 있습니까?한 번만 클릭 할 수있는 버튼, EVER

참고 : 그는 학교 프로젝트, 단지 일부에 대한 막연한 것에 대해 점을

유감을 증명하려고, 공상 또는 보안 아무것도, 내가 할 노력하고 모든 내의 Joomla 웹 사이트에서 기사를 작성하는 것입니다 단지 빠른 사용자가 액세스하고 클릭 할 수있는 버튼, 그것을 이잖아과 나는 보안 걱정하거나 시도를 부정하지 오전 다른 사람이

+8

무엇이 요점입니까? – BoltClock

+1

bool을 DB에 저장하고 참 또는 거짓인지 확인하십시오. – slinzerthegod

+0

많은 사람들이 같은 컴퓨터 앞에 있고 마우스가 하나씩 있습니다 (예를 들어, 게임에서)? – hakre

답변

1
데이터베이스를 사용하지 않고

간단한 방법은, 여기에 (또는 YAML, INI, XML 등을 사용할 수있다) 중 1 (클릭)하여 파일 또는 0 (안 클릭) 간단한 텍스트를 사용하여 기본 로직의 :

$filePath = './clicked.txt'; 

if((int) file_get_contents($filePath)){ 
    // put code here to display the button and mark it as disabled 
    echo "Can't click"; 
} else { 
    // code to display button 
    // code to process button request and marked clicked as true in the file 
    file_put_contents($filePath, '1'); 
    echo "changed file"; 
} 

파일을 읽을 수 있고 파일을 업데이트 할 수있는 유효성 검사를해야합니다.하지만 db를 사용하지 않으려면해야 할 일이 거의 있습니다.

또한 사용자가 파일을 찾을 수 없도록 해당 파일을 웹 디렉토리 아래에 두십시오.

편집 :하지만 Joomla를 사용하는 경우 DB를 사용하십시오. 이 방법은 못생긴입니다.

0

당신은에 값을 절약 할 수 그들에 추가 사이의 joomla 기사 PHP JS 코드를 가질 수 있습니다 데이터베이스를 만들거나 버튼을 누르면 텍스트 파일을 만듭니다. 데이터베이스 항목 또는 파일이 더 이상 존재하지 않으면 더 이상 입력 할 수 없습니다. 버튼을 눌렀을 때 서버 측 작업을 실행하지 말고 버튼을 비활성화하십시오.

+0

mmmmmm 나는 joomla를 사용하고 있습니다. 데이터베이스를 만드는 것보다 쉬운 방법이 있습니까? 왜냐하면 나는 보안 캔트에 대해 걱정하지 않기 때문에 단지 클릭 할 때 html 파일을 업데이트합니까? – a7medo778

+0

물론 HTML 파일을 업데이트 할 수 있습니다. 하지만 악의적 인 사용자가 어쨌든 공식을 제출할 수 있습니다.) – TimWolla

+0

음, 나는 사기꾼과 관련이 없습니다. P, 어떻게해야하는지에 대한 조언이 있습니까? DB로가는 것보다 훨씬 간단합니다. – a7medo778

0

정말로이 버튼을 한 번만 클릭 하시겠습니까? 그렇다면 어떤 종류의 데이터베이스에 상태를 저장하고 누군가가 클릭하면 데이터베이스를 업데이트해야합니다.

이 아닌이 아니라면 JavaScript를 사용 중지하고 사용자의 결정을 회피 할 수 있습니다.

제쳐두고,이 요구 사항은 나에게 많은 의미가 없습니다. 이것은 검증하기 어려울 것입니다. 다른 페이지로 리디렉션하는 제출 버튼을 만들 수 있지만 사용자는 브라우저의 뒤로 버튼을 누르고 다시 버튼을 클릭 할 수 있습니다. 그것을 방지하기 위해 할 수있는 일은 많지 않습니다.

분명히 했으므로 최선의 방법은 여전히 ​​데이터베이스에 "클릭 한"값을 저장하는 것입니다 (파일은 정상적으로 작동합니다).

페이지를로드 할 때 PHP를 사용하여 파일에서 "클릭 한"값을 확인하십시오. 거기에 있다면 HTML에서 버튼을 직접 비활성화 할 수 있습니다.

PHP (또는 사용중인 서버 측 언어)에서 두 번째 수준의 검사를 추가하는 것이 좋습니다. 누군가가 버튼을 클릭하면 데이터베이스/파일로 돌아가서 "클릭 한"값을 확인할 수 있습니다. 이미 클릭 한 것으로 확인되면 아무 것도하지 않거나 이미 클릭했음을 알리는 메시지를 사용자에게 표시 할 수 있습니다. 그렇지 않으면 데이터베이스/파일을 그에 따라 업데이트 할 수 있습니다.

+1

은 보안에별로 신경 쓰지 않습니다. 작은 학교 프로젝트의 경우 – a7medo778

+0

미래에 이런 질문을하면 학교 프로젝트에 관한 질문을 숙제로 붙이십시오. 커뮤니티가 요구 사항을 훨씬 잘 이해하는 데 도움이됩니다. – jwiscarson

+0

은 다음 번에 반드시 수행해야합니다. D – a7medo778

0

그럼 여기에 몇 조각 있습니다.

먼저 값을 저장하는 방법이 필요합니다 (클릭했는지 여부). 내 표준 연습 값을 저장할 DB에 user_properties 테이블 (uid, 속성, 값)을 만드는 것입니다.

응용 프로그램 내에서 관리하기 위해 사용자 (프로필) 개체에 속성을로드하고이를 참조하기 위해 세션에 저장합니다. 버튼이 렌더링되면 사용자 프로필의 Properties 배열에 값이 있는지 빠르게 확인하여 비활성화 할 수 있습니다. 그렇지 않으면 그냥 두십시오.

단추를 클릭하면 사용자 프로필의 속성이 저장되고 데이터베이스로 업데이트됩니다. 개인적으로 업데이트 데이터베이스가있는 경우 세션 프로필에서로드가 변경되었는지 확인합니다.

+0

이것은 합리적인 답변이지만 버튼을 한 번만 클릭하는 문제를 실제로 해결하지는 않습니다. 2 명의 사용자가 동시에 페이지를 열어 놓을 수 있기 때문에 A 클릭 및 세트 서버의 값인 B의 양식에는 여전히 활성 및 사용 가능한 버튼이 있습니다. –

2

매우 복잡합니다.JavaScript가없는 사용자가 제어되지 않은 상태로 클릭하지 못하도록 JavaScript로 버튼을 생성합니다. 사용자가 클릭 할 때 혜성 서버를 유지하면 변경 사항이 연결된 다른 모든 클라이언트에 즉시 전파되고 버튼이 제거됩니다. 이후에는 새로운 사용자를 위해 버튼 생성을 승인하지 마십시오.

+0

자바 스크립트, PHP 또는 다른 언어가 될 필요가 없습니다. – a7medo778

+0

그냥 데이터베이스 호출을하지 않고도 간단하게 검색 할 수 있습니다. – a7medo778

+0

혜성을 사용하는 것이이 시나리오의 가능성을 대폭 줄이는 유일한 방법입니다. 사용자 A가 페이지를로드합니다. , 사용자 B는 페이지를로드하고 사용자 A는 버튼을 클릭하고 사용자 B는 버튼을 클릭합니다. 그리고 자바 스크립트를 사용하면 혜성 만 할 수 있습니다. 사실, 대신 플래시를 사용할 수 있지만 동일한 원칙이 적용됩니다. 뭔가 서버 측과 이야기하면서 뭔가있는 것이 필요합니다. DB에 관해서는 간단한 파일로 충분합니다 - 버튼을 누르면 파일이 생성되고 파일이 존재하면 버튼이 비활성화됩니다. – Amadan

0

문제의 성격을 감안할 때 다른 쪽에서 사용자를 차단하는 것이 좋습니다. 즉, 링크를 한 번만 방문하기를 원하면 서버가 해당 페이지를 한 번만 제공하고 액세스를 거부하게하십시오. 버튼은 모든 사용자가 클릭 할 수있는 상태로 유지되지만 요청 된 페이지는 실제로 한 번만 수신됩니다.

다른 사람들이 버튼을 숨기거나, 파일이나 DB에 값을 설정하거나 서버에서 실제로 영구적으로 유지하는 것과 같은 방법으로 페이지를로드, 중단 또는 거부로 리디렉션하는 방법을 확인하십시오. 페이지가있는 경우

관련 문제