positivesmile
50
2019-05-12 19:57:24
6
321

Javascript 와 PHP 변수 전달에 대해서 잘 아시는 분 도움 부탁드립니다!!


1. 두개의 페이지가 존재합니다.

2. 1번 페이지에서 Javscript 로 10자리 난수를 생성하였습니다.

3. 난수 값을 PHP변수로 전달하여 test2.php 로 전달하고 싶습니다.


자바스크립트 변수는 PHP로 변수 전달시, 검색해보니, 전달이 불가능하다고 들었습니다.

 그렇다면 Ajax 를 사용한다면 가능한지에 대해서 확인해보고 소스를 적용해보나, 변수의 값이 전달되지 않아서 

정확하게 어떠한 부분을 고쳐야 하는지에 대해서 의문이 생겼습니다. 

소스코드를 보시고 확인 부탁드립니다. 


(test1.php)

<script>
var result_rN = randNum();
    function randNum() {
      var ALPHA = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q',
      'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];
      var rN = '';
      for (var i = 0; i < 8; i++) {
        var randTnum = Math.floor(Math.random() * ALPHA.length);
        rN += ALPHA[randTnum];
      }
      return rN;
    }
</script>

<?php
 $rnumber = "<script>document.write(result_rN);</script>"
 echo $rnumber;  // 여기에서부터 500 Error 로 출력이 되지 않습니다. 
?>

<input type="hidden" name="number2" value="<?php $rnumber; ?>">






(test2.php)

<?php
 session_start();
 $rnumber = $_POST['number2'];

function Console_log($data)
  {
    echo "<script>console.log('PHP_Console : $data');</script>";
  }

Console_log($rnumber);
?>


 

0
0
  • 답변 6

  • cyberjet
    202
    2019-05-12 23:23:39

    우선 아셔야 될 게 javascript 는 일반적으로 web browser 에서 실행되는 거고요

    php 는 서버에서 실행되는 겁니다.

    그러니 test1.php 의 php 영역에서 result_rN은 인식할 수 없는 상태이라서

    오류가 생기는 겁니다.

    1
  • positivesmile
    50
    2019-05-13 00:04:28 작성 2019-05-13 00:05:35 수정됨

    < cyberjet > 


    아하.. 제가 정말 기초적인 것을 제대로 몰랐네요.. 죄송합니다.

    이런 질문에 대해서 답변주신 것만으로도 감사한데,, 혹시 연결할 수 있는 방법에 대해서 알고 계신게 있으시면 알려주실수 있을까요??

    0
  • 우르르응
    152
    2019-05-13 07:51:27 작성 2019-05-13 07:54:43 수정됨

    우선 php파일에 자바스크립트(js) 코드를 넣는것은 일반적으로 좋지않아요.

    js코드는 html파일을 만들어서 작성하시고, php로직은 php파일에서 처리해야 합니다.

    php로 값을 넘길 때는 말씀하신 ajax도 있고, 보여주신 코드처럼 form태그에 input hidden처리하여 js로 값을 할당해서 넘기는 방법도 있습니다.

    아니면 간단하게 url에 쿼리스트링으로 값을 넘기는 방법이 있는데, 어떤 경우든 php 파일 경로(url)를 작성해줘야 합니다.

    1
  • positivesmile
    50
    2019-05-13 09:36:02

    알려주셔서 감사합니다!!! 저 두가지 방법으로 한번 해보고, 각 파일을 분리해봐야 될 거같네요!!


    0
  • Hide_D
    217
    2019-05-13 10:23:22 작성 2019-05-13 10:31:01 수정됨

    test1.php가 대충 이런 느낌이면 되겠는데요. (안 돌려봤습니다)


    <?php
    
    function randNum($length=8){
        $ALPHA = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q',
        'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];
        $rN = [];
        for($i = 0; $i < $length; $i++){
            $rN[] = $ALPHA[array_rand($ALPHA)];
        }
        return join("", $rN);
    }
    
    $rnumber = randNum();
    ?>
    <script>
    var result_rN = <?=$rnumber?>;
    document.write(result_rN);
    </script>
    
    <input type="hidden" name="number2" value="<?=$rnumber?>">
    
    
    
    


    PHP는 javascript쪽으로 뭘 내보낼지 결정할 수 있으니,

    저런식으로 script 태그로 PHP의 연산 결과를 내보내서 javascript가 '마저' 처리하도록 하는 방법은 나쁘지 않습니다.

    1
  • positivesmile
    50
    2019-05-16 01:23:36

    Hide_D


    답변 달아주셔서 감사합니다!!

    저는 그냥 자바스크립트 변수에다가 함수를 돌렸는데, PHP 변수에다가 돌릴수도 있군요!

    이 방법으로 한번 진행해보겠습니다 감사합니다!!


    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.