복붙노트

다음 페이지로 PHP Pass 변수 전달

PHP

다음 페이지로 PHP Pass 변수 전달

그것은 꽤 간단하게 보이지만 그것을 할 수있는 좋은 방법을 찾을 수 없습니다.

첫 페이지에 변수를 만듭니다.

$myVariable = "Some text";

그리고 그 페이지에 대한 폼의 액션은 "Page2.php"입니다. 그래서 Page2.php에서 어떻게 그 변수에 접근 할 수 있습니까? 나는 세션을 가지고 그것을 할 수 있다는 것을 안다. 그러나 나는 그것이 단순한 문자열을 위해 너무 많다고 생각한다. 그리고 나는 단지 간단한 문자열 (파일 이름)을 전달하기 만하면된다.

이것을 어떻게 할 수 있습니까?

감사!

해결법

  1. ==============================

    1.

    HTML / HTTP는 상태가 저장되지 않습니다. 즉 이전 페이지에서 수행했거나 본 내용은 현재 페이지와 완전히 연결되어 있지 않습니다. 세션, 쿠키 또는 GET / POST 변수와 같은 것을 사용하는 경우를 제외하고. 세션과 쿠키는 세션보다 쿠키를 사용하는 것이 훨씬 안전합니다. 더 안전하지만 완전히 안전하지는 않습니다.

    세션:

    //On page 1
    $_SESSION['varname'] = $var_value;
    
    //On page 2
    $var_value = $_SESSION['varname'];
    

    session_start ();를 실행하는 것을 잊지 마십시오. 문을 $ _SESSION 배열에 액세스하기 전에 그리고 브라우저에 출력을 보내기 전에이 두 페이지에 모두 표시됩니다.

    쿠키 :

    //One page 1
    $_COOKIE['varname'] = $var_value;
    
    //On page 2
    $var_value = $_COOKIE['varname'];
    

    세션과 쿠키의 가장 큰 차이점은 세션을 사용하는 경우 서버의 변수 값을 저장하고 쿠키를 사용하는 경우 클라이언트의 변수 값을 저장한다는 것입니다. 나는 세션간에 쿠키를 사용하는 좋은 이유를 생각할 수 없다. 세션간에 데이터를 유지하기를 원한다면 제외하고, DB에 저장하고 사용자 이름이나 ID를 기반으로 검색하는 것이 더 나을 것이다.

    GET 및 POST

    링크의 변수를 다음 페이지에 추가 할 수 있습니다.

    <a href="page2.php?varname=<?php echo $var_value ?>">Page2</a>
    

    이렇게하면 GET 변수가 생성됩니다.

    또 다른 방법은 페이지 2에 제출하는 양식에 숨겨진 필드를 포함시키는 것입니다.

    <form method="get" action="page2.php">
        <input type="hidden" name="varname" value="var_value">
        <input type="submit">
    </form>
    

    그리고 2 페이지에서 :

    //Using GET
    $var_value = $_GET['varname'];
    
    //Using POST
    $var_value = $_POST['varname'];
    
    //Using GET, POST or COOKIE.
    $var_value = $_REQUEST['varname'];
    

    게시를 통해 양식을 게시하려면 양식의 메소드를 변경하십시오. GET은 해킹하기가 더 쉽지만 둘 다 똑같이 안전하지 않습니다.

    새로운 요청이 세션 데이터를 제외하고 PHP의 코딩을 처음 시작할 때 스크립트의 완전히 새로운 인스턴스가 나를 잡았습니다. 일단 익숙해지면 꽤 간단합니다.

  2. ==============================

    2.

    위의 답변 주셔서 감사합니다. 여기 내가 어떻게했는지, 나는 따르는 사람들을 돕기를 바랍니다. 한 페이지에서 다른 페이지로 등록 번호를 전달하고자하므로 regName과 regValue :

    첫 페이지를 만들고, 그것을 set_reg.php라고 부르세요 :

    <?php
    
    session_start();
    
    $_SESSION['regName'] = $regValue;
    
    ?>
    
    <form method="get" action="get_reg.php">
        <input type="text" name="regName" value="">
        <input type="submit">
    </form>
    

    두 번째 페이지를 만들고 get_reg.php라고합니다.

    <?php
    
    session_start();
    
    $regValue = $_GET['regName'];
    
    echo "Your registration is: ".$regValue.".";
    
    ?>
    
    <p><a href="set_reg.php">Back to set_reg.php</a>
    

    위의 대답만큼 포괄적이지는 않지만, 제 목적을 위해 이것은 다양한 요소들 사이의 관계를 단순한 방식으로 설명합니다.

  3. ==============================

    3.

    양식에 숨겨진 필드로 포함하거나 양식 작업 URL을 추가 할 수 있습니다.

     echo '<input type="hidden" name="myVariable" value="'.
         htmlentities($myVariable).'">';
    

    또는

    echo '<form method="POST" action="Page2.php?myVariable='.
        urlencode($myVariable).'">";
    

    이것은 또한 데이터를 전달할 때 htmlentities와 urlencode의 사용법을 보여줍니다.

    데이터를 클라이언트 측에 전달할 필요가없는 경우 세션이 더 적합 할 수 있습니다. 각 페이지의 시작 부분에서 session_start ()를 호출하면 $ _SESSION 배열에 데이터를 가져오고 설정할 수 있습니다.

    값은 실제로 파일 이름이라고 명시 했으므로 보안 파급 효과에 대해 알고 있어야합니다. 파일 이름이 클라이언트 측에서 도착한 경우 사용자가 값을 변경했다고 가정합니다. 유효성을 확인하십시오! 사용자가 경로를 중요한 시스템 파일이나 제어 할 수있는 파일로 전달하면 어떻게됩니까? 스크립트를 사용하여 존재하거나 존재하지 않는 파일에 대해 서버를 "조사"할 수 있습니까?

    $ _GET, $ _POST 또는 $ _COOKIE에 도착한 모든 데이터가 여기에 해당된다는 것을 알리는 것이 중요합니다. 최악의 적이 해당 배열의 내용을 만들고 이에 따라 코드를 작성한다고 가정하십시오!

  4. ==============================

    4.

    PHP에서 값을 전달하는 세 가지 방법이 있습니다.

    이 세 가지 메소드는 다른 용도로 사용됩니다. 예를 들어 다음 페이지에서 값을 받고자한다면 'post'($ _POST) 메소드를 다음과 같이 사용할 수 있습니다. -

    $a=$_POST['field-name'];
    

    세션 변수를 사용할 수있는 것보다 한 페이지 이상에 variable 값이 필요한 경우 : -

    $a=$_SESSION['field-name];
    

    이 구문을 사용하여 SESSION 변수를 생성하기 전에 PHP 페이지의 맨 처음에이 태그를 추가해야합니다

    session_start(); 
    

    GET 메서드는 일반적으로 사용자가 입력 한 데이터를 동일한 페이지에 인쇄하는 데 사용됩니다. 구문은 다음과 같습니다.

    $a=$_GET['field-name'];
    

    POST 메서드는 일반적으로 GET보다 안전합니다. Get 메서드를 사용하면 URL 막대에 데이터를 표시 할 수 있기 때문입니다. 데이터가 암호와 같이 민감한 데이터 인 경우에는 inggeris가 될 수 있습니다.

  5. ==============================

    5.

    세션 만 좋은 방법 일 것입니다. GET / POST를 사용할 수도 있지만 잠재적으로 불안정합니다.

  6. ==============================

    6.

    이 코드를 시험해 보라.

    숨겨진 필드를 사용하여 PHP 변수를 다른 페이지로 전달할 수 있습니다.

    page1.php

    <?php $myVariable = "Some text";?>
    <form method="post" action="page2.php">
     <input type="hidden" name="text" value="<?php echo $myVariable; ?>">
     <button type="submit">Submit</button>
    </form>
    

    이 변수를 다른 페이지에 액세스 할 수 있도록 PHP 변수를 숨겨진 필드 값에 전달하십시오.

    Pagi2.php

    <?php
     $text=$_POST['text'];
     echo $text;
    ?>
    
  7. ==============================

    7.

    **page 1**
    <form action="exapmple.php?variable_name=$value" method="POST"> 
        <button>
            <input  type="hidden" name="x">
        </button>
    </form>`
    

    2 쪽

    if(isset($_POST['x'])) {
        $new_value=$_GET['variable_name'];
    }
    
  8. from https://stackoverflow.com/questions/871858/php-pass-variable-to-next-page by cc-by-sa and MIT lisence