자바스크립트 변수 PHP로 넘기기

자바스크립트 변수 PHP로 넘기기

QA

자바스크립트 변수 PHP로 넘기기

본문

<?php  

  } else {

    echo "<script>alert('eff')</script>;";

    $latitude = "<script>document.writeln(localStorage.getItem('latitude'))</script>"; //clean me

    $longitude = "<script>document.writeln(localStorage.getItem('longitude'))</script>"; //clean me

  } 

?>


위처럼 했는데 안되네요

이 질문에 댓글 쓰기 :

답변 2

위의 코드가 정확하게 무엇을 하고자 하는지 


의도와 코드를 함께 본 입장이 아니라서 정확하지 않지만, 

 님이 말씀하신대로


코드의 실행순서를 명확하에 이해하셔야 합니다.


<?php ?> 안의 코드는

<?php ?> 밖의 코드와 다릅니다.


즉 웹서버(php엔진을 포함한)에서 

<?php ?> 의 코드들을 전부 파싱해서 결과값을

<html>

<javascript>....


들이 있는 코드의 형태로 변형하여 브라우저로 전달하게 됩니다.


하지만 위의 코드는 

기능적으로만 보면


echo "<script>alert('eff')</script>;";   // alert을 화면으로 보냅니다. 
    $latitude = "<script>document.writeln(localStorage.getItem('latitude'))</script>"; //clean me 
     //=> 아무것도 하지 않습니다. 
    // $latitude 라는 변수에 "<script>document.writeln(localStorage.getItem('latitude'))</script>"
    // 라는 값만 들어간 변수일뿐입니다. 즉, 자바스크립트가 먼저 수행되지 않습니다.
    $longitude = "<script>document.writeln(localStorage.getItem('longitude'))</script>"; //clean me
   // 여기도 아무것도 하지 않습니다.
    // 마찬가지로 그냥 문자열 입니다.


ajax를 사용하시던지


조금 구식으로 보일지 모르지만 가장 확실한 방법인

<form >

<input type="hidden" name="latitude" value="...">

</form>

과 같이 만들어서 클릭시 해당 form을 post전달로 넘기는것도 방법입니다.


구식이 구식이 아닐수있씁니다.


원하시는 결과물이 안정적으로 작동되고 하자 없게 만든느것도 방법이라 생각합니다.



아마추어 입장에서 말씀드리면 저는 이렇게 알고 있습니다. 


=======


자바스크립트는 웹브라우저가 파싱하고 PHP는 웹서버가 파싱(=해석,번역)합니다. 


파싱하는 주체가 다르기 때문에 입력하신 코드는 원하시는대로 실행될 수 없습니다.  


즉 위 코드가 서버에서 파싱될때 자바스크립트 코드는 PHP 입장에서는 단순한 문자열로 인식되기 때문입니다. 따옴표로 감싸져 있는 이유도 그것때문입니다. 따옴표로 감싸져 있지 않다면 PHP 오류가 발생되겠지요. 


그러니까 서버에서 PHP 코드가 해석될때 자바스크립트 소스는 PHP 코드가 아니라 일반 문자열에 불과하므로 그 자바스크립트 소스의 해석된 내용이 PHP 변수에 전달되는 것이 아니라 그 소스가 문자열로서 전달되는 것입니다.  


...


아마추어가 설명하니까 설명할 수록 더 어려워지네요. ㅠ.ㅠ


=======






답변을 작성하시기 전에 로그인 해주세요.
전체 0 | RSS
QA 내용 검색
  • 개별 목록 구성 제목 답변작성자조회작성일
  • 질문이 없습니다.

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT