본문 바로가기
MySql

MySQL 양식 제출 후 페이지로 PHP 반환

by 베이스 공부 2020. 12. 7.
반응형

HTML 양식을 만들었습니다.

<form action="http://localhost/php/insert.php" method="post">
    Barcode: <input type="text" name="barcode" /><br><br>
    Serial: <input type="text" name="serial" /><br><br>
    <input type="submit" />
</form>

이 PHP를 사용하여 내 데이터베이스에 저장합니다.

<?php
$con = mysql_connect("example","example","");
if ( ! $con) {
    die('Could not connect: ' . mysql_error());
}
mysql_select_db("database", $con);

$sql = "INSERT INTO asset (barcode, serial)
        VALUES ('$_POST[barcode]','$_POST[serial]')";

if ( ! mysql_query($sql, $con)) {
    die('Error: ' . mysql_error());
}
mysql_close($con)
?>

양식은 DB에 저장되지만 제출을 누르면 빈 페이지 인 http : //localhost/php/insert.php 로 이동합니다. 같은 페이지에 유지하고 메시지 나 무언가를 표시하려면 어떻게해야합니까?

 

해결 방법

 

HTTP_REFERER 를 사용한 리디렉션은 일반적으로 불안정하고 신뢰할 수 없습니다. 따라서 가장 좋은 방법은 요청과 함께 URL을 전송하는 것입니다. 특정 사이트 / URL에 사용합니다. 가장 좋은 방법은 요청과 함께 제출하여 URL을 아는 것입니다. 나머지 두 가지는 아마도 최적이 아닐 것입니다.

양식 처리가 완료된 후 출력하기 전에 다음을 수행하십시오 (오류가 발생 함).

header("Location: {$_SERVER['HTTP_REFERER']}");
exit;

처리 결과에 따라 URL에 오류를 추가 할 수 있습니다.

if ($query_does_not_execute) {
    $errcode = "error_code=003";
}

$referer = $_SERVER['HTTP_REFERER'];

if ($errcode) {
    if (strpos($referer, '?') === false) {
        $referer .= "?";
    }

    header("Location: $referer&$errcode");
} else {
    header("Location: $referer");
}
exit;

그런 다음 페이지에서 오류를 표시 할 수 있습니다. 또는 다른 종류의 처리기 오류에 대한 페이지로 리디렉션 할 수 있습니다. 이것은 다양한 해석에 대해 광범위하게 열려 있습니다.

 

참조 페이지 https://stackoverflow.com/questions/23035085

 

 

반응형

댓글