2012-01-15 3 views
0

php. 나는 회원들만 제출할 수있는 양식을 가지고 있습니다. 양식의 전자 메일 주소가 내 회원 데이터베이스에 있는지 확인한 다음 양식을 제출해도 괜찮은지 확인하려면 양식에 어떤 PHP 코드가 필요합니까?회원 전용 양식을 제출할 수 있습니다 PHP

이메일 주소가 회원 데이터베이스에 없으면 "회원 만이 양식을 제출할 수 있습니다."라고 표시하려고합니다. 어떤 PHP 코드를 폼에 데이터베이스에 연결하고 체크하지 않아도되므로 비회원으로부터 제출 된 폼을 얻지 못합니까? 감사합니다

+0

생각 음식 : 등록되지 않은 사람을 등록 된 회원의 이메일을 제출하지 못하게하려면 어떻게해야합니까? 전자 메일 주소 필드를 인증에 사용하는 것은 안전하지 않습니다. – AlexanderZ

답변

0

Mysql query 및 기타 mysql 함수를 공부하고 싶습니다.

$c = mysql_connect(...); 
mysql_select_db('database', $c); 
$q = mysql_query("SELECT COUNT(*) FROM users WHERE email = '" . 
    mysql_real_escape_string($_POST['email'],$c) . "'"); 
$row = mysql_fetch_row($q); 
if($row[0]){ 
    echo "Thanks for submitting..."; 
} else { 
    echo "Only members..."; 
} 

이 완벽 멀리 만 간단한 예입니다하지만 난 당신이 시작하는 좋은 장소라고 생각 : 코드는 기본적으로 같을 것이다. 당신이 뭔가를 할 수있는 당신의 PHP 파일의 상단에

1

: 당신이 hostname, usernamepassword 값을 수정 교체해야 물론

if(isset($_POST['email'])) { 
    mysql_connect("hostname","username","password"); 
    $result = mysql_query("SELECT * FROM users WHERE email = '".mysql_real_escape_string($_POST['email'])."'"); 
    if($row = mysql_fetch_array($result)) { 
     // found email 
    } else { 
     // email wasn't found 
    } 
    } 

는 또한 변경해야 usersemail 선택 쿼리에서 테이블 및 필드의 이름을 지정합니다. 여기

는 더미 형태 :

<form method="POST" action="<?php echo $_SERVER['SCRIPT_NAME']; ?>"> 
    <input type="text" name="email" /> 
    <input type="submit" value="Send" /> 
</form> 
-1

누군가가 당신은 매우 가능성이 $ _SESSION [ 'id_member'] 변수를 사용하는 의미 등록 된 회원 인 경우. 이 '회원'에 대한 클라이언트에 의해 볼 수있는 쿠키의 이름을 설정합니다

...

if (!headers_sent() && !isset($_SESSION)) 
{ 
session_name('member'); 
} 

... 다음 사용자가 ...

세션 변수와 그 권한을 할당 인증 할 때 여기
$_SESSION['member_id'] = $mysql_row['id']; 
$_SESSION['member_status'] = $mysql_row['id']; 

은 ...

10 사용하거나 변경할 수 있지만 참조의 좋은 지적해야한다 수있는 상태 계층 구조 - 최고 관리자 (만)

9 - 관리자 // 중간 수준의 관리자

8 - 도우미 // 제한 관리자

7 - 중재자 // 어떤 바보로이 상태를 포기하지 마십시오

6 - 프리미엄 회원// 그들은 돈을 줬어!

5 - 등록 회원 // 일반 계정 상태

4 - 냉동 계정은 금지하지만 뭔가 잘못, 것 "해동"

3하지 않았다 // - 확인되지 않은 이메일 주소를 // 등록하지만 확인하지 않았다 이메일

2 - 등록되지 않은 방문자 // 인간의

1 - 좋은 봇

0 -

금지

일반적으로 첫 번째

if ($_SERVER['REQUEST_METHOD']=='GET') 
{ 

} 
else if ($_SERVER['REQUEST_METHOD']=='POST') 
{ 
if (isset($_POST['submit_button_name_value'])) {blog_post_ajax_comment();} 
} 

내가 버튼을 제출 이름 = "값"속성/값을 추가 ... 양식을 잡는 방법을 결정, 왜? 서버에 하나의 기능 또는 매우 간단하고 유효한 (X) HTML을 트리거하게 할 수있는 두 가지 제출 옵션 (미리보기 및 게시)이 있습니다.

변수가 설정되었는지 확인 (사용 권한 유지).

그런 다음 사용자 권한이 충분한 지 확인한 다음 간단한 정수를 사용하여이를 나타낼 수 있습니다.

그런 다음 isset 및 permission if 문을 두 가지로 둘러 쌉니다. 하나는 양식이고 두 번째는 양식을 처리 할 때 이러한 조건을 사용해야합니다.

난 항상

//function module_method_ajax_purpose() 
function blog_post_ajax_comment() 
{ 
if (!isset($_SESSION['member'])) {http_report('403',__FUNCTION__,'Error: you must be signed in to do that.');} 
else if ($_SESSION['member_status']<=4) {http_report('403',__FUNCTION__,'Error: permission denied; your account has been flagged for abuse.');} 
else if (flood_control($datetime,'60')!=1) {http_report('403',__FUNCTION__,'Error: you can only post a comment once every X seconds.');} 
else if (!isset($_POST['post_form_name_1']) || !isset($_POST['post_form_name_2'])) {http_report('403',__FUNCTION__,'Error: permission denied.');} 
else 
{ 
    // NOW process 
    $query1 = "SELECT * FROM table"; 
    $result1 = mysql_query($query1); 

    if ($result1) 
    { 
    //successful, increment query number for further queries 
    } 
    else {mysql_error_report($query1,mysql_error(),__FUNCTION__);} 
} 

오류보고는 매우 강력 ... 거부하고 당신에게 약간의 여분의 향상을 제공하기 위해 처리하는 데이터베이스 쿼리 오류가 던지는 물건에 대해 테스트, HTTP를 위해 그것을 사용, 자바 스크립트, PHP와 MySQL. 실시간 로그 읽기에 대한 내 대답은 다음과 같습니다. jQueryUI tabs and Firefox: getBBox broken?

관련 문제