묻고답하기
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
사진을 올리려고 하는데 자꾸 에러 메시지가 떠요... 알려주세요.ㅠㅠ
2006.01.06 16:33
Warning: tempnam(): open_basedir restriction in effect. File(/home/gogokorea/lib/board/files/) is not within the allowed path(s): (/home/kankokuryoko:/var/tmp:/tmp:/usr/local) in /home/kankokuryoko/lib/board/save.php on line 130
List
이렇게 뜹니다. 왜그런걸까요?
/home/gogokorea/lib/board/files/ 경로 권한은 777로 설정되있습니다.
save.php파일 소스는
<?php
//모든 저장은 여기서.. -_-a
/*
edit 에서 넘어온 자료와 write 에서 넘어온 자료를 구분해서 처리해야한다.
동작목표
1.자료가 넘어온다
2.자료를 가공한다.
3.넣을 번호를 확인한다.
4.번호에 맞게 자료를 넣는다.
5.해당글이 달려있는 리스트 부른다.
이 파일은 get 변수와 post 변수를 동시에 사용한다.
get 변수는 form 상에 저장되어 있어야한다.
form 은 post 로 자료를 넘겨줘야 한다.
필요 변수
$_GET['']
해당 보드이름
$_POST['']
제목,내용,메타
$_SESSION['']
아이디,이름
제목 내용 이외의 자료는 넘오는 자료가 아니므로 addshase의 필요성을 모르겠음
//번호 알아 오기
select num from $tables order by num desc limit 1
//기본 테이블에 넣기
insert into $tables
(number,num,dep,idx,perm,del,title,id,name,hit,meta,time)
values
()
//내용에 넣기
insert into $tables_content
(num,time,ver,content,ip,)
values
()
//뎃글 달기
insert into $tables_comment
(num,time,content,ip)
values
()
--20050202--
$_GET['bbs']
$_GET['mdoe'] = write or edit
$_GET['action'] = save
$_POST['name']
$_POST['password']
$_POST['email']
$_POST['title']
$_POST['content']
mode 가 save 일 경우 num 를 확인 후 저장
*/
//password 는 여백을 제거하지 않음
//content 는 뒷 여뱍을 제거함
$_POST['name'] = trim($_POST['name']);
$_POST['password'] = trim($_POST['password']);
$_POST['email'] = trim($_POST['email']);
$_POST['title'] = trim($_POST['title']);
$_POST['content'] = rtrim($_POST['content']);
if(!get_magic_quotes_gpc())
{
$name = addslashes($_POST['name']);
$password = addslashes($_POST['password']);
$email = addslashes($_POST['email']);
$title = addslashes($_POST['title']);
$content = addslashes($_POST['content']);
}else{
$name = $_POST['name'];
$password = $_POST['password'];
$email = $_POST['email'];
$title = $_POST['title'];
$content = $_POST['content'];
}
//members 관련 폼
//$name = $_SESSION['member_name'];
$name = $_SESSION['member_name'];
$password = $_SESSION['member_no'];
if($_SESSION['login'] and $_SESSION['member_no'] and $title and $content)
{
switch($board_mode)
{
case 'write': $result = save_new_article($board_bbs,$name,$password,$email,$title,$content,$now_time,$ip);
break;
case 'edit' : $result = save_edit_article($board_bbs,$email,$title,$content,$now_time,$ip,$board_no);
break;
case 'repy' : if($_SESSION['member_perm'] == 255)
{
$result = save_repy_article($board_bbs,$name,$password,$email,$title,$content,$now_time,$ip,$board_no);
}
break;
}
}
if($result == FALSE)
{
board_error('Sorry Article Save Error',0,0);
}else{
//echo "<meta http-equiv="refresh" content="5; url=$board_list_url">";
}
function save_new_article($bbs,$name,$password,$email,$title,$content,$time,$ip)
{
//정렬 변호 가져오기
$sql = "select `num` from $bbs order by `num` desc limit 0,1";
$result = sql_query($sql);
$result = sql_fetch($result);
$num = $result['num'] + 100;
$path = tempnam('/home/gogokorea/lib/board/files/','board'); //경로면 까지 돌려줌 -_-
copy($_FILES['file']['tmp_name'],$path);
$file_name = $_FILES[file][name];
$file_path = $path;
//보드 삽입
$sql = "insert into $bbs
(`no`,`num`,`dep`,`title`,`name`,`password`,`email`,`hit`,`time`)
values
(NULL,$num,0,'$title','$name','$password','+ '+ '$email',0,'$time')";
$result = sql_query($sql);
if($result == FALSE )
{
return FALSE;
}
//auto_increment 로 생성된 고유값을 가져온다.
$no = sql_insert_id();
//내용 삽입
$sql = "insert into {$bbs}_content
(`no`,`content`,`ip`,`file_name`,`file_path`)
values
($no,'$content','$ip','$file_name','$file_path')";
$result = sql_query($sql);
if($result == FALSE )
{
return FALSE;
}
return TRUE;
}
function save_edit_article($bbs,$email,$title,$content,$time,$ip,$no)
{
echo "0";
$query = "update {$bbs}
set `email` = '{$email}' , `title` = '{$title}' , `time` = '+ '{$time}'
where `no` = {$no}";
$result = sql_query($query);
if($result == FALSE )
{
echo "1";
return FALSE;
}
$query = "update {$bbs}_content
set `content` = '+ '{$content}' , `ip` = '{$ip}'
where `no` = {$no}";
$result = sql_query($query);
if($result == FALSE )
{
echo "2";
return FALSE;
}
return TRUE;
}
function save_repy_article($bbs,$name,$password,$email,$title,$content,$time,$ip,$no)
{
//해당 문서의 깊이(dep)와 정렬순서 (num) 을 알아 와야한다.
$query = "select `num`,`dep` from {$bbs} where `no` = {$no} ";
$result = sql_query($query);
$result = sql_fetch($result);
$num = $result['num'];
$dep = $result['dep'];
$num_next = (intval($num / 100)) * 100 - 99 ;
//해당문서의 깊이 보다 같거나 작은 문서를 -1 씩 해준다.
$query = "update $bbs
set `num` = `num` - 1
where `num` < $num and `num` > $num_next ";
sql_query($query);
//그리고 해당문서 자리에 새 문서를 넣는다.
$sql = "insert into $bbs
(`no`,`num`,`dep`,`title`,`name`,`password`,`email`,`hit`,`time`)
values
(NULL,$num - 1,$dep + 1,'$title','$name','$password','$email',0,'$time')";
$result = sql_query($sql);
if($result == FALSE )
{
return FALSE;
}
//auto_increment 로 생성된 고유값을 가져온다.
$no = sql_insert_id();
//내용 삽입
$sql = "insert into {$bbs}_content
(`no`,`content`,`ip`)
values
($no,'$content','$ip')";
$result = sql_query($sql);
if($result == FALSE )
{
return FALSE;
}
return TRUE;
}
echo "<meta http-equiv="refresh" content="0 ; url = $board_list_url ">";
echo "<a href="$board_list_url ">List</a>";
?>
이상입니다. 도와주세요~~~
List
이렇게 뜹니다. 왜그런걸까요?
/home/gogokorea/lib/board/files/ 경로 권한은 777로 설정되있습니다.
save.php파일 소스는
<?php
//모든 저장은 여기서.. -_-a
/*
edit 에서 넘어온 자료와 write 에서 넘어온 자료를 구분해서 처리해야한다.
동작목표
1.자료가 넘어온다
2.자료를 가공한다.
3.넣을 번호를 확인한다.
4.번호에 맞게 자료를 넣는다.
5.해당글이 달려있는 리스트 부른다.
이 파일은 get 변수와 post 변수를 동시에 사용한다.
get 변수는 form 상에 저장되어 있어야한다.
form 은 post 로 자료를 넘겨줘야 한다.
필요 변수
$_GET['']
해당 보드이름
$_POST['']
제목,내용,메타
$_SESSION['']
아이디,이름
제목 내용 이외의 자료는 넘오는 자료가 아니므로 addshase의 필요성을 모르겠음
//번호 알아 오기
select num from $tables order by num desc limit 1
//기본 테이블에 넣기
insert into $tables
(number,num,dep,idx,perm,del,title,id,name,hit,meta,time)
values
()
//내용에 넣기
insert into $tables_content
(num,time,ver,content,ip,)
values
()
//뎃글 달기
insert into $tables_comment
(num,time,content,ip)
values
()
--20050202--
$_GET['bbs']
$_GET['mdoe'] = write or edit
$_GET['action'] = save
$_POST['name']
$_POST['password']
$_POST['email']
$_POST['title']
$_POST['content']
mode 가 save 일 경우 num 를 확인 후 저장
*/
//password 는 여백을 제거하지 않음
//content 는 뒷 여뱍을 제거함
$_POST['name'] = trim($_POST['name']);
$_POST['password'] = trim($_POST['password']);
$_POST['email'] = trim($_POST['email']);
$_POST['title'] = trim($_POST['title']);
$_POST['content'] = rtrim($_POST['content']);
if(!get_magic_quotes_gpc())
{
$name = addslashes($_POST['name']);
$password = addslashes($_POST['password']);
$email = addslashes($_POST['email']);
$title = addslashes($_POST['title']);
$content = addslashes($_POST['content']);
}else{
$name = $_POST['name'];
$password = $_POST['password'];
$email = $_POST['email'];
$title = $_POST['title'];
$content = $_POST['content'];
}
//members 관련 폼
//$name = $_SESSION['member_name'];
$name = $_SESSION['member_name'];
$password = $_SESSION['member_no'];
if($_SESSION['login'] and $_SESSION['member_no'] and $title and $content)
{
switch($board_mode)
{
case 'write': $result = save_new_article($board_bbs,$name,$password,$email,$title,$content,$now_time,$ip);
break;
case 'edit' : $result = save_edit_article($board_bbs,$email,$title,$content,$now_time,$ip,$board_no);
break;
case 'repy' : if($_SESSION['member_perm'] == 255)
{
$result = save_repy_article($board_bbs,$name,$password,$email,$title,$content,$now_time,$ip,$board_no);
}
break;
}
}
if($result == FALSE)
{
board_error('Sorry Article Save Error',0,0);
}else{
//echo "<meta http-equiv="refresh" content="5; url=$board_list_url">";
}
function save_new_article($bbs,$name,$password,$email,$title,$content,$time,$ip)
{
//정렬 변호 가져오기
$sql = "select `num` from $bbs order by `num` desc limit 0,1";
$result = sql_query($sql);
$result = sql_fetch($result);
$num = $result['num'] + 100;
$path = tempnam('/home/gogokorea/lib/board/files/','board'); //경로면 까지 돌려줌 -_-
copy($_FILES['file']['tmp_name'],$path);
$file_name = $_FILES[file][name];
$file_path = $path;
//보드 삽입
$sql = "insert into $bbs
(`no`,`num`,`dep`,`title`,`name`,`password`,`email`,`hit`,`time`)
values
(NULL,$num,0,'$title','$name','$password','+ '+ '$email',0,'$time')";
$result = sql_query($sql);
if($result == FALSE )
{
return FALSE;
}
//auto_increment 로 생성된 고유값을 가져온다.
$no = sql_insert_id();
//내용 삽입
$sql = "insert into {$bbs}_content
(`no`,`content`,`ip`,`file_name`,`file_path`)
values
($no,'$content','$ip','$file_name','$file_path')";
$result = sql_query($sql);
if($result == FALSE )
{
return FALSE;
}
return TRUE;
}
function save_edit_article($bbs,$email,$title,$content,$time,$ip,$no)
{
echo "0";
$query = "update {$bbs}
set `email` = '{$email}' , `title` = '{$title}' , `time` = '+ '{$time}'
where `no` = {$no}";
$result = sql_query($query);
if($result == FALSE )
{
echo "1";
return FALSE;
}
$query = "update {$bbs}_content
set `content` = '+ '{$content}' , `ip` = '{$ip}'
where `no` = {$no}";
$result = sql_query($query);
if($result == FALSE )
{
echo "2";
return FALSE;
}
return TRUE;
}
function save_repy_article($bbs,$name,$password,$email,$title,$content,$time,$ip,$no)
{
//해당 문서의 깊이(dep)와 정렬순서 (num) 을 알아 와야한다.
$query = "select `num`,`dep` from {$bbs} where `no` = {$no} ";
$result = sql_query($query);
$result = sql_fetch($result);
$num = $result['num'];
$dep = $result['dep'];
$num_next = (intval($num / 100)) * 100 - 99 ;
//해당문서의 깊이 보다 같거나 작은 문서를 -1 씩 해준다.
$query = "update $bbs
set `num` = `num` - 1
where `num` < $num and `num` > $num_next ";
sql_query($query);
//그리고 해당문서 자리에 새 문서를 넣는다.
$sql = "insert into $bbs
(`no`,`num`,`dep`,`title`,`name`,`password`,`email`,`hit`,`time`)
values
(NULL,$num - 1,$dep + 1,'$title','$name','$password','$email',0,'$time')";
$result = sql_query($sql);
if($result == FALSE )
{
return FALSE;
}
//auto_increment 로 생성된 고유값을 가져온다.
$no = sql_insert_id();
//내용 삽입
$sql = "insert into {$bbs}_content
(`no`,`content`,`ip`)
values
($no,'$content','$ip')";
$result = sql_query($sql);
if($result == FALSE )
{
return FALSE;
}
return TRUE;
}
echo "<meta http-equiv="refresh" content="0 ; url = $board_list_url ">";
echo "<a href="$board_list_url ">List</a>";
?>
이상입니다. 도와주세요~~~