2013-12-15 3 views
0

Я работаю над небольшим количеством кода для создания некоторых случайных URL-адресов для страниц на моем сайте. Мое намерение состоит в том, чтобы человек перенаправлялся на страницу, которую они только что создали после ее создания, но вместо этого перенаправляется на «switch», php-код, который работает, чтобы определить, какая функция должна срабатывать на основе того, какой радиокнопка нажата. Вот моя страница, которая позволяет им «загружать» на мой сайт:Почему не файл_put_contents создает страницу?

<html> 
<head> 
<link rel="stylesheet" type="text/css" href="/style.css"> 
    <title> 
    Learning Made Easy 
    </title> 
</head> 
<body> 

    <?php include_once 'googleanalytics.php'; ?> 

<a href="http://terrythetutor.com"> 
    <div class="banner"> </div> 
</a> 

<?php include 'menu.php'; ?> 

<div class="content"> 
</br> 
</br> 
</br> 
    <form action="../scripts/switch.php" method="post"> 
    Title: 
    </br><input type="text" name="Title"> 
</br> 
</br> 
</br> 
    Summary of the video (including questions used in the video): 
    </br><textarea name="Summary" COLS=60 ROWS=10></textarea> 
</br> 
</br> 
</br> 
    URL of the video (Yes, this means you need to upload it to an external website.): 
    </br><input type="text" name="URL"> 
    </br> 
    </br> 
    Which course does your video pertain to?</br> 
    <input type="radio" name="course" value="intermediate"> Intermediate and below</br> 
    <input type="radio" name="course" value="college"> College Algebra</br> 
    <input type="radio" name="course" value="precalculus"> PreCalculus</br> 
    <input type="radio" name="course" value="trigonometry"> Trigonometry</br> 
    <input type="radio" name="course" value="calculus I"> Calculus I</br> 
    <input type="radio" name="course" value="calculus II"> Calculus II</br> 
    <input type="radio" name="course" value="calculus III"> Calculus III</br> 
    <input type="radio" name="course" value="differential equations"> Differential Equations</br> 
    </br> 
    </br> 
    <input type="submit" value="Submit, foo!"> 
    </form> 
</br> 
</br> 
</br> 
<p> 
Please understand that you will not be able to change the title, summary, or URL of your video after submission. 
</p> 


</div> 

<div class="footer"> 
    <?php include 'footer.php'; ?> 
</div> 


</body> 

</html> 

Этот бит работает красиво. После этого они перенаправляются на «switch.php». Вы уже знаете, что это делает.

<?php 
    if (isset($_POST['course']) && $_POST['course'] == 'intermediate') { 
     include('storeintermediate.php'); 
    } elseif (isset($_POST['course']) && $_POST['course'] == 'college') { 
     include('step2a.php'); 
    } elseif (isset($_POST['course']) && $_POST['course'] == 'precalculus') { 
     include('replace.php'); 
    } elseif (isset($_POST['course']) && $_POST['course'] == 'trigonometry') { 
     include('replace.php'); 
    } elseif (isset($_POST['course']) && $_POST['course'] == 'calculus I') { 
     include('replace.php'); 
    } elseif (isset($_POST['course']) && $_POST['course'] == 'calculus II') { 
     include('replace.php'); 
    } elseif (isset($_POST['course']) && $_POST['course'] == 'calculus III') { 
     include('replace.php'); 
    } elseif (isset($_POST['course']) && $_POST['course'] == 'differential equations') { 
     include('replace.php'); 
     } 
?> 

Оттуда мы идем к storeintermediate.php, где у меня есть функциональность захвата всех переменных, хранить их в базе данных, создавая новую случайно сгенерированную страницу с форматом шаблона, и извлечь URL видео, которое они загружают.

<?php 
// Create connection 
$con = mysqli_connect("*******","******","************","*"); 
$IP = $_SERVER['REMOTE_ADDR']; 
$IP = mysqli_real_escape_string($con, $IP); 
$Title = mysqli_real_escape_string($con, $_POST[Title]); 
$Summary = mysqli_real_escape_string($con, $_POST[Summary]); 
$URL = mysqli_real_escape_string($con, $_POST[URL]); 


$number = mt_rand(100,99999999); // see $new_url 

$nospace = str_replace(' ', '_', $Title); // to enable URL friendly titles 

$new_url = $number . $nospace ; // to ensure that each URL is unique 

$data = include('../template.php'); 

$embed_URL = substr($URL, -11); 

file_put_contents("../videos/" . $new_url, $data, FILE_APPEND) ; 


// Check connection 
if (mysqli_connect_errno($con)) 
    { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

    $sql="INSERT INTO `Intermediate Algebra` (Title, URL, IP, Summary) 
VALUES 
('$Title','$URL','$IP','$Summary')"; 

if (!mysqli_query($con,$sql)) 
    { 
    die('Error: ' . mysqli_error($con)); 
    } 

header('Location: http://terrythetutor.com/'.$new_url); 

?> 

Теперь мои вопросы: при отправке тестовой страницы создается страница. Но размер 1 байт, и единственное, что в файле - «1». Я не могу понять, почему.

Во-вторых, страница, на которую перенаправляется (что также по какой-либо причине содержит переданный контент) IS switch.php, но это действительно должна быть страница создана.

В-третьих (и, вероятно, связано со вторым), я продолжаю иметь ошибку с моим заголовком, когда пытаюсь перенаправить на вновь созданную страницу.

Любая помощь была бы принята с благодарностью. Спасибо вам большое,

Terry.

+3

Вместо создания нового файла каждый раз используйте фреймворк (который будет обрабатывать маршрутизацию и разные URL-адреса страниц без создания дополнительных файлов) или используйте базовый 'page.php', который отобразит содержимое на основе параметра URL (так что ваш URL будет выглядеть как 'page.php? page = some_page_id'). –

+1

Собирался написать именно то, что сказал Андре. Вы не создаете страницы таким образом, вы храните данные в базе данных и загружаете данные, соответствующие целевому URL (с использованием шаблона). Кроме того, в коде, который вы опубликовали, довольно много ошибок (например, URL-адрес, фрагмент, смешение), поэтому я серьезно рекомендую вам изучить одну из существующих фреймворков (например, [Symfony 2] (http: // symfony .com /)). – nietonfir

+0

@nietonfir Что не так с кодом? Что такое дружественный URL-адрес и «смешение проблем»? – user2666324

ответ

3

Возвращаемое значение include("../template.php") - это не то, что вы думаете. include не возвращает то, что включенный файл выходы, он возвращает то, что включенный файл возвращает, или 1, если файл не содержит оператор return в области файлов.

+0

Но тогда почему информация отображается на странице 'switch.php'? – user2666324

+0

Каким образом можно как-то (из-за отсутствия лучшего слова) «включить» шаблон в каждую новую страницу? – user2666324

+0

Каким образом можно как-то (из-за отсутствия лучшего слова) включить «шаблон» в каждую новую страницу? – user2666324

Смежные вопросы