2013年1月4日金曜日

開発環境

『初めてのPHP5』 (David Sklar 著、 桑村 潤 翻訳、 廣川 類 翻訳、 オライリー・ジャパン、2005年、ISBN978-4-87311-257-2)の11章(XMLのパースと生成)11.4(演習問題)2を解いてみる。

2.

HTML、PHPのソースコード(BBEdit)

sample110.php

<?php
  require 'formhelpers.php';
  if(array_key_exists('_submit_check', $_POST)){
    if($errors=validate_form()){
      show_form($errors);
    } else {
      process_form();
    }
  } else {
    show_form();
  }
  function show_form($errors=''){
    if($errors){
      print 'エラー<ul><li>';
      print implode('</li><li>', $errors);
      print '</li></ul>';
    }
    $defaults = array();
    if(array_key_exists('_submit_check', $_POST)){
      $defaults = $_POST;
    }
    print '<form method="POST" action="' . $_SERVER['PHP_SELF'] . '" >';
    print 'RSSアイテムを入力';
    print '<br />タイトル: ';
    input_text('feed_title', $_POST);
    print '<br />リンク: ';
    input_text('feed_link', $_POST);
    print '<br />説明文<br />';
    input_textarea('feed_description', $_POST);
    print '<br />';
    input_submit('submit', 'submit');
    print '<input type="hidden" name="_submit_check" value="1" />';
    print '</form>';
  }
  function validate_form(){
    $errors = array();
    if(!strlen(trim($_POST['feed_title']))){
      $errors[] = "タイトルを入力してください";
    }
    if(!strlen(trim($_POST['feed_link']))){
      $errors[] = "リンクを入力してください";
    } elseif(substr(trim($_POST['feed_link']), 0, 7) != 'http://' &&
      substr(trim($_POST['feed_link']), 0, 8) != 'https://') {
      $errors[] = 'リンクが「http://」または「https://」で始まっているかを確認してください';
      $errors[] = substr(trim($_POST['feed_link']), 0, 8);
    }
    if(!strlen(trim($_POST['feed_description']))){
      $errors[] = "説明文を入力してください";
    }
    return $errors;
  }
  function process_form(){
    header('Content-Type: text/xml');
    print <<<_XML_
<rss version="0.91">
  <channel>
    <title>Kamimura's blog</title>
    <link>http://sitekamimura.blogspot.com/</link>
    <description>
      C, C++, C#, F#, JavaScript, Perl, Python, Ruby, PHP, SQL, R, Haske
    </description>
_XML_;
    print '<item>';
    print '<title>' . htmlentities($_POST['feed_title']) . '</title>';
    print '<link>' . htmlentities($_POST['feed_link']) . '</link>';
    print '<description>' . htmlentities($_POST['feed_description']) . '</description>';
    print '</item>';
    print '</channel></rss>';
  }
?>

ちなみにJavaScriptの場合。(といっても値を取得して出力してるだけ。)

コード(BBEdit)

var title = $('#feed_title').val();
var link = $('#feed_link').val();
var description = $('#feed_description').val();
var result = "<head>\n" +
  '<meta http-equiv="Content-Type" content="text/xml; charset=utf-8" />\n' +
  '</head>\n' + 
  '<rss version="0.91">\n<channel>\n' +
  '<title>Kamimura\'s blog</title>\n' +
  '<link>http://sitekamimura.blogspot.com/</link>\n' +
  '<description>C, C++, C#, F#, JavaScript, Perl, Python, Ruby, PHP, SQL, R, Haske</description>\n' +
  '<item>\n' +
  '<title>' + title + '</title>\n' +
  '<link>' + link + '</link>\n' +
  '<description>' + description + '</description>\n' +
  '</item>\n</channel>\n</rss>';
$('#pre0').text(result);


RSSアイテムを入力
タイトル:
リンク:
説明文

0 コメント:

コメントを投稿