CI 묻고 답하기

제목 폼에서 받은 변수 던져주기.
글쓴이 ci입문자 작성시각 2012/11/01 11:04:30
댓글 : 6 추천 : 0 스크랩 : 0 조회수 : 15172   RSS

폼에서 받은 변수를 아래와 같이 받습니다.


function receive()
  {
    
   $data['data'] = array(
    'blog'=> $_POST['blog'],
    'name' => $_POST['name']
   );
   
   $this->load->view(blog_view',$data);
  }

그래서 위 처럼 변수 취급해서 던져주었는데요~

이 변수를

$url = 'http:blog.naver.com' +'blog변수'   + 'name변수'

형태로 받아서 쓰려고 합니다.

그래서 view단을

<? foreach($data as $row) : ?>
<?php  $row->blog?>
<? endforeach; ?>
 
일단 이렇게 해서, 정상적으로 $_POST['line'] 값이 출력이나 되는지 확인해 볼려 했더니,

출력 자체가 안되더라구요.

변수를 잘 못사용한걸까요??
 다음글 배열 넘기기 질문..... (5)
 이전글 HMVC를 사용하는 이유 및 모듈화를 왜 하는가? (7)

댓글

변종원(웅파) / 2012/11/01 11:14:10 / 추천 0
line이라는 변수명은 갑자기 어디서 튀어나온 걸까요?

넘긴 것은 blog, name 인데 line은 어디서 선언한거죠?

그리고 넘긴 변수를 뷰에서 찍어보면 쉽게 알수있습니다. 아주 간단하죠.....

뷰에서 echo var_dump($data); 해보세요. 어떤 값이 들어있는지...

그리고 $_POST['name'] 쓰지마시고 $this->input->post('name', TRUE) 로 쓰세요.
보안처리 해줍니다. 저렇게 사용하시면 xss, sql injection 공격에 취약합니다.

ci입문자 / 2012/11/01 11:28:25 / 추천 0

웅파//

아 .;; 제가 소스를 수정하다가 보니 저렇게 되었네요

다시 정상적으로 수정하여

웅파님이 말씀하신데로 체크해보면

A PHP Error was encountered

Severity: Notice

Message: Undefined variable: data

Filename: views/receive_view.php

Line Number: 10

NULL


위와 같은 에러가 나옵니다.



실은, 저 위에처럼 배열로해서 던져넣는건,

db에 isnert할때만 써봐서, 실제로 변수도 저렇게 던져지는가?에 대한 의문으로 시작된거거든요.


NULL이 찍히는거 보니, 애초에 방법자체가 틀린거 같은데... 아닌가요?

헛발이 / 2012/11/01 11:28:50 / 추천 0
foreach 사이에 echo 문이 없는데요... ^^;;
ci입문자 / 2012/11/01 11:30:55 / 추천 0

웅파//

해결했습니다.ㅎ


뷰로던져줄때눈 무조건 $data['변수'] 명을 해줘야 하는군요.

그 변수명으로 line 과 name을 뽑으니까 정상적으로 뽑힙니다. 감사합니다

한대승(불의회상) / 2012/11/01 11:50:24 / 추천 0
foreach로 돌릴때는 그냥
echo $row;
하시면 됩니다.

물론 현재 코드상으로 말이죠.. ^^
ANS / 2012/11/02 13:04:48 / 추천 0
    ci초보라 코어쪽에서 어떻게 처리하는지는 잘 모르겠지만 
애초 님이 쓰신 2차배열 형태로도 당연히 넘기는 방법이 있을겁니다.

다만 님이 실수 하신 것은 load->view시 $data객체가 배열로 받는다는것을 잘 몰랐던것이고
그냥 1차원 배열로 해결하셨다고 말씀하셨는데 2차배열도 종종 써야하는 상황이 많이 연출되기에 있으리라 생각합니다.

메소드안에서 $data 배열을 리턴값 없이 밖에서 "뷰" 한다는건 load->view 실행시 
코어쪽에서 리턴과 cotroller 객체생성까지 처리했다건데 core쪽 load객체 특히 view메소드를 살펴보면 답이 나올듯합니다.. 전 그냥 2차배열로 넘겼더니 notice 수준의 에러는 나오는데 결과값은 처리되네요.

코어쪽 까지 살피기 귀찮다면 ci쪽도 error_reporting 해 주고 있으니 level을 낮추고 그냥 처리해도 될 듯 합니다.