2014-12-04 98 views
0

我想在使用標題功能點擊提交按鈕後重定向。它沒有工作,所以我試着在頂部ob_start,然後在底部ob_clean。但是當我這樣做時,它會自動將我推到我想要重定向到的頁面。下面的代碼任何幫助將不勝感激。我想在點擊提交按鈕後重定向到我的管理頁面

<?php 
ob_start(); 
// Create connection 
require_once "../includes/db_conn.php"; 

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 


# Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} else { 
    echo 'connected'; 
     } 

if (isset($_POST['submit'])) { 
$title = $_POST['title']; 
$content = $_POST['content']; 
$image = $_POST['image']; 

} 


$sql = "INSERT INTO article (`title`, `content`, `image`) VALUES ('$title', '$content','$image');"; 

$result = $conn->query($sql); 

$conn->close(); 

echo <<<END_OF_FORM 
<form method='post' action='article_new.php'> 

Title: 
<input type='text' value='$title' name='title'><br> 

Content: 
<input type='text' value='$content' name='content'><br> 

Image: 
<input type='text' value='$image' name='image'><br> 


<input type='submit' value='new article' name='submit'> 
</form> 
END_OF_FORM; 
ob_clean(); 
header('location: admin.php') 
?> 
<a href="admin.php">Admin</a>  

回答

0

您應該在提交時處理用戶輸入。所以把它們放在isset($_POST['submit'])區塊內。如果你想在插入完成後重定向,那麼在你的進程裏面,然後在最後重定向。而且您應該使用準備好的語句,因爲您傾向於使用SQL注入。

在進行任何標題重定向之前,您不應該顯示輸出。

<?php 

require_once "../includes/db_conn.php"; 

if(isset($_POST['submit'])) { 

    $title = $_POST['title']; 
    $content = $_POST['content']; 
    $image = $_POST['image']; 

    // Create connection 
    $conn = new mysqli($servername, $username, $password, $dbname); 
    # Check connection 
    if ($conn->connect_error) { 
     die("Connection failed: " . $conn->connect_error); 
    } 

    $sql = "INSERT INTO article (`title`, `content`, `image`) VALUES (?, ?, ?)"; 

    $insert = $conn->prepare($sql); 
    $insert->bind_param('sss', $title, $content, $image); 
    $insert->execute(); 

    header('Location: admin.php'); 
    exit; 
} 

?> 

<form method='post' action='article_new.php'> 
    <label>Title: </label> 
    <input type='text' name='title'><br> 

    <label>Content: </label> 
    <input type='text' name='content'><br> 

    <label>Image: </label> 
    <input type='text' name='image'><br> 

    <input type='submit' value='new article' name='submit'> 
</form> 
+0

我真的很新編程和跟隨。感謝您的反饋。人們在這裏投下任何東西。根據堆棧指南,這不是一個有效的問題嗎? – 2014-12-04 03:51:37

+0

@EdBanes我不知道那些倒下的人,它可能是無數的事情,很可能是因爲這個問題的標題。 – Ghost 2014-12-04 03:54:17

+0

感謝@Ghost這工作。我讀過的所有書籍中,我從來沒有在SQL的VALUES部分看到過問號。這是做這件事的專業方式,而不是有變數? – 2014-12-04 04:07:54

0

爲什麼SQL和if(isset($_POST['submit']))境外重定向?嘗試這樣的:

if (isset($_POST['submit'])) { 
    $title = $_POST['title']; 
    $content = $_POST['content']; 
    $image = $_POST['image']; 
    $sql = "INSERT INTO article (`title`, `content`, `image`) VALUES ('$title','$content','$image');"; 

    $result = $conn->query($sql);  
    $conn->close();  
    header('location: admin.php'); 
} 

echo <<<END_OF_FORM 
<form method='post' action='article_new.php'> 

Title: 
<input type='text' value='$title' name='title'><br> 

Content: 
<input type='text' value='$content' name='content'><br> 

Image: 
<input type='text' value='$image' name='image'><br> 


<input type='submit' value='new article' name='submit'> 
</form> 
END_OF_FORM; 
ob_clean(); 
?> 
<a href="admin.php">Admin</a> 

有了這個邏輯,你的網頁將在表單提交後,數據插入數據庫後重定向。

+0

我跟着一個教程,我是編程新手。按照您擁有的方式嘗試,屏幕空白接受管理員鏈接。他們是沒有連接到數據庫 – 2014-12-04 03:54:27

相關問題