マンガでよめる痔のこと・薬のこと

私はHTML、CSSを学んだ後、SNSサイトを作りたいと考え、PHPをやり始め、データベース(MySQL)やセッション管理などを一通り学び終えました。
レンタルサーバー(XREA)も借りて準備万端(?)といったところです。

そこで早速SNSサイトを作りたいと考えたわけですが、何かアドバイスありますか?

例えば、、、
・まず何からやり始めればいいのか(他のSNSサイトのソースを見て参考にしてからのほうがいのか等)
・セキュリティについてはどの程度学べばいいのか。学ぶとしたらどの文献を参考にしたらいいのか。
・CMSは使った方がよいか?(オススメのCMSなどがあれば教えてください)

よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (6件)

質問をざっと拝見して、頭に浮かんだことをいくつか。



・レンタルサーバーを選択する、というのは今の時代、ありえない気がします。なぜクラウドを使わないのか?という疑問ですね。万が一、人気が出てアクセスが急増したときどうするのか。クラウドならスケールアップ/ダウンがとても簡単です。

・CMSというより、SNSの設計という段階で普通はMVCフレームワークが出てくると思うのですが、そのあたりはどう考えているのでしょう。


他にもいろいろ疑問点はありますが、個人的な意見で無責任にいわせてもらうなら、「四の五のいわずにとっとと作ってしまえ」ということですね。

とりあえず、ひと通り動くもの(アクセスしてエラーが出ないレベル)を作って、友人知人でいいので使ってもらう。で、実際に使ってもらえば、「あれがダメだ」「これがダメだ」という苦情やツッコミがどんどん出てきます。それを片っ端から対処していくのです。もちろん、プログラムが暴走するようなレベルのものは公開してはいけませんが、自分で作ってひと通り動かして「大丈夫」と思ったら、とにかく他人に使ってもらうことを考えたほうがいいと思います。

セキュリティについてなどは、最初から万全なわけがありません。何か穴を見つけたらすぐに塞ぐ、をひたすら繰り返すしかありません。これは日々、ひたすら勉強あるのみです。1冊や2冊の本を読んだくらいで鉄壁のシステムなんて作れるわけがありませんし。

そうやって、公開してから半年一年とひたすらトラブルに対応し続ければ、それなりのノウハウも蓄積されていくはずです。そうなったところで一般に公開し、本格的に広めていけばいいでしょう。くれぐれも、最初から完璧に作ろうとか、作れるとか考えてはいけません。「自分が最初に作れるのは、穴だらけのひどいシステムなんだ」と割りきり、それをどんどん改良していくんです。

昔と違い、今は誰でも自分で作って公開することが可能な世の中になっているんですから。「山ほど知識があるが何も作らない」人間より、「わずかな知識でも何かを作る」人間のほうが得るものはきっと多いはずですよ。

この回答への補足

丁寧なご指摘、アドバイスありがとうございます!

>レンタルサーバーを選択する、というのは今の時代、ありえない気がします。なぜクラウドを使わないのか?という疑問ですね。万が一、人気が出てアクセスが急増したときどうするのか。クラウドならスケールアップ/ダウンがとても簡単です。

恥ずかしながらクラウドという選択肢があるのを知りませんでした。調べてみたらアクセスが多いサイトではクラウドにするべきだということはなんとなくわかりました。しかし、現段階でアクセス数が大量に増えるとは考えにくいので、アクセス数が増えるまではレンタルサーバーでも平気ですか?見たところクラウドは料金も高そうですし。

>CMSというより、SNSの設計という段階で普通はMVCフレームワークが出てくると思うのですが、そのあたりはどう考えているのでしょう。

これまた恥ずかしながらMVCフレームワークというのを知りませんでした。FuelPHPなどですよね。
調べてみましたが、簡単に実装できて便利そうですね。やはりMVCフレームワークの方が良いのでしょうか。


本当に色々アドバイスありがとうございます!
何を使って作るか決めたらバンバン作っていきたいと思います!

補足日時:2014/08/22 22:52
    • good
    • 0

>アクセス数が増えるまではレンタルサーバーでも平気ですか?見たところクラウドは料金も高そうですし。



クラウドといってもいろいろあります。Google App EngineやHeroku、OpenShiftといったサービスは、一定のアクセス枠内なら無料です。それ以上にリソースを消費するようになったらその分だけ必要な料金を払う、という感じです。探すと、無料で始められるところは意外とありますよ。

ただ、PHPをサポートするクラウドは意外と少ないのですよね……。ですので、PHPにこだわるなら、当面、レンタルサーバーというのも一つの手だと思います。ただ、私個人は、レンタルサーバーはかったるくてやってらんねーという思いが強いのでクラウド一択です。このへんは好みの問題もありますね。


>調べてみましたが、簡単に実装できて便利そうですね。やはりMVCフレームワークの方が良いのでしょうか。

どちらもピンきりですので、どちらがいいか?という問題では無いと思います。開発するサイトにはどちらが適しているか?ですね。

ただ、開発の勉強ということも兼ねて考えるなら、何かしっかりしたMVCフレームワークを一つ使って学びながら作ったほうが、後々残るものが多いように思えます。MVCフレームワークは、現在のサーバーサイド開発の一つのスタイルとして定着しています。このMVCフレームワークの考え方や設計思想などを知っているというのは、開発者として大きな武器となるはずですから。
    • good
    • 0
この回答へのお礼

色々参考になりました!

丁寧な回答ありがとうございました!

お礼日時:2014/08/23 12:26

まず、サーバーを借りるのは最後です。

まずは自分の家でサーバーを建ててそこである程度動くものを作ってからの話です。一から作るのなら3ヶ月以上はかかると思いますし。先にレンタルサーバーを借りるのは、自動車学校の入校手続きをする前に駐車場を借りる契約をするようなものです。

無料とのことなのでまぁいいかもしれませんが。で、最初はクラウドよりレンタルサーバーで正解だと思います。どのくらいの人に利用してもらえるのかわからないし、すぐにやめてしまうかもしれないのに、わざわざ割高なクラウド借りるのは賢い選択だとは思えません。アクセス数が月10万を超えたあたりから検討してもいいとは思いますけど。


>・まず何からやり始めればいいのか(他のSNSサイトのソースを見て参考にしてからのほうがいのか等)

まずは何を作るのか考える。どんな機能・どんなデザインのページを作るのか、HTMLでとりあえず作ります。ある程度力のある人ならわざわざ人のソースなど見なくとも実装できると思いますが、勉強不足なら人のソースを見て勉強してもいいと思います。


>・セキュリティについてはどの程度学べばいいのか。学ぶとしたらどの文献を参考にしたらいいのか。
 - SQLインジェクション
 - XSS:クロスサイトスクリプティング
 - CSRF
の3つが何かとその対策を学ぶだけでいいと思います。書籍など買う必要はなく、適当にWebで検索した結果を見るだけでOKです。


>・CMSは使った方がよいか?(オススメのCMSなどがあれば教えてください)

それはあなたが何をしたいのかを考えた上で決めることです。勉強のためできるだけ自分で作りたいのか、それとも勉強をする気はなく自由度は低くともできるだけ自分はコーディングせずに楽に仕上げたいのか。

勉強のためだったら自分で作ったほうがいいと思いますけど。

フレームワークを使うならCakePHPがいいのではないかと思います。メジャーで広く使われているので、そういう仕事をする際に「CakePHPは趣味で使ってました」と言えればポイント(やや)高いと思いますので。
    • good
    • 0
この回答へのお礼

参考になりました!

ありがとうございます!

お礼日時:2014/08/23 12:28

>レンタルサーバー(XREA)も借りて準備万端(?)といったところです。



うーん、一番最後でいいことを真っ先にしてしまったか…といったところです。
まあ、XREAには無料版もあったはずなので、それなら(料金の問題は発生しないので)いつでもいいと言えばいいんですが…。

※とは言え、スペースだけ借りて長期間放置状態の契約者は、無料レンタルサーバー運営者にとってみれば迷惑な存在ですがね。

まずは、レンタルサーバーを借りるのではなく、XAMPPなどを使ってローカルで作り込む必要がありますね。
最低限試験運用可能なレベルまで作ってから、レンタルサーバーを借りるべきでした。

仮にCMSを使う場合でも同様。
いきなりレンタルサーバーでテストしてはいけない。
ローカルでテストして、自分なりに「これでいける」と判断した後にレンタルサーバーに手を出すべきです。

この回答への補足

回答ありがとうございます!

現在、XREAの無料レンタルサーバーを借りています。HTMLとCSSで作った自分のホームページを作って載せているので無駄にはしていません。

また、PHPの学習の際にXAMPPで実際にプログラムしながら練習していました。
今回も使っていこうと考えています。

補足日時:2014/08/22 23:00
    • good
    • 1

まさか、流石に無料サーバや激安サーバじゃないですよね??


SNSサイトなら負荷が掛かるのでサーバ丸ごと一台借りないと無理ですよ

共用サーバで自作PHP暴走させたら賠償金支払うことになりますよ。
    • good
    • 1

自分で設計して「作る」のが目的なのか、単に「使う」のが目的なのか・・・



>CMSは使った方がよいか?(オススメのCMSなどがあれば教えてください)

使いたいだけならOpenPNEでも設置すればいいんじゃないでしょうか。



「作る」となると、「一通り学び終えました」という段階では先が長いです。

>セキュリティについてはどの程度学べばいいのか

と言う時点で、自分で作ったモノを安定運用するのは無理そうです。習得して終わりという性質のものではありません。常に留意して最新の情報に気を配っていないとダメです。当然文献なんかありません(文献に載っている内容は「最低限」だと思ってください)。既存のCMSのバージョンアップの内容なども参照してみてください。
    • good
    • 1

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QCSSでborderの長さを指定、または可変にしたい。

下記のように指定していますが、これだと横幅いっぱいに下の線が表示されてしまいます。

文字なりの長さ、または指定のピクセル数にしたいのですが、どのようにしたらよいでしょうか。

h3{
border-width : 0px 0px 1px 5px;
border-style : solid ;
border-color : #FF3333;
padding-left : 5px;
}

Aベストアンサー

borderの長さはそのボックスの大きさですから、ボックスの大きさを指定する事になります。
h3{
width:???px;
border-width : 0px 0px 1px 5px;
border-style : solid ;
border-color : #FF3333;
padding-left : 5px;
}

また、文字数(ボックスの内容)に合わせたい場合は、ボックスを浮動化(float)する等の方法もありますが・・・そのボックスの周りへ影響が出たり、ブラウザ毎にバグや実装の違いなどが比較的多く、扱いが面倒になるのであまりおすすめできません。

HTMLの方も修正する方法でもよければ

<h3><span>××○○</span></h3>
のようにspanで囲い、スタイルをspanに対して指定する方法もあります。

h3 span{
border-width : 0px 0px 1px 5px;
border-style : solid ;
border-color : #FF3333;
padding-left : 5px;
}

borderの長さはそのボックスの大きさですから、ボックスの大きさを指定する事になります。
h3{
width:???px;
border-width : 0px 0px 1px 5px;
border-style : solid ;
border-color : #FF3333;
padding-left : 5px;
}

また、文字数(ボックスの内容)に合わせたい場合は、ボックスを浮動化(float)する等の方法もありますが・・・そのボックスの周りへ影響が出たり、ブラウザ毎にバグや実装の違いなどが比較的多く、扱いが面倒になるのであまりおすすめできません。

HTMLの方も修正する方法でもよけ...続きを読む

QPHPでフォームからデータDBに書き込むサンプル

PHPで、フォームから入力されたデータをMySQLのDBへ書きこみ、次画面でHTML内に入力されたデータ表示するようなサンプルプログラム等、どこかに公開されてないでしょうか。
若しくは、ご存知の方、教えて頂ければ幸いです。

1、フォームへデータ入力
2、サブミットを押す。
3、DBへデータを書き込み。
4、HTML内にデータを表示する。

というような流れ。

Aベストアンサー

書いてみました。
MySQL環境が無く、テストしていないので分かりませんが、
タブン動くと思いますよ^^

フォーム表示 → 登録ボタンクリック → データベース登録 → データベース検索 → 検索結果のHTMLでの表示

詳しい人ツッコミお願いします!

<!-- ここからヘッダー部分です -->
<html>
<head>
<title>テストスクリプト</title>
</head>
<body>
<!-- ここまでヘッダー部分です -->

<?php

# フォームからPOSTデータが送信されていない場合の処理
# 意味は"もしregという名前のPOSTデータが無かったら?"
if(!$_POST['reg']){

# HTMLで入力フォームを表示(送信ボタンクリックでこのスクリプト自身にPOST)
print <<< html
MySQLへ登録してそれをHTMLで表示するスクリプト
<form action="$PHP_SELF" method="post">
<input type="text" name="reg">
<input type="submit" value="登録">
</form>
html;

# regと言うPOSTデータが送信されてきたら以下の処理
}else{

# データベースに接続(アドレス・ポート番号・ユーザー名・パスワードを環境に合わせて書き換える)
$dbcon = mysql_connect("MySQLサーバのアドレス:ポート番号","ユーザー名","パスワード");

# データベースを選択(データベース名を環境に合わせて書き換える)
mysql_select_db("データベース名");

# SQL文を用意(登録用)
# 意味は"$_POST['reg']というデータをテーブル名と言うテーブルに登録します"
$sql_reg = "insert into テーブル名 values('" . $_POST['reg'] . "')";

# データを登録
$result_reg = mysql_query($sql_reg);

# 登録に成功したら以下の処理
# 意味は"もし$result_regが成功したら?"
if($result_reg){

# 参照用SQL文を用意(テーブル名を環境に合わせて書き換える)
# 意味は"テーブル名というテーブルの全てのカラムを検索します"
$sql_sel = "select * from テーブル名";

# 登録したデータを参照する
$result_sel = mysql_query($sql_sel);

# 登録データの参照に成功したら以下の処理
# 意味は"もし$result_selが成功したら?"
if($result_sel){

# 参照したデータを全部表示(カラム名を環境に合わせて書き換える)
while ($item = mysql_fetch_array($result_sel)){
print $item['カラム名'] . "<BR>";
}

# データベース接続を切断
mysql_close($dbcon);

# 登録データの参照に失敗したら以下の処理
}else{

# エラーメッセージを表示
print "データの参照に失敗しました。";

# データベース接続を切断
mysql_close($dbcon);

}

# 登録に失敗したら以下の処理
}else{

# エラーメッセージを表示
print "登録に失敗しました";

# データベース接続を切断
mysql_close($dbcon);

}

}

?>

<!-- ここからフッター部分です -->
</body>
</html>
<!-- ここまでフッター部分です -->

参考URL:http://lcl.web5.jp/prog/phpdb.html

書いてみました。
MySQL環境が無く、テストしていないので分かりませんが、
タブン動くと思いますよ^^

フォーム表示 → 登録ボタンクリック → データベース登録 → データベース検索 → 検索結果のHTMLでの表示

詳しい人ツッコミお願いします!

<!-- ここからヘッダー部分です -->
<html>
<head>
<title>テストスクリプト</title>
</head>
<body>
<!-- ここまでヘッダー部分です -->

<?php

# フォームからPOSTデータが送信されていない場合の処理
# 意味は"もしregという名前のPOS...続きを読む

Qsyntax error, unexpected '}' というエラーの対処法

PHPを習い始めて三日目になるのですがParse error: syntax error, unexpected '}' in C:\Program Files\Apache Group\Apache2\htdocs\****\****\game.php on line 33
というエラーがでるのですが33行目前後のどこをなおせばいいのでしょうか?
・game.php
<html>
<head>
<title>数当てゲーム</title>
</head>
<body>
<h1 style="background:#cccccc">数当てゲーム</h1>
<form method="POST" action="game.php">
1~100までの数を入力してください
<input type="text" name="answer" size="5" maxlength="3" />
<input type="sbumit" value=回答" />
</form>
<hr />
<?php
session_start();
if(is_null($_SESSION['answer'])){
mt_stand(microtime()*1000000);
$_SESSION['answer']=mt_rand(1,100);
$_SESSION['game_cnt']=0;
}
if($_POST['answer']!=""){
$_SESSION['game_cnt']++;
if($_session['answer']==$_POST['answer']){
print("おめでとうございます".
$_SESSION['game_cnt']."回で正解しました!");
session_destroy();
}else{
if($_SESSION['answer']>$_POST['answer']){
print("もう少し大きいです。");
}else
print("もう少し小さいです。");
}
}
}
?>
</body>
</html>
それとこの間違えたところをなおしたあとはいつもコンピュータを再起動しないと修正したところが適用されないのですがほかに方法はないですか?基本的な質問ですいません。

PHPを習い始めて三日目になるのですがParse error: syntax error, unexpected '}' in C:\Program Files\Apache Group\Apache2\htdocs\****\****\game.php on line 33
というエラーがでるのですが33行目前後のどこをなおせばいいのでしょうか?
・game.php
<html>
<head>
<title>数当てゲーム</title>
</head>
<body>
<h1 style="background:#cccccc">数当てゲーム</h1>
<form method="POST" action="game.php">
1~100までの数を入力してください
<input type="text" name="answer" size="5" max...続きを読む

Aベストアンサー

print("もう少し大きいです。");
}else
print("もう少し小さいです。");
のelseの後に{がないようですが、大丈夫でしょうか?

Q別ファイルの変数を呼び出したいのですが?

初めて質問させて頂くPHP初心者の者です。
例えば、
(a.php)というファイル内で導き出された変数の値($a)を、(b.php)というファイル内に呼び出したいのですが、関数等を利用して呼び出す事は出来るでしょうか?

-----a.php-------------------------
<?php
$a=xxxx; //導き出された変数$a(の値)
?>
-----------------------------------
-----b.php-------------------------
<?php
$a=△△△△; //このファイル内で変数$a(の値)を呼び出したい
?>
------------------------------------

よろしくお願い致します

Aベストアンサー

質問があいまいなので回答が微妙です。

たんにa.phpを再利用する場合、a.phpをincludeやrequire
する#1さんの回答が妥当です。
a.phpの中でprintやechoをしているのが気に入らないなら
出力をバッファリングして捨ててしまえばよいでしょう。

//a.php
<?PHP
print "a_html";
$a_value="a_value";
?>

//b.php
<?PHP
ob_start();
include("a.php");
ob_clean();
print $a_value;
?>

関数の再利用を前提とするならインクルードするわけ
ですからclass化して標準出力をしないのが普通だと
思いますが・・・・

また、別の観点でa.phpからリンクされるb.phpに
移動する際に値を持って移りたいというなら、
単純にpostやgetというformのデータでわたすか、
クッキーやセッションを使うことになります。

QPHP ボタンが押されたら処理を実行する

PHPプログラミングをしています。
「はい」というボタンが押されたらこの処理を行い、
「いいえ」というボタンが押されたらこの処理を行う
ということはどうすれば実装できるのでしょうか?

Aベストアンサー

どういう環境下で作っておられるのかが全然わかりませんが、
PHPというこですので、Webベースのフォームですよね。

たとえば、「はい」ボタンと「いいえ」ボタンをそれぞれフォームのSubmitにしておいて、
POST先のフォームで処理を分ければどうでしょうか。

送信元
<form name="Hai" method="POST" action="hoge.php">
<input type="hidden" name="answer" value="1">
<input type="submit" value="はい">
</form>

<form name="Hai" method="POST" action="hoge.php">
<input type="hidden" name="answer" value="0">
<input type="submit" value="いいえ">
</form>


送信先
$answer = $_POST["answer"];

if($answer == 1){
// 「はい」の時の処理
}else{
// 「いいえ」の時の処理
}


ちなみに、自分から自分へPOSTすればPHPスクリプトも2つに分けずにできると思います。
また、POSTじゃなくGETでも同様のことはできると思います。

どういう環境下で作っておられるのかが全然わかりませんが、
PHPというこですので、Webベースのフォームですよね。

たとえば、「はい」ボタンと「いいえ」ボタンをそれぞれフォームのSubmitにしておいて、
POST先のフォームで処理を分ければどうでしょうか。

送信元
<form name="Hai" method="POST" action="hoge.php">
<input type="hidden" name="answer" value="1">
<input type="submit" value="はい">
</form>

<form name="Hai" method="POST" action="hoge.php">
<input type="hidden" name="answer" ...続きを読む


人気Q&Aランキング