회원가입 API 채택완료

회원가입을 외부에서 xml코드로 가입을 시키려고 합니다. 파라미터 값은 reg이고 register.php 파일로 읽어드립니다. 

 

{hostname}/api/users/register?reg=

 

API를 통해서 POST 방식으로 최소 정보로 임의 가입 형태를 구현하고, 향후 구현 뒤에 직접 로그인해서 나머지 값들을 업데이트 하는 방식입니다. 

 

 

다만 다음과 같이 데이터를 받았는데, 그누보드의 처음화면으로 강제로 넘어가는 것 같습니다.

혹시 어느 부분을 수정해야할까요? 

 

Copy
<?php

include_once("../../common.php");

 

if(!in_array('application/x-www-form-urlencoded',explode(';',$_SERVER['CONTENT_TYPE']))){

    echo json_encode(array('result_code' => '400'));

    exit;

    }

    $arr = $_POST ? $_POST : $_GET;

    foreach($arr as $key => $value) {

        ${$key} = $value;

    }

    $data = json_decode(stripslashes($_POST['reg']), true);

// stripslashes 는 \ 제거 필요시  사용

 

        $mb_id = $data['mb_id'];

        $mb_password = get_encrypt_string($data['mb_password']);

        $mb_name = $data['mb_name'];

        $mb_hp = $data['mb_hp'];

        $mb_email = $data['mb_email'];

        $mb_1 = $data['mb_1'];

        $mb_level = '2';

        $mb_datetime = '".G5_TIME_YMDHIS."';

        $mb_3 = 'postReguser';

 

       

$user_add = "INSERT INTO g5_member

            (

                mb_id,

                mb_password,

                mb_name,

                mb_hp,

                mb_email,

                mb_1,

                mb_level,

                mb_datetime,

                mb_3

            )

            VALUES

            (

                $mb_id,

                $mb_password,

                $mb_name,

                $mb_hp,

                $mb_email,

                $mb_1,

                $mb_level,

                $mb_datetime,

                $mb_3

            )

        ";

        $insert_d_success = sql_query($user_add);

        $user_account = sql_insert_id();

?>

답변 4개

common.php 파일이 있는지 폴더를 확인해 보세요.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 5개

../../../
../../
둘다 테스트 해봤지만.. include once가 안됩니다. ㅠ

[04-Feb-2022 05:02:08 UTC] PHP Warning: include_once(../../../common.php): failed to open stream: No such file or directory in /home/project/localhost/api/users/register.php on line 2
[04-Feb-2022 05:02:08 UTC] PHP Warning: include_once(): Failed opening '../../../common.php' for inclusion (include_path='.:/opt/alt/php72/usr/share/pear') in /home/project/localhost/api/users/register.php on line 2
[04-Feb-2022 05:02:08 UTC] PHP Notice: Undefined index: CONTENT_TYPE in /home/project/localhost/api/users/register.php on line 9
[04-Feb-2022 05:04:09 UTC] PHP Warning: include_once(../../../common.php): failed to open stream: No such file or directory in /home/project/localhost/api/users/register.php on line 2
[04-Feb-2022 05:04:09 UTC] PHP Warning: include_once(): Failed opening '../../../common.php' for inclusion (include_path='.:/opt/alt/php72/usr/share/pear') in /home/project/localhost/api/users/register.php on line 2
[04-Feb-2022 05:04:09 UTC] PHP Notice: Undefined index: CONTENT_TYPE in /home/project/localhost/api/users/register.php on line 9
그누보더 설치한 폴더가 어딘가요?
/home/project/localhost/api/users/
/home/project/localhost/api/
/home/project/localhost/
/home/project/
/home/project/localhost/

위 폴더에 있습니다.
그렇다면
/home/project/localhost/
여기에 common.php 파일이 있나요?
네 맞습니다. common.php는 localhost에 있습니다.

댓글을 작성하려면 로그인이 필요합니다.

thumb-3543534152_1643867276.2399_730x397.png

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

다만 다음과 같이 데이터를 받았는데, 그누보드의 처음화면으로 강제로 넘어가는 것 같습니다.

==

브라우저에서

{hostname}/api/users/register?reg=

직접 열어 보신 건가요?

API로 하는 경우 페이지 이동하는 부분이 없을 텐데요.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 4개

postman에서 x-www-form-urlencoded로 Body에 값들을 만들어 POST로 보냈습니다. 그 결과 값으로 초기 화면이 얻어집니다.
브라우저로 한번 열어 보세요.
브라우저에서는 400 error가 납니다.
위에 postman에서 테스트 하는 화면업로드 해두었는데, 위와 같은 값을 던졌을 때 params에 reg
하나 만들어서 던졌습니다.

댓글을 작성하려면 로그인이 필요합니다.

혹시 쿼리 내에서 문자열에 쿼테이션 ( ' ) 안넣은게 문제는 아닐지 ..ㅎㅎ

로그인 후 평가할 수 있습니다

답변에 대한 댓글 5개

register.php 부분은 위 내용이 다라서... 오타가 있는지는 계속 체크하고 있습니다.
아 제 말은
insert 쿼리 만드실때
values ( $mb_id , ~~~
이게
values ( '$mb_id', ~~
이렇게 되지않아서 오류나는건가 해서요
더 알아보기 쉽게 표현하면
values ( '{$mb_id}', ~~~
*따옴표차이
네... 혹시 몰라서 테스트 해보았는데 '{$mb_id}' <-- 요렇게 설정해서 같은 오류네요.
$insert_d_success = sql_query($user_add, true);
exit;
이렇게 해서 sql 에러 메시지가 있는지 확인해 보세요.
[03-Feb-2022 14:22:41 Asia/Seoul] PHP Warning: include_once(./_common.php): failed to open stream: No such file or directory in /home/project/localhost:8000/bbs/alert.php on line 5
[03-Feb-2022 14:22:41 Asia/Seoul] PHP Warning: include_once(): Failed opening './_common.php' for inclusion (include_path='.:/opt/alt/php72/usr/share/pear') in /home/project/localhost:8000/bbs/alert.php on line 5
[03-Feb-2022 14:22:41 Asia/Seoul] PHP Warning: Use of undefined constant G5_JS_VER - assumed 'G5_JS_VER' (this will throw an Error in a future version of PHP) in /home/project/localhost:8000/theme/adminlte2.4.5/head.sub.php on line 87
[03-Feb-2022 14:22:41 Asia/Seoul] PHP Fatal error: Uncaught Error: Call to a member function run() on null in /home/project/localhost:8000/lib/common.lib.php:2499
Stack trace:
#0 /home/project/localhost:8000/theme/adminlte2.4.5/tail.sub.php(63): html_end()
#1 /home/project/localhost:8000/tail.sub.php(5): require_once('/home/project/...')
#2 /home/project/localhost:8000/bbs/alert.php(116): include_once('/home/project/...')
#3 /home/project/localhost:8000/lib/common.lib.php(179): include_once('/home/project/...')
#4 /home/project/localhost:8000/extend/signup_no.php(5): alert('\xEA\xB4\x80\xEB\xA6\xAC\xEC\x9E\x90\xEA\xB0\x80 \xEB\x93...', 'https://localho...')
#5 /home/project/localhost:8000/common.php(788): include_once('/home/project/...')
#6 /home/project/localhost:8000/api/users/register.php(2): include_once('/home/project/...')
#7 {main}
thrown in /home/project/localhost:8000/lib/common.lib.php on line 2499

생성된 error log에는 다음과 같은데, 보니까 common.php를 못 읽는 것 같은데, 위 root폴더 api폴더 users폴더 내 register.php가 있어서 ../../common.php <--요게 맞는 것 같은데.. 왜 못읽는지는 모르겠습니다.

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인
🐛 버그신고