2012-06-26 4 views
0

php를 사용하여 사용자 등록/로그인 스크립트를 만들려고합니다. 등록 후에 사용자가 만든 사용자 이름과 전자 메일을 표시하는 페이지로 이동하게됩니다.등록 후 로그인/리디렉션 PHP mySQL

사용자 이름과 성, 즉 사용자 이름 : 성, 성 : smith, 사용자 이름 : john.smith 및 john이 등록시 두 개의 입력을 기반으로 한 사용자 이름과 이메일을 가졌습니다. .smith @ domain.com이라고합니다.

나는 사용자가 데이터베이스에 로그인 이동합니다 있도록이 내가 로그인 스크립트를하려고 노력이 코드 등록 후

GetSQLValueString($_POST['firstname'] . '.' . $_POST['lastname'], "text") 

GetSQLValueString($_POST['firstname'] . '.' . $_POST['lastname']. '@tatcs.com', "text") 

을 사용했다가 그/그녀의 표시 "success.php"에 세션 변수로 사용자 이름을 사용하여 사용자 이름과 전자 메일을 만듭니다.

그러나 테스트 한 결과 새로운 사용자는 성공적으로 데이터베이스에 추가되었지만 success.php 페이지는 사용자 이름과 이메일을 표시하지 못해 로그인에 실패했습니다. 나는 단순히 $ _POST ('이름')를 사용할 수없는 사용자 이름의 텍스트 필드를 가지고 있지 않기 때문에

내가 대신 내가 한, 내 로그인 세션 코드가 문제라고 생각합니다 :

if (!isset($_SESSION)) { 
    session_start(); 
} 

$loginFormAction = $_SERVER['PHP_SELF']; 
if (isset($_GET['accesscheck'])) { 
    $_SESSION['PrevUrl'] = $_GET['accesscheck']; 
} 

if (isset($_POST['firstname'] ,$_POST['lastname'])) { 
    $loginUsername=$_POST['firstname'] . '.' . $_POST['lastname']; 
    $password=$_POST['password']; 
    $MM_fldUserAuthorization = ""; 
    $MM_redirectLoginSuccess = "success.php"; 
    $MM_redirectLoginFailed = "error.php"; 
    $MM_redirecttoReferrer = false; 

나는 연결할 경우 이름과 성을 입력하여 loginUsername 세션으로 사용자 이름을 구성하십시오.

다른 사용자 이름 텍스트 필드를 추가하지 않고도 다른 방법이 있습니까? (등록 양식을 일반 연락처 정보로 사용하고 직원의 성과 이름으로 시스템이 자동으로 사용자 이름을 만들도록하십시오.) 업데이트 : mellamokb 님의 제안에 따라 로그인 코드를 if 문 내에 넣습니다. 삽입 코드,하지만 그것은 나를 위해 작동하지 않았다. 나는 이셋 코드가 잘못된 것 같아서

if (isset($_POST['firstname']) && isset($_POST['lastname'])) 

으로 변경했지만 여전히 유용하지는 않습니다.

업데이트 된 전체 코드는 아래를 참조하십시오 : 나는을 downvoted 이유를 모르겠어요

<?php require_once('../Connections/connSQL.php'); ?> 
<?php 

// *** Validate request to login to this site. 
if (!isset($_SESSION)) { 
    session_start(); 
} 

$loginFormAction = $_SERVER['PHP_SELF']; 
if (isset($_GET['accesscheck'])) { 
    $_SESSION['PrevUrl'] = $_GET['accesscheck']; 
} 


if (!function_exists("GetSQLValueString")) { 
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{ 
    if (PHP_VERSION < 6) { 
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue; 
    } 

    $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue); 

    switch ($theType) { 
    case "text": 
     $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL"; 
     break;  
    case "long": 
    case "int": 
     $theValue = ($theValue != "") ? intval($theValue) : "NULL"; 
     break; 
    case "double": 
     $theValue = ($theValue != "") ? doubleval($theValue) : "NULL"; 
     break; 
    case "date": 
     $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL"; 
     break; 
    case "defined": 
     $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue; 
     break; 
    } 
    return $theValue; 
} 
} 

$editFormAction = $_SERVER['PHP_SELF']; 
if (isset($_SERVER['QUERY_STRING'])) { 
    $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']); 
} 

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "register")) { 
    $insertSQL = sprintf("INSERT INTO member (m_firstname, m_lastname, m_username, m_password, m_email, m_phone, m_cellphone, m_address) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)", 
         GetSQLValueString($_POST['firstname'], "text"), 
         GetSQLValueString($_POST['lastname'], "text"), 
         GetSQLValueString($_POST['firstname'] . '.' . $_POST['lastname'], "text"), 
         GetSQLValueString($_POST['password'], "text"), 
         GetSQLValueString($_POST['firstname'] . '.' . $_POST['lastname']. '@tatcs.com', "text"), 
         GetSQLValueString($_POST['homephone'], "text"), 
         GetSQLValueString($_POST['cellphone'], "text"), 
         GetSQLValueString($_POST['address'], "text")); 

    mysql_select_db($database_connSQL, $connSQL); 
    $Result1 = mysql_query($insertSQL, $connSQL) or die(mysql_error()); 

    if (isset($_POST['firstname']) && isset($_POST['lastname'])) { 
    $loginUsername=$_POST['firstname'] . '.' . $_POST['lastname']; 
    $password=$_POST['password']; 
    $MM_fldUserAuthorization = ""; 
    $MM_redirectLoginSuccess = "success.php"; 
    $MM_redirectLoginFailed = "error.php"; 
    $MM_redirecttoReferrer = false; 
    mysql_select_db($database_connSQL, $connSQL); 

    $LoginRS__query=sprintf("SELECT m_username, m_password FROM member WHERE m_username=%s AND m_password=%s", 
    GetSQLValueString($loginUsername, "text"), GetSQLValueString($password, "text")); 

    $LoginRS = mysql_query($LoginRS__query, $connSQL) or die(mysql_error()); 
    $loginFoundUser = mysql_num_rows($LoginRS); 
    if ($loginFoundUser) { 
    $loginStrGroup = ""; 

    if (PHP_VERSION >= 5.1) {session_regenerate_id(true);} else {session_regenerate_id();} 
    //declare two session variables and assign them 
    $_SESSION['MM_Username'] = $loginUsername; 
    $_SESSION['MM_UserGroup'] = $loginStrGroup;  

    if (isset($_SESSION['PrevUrl']) && false) { 
     $MM_redirectLoginSuccess = $_SESSION['PrevUrl']; 
    } 
    header("Location: " . $MM_redirectLoginSuccess); 
    } 
    else { 
    header("Location: ". $MM_redirectLoginFailed); 
    } 
} 



    $insertGoTo = "success.php"; 
    if (isset($_SERVER['QUERY_STRING'])) { 
    $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?"; 
    $insertGoTo .= $_SERVER['QUERY_STRING']; 
    } 
    header(sprintf("Location: %s", $insertGoTo)); 
} 



?> 

, 나는 초보자가 배우려고 노력 그리고 난 정말 누군가가 올바른 방향으로 날 지점 수 있기를 바랍니다.

오랫동안 죄송합니다. 미리 감사드립니다. 도와 주셔서 정말 고맙습니다.

- 앨런

+2

로그인 코드는 데이터베이스에 레코드를 추가하는 코드와 동일한 'if'조건에 있어야합니다. 그렇지 않으면 다른 페이지로 리디렉션되는'header (location : ..') 때문에 절대 실행되지 않습니다. – mellamokb

+1

조건부를 사용하여 하나의 절차 스크립트에서 이러한 모든 검사를 수행 할 수 있습니까? 그렇다면 논리를 구분할 것을 제안 할 수 있습니까? 여기서는 언급하는 것이 진부하지만,이 광기에 대한 몇 가지 방법을 제공하는 데 도움이 될 수있는 수많은 PHP 프레임 워크가 있습니다. Google for Kohana, CakePHP, Symphony, CodeIgniter 등이 있습니다. 적어도이 두 가지 중 하나를 배우고 두통을 피하는 것이 가장 좋습니다. – DeaconDesperado

+0

@mellamokb 안녕하세요, 저는 session_start()를 맨 위로 이동하고'if (isset ($ _ POST [ 'firstname'), $ _POST [ 'lastname'])) {$ loginUsername = $ _POST [ 'firstname']. '.' . $ _POST [ '성']; $ password = $ _ POST [ 'password'];'는 insertSQL 바로 다음에 있지만 여전히 작동하지 않습니다. – alchuang

답변

1

해결되었습니다. 실제로 INSERT 후에 리디렉션 페이지와 관련이 있습니다. 모든 도움을 주셔서 감사합니다!