2012-09-13 3 views
0

문제와 관련된 도움 요청. 여기 거래가 있습니다 : teams 테이블을 가지고 있으며 team_id을 포함하는 데이터베이스가 있습니다. 내 페이지 중 하나에서 URL을 생성자의 team_id에 포함하는 링크 목록을 생성합니다. 다음 페이지에서 team_id이 필요하지만 다른 방법으로 전달하는 방법을 알 수 없습니다. 양식 및 POST 사용은이 방법은 목록의 마지막 링크 데이터 만 통과하기 때문에 옵션이 아닙니다. 세션 변수를 설정하는 함수에 필요한 변수를 이산 적으로 전달할 방법이 없기 때문에 세션에 저장하는 것도 옵션이 아닙니다. 나는 노력했고 꽤 쉽게 소스 코드를 볼 수있다. 그래서 여기에 내가 다루고있는 것을 정확히 볼 수있는 몇 가지 샘플 코드가 있습니다.데이터베이스 생성 목록으로 작업 할 때 PHP 변수가 전달되지 않음

<? 
if(mysql_num_rows($result2)>0){ ?> 
    <a class="fltrt btn btn-danger btn-small" onclick="test()" href="acceptmatch-exec.php?match_id=<?php echo $match_id; ?>&team_id=<?php echo $team_id;?>&action=cancel">Cancel Match</a> 
<?}else{?> 
    <a class="fltrt btn btn-success btn-small" href="acceptmatch-exec.php?match_id=<?php echo $match_id; ?>&team_id=<?php echo $team_id;?>&action=accept">Accept Match</a> 
    <?} ?> 

위의 코드는 제외 된 while 루프를 통해 페이지에 여러 번 생성됩니다. 아무 것도 보이지 않고 match_idteam_id 변수를 전달하고 싶습니다. 이 양식을 만든 경우 그 당시에 단 하나의 결과 만있는 경우가 아니라면 올바른 변수를 전달하지 못합니다. 나에게 쉬운 방법이 있어야한다는 생각이 들지만,이 문제를 해결하는 방법에 대한 생각을 나누십시오. 나는 충분히 설명하지 않고있는 것처럼 느낀다. 그러나 설명하기 란 쉽지 않다. 나는 기본적으로 GET과 같이 작동하지만 POST와 같은 역할을하고 소스 코드 또는 링크 위치를 보는 사람들로부터 숨길 수있는 것을 원한다.

덕분에

+0

사실 세션 변수를 원한다는 소리입니다. 세션 vars를 설정하는 방법을 오해 한 것 같습니다. 함수를 사용하지 않아도됩니다. 실제로 세션을 사용하지 못하게하는 이유는 없습니다. $ _SESSION [ 'teamId'] ​​[] = $ team_id; 할 수 있습니다. 귀하의 루프에서 – phpmeh

+0

페이지의 어떤 부분이 서버에서 실행되고 클라이언트 측에서 실행되는지 혼동하는 것 같습니다. 작업하는 프로젝트가 정말 심각하다면, 평범한 원시 PHP에서 벗어나 PHP를 사용하더라도 코드 및 프리젠 테이션 템플릿을 분리 할 수있는 프레임 워크를 사용하는 것이 좋습니다. – jsbueno

+0

세션 변수를 사용하여 보이지 않는 변수를 전달할 수 있다는 것을 알고 있습니다. 결과에서 클릭 한 버튼에 따라 설정하는 방법이 필요합니다. @jsbueno - 나는 PHP가 다른 것보다 먼저 실행되고 서버 사이드라는 것을 알고 있습니다. 반면에 다른 것들은 나중에 실행됩니다.작업을 완료하는 방법에 대한 도움이 필요합니다. – Wilcoholic

답변

1

사람들은 당신이 다른 곳에 게시하지 않는 한, 서버에서 소스 코드 를 볼 수 없습니다.

당신이 바로 [해시 (해시 방법] (http://en.wikipedia.org/wiki/Hash_function) ID를 숨기려면 그들 :

<a href="someScript.php?id=<?php echo md5($id) ?>">Da Link</a> 

someScript.php에 당신은 할 수 있습니다 [PDO를 통해하시기 바랍니다!] 당신의 DB를보고하기 위해 :

SELECT * FROM teams WHERE MD5(id) = :id 

그러나 MD5 해시는 요만큼 어쨌든 당신이 공격자 방지하지 않도록 요즘 리버스

을 매우 간단합니다. ur 사이트가 제대로 구축 되었으면 세션, 해시 등을 사용하지 않고도 필요에 따라 리소스를 숨길 수 있습니다. authorization을 잘 활용하십시오.


나는 솔직히 서버 측 개발이 휠 때마다 재발없이 좋은 코드를 작성하기 위해 방법에 대한 몇 가지 좋은 물건을 읽고 당신을 조언 - 당신은 사용 종료하지 않지만, 나는 위의 링크 된 심포니 가이드 스틱을 전체 프레임 워크 [강력하게 추천하는 아이디어]를 사용하면 매우 유용 할 것입니다.

+0

답장을 보내 주셔서 감사합니다. 내 서버에서 소스 코드를 볼 수는 없지만 웹 브라우저에서 볼 수는 있습니다 (PHP 마크 업 제외). 나는 실제로 웹 프로그래밍에 익숙하지만,이 문제는 지금까지 저를 곤란하게 만들었습니다. 아마 나는 내 포스트에서 충분히 정교하지 않았다. 데이터베이스 결과의 어떤 행을 선택했는지에 따라 보이지 않는 변수를 전달하는 방법이 필요합니다. – Wilcoholic

+0

@Wilcoholic 왜 나는 변수를 "숨기"를 원하는지 알지 못합니다. 보안 문제입니까? 사생활 보호? World는 숫자 ID로 가득 차 있습니다 (네비게이션 바에있는 URL을 참조하십시오). 숨겨진 정보가 인증 방화벽 뒤에 경로를 표시하도록하려면! – moonwave99

+0

보안상의 문제는 아니지만 부정 행위입니다. 내 웹 사이트는 팀이 경쟁적으로 게임을 할 수있는 장소가 될 것이며 경기 요청과 관련된 팀 ID를 볼 수 없도록하고 싶습니다. 당신은 그들이 그것을 어떻게 활용할 수 있는지를 알 수 있습니다. – Wilcoholic

관련 문제