2014-10-01 2 views
0

PHP 함수를 CodeIgniter에서이 설정으로 한 번만 실행할 수있는 방법을 알려주십시오.PHP 함수를 처음 실행 한 후에 만 ​​실행하는 방법은 무엇입니까?

페이지의 링크를 클릭하면 href="http://foo.com/func/id/"으로 이동합니다. id URL 세그먼트를 기반으로 func 세그먼트는 링크를 클릭 한 사용자를 리디렉션 할 위치를 결정하는 기능을 실행합니다.

function func($id) 
{ 
if ("first time link($id) is clicked by unique user") { 
// Redirect based on $id 
} else { 
// Redirect to homepage 
} } 

는 기본적으로, 첫 번째 클릭 후 같은 링크를 클릭 할 때마다이 else 경우를 트리거 :

는 내가 달성하고자하는 것은 이것이다. 링크는 필요한 경우 ID 또는 클래스를 가질 수 있습니다.

적어도 현재 페이지가 닫힐 때까지 클릭 한 링크에 대해이 코드를 유지하고 싶지만 가능한 경우 브라우저 세션이나 타이머를 기반으로하는 것이 좋습니다. 아마도 PHP 세션 일 것입니다.

+2

아마 PHP 세션. 또는 onclick 반응하고 매개 변수를 추가하려면 링크를 변경하려면 일부 자바 스크립트? – Aneri

+0

모든 사용자의 첫 번째 클릭에만 응답하도록하려면이 방법을 사용하면 데이터베이스를 통해 건강하게 저장할 수 있습니다. 현재 사용자가 처음 클릭하는 경우 $ _SESSION 변수가 정상적으로 작동합니다. – LS11

+0

글쎄, 당신이 원하는 것을 알아야합니다 -> "첫 번째"가 의미하는 것을 정의하십시오 : 처음으로 누군가가 처음 링크를 클릭합니다. 그런 다음 사용자가 무엇인지 정의해야합니다. 즉, ID, 세션, 사용자 ID (등록), 시간별, 쿠키 별로 식별합니다 .... 실제로는 "처음"으로 이해하는 내용에 따라 달라집니다. – Zim84

답변

0

원하는 것은 상태를 유지하는 것입니다 (여전히 HTTP는 상태 비 저장).

데이터베이스 레코드, 파일 또는 메모리 내 세마포어와 같이 플래그 서버 측을 유지해야합니다.

원하는 동작이 "교차"또는 단일 사용자인지 이해하지 못했습니다. 아마도

0

,

function func($id) 
{ 
    if (@$_SESSION['linkClicked']) { 
     // Redirect to homepage 
    } else { 
     $_SESSION['linkClicked'] = true; 
     // Redirect based on $id 
    } 
} 
+0

'@ '소음기를 사용하는 대신'isset ('linkClicked ', $ _ SESSION) 및 $ _SESSION ['linkClicked ']'를 사용합니다. 그게 나야. –

+0

자신의 사이트에서 여러 링크를 추적하는 경우에는 작동하지 않습니다. – Solrac

+0

@SolracRagnarockradio 동의합니다. 내 코드 스 니펫은 Alex를 시작하고 자신의 요구 사항에 따라 추가로 탐색하는 것입니다. – sudipto

0

PHP 당신을위한 아웃 - 오브 - 박스 2 명 임시 저장소가 :이이 쓸모/유용 할 수 있습니다 저장할 데이터의 양에 따라

$_COOKIE 
$_SESSION 

을 당신. 저장할 데이터가 너무 크면 (e, 200 링크 참조) 파일에 저장하고 사용자 세션 ID 또는 SQL 테이블을 통해 링크하는 것이 더 나을 것입니다.

PHP는 누가 서버 측 프로그래밍으로서 누가 클릭 하는지를 알 수있는 방법이 없습니다. 그래서 이것을 고려하십시오 :

function func($Link_id){ 

    if (in_array($Link_id, $_SESSION['my_links'])){ 
    $_SESSION['my_links'][]=$Link_id; 
    // Redirect to homepage 
    } else { 
    // Redirect based on $id 
    } 

} 
+0

이 경우 세션도 쿠키를 저장합니까? 감사. – Alex

+0

세션은 OS의 파일 인 PHP의 세션 핸들러에 데이터를 저장합니다. 쿠키에 데이터를 저장하려면 전역 $ _COOKIE를 대신 사용해야하지만 쿠키 클라이언트 측을 수정하는 것이 더 쉽기 때문에 $ _SESSION을 사용하는 것이 더 안전합니다. – Solrac

관련 문제