2014-09-02 4 views
0

문제가 있습니다. 버튼이있는 웹 사이트를 만들고 있습니다. 문제는 사이트를 방문하는 사용자가 한 번만 누르면됩니다. 그래서 사용자가 새로 고침하거나 다시 돌아 오면 다시 누를 수 없습니다.다음 번 방문시에도 클릭하면 버튼이 사라집니다.

나는 AJAX와 PHP의 조합을 사용해야한다고 생각하지만 불행히도 나는 그것을 함께 얻을만큼 좋지 않다. 여기에 희망 누군가가 올바른 방향 : 나를 밀어 수에서

HTML 코드 :

<form action="" method="POST"> 

    <input id="banana_button" type="submit" name="button_press" value="Add banana's!"> 
</form> 

자바 스크립트 : 내가 뭘 얻고 싶은 것은 그들이을 누르면이다

$('input[name="button_press"').click(function(){ 

     $('#banana_counter_text').append($banana+1); 
     $(this).attr('disabled',true).css('width','180px').attr('value','thanks for adding a banana'); 
    }); 

다음에 방문 버튼을 클릭하면 버튼이 표시되지 않습니다. 이것이 가능하고 최선을 다 할 수있는 방법이 있습니까? 나는 너희들이 나에게

업데이트를 도울 수 있기를 바랍니다 :

그럼 내가이 문제를 해결하기 위해 지난 몇 일 시도하고 있었고, 난 그것을 작업 얻었다. 사용자 정의 이름과 함께 session_cookie를 사용하고 있습니다. 사이트가로드 될 때마다 버튼을 표시하지 않고 해당 쿠키가 사용 가능한지 확인합니다. 그렇지 않으면 버튼 전체가 삭제됩니다.

코드는 다음과 같습니다

PHP

//this is what checks everytime if the cookie is set 
    if (isset($_COOKIE['banana_added'])) { 
     //code for disabling the button 
    } 

//this is what makes the cookie and checks if the submit button is pressed. 
//because people where wondering how the data is stored. It is just a simple XML file 
    if(isset($_POST['buttonsubmit'])){ 
     /*when submit is pressed */ 
     session_name("banana_added"); 
     session_start(); 
     $xml = simplexml_load_file('../banana.xml'); 
     $prev_count = $xml->banana_count; 
     $new_count = $prev_count +$_POST['buttonsubmit']; 
     echo $prev_count; 
     echo $new_count; 
     $xml->banana_count = $new_count; 
     file_put_contents('../banana.xml', $xml->asXML()); 
     header("location:../landing.php"); 

는 당신의 도움에 대해 감사합니다. 이 스레드를 어떻게 닫을 수 있는지 모르겠습니다. 이이 특정 문제는 COOKIE/SESSION 또는 DATABASE에 그 값을 넣어해야 하나 그 변화를 기억하기 위해

+0

사용자는 로그인 한 경우에만 클릭 할 수 있습니까? – Class

+0

PHP를 태그 중 하나로 사용하고 있습니다. PHP를 사용하여 데이터를 관리하고 있습니까 (예 : 데이터베이스에 저장)?찾고자하는 기능 유형은 "일회성"기능입니다. 사용자가 입력을 제공하면 한 번만 나타나고 비활성화됩니다. – kevin628

+0

쉬운 해결책은 쿠키를 저장하고 쿠키가있는 경우 버튼을 숨기는 것입니다. 이것은 사람들이 "쿠키 캐시 지우기"및 다시 제출하는 것을 막지는 못합니다. 보다 명확한 제어를 위해서는 '방문한 사용자'를 식별하고 저장하는 데있어 많은 복잡성을 초래하는 서버 측 솔루션이 필요합니다. –

답변

0

에 대한 솔루션입니다. 코스의 두 번째 변종이 선호됩니다. 예를 들어 버튼이라는 테이블이 있고 그 안에 tinyint (0과 1 값을 허용) 유형의 'checked'열과 기본값 0이 있습니다.

html에서 다음을 수행해야합니다.

<button <?php ($thisButtonQuery->checked == 'checked')? 'disabled' : '';?>>button text </button> 

감사합니다. :)

+0

데이터베이스를 사용하지 않았기 때문에 이것을 설정하기가 어렵다. 쿠키 등을 사용하여 설명 할 수있는 방법이 있습니까? –

0

글쎄, 나는이 문제를 해결하기 위해 지난 며칠 동안 노력했다. 나는 custom_cookie를 custom name과 함께 사용하고있다. 사이트가로드 될 때마다 버튼을 표시하지 않고 해당 쿠키가 사용 가능한지 확인합니다. 그렇지 않으면 버튼 전체가 삭제됩니다.

코드는 다음과 같습니다

PHP 

//this is what checks everytime if the cookie is set 
    if (isset($_COOKIE['banana_added'])) { 
     //code for disabling the button 
    } 

//this is what makes the cookie and checks if the submit button is pressed. 
//because people where wondering how the data is stored. It is just a simple XML file 
    if(isset($_POST['buttonsubmit'])){ 
     /*when submit is pressed */ 
     session_name("banana_added"); 
     session_start(); 
     $xml = simplexml_load_file('../banana.xml'); 
     $prev_count = $xml->banana_count; 
     $new_count = $prev_count +$_POST['buttonsubmit']; 
     echo $prev_count; 
     echo $new_count; 
     $xml->banana_count = $new_count; 
     file_put_contents('../banana.xml', $xml->asXML()); 
     header("location:../landing.php"); 

는 당신의 도움에 대해 감사합니다. 이것은 특정 문제에 대한 해결책입니다.

관련 문제