1
votes

My html file:

<html>
<head><title>RSS Form</title></head>
<body>

<form method='post' action='write.php'>
<img src='logo.png' align='left' />
<font size='6'>RSS Feed</font><br>
The feed that just keeps on giving...<br>

<p>Title:<br>
<input type='text' name='title' size='84' /><br></p>

<p>Article Body:<br>
<textarea rows='20' cols='100' wrap='physical' name='desc'></textarea><br></p>

<input type='submit' value='Post RSS' name='submit'> &nbsp; (Be sure to review the article before pressing this button -- <b>there's no going back</b>)</form><br>

</body>
</html>

and Write.php

<html><body>
<?php
$file_name = 'rss.xml';

if !(file_exists($file_name)) {
    initialize_xml($file_name);
}

$rss = fopen($file_name, 'w+') or die('can\'t open file');
remove_tags($rss);
write_content($rss);
close_tags($rss);
finish();

function initialize_xml($name) {
    $rss = fopen($name, 'w') or die('can\'t open file');

    fwrite($rss, "<?xml version=\"1.0\" ?>\n");
    fwrite($rss, "<rss version=\"2.0\">\n");
    fwrite($rss, "<channel>\n");
    fwrite($rss, "<title>---</title>\n");
    fwrite($rss, "<description>This feed will keep users up to date on IT issues that may arise</description>\n");
    fwrite($rss, "<link>---</link>\n");
    fwrite($rss, "<managingEditor>---</managingEditor>\n");
    fwrite($rss, "<webMaster>---</webMaster>\n\n");

    close_tags($rss);
    fclose($rss);
}

function write_content($rss) {
    fwrite($rss, '<item>\n');
    fwrite($rss, '<title>');
    fwrite($rss, $_POST['title']);
    fwrite($rss, '</title>\n');

    fwrite($rss, '<description>');
    fwrite($rss, $_POST['desc']);
    fwrite($rss, '</description>\n');

    fwrite($rss, '<date>');
    $today = getdate();
    $timestamp_format = $today[weekday] + ' ' + $today[month] + ' ' + $today[mday] + ' ' + $today[hours] + ' ' + $today[minutes] + ' ' + $today[seconds];
    fwrite($rss, $timestamp_format);
    fwrite($rss, '</date>');
}

function close_tags($rss) {
    fwrite($rss, '</channel>\n');
    fwrite($rss, '</rss>\n');
    fwrite($rss, '</xml>\n');
}

function remove_tags($rss) {
    // go to end of file
    // remove last 3 lines
}

function finish() {
    echo 'The article '; 
    echo $_POST['title']; 
    echo ' has been added to the feed.\n';
    echo '<a href="index.html">Go Back</a>';
}
?>
</body></html>

This is my first contact with PHP so I'm quite confused. When I go to the html page and "submit" my form, I get redirected to:

HTTP Error 500 (Internal Server Error): An unexpected condition was encountered while the server was attempting to fulfil the request.

Thanks for your help

2
write.php and Write.php are not the same file - user557846
All your code with \n in it that uses apostrophes (') won't work. It has to be within double quotes ("). - stealthyninja
$today[weekday], $today[month], etc., should be $today['weekday'], $today['month'], etc. - stealthyninja
@Dagon - that's a typo in my question. the file is called write.php. - n0pe
@stealthyninja - thanks I'll try all that right now - n0pe

2 Answers

3
votes

Check the server's error log. There should be more details about what's causing the 500 error. The error message you posted is the "friendly" public error message which by design says very little.

Try running a very basic <?php echo 'hello world' ?> as well. If that blows up, then there's some wrong with your PHP installation which is causing the webserver to blow up when PHP is invoked.

1
votes

Some updates to your PHP code:

<html><body>
<?php
$file_name = 'rss.xml';

if (!file_exists($file_name)) {
    initialize_xml($file_name);
}

$rss = fopen($file_name, 'w+') or die('can\'t open file');
remove_tags($rss);
write_content($rss);
close_tags($rss);
finish();

function initialize_xml($name) {
    $rss = fopen($name, 'w') or die('can\'t open file');

    fwrite($rss, "<?xml version=\"1.0\" ?>\n");
    fwrite($rss, "<rss version=\"2.0\">\n");
    fwrite($rss, "<channel>\n");
    fwrite($rss, "<title>---</title>\n");
    fwrite($rss, "<description>This feed will keep users up to date on IT issues that may arise</description>\n");
    fwrite($rss, "<link>---</link>\n");
    fwrite($rss, "<managingEditor>---</managingEditor>\n");
    fwrite($rss, "<webMaster>---</webMaster>\n\n");

    close_tags($rss);
    fclose($rss);
}

function write_content($rss) {
    fwrite($rss, "<item>\n");
    fwrite($rss, '<title>');
    fwrite($rss, $_POST['title']);
    fwrite($rss, "</title>\n");

    fwrite($rss, '<description>');
    fwrite($rss, $_POST['desc']);
    fwrite($rss, '</description>\n');

    fwrite($rss, '<date>');
    $today = getdate();
    $timestamp_format = $today['weekday'] . ' ' . $today['month'] . ' ' . $today['mday'] . ' ' . $today['hours'] . ' ' . $today['minutes'] . ' ' . $today['seconds'];
    fwrite($rss, $timestamp_format);
    fwrite($rss, '</date>');
}

function close_tags($rss) {
    fwrite($rss, "</channel>\n");
    fwrite($rss, "</rss>\n");
    fwrite($rss, "</xml>\n");
}

function remove_tags($rss) {
    // go to end of file
    // remove last 3 lines
}

function finish() {
    echo 'The article '; 
    echo $_POST['title']; 
    echo " has been added to the feed.\n";
    echo '<a href="index.html">Go Back</a>';
}
?>
</body></html>