[1일의 요일 구하는 PHP 코드]

<?php
//윤년인지 평년인지(윤년은 366일)
//윤년은 true=1 $leap_year
//평년은 false0 $common_year
function is_leapyear($year){
if($year%4==0){
if($year%100==0){
if($year%400==0){
return true;
}
return false;
}
return true;
}
else{
return false;
}
}
//해당 달이 몇 일인지
function get_day($year, $month){
if($month==1 or $month==3 or $month==5 or $month==7 or $month==8 or $month==10 or $month==12) {
return 31;
}
else if($month==2){
if(is_leapyear($year)){
return 29;
} else return 28;
}
else if($month==4 or $month==6 or $month==9 or $month==11){
return 30;
}
}
//총 일수
function total_day($year, $month){
$sum = 0;
// 년 수 합
for($i=1; $i<$year; $i++){
if (is_leapyear($i)){
$sum += 366;
} else{
$sum += 365;
}
}
// 월 수 합
for($start_month=1; $start_month<$month; $start_month++){
$sum+=get_day($year, $start_month);
}
return $sum;
}
function what_week($day){
$temp=($day+1)%7;
switch ($temp) {
case 0: return "일요일"; break;
case 1: return "월요일"; break;
case 2: return "화요일"; break;
case 3: return "수요일"; break;
case 4: return "목요일"; break;
case 5: return "금요일"; break;
case 6: return "토요일"; break;
}
}
//main
$year=1;
$month=1;
echo total_day($year, $month)."<br>";
echo what_week(total_day($year, $month));
?>












[실행결과]




1단계는 윤년과 평년을 구하는 것이다.

윤년과 평년을 구하기 전에, 각 규칙에 대해 알아보았다.

 

1. 윤년 - 2월 29일 까지 있음

2. 평년 - 2월 28일 까지 있음

 


[윤년 평년 추가 규칙]


* 4로 나누어 떨어지는 해는 윤년, 그 밖의 해는 평년으로 한다

* 4로 나누어 떨어지지만 100으로 나누어 떨어지는 해는 평년으로 한다

* 단, 400으로 나누어 떨어지는 해는 윤년으로 한다.

 


[윤년 평년 구하는 PHP 코드]


<?php

 

//윤년은 true
//평년은 false
 
function is_leapyear($year){
    if($year%4==0){
        if($year%100==0){
            if($year%400==0){
                return true;
            }
            return false;
        }
        return true;
    }
    else{
        return false;
    }
}
 
echo $year=2018;
if(is_leapyear($year)){
    echo '윤년입니다.';
}else{
    echo '평년입니다.';
}
 
?>



[코드 실행 결과]



MySQL Auto Casting에 대해서 실습을 통해 알아보겠습니다.


1. MySQL 데이터베이스 생성하기 

: 서버에 접속 한 후, DATABASE를 생성합니다.


# mysql -u root -p 

> CREATE DATABASE DB명; 



2. DATABASE 확인하기

: DATABASE가 잘 생성되었는지 확인합니다.


> SHOW DATABASES; 



3. DATABASE 선택 후 TABLE 생성하기

: 만들어진 DATABASE에 TABLE을 생성합니다.


> use DB명;

> CREATE TABLE `student` (

    `id`  tinyint NOT NULL ,

    `name`  char(4) NOT NULL ,

    `sex`  enum('man','woman') NOT NULL ,

    `address`  varchar(50) NOT NULL ,

    `birthday`  datetime NOT NULL ,

    PRIMARY KEY (`id`)

);



4. TABLE에 값 입력하기

: 생성한 TABLE에 값을 입력합니다.


> INSERT INTO `student` VALUES ('1', 'star', 'woman', 'seoul', '2017-08-10');

INSERT INTO `student` VALUES ('2', 'ruby', 'man', 'mokpo', '2017-08-10');

INSERT INTO `student` VALUES ('3', 'mine', 'woman', 'daejeon', '2017-08-10');

INSERT INTO `student` VALUES ('4', 'cool', 'woman', 'seoul', '2017-08-10');



5. TABLE 생성 확인하기 

: TABLE이 알맞게 생성되었는지 확인합니다.


> desc student; 




6. TABLE에 저장된 내용 확인하기

: select를 이용하여 TABLE에 저장된 내용을 확인합니다.


> select * from student; 



7. TABLE 내의 특정 정보 확인하기

: where 절을 이용하여 TABLE내의 특정 정보를 확인합니다.


> select * from student where id=1; 

> select * from student where id=2;



Auto Casting 알아보기


1. where name=0; 을 이용하여 데이터베이스의 내용을 출력한다.

 

> select * from student where name=0;



2.  ~ where name=0; 을 입력한 결과 아래 그림과 같이 student 테이블의 내용 전체를 출력한다.



3. ~ where address=0; 을 입력해도 student 테이블의 내용 전체가 출력된다.



이유는 ????? 바로 MySQL Auto Casting 때문이다.

우리가 위에서 테이블을 생성한 구문을 보면 아래 표와 같다.


> use DB명;

> CREATE TABLE `student` (

    `id`  tinyint NOT NULL ,

    `name`  char(4) NOT NULL ,

    `sex`  enum('man','woman') NOT NULL ,

    `address`  varchar(50) NOT NULL ,

    `birthday`  datetime NOT NULL ,

    PRIMARY KEY (`id`)

);


name과 address는 각 자료형이 char와 varchar로 되어있다. 

하지만 우리는 "~ where name=0;" 쿼리문을 실행시켰고 그 결과 모든 테이블이 출력되었다.

이는 name이 char형일 때 Auto Casting에 의해 name이 int형으로 변환되어 0으로 치환되었고, 

0=0 즉 참이 된 것이다. 때문에 모든 테이블의 내용이 출력되었다.


참고자료 : https://dev.mysql.com/doc/refman/5.7/en/type-conversion.html

로그인에 이어, 회원가입 페이지 코드입니다.


join.php


<!DOCTYPE html>
<html>
<head>
    <title>회원가입</title>
</head>
<body>
    <fieldset>
        <legend>회원가입양식</legend>
        <table>
            <tr>
                <th>이름</th>
                <td><input type="text"></td>
            </tr>
            <tr>
                <th>아이디</th>
                <td><input type="text"></td>
            </tr>
            <tr>
                <th>비밀번호</th>
                <td><input type="password"></td>
            </tr>
            <tr>
                <th>연락처</th>
                <td><input type="tel"></td>
            </tr>
            <tr>
                <th>이메일</th>
                <td><input type="email"></td>
            </tr>
            <tr>
                <th></th>
                <td><input type="button" onclick="location.href='login_success.php'" value="가입"></td>
            </tr>
        </table>
    </fieldset>
</body>
</html>




1. 로그인 메인페이지


main.php


<html>
    <head>
        <title>OneSTAR_Main</title>
    </head>
    <body>
     <fieldset>
        <legend>로그인 하세요!</legend>
        <table>
        <form action=login_check.php method="POST">
            <tr>
                <th>ID</th>
                <td><input type="text" name="loginID"></td>
            </tr>
            <tr>
                <th>PASSWORD</th>
                <td><input type="password" name="loingPASSWORD"></td>
            </tr>
        <input type="submit" value="로그인">
        <input type="button" value="회원가입">
        </form>
        </table>
     </fieldset>
    </body>
</html>




2.  사용자 계정 확인 페이지


login_check.php


<?php session_start(); //DB 정보 $db_hostname = " "; $db_user = " "; $db_password = " "; $db_name = " "; //mysql_connect: 서버에 접속하기 위해 필요 $db_conn=mysql_connect($db_hostname,$db_user,$db_password); //DB 선택해서 연동 mysql_select_db($db_name,$db_conn); //사용자가 입력한 ID와 비밀번호 받아오기 $id=$_POST['loginID']; $password=$_POST['loginPASSWORD']; //사용자가 입력한 ID 기준으로 DB에 입력되어있는 ID와 비밀번호 받아오기 $db_sql="SELECT * FROM MEMBERS WHERE id='$id'"; //print_r($db_sql); $result = mysql_query($db_sql); $row=mysql_fetch_array($result); //print_r($row); echo $row; //ID를 DB에서 확인하여 PASSWORD와 같은지 체크 ?>




3. 로그인 성공 페이지


login_ok.php


<html>
    <head></head>
    <body>
    <h1>세션 확인 후 이동하였습니다.
    로그인이 완료되었습니다.</h1>
    </body>
</html>




4. 로그인 실패시 페이지


login_fail.php


<html>
    <head></head>
    <body>
        <h1>로그인이 불가능합니다.</h1>
        <input type="button" value="뒤로가기" onclick="location.href='main.php'">
    </body>
</html>




'Programming > Web' 카테고리의 다른 글

[Web]MySQL Auto Casting 이란?  (0) 2017.08.12
[Web-PHP] 회원가입 폼 구현  (0) 2017.07.06
[Web-PHP] 로그인 관련 페이지 구현  (0) 2017.07.06
[web]400 Bad Request Error  (0) 2017.06.21
[PHP]페이지 자동 이동 방법  (0) 2017.06.06
[Web]PHP_MySQL기초  (0) 2015.10.05

HTTP 헤더부분을 웹 서버에 전송을 하였을때, 


400 Bad Request Error가 발생하는 경우가 있습니다.



400 Bad Request Error란?


The request could not be understood by the server due to malformed syntax.

요청이 잘못되어 발생하는 에러로 정확한 해결방법은 각 서버에 따라 다릅니다.


하지만, 어떠한 요청을 원하는지에 따라 적절한 대응을 할 수 있습니다. 


주로 전송된 파라미터의 값이 잘못된 값일 경우 발생하는 에러입니다.




'Programming > Web' 카테고리의 다른 글

[Web-PHP] 회원가입 폼 구현  (0) 2017.07.06
[Web-PHP] 로그인 관련 페이지 구현  (0) 2017.07.06
[web]400 Bad Request Error  (0) 2017.06.21
[PHP]페이지 자동 이동 방법  (0) 2017.06.06
[Web]PHP_MySQL기초  (0) 2015.10.05
[Web]로그인기능 만들기_DB기초  (0) 2015.08.06


PHP로 로그인 화면을 만들다보면.. 


로그인후/로그아웃 후 다른화면으로 자동으로 이동하도록 하는 기능이 필요합니다.


다른 화면으로 자동 이동할때 쓰이는 문법에 대해 정리해보았습니다.



=============================================


1. 자바스크립트 이용하는 방법


<?php 

echo("<script>location.href='경로/파일명';</script>");

?>



<?php 
      echo("<script>location.replace('경로/파일명');</script>"); 
?> 


=============================================


2. Header 함수를 이용하는 방법 


<?php
      Header("Location:경로/파일명"); 
?> 


=============================================



저는 Header 함수를 이용하는 방법이 편합니다. 


PHP 내장되어있는 Header 함수를 사용하면 Location에 제가 원하는 것을 바로 입력 할 수 있습니다.


아래 사진과 같이 Header 부분에 Location에 그대로 입력해서 login_ok.php로 자동 이동합니다!








'Programming > Web' 카테고리의 다른 글

[Web-PHP] 로그인 관련 페이지 구현  (0) 2017.07.06
[web]400 Bad Request Error  (0) 2017.06.21
[PHP]페이지 자동 이동 방법  (0) 2017.06.06
[Web]PHP_MySQL기초  (0) 2015.10.05
[Web]로그인기능 만들기_DB기초  (0) 2015.08.06
[Web]로그인기능 만들기_로그인 세션  (0) 2015.07.25

1.MySQL 개요 : 관계형 데이터베이스의 개념과 MySQL의 구조를 살펴본다.


*root 계정 접속  

*새로운 계정 생성하기

 *database 생성 하고 확인하기

<명령어 정리>

1.데이터베이스 관련 명령어

- 생성 : create database DB명;

- 목록보기 : show database;

- 삭제하기 : drop database DB명;


2. 테이블 관련 명령어 

- 생성 : create table 테이블명(

필드명1, 타입,

필드명2, 타입,

필드명3, 타입,

-----------

primary key(필드명)

);

- 구조 파악하기 : desc 테이블명;

- 삭제하기 : drop table 테이블명;

< 테이블관련 실습 >


1) 테이블 생성하기  create table


2) 테이블 확인하기  show  tables , desc 



1. 데이터 베이스 서버란?

- 내가 가지고 있는 정보만 따로 모아놓은 것 

- 데이터를 저장하는 역할을 한다.

- 동영상 캡쳐 이미지 참고 


2. Datamapper 이용하기 

- 셋업 : 

require 'data_mapper' # metagem, requires common plugins too.

DataMapper::setup(:default, "sqlite3://#{Dir.pwd}/hotel.db")

- 종료 : 
DataMapper.finalize


3. DataBase에 아이디 패스워드 저장하기 

class Hotel
      include DataMapper::Resource 
      property :id, Serial
      property :user_name, String
      property :user_password, String
      property :created_at, DateTime    
end

  <DB에 저장되는 형식>
형태가 String인지 Text인지 무엇인지 wlwjdgownrl.

user_name 

 user_password

 adf@nate.com

1234 

 nmle@naver.com 

2345 

 kdfjksf@naver.com 

3456 


Hoter.auto_upgrade! 


- 데이터 베이스 파일에 자동적으로 업그레이드 된다.






1. 기본 개념

 세션 : 페이지간의 정보를 넘길시 사용한다.

       데이터를 세션에서 저장해놓고 기억해두는 방식. 


2. 방법

 - 시나트라를 이용해 세션 사용하기 

1) 로그인 성공시 session[:email] = 'ghb202@nate.com'

session[:email] 에 'ghb202@nate.com' 저장하기 

@email_name = session[:email]


-메인페이지에 로그인 정보 띄우기

<%= @email_name %>님이 로그인 하셨습니다.


- 로그아웃 버튼 만들기 

<a href="/logout">로그아웃</a>

- 로그아웃 시 뜨는 창 

로그아웃이 되었습니다.

<a href="/">메인페이지로가기</a>


-로그아웃 시 메세지 창을 지워버림. 

<% if !session[:email_name].nil? %>

  <%= @email_name %>님이 로그인 하셨습니다.

  <a href="/logout">로그아웃</a>

+ Recent posts