php에서 cookie 에러좀 봐주세요.

kimyh의 이미지

쿠키가 작동되지 않습니다.

회원가입 소스에서 입력내용을 확인하여 등록자에게 등록 내용을 보여주는 루틴입니다.
그런데 입력내용을 확인하여 주는 다음의 화일에서 쿠키생성이 않되는건지 아니면 viewAccount.php 파일에 문제가 있는건지 viewAccount.php 파일에서는 등록된 내용이 하나도 화면에 나오지않고 html 형식의 화면만 나옵니다.
아래 화일에서 echo 문의 주석을 풀고 시험해보면 $id 값이 잘 보입니다.
그런데 다음화면(viewAccount.php)으로 넘어가면 등록내용이 나오지를 않습니다.

입력을 확인하여 넘겨주는 화일;

<?
~~~~~
~~~~
~~

중략

// 쿠키 생성 처리 루틴 
SetCookie("memberID",$id,$time()+3600,"/",$cookieSite);
SetCookie("memberPasswd",$passwd,$time()+3600,"/",$cookieSite);
//echo "$id";
echo ("<meta http-equiv='refresh' content='0; url=./viewAccount.php'>");

//echo "$id";  //이곳에서는 $id 값이 않나오더군요.
?>

앞의 파일에서 내용을 넘겨받아 등록내용을 보여주는 화일;

<?
//viewFrom=admin 인 경우의 조회방법을 추가할 것 

require("./config.php");
require("./errorMessages.inc");
@extract($HTTP_GET_VARS);
@extract($HTTP_POST_VARS);
@extract($HTTP_SESSION_VALUE);
@extract($HTTP_COOKIE_VALUE);
//$id = $_COOKIE['memberID']; 
//$passwd = $_COOKIE['passwd'];
//$memberID = $_COOKIE['memberID'];

mysql_connect("$dbHost","$dbUser","$dbPass");

if($viewFrom == 'admin'){    
$result=mysql("$dbName","SELECT * FROM $accountsTable WHERE aid = $aid");
}else{    
$result=mysql("$dbName","SELECT * FROM $accountsTable WHERE id = '$memberID'");
}
echo "$memberid,  $id,  $result, ";  -----> 확인용으로 삽입($result값은 Resource id #4 으로 나옴)

while($row = mysql_fetch_array($result)){$name = $row[name];   
$ssNum1 = $row[ssNum1];   
$ssNum2 = $row[ssNum2];   
$holding = $row[holding];   
~~~~~~~~
~~~~~~~~
중략
?>

선배님들 좀 도와 주세요.

fliers의 이미지

우선 이 부분이 잘 못 된 것 같고요,

SetCookie("memberID",$id,$time()+3600,"/",$cookieSite); 
SetCookie("memberPasswd",$passwd,$time()+3600,"/",$cookieSite); 

$time() 이라고 할게 아니라, time() 이라고 해야할 것 같습니다.
오류로 이후에 출력이 무시됐을 수도 있고요.. 문법적으로도 맞는 것 같지도 않고 맞다해도 3600이면 현재시간보다 과거기 때문에 쿠키가 적용되지 않습니다.

가급적이면 현재 세션중에서 브라우저 닫으면 종료할 수 있도록 만료시간을 현재보다 이후로 주지 않으시길 바랍니다. 창닫고 띄우면 로그인돼 있습니다.
그냥 0 으로 설정해주는게 바람직하고,

그냥 테스트로 하시는 것인지는 모르겠는데, 쿠키에 비밀번호 넣어두는 것은 매우 위험한 행동입니다.

kimyh의 이미지

목이 빠지게 답변 기다리고 있었는데 정말 감사합니다.
원래는

SetCookie("memberID",$id,$cookieEnduring,"/",$cookieSite);
SetCookie("memberPasswd",$passwd,$cookieEnduring,"/",$cookieSite);

이렇게 되어 있었습니다
$cookieEnduring 값과 $cookieSite 값은
conig.php에서 아래와 같이 되어있는것을 뭐낙 않되길레 위와 같이 바꾼거예요.

config.php 화일 ;

<?
~~~~~~~
~~~~~~~
중략


// 쿠키값 유지기간 설정
$cookieEnduring = 0;  //0이면 브라우져 종료시까지, time()=3600 이면 한시간 동안

// 설정된 쿠키값이 적용될 사이트
$cookieSite = ".budongsan.md";  // 맨앞에 '.' 추가

?>

원 소스로 바꾸어 놓고 시험해보겠습니다.
많이 해봤는데 않되었으나 다시 한번 해보겠습니다

http://budongsan.md

살며 그리고 사랑하며...
정보는 공유할때 그 가치가 있는것.....
나의 조그만 지식공유는 남에게 엄청난 기쁨을 안겨 준다.

fliers의 이미지

혹시 현재 budongsan.md 에 적용되 있는 가입폼이라면
쿠키가 안될 수 밖에 없습니다.

메인은 도메인으로 링크되지만,
가입폼에서는 ip로 링크되는군요.

도메인과 ip 가 같은 사이트라 하더라도
브라우저에서는 서로 다르게 인식합니다.

ip에서 domain으로 쿠키를 생성하라고 하지만, 생성이 안되며
생성이되더라도 ip에 접근할 때에는 해당 ip의 쿠키만 전송할뿐
다른 사이트들의 쿠키는 전송하지 않습니다.

주소를 일치시켜놓고 해 보세요..

kimyh의 이미지

답변 정말 고맙습니다.
초보라 그걸 몰랐습니다.
그렇게 고처놓고 하니까
등록내용확인 화면에 $id 값은 나오는데 다른값은 않나오는군요.

그래도 얼마나 많은 진전인지 정말 기쁘군요.
숨통이 조금은 트이는것 같군요.

계속 시험해보고 문의 코자 하오니 선처 바랍니다.
감사합니다.

살며 그리고 사랑하며...
정보는 공유할때 그 가치가 있는것.....
나의 조그만 지식공유는 남에게 엄청난 기쁨을 안겨 준다.

kimyh의 이미지

정말 이상하군요.
조금전 시험할때는 $id 값이 아이디 옆에 찍혀 나오더니 이번엔 아예 않나오는군요.
ip를 도메인으로 바꾸고는
딱 한번 구경 했습니다. 그러고는 않나오네요.
쿠키 타임을 0으로 했는데 이게 잘못된걸까요.

않되면 에러 메세지라도 나오면 좋겠는데 에러 메세지도 없군요.

정말 php 너무나 어렵습니다.

살며 그리고 사랑하며...
정보는 공유할때 그 가치가 있는것.....
나의 조그만 지식공유는 남에게 엄청난 기쁨을 안겨 준다.

uleech의 이미지

저도 잘하는 것은 아니지만 -_-;;

부족한 실력범위에서 한마디 드리자면..
게시판에서 img 태그가 허용될 경우 img
태그를 이용해서 특정 컴퓨터에 생성되는 쿠키를 모두 보낼수 있게 하는
크래킹 방법이 있더군요..
(**게시판에는 스크립트 소스도 그냥 올려져있습니다.)

쿠키에 crpyt나 md5계열의 함수를 이용해서 복호화 하였더라도
맘만 먹으면 거의 뚫린다는.. -_-;;
(사람들이 생각하는 패스워드가 거의 사전을 벗어나질 않으니..
물론 이곳에 들르시는 분들은 특수문자등등이 섞여 복잡하리라 보지만요.)

세션을 이용하시거나 스스로 세션 클래스를 만드시는게..
phpschool가면 그에 대한 내용이 여럿있습니다.

그럼 즐프하세요.~ ^^;

sh.의 이미지

자세히는 안봤습니다만.....

$HTTP_COOKIE_VALUE 가 아니고 $HTTP_COOKIE_VARS 인것 같습니다.
SESSION_VALUE도 마찬가지고요

그리고 쿠키 넘어왔는지 확인은

print_r($HTTP_COOKIE_VARS);

해보시면 정확하겠네요

kimyh의 이미지

답변 고맙습니다.
그러나 지금 시작한지 며칠 않된 왕초보인 저로서는 세션으로 프로그램을 바꾼다는건 엄두가 안나고요

일단 공부도 할겸해서 우연히 소스 하나 구해 해본것이 이 쿠키라는놈인데
이놈부터 해결하고 보안상 조금 공부 더해서 세션으로 보강하는것은

할려고 합니다.

이점 이해해 주시고 이놈의 쿠키 때문에 머리에 쥐가 나고 있읍니다.
도와주시면 대단히 감사하겠습니다.

살며 그리고 사랑하며...
정보는 공유할때 그 가치가 있는것.....
나의 조그만 지식공유는 남에게 엄청난 기쁨을 안겨 준다.

kimyh의 이미지

답변 감사합니다.
답변해 주신 것이 맞는거 같군요 그런데

@extract($HTTP_COOKIE_VARS);
이렇게 해주는곳이 맞는지

$HTTP_COOKIE_VARS

이렇게 해주는것이 맞는지요.

살며 그리고 사랑하며...
정보는 공유할때 그 가치가 있는것.....
나의 조그만 지식공유는 남에게 엄청난 기쁨을 안겨 준다.

fliers의 이미지

kimyh wrote:
답변 감사합니다.
답변해 주신 것이 맞는거 같군요 그런데

@extract($HTTP_COOKIE_VARS);
이렇게 해주는곳이 맞는지

$HTTP_COOKIE_VARS

이렇게 해주는것이 맞는지요.

기본적으로 GET,POST,COOKIE 값들의 name을 바로 변수로 사용할 수도 있었지만 보안을 이유로 막는 추세입니다. 그리고 $HTTP_XXX_VARS 를 사용했지만 이것도 사용을 안하고, $_GET, $_POST, $_COOKIE 를 사용하는 추세고 이것을 권장합니다.

extract 는 $HTTP_COOKIE_VARS 내에 있는 변수들을 끄집어내는 기능입니다. $HTTP_COOKIE_VARS["userid"] = "1234"; 가 있으면, $userid = "1234"; 로 내보내주는 기능입니다.

굳이 쓰시면 @extract($HTTP_COOKIE_VARS); 해줘야겠죠.

kimyh의 이미지

정말 감사합니다.
정말로 상세하신 답변덕분에 이젠 잘 나옵니다.
생년월일 중 출생년도가 입력값에 관계없이 255로만 나오는거 빼고는 아주 잘 됩니다.

문제는 알려주신 내용 그대로 입니다.
1. ip 주소를 직접 사용했고
2.VARS를 VALUE로 잘못한거 하고
3.
@extract($HTTP_GET_VARS);
@extract($HTTP_POST_VARS);
@extract($HTTP_SESSION_VARS);
@extract($HTTP_COOKIE_VARS);

이들 선언을 맨 윗부분 <? 다음으로 옮겼습니다.

자그만치 4일걸려 해결 했습니다.
선배님들 정말 감사합니다.
어렵게 얻은 좋은 지식을 이렇게 공짜로 알려주시니 감사하기 그지 없습니다.

앞으로 잘 않되는 사항이 있으면 또 도와 주세요.
정말 감사합니다.

이곳에 들르시는분들 정말 좋으신 분들 입니다.
감격스럽습니다.

살며 그리고 사랑하며...
정보는 공유할때 그 가치가 있는것.....
나의 조그만 지식공유는 남에게 엄청난 기쁨을 안겨 준다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.