2016-09-30 3 views
1

전자 메일이 데이터베이스에 이미 있으면 값을 삽입하거나 대소 문자를 구분하지 않고 양식을 index2.html로 리디렉션하고 싶습니다. 나는 성공하지 못한 채 여러 가지 접근 방식을 시도했다.값이 머리말 위치에 존재하는 경우

if (dbNumRows($result) == 1) { 
     header ('Location: index2.php'); 
    }else { 

    $sql = "INSERT INTO tbl_users (Title, fullname, email, gender) 
      VALUES ('$title', '$fullname', '$email', '$gender')"; 
    dbQuery($sql); 
    } 
+0

오류가 발생하셨습니까? – rbr94

+0

위치 변경 후'exit();' – Aziz

답변

2

다른 예에 삽입 쿼리를 넣어 내 양식이 있지만 여기 내 function.php

<?php 

require 'database.php'; 

$title = $_POST['Title']; 
$fullname = $_POST['fullname']; 
$email = $_POST['email']; 
$gender = $_POST['gender']; 

$sql = "SELECT email FROM tbl_users WHERE email = $email"; 
$result = dbQuery($sql); 
if (dbNumRows($result) == 1) { 
    header ('Location: index2.php'); 
} 

$sql = "INSERT INTO tbl_users (Title, fullname, email, gender) 
     VALUES ('$title', '$fullname', '$email', '$gender')"; 
dbQuery($sql); 

switch ($_POST['gender']) 
{ 
    case 'male': 
     header('Location: male.php'); 
     break; 
    case 'female': 
     include 'female.php'; 
     break; 
    } 
?> 

입니다 나머지 코드를 읽고 실행합니다.

WHERE email = '$email'"; 

이 정말

WHERE email = $email"; 

에 코드/헤더가 인용되지 않은 실패 때문에 코드의 일부인 경우

header('Location: index2.php'); 
die(); 
2

가 리디렉션 후에는 PHP를 종료해야하거나 그것의 -

<form action="function.php" method="post 
    <input name="Title" placeholder="Title" type="text"> 
    <input name="fullname" placeholder="fullname" type="text"> 
    <input name="email" placeholder="email" type="text"> 
    <select name="gender"> 
     <option selected="selected" value="-">Please select your bank</option> 
     <option value="male">Male</option> 
     <option value="female">Female</option> 
    </select> 
</form> 
+0

'exit()'가 아닌'die()'를 사용하는 이유는 무엇입니까? 'die()'는 오류보고 기능이며 오류 로그에 항목을 생성 할 수 있습니다. – syck

+1

die()와 exit()가 동등하므로 어느 쪽이든 괜찮습니다. –

+0

오케이. 일부 언어가 없기 때문에 실패의 경우에만 'die'를 사용하고 성공하면 'exit'를 사용하는 것이 좋습니다 (권장). – syck

3

: 그래서 간단하게이 문제를 해결해야한다 $email은 문자열이 아니고 정수가 아니기 때문에

헤더 뒤에 exit;을 추가해야합니다. 그렇지 않으면 코드가 계속 실행되기를 원할 것입니다.

참조 :

당신은 SQL 주입에 열려있어; 준비된 진술을 사용하십시오.

참고 : <form action="function.php" method="post이 실제 코드의 (다시) 일부인 경우

플러스, 그것은 견적 "과의 닫는 > 모두 실종.

<form action="function.php" method="post"> 

각주 :

에 연결하는 데 사용되는 API/알 수와 질의, 그래서 오류보고와 질의에와 PHP를 통해 오류를 확인하십시오.

빈 필드도 확인해야합니다. 그렇지 않으면 예기치 않은 결과/놀라움을 얻을 수 있습니다.


를 "나는 내 양식이 index2.html로 리디렉션하려면"당신은 (.php와)

를 사용하는
header ('Location: index2.php'); 

그 중 하나와 오타가있을 수 있습니다. 그렇지 않은 경우 .html 확장 프로그램을 사용하세요.

+0

간단히하기 위해 코드를 입력했습니다. 그것들은 실제 코드에서 그대로 유지됩니다. –

+0

@JaphetSmith 사람들이 코드를 게시 할 때, 실제 문제의 일부가 될 수 있으므로 문자 그대로 받아 들여 향후 기회를 포착하지는 않습니다 .--이 질문은 향후 방문자가 질문/답변을 작성하는 데 도움이됩니다. –

+0

@JaphetSmith 뭔가 이해가 안되는데, 이유는 'case'male '에 대한 헤더를 사용하는 이유입니다. header ('Location : male.php ');'case'female '에 대한 포함 : 'female.php'를 포함하십시오. '. 내 대답을 다시 읽고 오류를 확인하십시오. 내가 추가 할 수있는 다른 것은 없다. –

관련 문제