2012-11-28 1 views
1

제목에 언급 된대로 PHP 폼에서 submit을 클릭하면 방문 페이지가 비어 있고 제출되지 않습니다 데이터베이스에 날짜. 그 이유는 잘 모르겠지만 전에는 (나는 틀린 일을 한 것 같았습니다) 실제로 occassionaly (극히 드물게) 일을했습니다. 아래 양식의 방문 페이지입니다. 그리고 그 아래에 양식 자체가 있습니다. 나는 이것에 아주 새롭다 그래서 어떤 도움 또는 코멘트는 평가된다.내 PHP 양식에 제출을 클릭하면 방문 페이지가 비어 있고 데이터베이스에 날짜를 제출하지 않습니다.

폼 랜딩 페이지

<?php 
    session_start(); 
    if(isset($_SESSION['myusername'])) 
    if ($_POST['title'] == '' or $_POST['story'] == '' or $_POST['city'] == '' or $_POST['province'] == '') { 
    $_SESSION['error1'] = "All fields required!"; 
    header("Location: debate.php"); 
    print "issue"; 
    } 
    else { 
    include 'config.php'; 
    if (get_magic_quotes_gpc()) 
    { 
    function stripslashes_deep($value) 
    { 
    $value = is_array($value)? 
    array_map('stripslashes_deep',$value): 
    stripslashes($value); 
    return $value; 
    } 

    $_POST = array_map('stripslashes_deep',$_POST); 
    $_GET = array_map('stripslashes_deep',$_GET); 
    $_COOKIE = array_map('stripslashes_deep',$_COOKIE); 
    $_REQUEST = array_map('stripslashes_deep',$_REQUEST); 
    } 
    $name = mysql_real_escape_string($_POST['title']); 
    $content = mysql_real_escape_string($_POST['story']); 
    $city = mysql_real_escape_string($_POST['city']); 
    $province = mysql_real_escape_string($_POST['province']); 
    $query = "INSERT INTO comments(commentusername, commentcontent, status, debateid, city, province) VALUES ('.$name.','.$content.','0','1','.$city.','.$province.')"; 
    $result=mysql_query($query,$conn); 
    $_SESSION['error1'] = "Thank you for your submission!"; 
    header("Location: debate.php"); 
    print "issue"; 
    mysql_close(); 
    }?> 

제출 양식

제출 양식 코딩.

<!-- comment form --> 
<div style="position:absolute;left:600px;top:750px;border-style:solid;border-color:#970033;background-color:black;border-width:4px;"> 
<div align="center"><strong><font color="white"><b>Join the debate</b></font></strong></div> 
<form action="cposting.php" method="post"> 
    <TABLE WIDTH="60%"> 
    <tr> 
     <td>Name:<input type="text" name="title" SIZE="35"> </td> 
<tr> 
     <td>City:<br><input type="text" name="city" SIZE="35"> </td> 
    </tr> 
<tr> 
     <td>Province:<input type="text" name="province" SIZE="35"> </td> 
    </tr> 
    <tr><td>Comment<br></td></tr> 
     <tr width="80%"> 

     <td><TEXTAREA NAME="story" ROWS="5" COLS="30"></TEXTAREA></td> 
    </tr> 
<td><input type="submit" value="Post"></td></tr> 
</table> 
</form> 

은 정말 당신의 도움을 apprecate. 감사!

아래 코드는 관리자 승인 페이지입니다. 이것은 내가 처음 게시 할 때 (그리고 브라우저를 열어두면 후속 게시물) 주석을 쓰지만 그 이후에는 가지 않습니다.

<?php 
session_start(); 
if(isset($_SESSION['myusername'])) 
if($_SESSION['myusername'] == "Bobert") { 
?> 
<html> 
<title>Discourse Magazine</title> 
<head> 
</head> 
<body background="" style="background: url() no-repeat; background-size: 100%;"> 

<?php 
include 'config.php'; 

print '<h4>'.'Welcome back:'.'&nbsp'.$_SESSION['myusername'].'</h4>'; 
?> 
<div style="float:left;border-style:solid;border-width:2px;"><img style="z-index:1;height:200px;" src="/favicon.png" alt="" /></div><br><br><br><br><br><br><br><br><br><br><br><br><br> 
Approving Comments (listed oldest to newest) 
<?php 
if (get_magic_quotes_gpc()) { 
    $process = array(&$_GET, &$_POST, &$_COOKIE, &$_REQUEST); 
    while (list($key, $val) = each($process)) { 
     foreach ($val as $k => $v) { 
      unset($process[$key][$k]); 
      if (is_array($v)) { 
       $process[$key][stripslashes($k)] = $v; 
       $process[] = &$process[$key][stripslashes($k)]; 
      } else { 
       $process[$key][stripslashes($k)] = stripslashes($v); 
      } 
     } 
    } 
    unset($process); 
} 


if ($conn) { 

$SQL = "SELECT * FROM comments where status = '0' ORDER BY commentid"; 
$result = mysql_query($SQL,$conn) OR die(mysql_error()); 
while ($row = mysql_fetch_array($result)) { 


$rows=mysql_num_rows($result); 
$capproveidid = $row['commentid']; 
$cdeleteid = $row['commentid']; 
print '&nbsp'; 
print '<div style="background: url() no-repeat;overflow:auto;padding-top:3px;border-style:solid;border-width:5px;width:800px;">'; 
print '<p style="padding-left:5px;">'.'<u>'.'<strong>'. $row['commentusername'].'</strong>'.'</u>' .'<br>'. $row['commentcontent'] .'<br>'.'<br>'.'</p>'; 
?> 

<form action="approve.php" method="post"> 
<input type="hidden" name="capproveidid" value="<?php echo $capproveidid;?>"/> 
<input type="submit" value="Approve"> 
</form> 
<form action="cdelete.php" method="post"> 
<input type="hidden" name="cdeleteid" value="<?php echo $cdeleteid;?>"/> 
<input type="submit" value="Delete"> 
</form> 

<?php 
print '</div>'; 

} 
} 
else { 
print "Database NOT Found "; 
} 
} 
else{ 
header('Location: debate.php'); 
} 
ob_end_flush(); 
?> 
</body> 
</html> 

답변

1

INSERT 검색어의 형식이 잘못되었을 가능성이 큽니다. 전체 검색어를 큰 따옴표로 묶으면 글자 그대로 ...'.something.'...이 전송됩니다.

당신은이 작업을 수행 할 수 있습니다 :

$query = "INSERT INTO comments(commentusername, commentcontent, status, debateid, city, province) VALUES ('$name','$content','0','1','$city','$province')"; 

또는이 :

$query = "INSERT INTO comments(commentusername, commentcontent, status, debateid, city, province) VALUES ('" . $name . "','" . $content . "','0','1','" . $city . "','" . $province . "')"; 

어느 쪽이든을, 당신은 당신의 mysql_query... or die(mysql_error());을 추가하여 디버깅 할 수 있습니다. 또한 전송되는 내용을 보려면 echo $query; 만 허용 할 수 있습니다.

마지막으로, 당신은 그들이 being deprecated을 그대로 mysql_ 기능 사용을 중지하고 mysqli_ 또는 준비된 문을 허용 PDO를 사용하여 SQL 주입에 방지해야한다.

+0

좋습니다. 고마워요. 나는 집에 없지만 내가 할 때 그것을 시도 할 것입니다. 나는 내 뇌를 고문 해왔다. 매우 감사. – user1860790

+0

이상한. 이것은 작동하지 않는 것 같습니다. 다른 아이디어? – user1860790

+0

오류 포수를 추가해야합니다. 그러면 오류를 포착 할 수 있도록 도와 드리겠습니다. – Kermit

관련 문제