$_SERVER['PHP_SELF']


- 셀프. 즉, 자기 자신 PHP를 나타낸다.

- 즉, $_SERVER['PHP_SELF']을 사용하는 페이지가 test.php 면 test.php 경로 자체를 가지고 온다.

- 이것은 보통 form에서 action에 주로 사용한다. 이러면,  실행중인 PHP를 다시 호출한다.


        <form id="register-form" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">

            <input type="email" name="usr_email" placeholder="Email" class="form-control" />

<input type="text" name="usr_name" placeholder="Email" class="form-control" />

        </form>


이렇게 주로 작성한다. 나도 그냥 갖다 붙여서 잘 모르고 사용헀다.


그런데 만약에 PHP에서 사용하던 변수를 계속 사용하려면 어떻게 할까?


서버측에서(php포함) header를 사용하여 location으로 페이지를 이동한다.


그래서 다음과 같이 URL 뒤에 변수 = 값을 사용하는 GET방식으로 변수를 보내고 싶었다.


header("Location: ../index.php?number=$num");


이렇게 했는데 아무리 해도 주소창에


index.php?number=


으로 나오며 해당 페이지가 나오지 않았다... 왜 값을 가져오지 못하는것일까.

검색을 하다가 form에 의문을 갖게 되었고, 이때서야 의미를 알지 못하던 

$_SERVER['PHP_SELF']에 대해 검색해봤다.


그 결과,


https://stackoverflow.com/questions/18747843/pass-get-variables-when-using-serverphp-self


여기서 발견. 어이없이 action을 비워두라는 답변. 해봤는데 오 된다.


<form action="" method="POST">

정확한 문법, 왜 그러지는지는 아직 잘 모르곘다.


아마 해당 PHP파일로만 이동(위의 경우 /index.php로) 만 보내고 GET 파라미터를 무시하는것이 

아닌가하는 생각을 해본다.


※결론※

어쨋거나 form 태그 속성 중 action에 $_SERVER['PHP_SELF']을 집어넣는 경우 

GET 파라미터들이 무시되며 null? 공백? 으로 나온다는 것을 알게 되었다.

Posted by sungho88
,

<?php 


// php코드


?> 이것은 php 문법임을 나타내는 기호이다.


이 안에서, 자바스크립트 코드를 출력하고 싶다면? 또는 함수를 호출하고 싶다면 어떻게 해야 할까?


눈에 볼 수 있도록 출력해주는 명령어는 echo이다.


그리고, echo 뒤에 자바스크립트 코드를 넣주면 된다. 굉장히 더티하게 보일 수 있고, 

비효율적으로 보이기도 한다.

만약, 자바스크립트에서는 


alert("출력하고 싶은 문장");


만 작성하면 alert 경고창이 뜬다. 하지만, PHP에서의 경우에는 허용하지 않는다.


1. 만약 alert창을 PHP에서 띄우고 싶다면 어떻게 할까?


<?php echo "<script>alert('삭제되었습니다');</script>"; ?>


이렇게 echo 안에 스크립트 태그부터 열고 닫고 한 뒤, 안에 코드를 직접 입력해야 한다.


2. 만약, 자바스크립트 함수를 실행하고 싶다면 어떻게 할까?


동일하다.


<?php echo("<script language='javascript'>function_test();</script>"); ?>


이렇게 작성하면 자바스크립트 함수가 실행된다.


Posted by sungho88
,

홈페이지를 만들다보니 SQL문을 종종 짜야할 때가 있다.

이번에는 게시물 하단에 LIST를 구현하는데, 해당 게시물을 중심으로 -5개부터 +5개를 만들었다.

이 경우 어떤 범위 내에 값을 DB로부터 끌고와야 하는데, 이 역할을 하는 문법이 바로 BETWEEN이다

단어의 뜻을 알면 당연하다.


WHERE id BETWEEN 시작값 AND 끝값


이렇게 작성하면 DB에 저장된 id값들 중 시작값부터 끝값까지 조건에 맞는 값만 추출해낼 수 있다.

만약,  현재 보고있는 게시물을 중심으로 5번째 이전 게시물부터 5번째 이후 게시물까지 보고싶다면


$sql01 = 'select * from student_table where id between ' .$bno. '-5 and ' .$bno.'+5';


이렇게 작성하면 된다. 이 문장의 의미는


student_table 테이블에서 id 속성을 현재 글 번호 bno에서 -5한 값부터 +5한 값까지 불러오는 코드다.

이렇게 하면 해당 게시물을 기준으로 상단, 하단으로 5개씩 리스트가 생기게 된다.


참고로, echo에서 php 변수를 HTML 태그와 혼용하는 경우에는 다음과 같이 작성한다

 

echo "<b>{$title}</b>";


이렇게 하면 title 변수를 b태그 처리 한 뒤, echo로 출력해준다.

Posted by sungho88
,

자바스크립트와 PHP 그리고 HTML을 혼용하다보니 헷갈린다.

자바스크립트로 구한 변수 값을 form 태그를 통해 다른 파일로 보내서 그곳에서 처리하게 하려고 하니 모르겠다.


검색을 해 본 결과는 다음과 같다.


<script> 

count_num="12345"; 

document.login_form.form_name.value=count_num;

</script> 


<form method="post" name="login_form" action="http://love.com/test.php"> 

<input type="hidden" name="form_name" value=""> 

<input type="button" name="dd" value="submit" onclick=login_form.submit();> 

</form>


이렇게 하면, 빈 value에 스크립트 내 count_num값이 들어가게 된다.

Posted by sungho88
,

1. 검색할 때 특정 단어 제외하기


검색) 제주도 -순대국집 -> 이렇게 하면 -순대국집 검색어가 없어짐. 여러개 사용 가능(마이너스 기호)


상황) 제주도가서 맛집을 가고싶다. 그런데 제주도에 순대국 맛집이 있다.

제주도까지가서 순대국집은 가기 싫은데 자꾸 검색된다.

이럴경우 -순대국집하게 되면 순대국이 포함된 검색 목록에서 사라진다.


 

제주도 -순대국 -감자탕 -김밥천국


이렇게 하면 여러개 검색어를 빼는 것도 가능하다.


 

2. 검색 결과에서 특정 사이트를 보기 싫다면,

 

검색) 제주도 -site:naver.com 

이렇게하면 네이버에서 검색된 것들을 제외한다.


반대로, 

검색제주도 site:naver.com

이렇게하면 네이버에서 작성된 정보들만 나온다.

 

3. 특정 파일 찾는 방법

통계청에서 금융이라는 pdf파일을 검색하고 싶다면?

- 조건 : 통계청의 사이트를 알아야함.doc / ppt / xls / pdf / hwp 파일등등을, 찾고자하는 원하는 사이트에 들어가지 않고도 찾을 수 있다.

 

검색)금융 filetype:pdf site:http://kostat.go.kr

 

4. 기간 원하는 기간에 올라온 정보를 찾는 법 : 도구 - 모든 날짜

5. 언어 원하는 기간에 올라온 정보를 찾는 법 : 도구 - 모든 언어

Posted by sungho88
,

<카페24 - 도메인 포워딩>


- 카페24호스팅에서 등록하는 도메인을 다른 웹사이트로 이동시켜주는 기능이다.

- 포워딩 서비스는 카페24에서 구매한 도메인만 설정이 가능하다

- 포워딩 신청 후 적용까지 약 24~48시간 소요된다.


포워딩 종류


유동포워딩

- 포워딩된 후 주소창에는 연결시킨 도메인의 주소로 변경해서 표기.


예) 도메인이 cafe24.co.kr이고 포워딩 주소를 cafe24.com으로 설정했을 경우 유동포워딩 방식은 사용자가 주소창에 cafe24.co.kr을 입력했더라도 주소창에는 포워딩 주소로 변경되어 cafe24.com으로 표시.


고정포워딩

- 포워딩된 후 주소창에는 입력했던 도메인의 주소를 그대로 표기합니다.


예) 도메인이 cafe24.co.kr이고 포워딩 주소를 cafe24.com으로 설정했을 경우 고정포워딩 방식은 사용자가 주소창에 cafe24.co.kr을 입력했으면 주소창에는 계속 cafe24.co.kr로 표시



추후 업데이트 할 예정

Posted by sungho88
,

<우분투 버전 확인하기>

lsb_release -a 또는 cat /etc/issue.net

 

1. apt-get 업데이트

$ sudo apt-get update

2. nginx 설치

$ sudo apt-get install nginx

3. mysql 설치

$ sudo apt-get install mysql-server (Design11004)

4. DB를 초기화

$ sudo mysql_install_db



sudo chown -R sysadm:www-data 

nginx 서버 재시작

$ sudo /etc/init.d/nginx restart



/usr/share/nginx/html/

Posted by sungho88
,

노트북에서 프로그램이 화면 바깥쪽에서 실행되는 어이없는 상황을 보았다.

나오지 않는다. 다른 출력(모니터)를 사용하지도 않았는데

마치 확장한 것처럼 옆으로 나간다.

이럴 경우 노트북 화면 안으로 끌고 나와야 한다.


방법


아래 작업표시줄에서 선택된 상태에서 Alt + Space를 누르면 옆에 넘어간 쪽에서 창이 하나 뜬다


m을 눌러서 방향키(마우스 드래그 말고 방향키)을 눌러 왼쪽 또는 오른쪽으로 끌고 나오면 끌려나온다.


어이없지만... 가끔 윈도우 내에서 일어날 수 있는 버그? 이므로 알아두도록 하자.


기억하기 위해 블로그 했다.

Posted by sungho88
,

일단, 가장 단순하게 버튼 하나를 생성하고 그 버튼을 눌렀을 때 다른 씬으로 넘어가도록 하려고 한다.

한 가지 기능씩 구현해나가며 익숙해지려고 한다.


1. 버튼을 만들어야 한다.


GameObject - UI - Button으로 생성한다.

이상한 위치에 가있으므로 버튼의 위치를 0 0 0 으로 초기화(Reset)시킨다.


2. 다음으로 C# 스크립트를 하나 생성한다.


프로젝트 뷰 - Create - C# Script를 클릭하여 파일을 생성한 후 이름을 원하는 이름으로 변경해준다.


※내가 겪은 주의 할 점 두 가지


1) 생성 직후 이름을 변경하는 것은 문제가 없으나, 추후에 변경할 경우 스크립트에 있는 클래스명은 변하지 않으므로 스크립트를 열어 클래스명도 동시에 수정해줘야한다.


2) 씬을 변환해주는 이미 내장된 클래스명이 SceneManager이므로 이 클래스명은 사용하지 말아야한다. SceneManager가 명확한 파일명이 될 수 있지만, 이렇게 이름을 지을 경우 SceneManager의 본래의 내장된 기능을 사용할 수 없게된다.


어쨋든, 스크립트를 생성하면 열은 뒤, 씬을 변경하는데는 Start()함수와 Update()함수는 필요하지 않다.

씬을 변경하는 작업만 할 것이므로 삭제한다.

그 다음에 임의로 메소드 하나를 생성한다. 나는 ButtonClick이라는 이름으로 만들었다.


그 메소드에는 SceneManager.LoadScene("Play");만 써주면 된다.

아 그 전에 SceneManager를 사용하기 위해서는  맨 위에


using UnityEngine.SceneManagement;


을 한줄 추가해주어야 한다. SceneManagement를 사용하겠다는 정의이다.

LoadScene()함수는 이름에서도 알 수 있듯이 씬을 로드해오는 기능을 갖은 함수이다.

매개변수로 string으로 불러오고자 하는 씬명(Scene Name)을 작성해주면 끝~~


전체 코드는 다음과 같다.


using System.Collections;

using System.Collections.Generic;

using UnityEngine;

using UnityEngine.SceneManagement;


public class SceneChanger : MonoBehaviour

{

    public void ButtonClick()

    {

        SceneManager.LoadScene("Play");

    }

}

 


예전 방식으로 씬을 불러오기 위해서는 

Application.LoadLevel("Play"); 를 사용했다.

더이상 사용하지 않도록 하자.  물론 지금 사용해도 에러.오류는 나지 않지만, 경고가 뜬다. 


application.loadlevel is obsolete. Use SceneManager.LoadScene.


그러므로, SceneManager.LoadScene("")을 사용하는 것을 권장한다.


Posted by sungho88
,

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;


namespace ConsoleApplication2

{

    class Program

    {

        static void Main(string[] args)

        {


            Console.WriteLine("Hello 월드!");

            Console.WriteLine("Hello 월드!");

            Console.WriteLine("Hello 월드!");


            Console.Write("Hello");

            Console.Write("Hello");

            Console.Write("Hello");

        }

    }

}


WriteLine() 함수도 텍스트를 출력하는 함수이고,

Write() 함수 역시 동일한 함수이다.


하지만, 차이점은

WriteLine() 함수는 출력한 뒤에 개행이 이뤄지지만,

Write() 함수의 경우 개행되지 않는다.


따라서, 위 예제를 실행하면 결과는 다음과 같다.




Posted by sungho88
,