2012-01-02 6 views
1

등록 된 사용자 만 투표를하고 싶습니다. 모든 코드를 변경하고 싶지 않습니다. 지금 나를 위해 할 수있는 가장 쉬운 방법은 사용자가 로그인하여 숨겨진 필드에이를 전달하는 경우 사실로 설정됩니다.AJAX로 게시물을 사용하여 숨겨진 값을 전달하는 방법

여기에 숨겨진 값을 전달할 수 있습니까?

이 내가 지금까지

$(function() { 

$(".vote").click(function() 
{ 

var name = $(this).attr("name"); 
var id = $(this).attr("id"); 

var dataString = 'id='+ id ; 
var parent = $(this); 


if(name=='up') 
{ 

$(this).fadeIn(200).html('<img src="dot.gif" align="absmiddle">'); 
$.ajax({ 
    type: "POST", 
    url: "up_vote.php", 
    data: dataString, 
    cache: false, 

    success: function(html) 
    { 
    parent.html(html); 

    } }); 

} 

return false; 
    }); 

}); 

<div class="box1"> 
    <div class="up"><a href="" class="vote" name="up" id="'.$row['id'].'">'.$row['plus'].'</a></div> 
    </div> 

if($_POST['id']) 
{ 

$id=$_POST['id']; 
. 
. 
. 
} 
+1

왜 검사를 수행 PHP를 사용자가 로그인하지 않은 경우 투표 를 반향하지 않음으로써 투표를 해제하지? – stedotmartin

+0

너무 많은 코드를 변경해야합니다. 투표를 비활성화 할 수는 없습니다. – emre

+0

아, 스파게티 코드의 즐거움 [PHP] :-) –

답변

2

에 숨겨진 필드를 추가하여 숨겨진 입력을 추가 :

<input type="hidden" id="loggedIn" value="whatever" /> 

변수

var id = $(this).attr("id"); 
var loggedIn = $("#loggedIn").val(); //will be the value of loggedIn 
설정

변경 $의 아약스()에서이 라인

data: {loggedIn: loggedIn, id: id} 
+1

나는 이것이 잘못된 접근이라고 bdares와 동의하지만 작동 할 것이다. – Paul

8

잘못된 접근 방식 up_vote.php 가지고 것입니다. Javascript는 클라이언트 측에서 실행됩니다. 클라이언트는 사용자에 의해 제어되므로 클라이언트를 신뢰하지 않습니다. 서버 측에 저장된 세션을 사용하십시오.

(+ 페이지에 코드를 붙여 그것을 수정하고 그것을 실행 복사본에서 사용자를 유지하는 것입니다 무엇?)

+0

또는 방화 광 또는 다른 자바 스크립트 디버거를 사용하고 제출하기 전에 숨겨진 필드의 값을 변경하십시오. –

0

단순히 dataString

dataString += 'foo=bar' 
관련 문제