質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

1006閲覧

Microblogの投稿機能の作成

amaturePy

総合スコア131

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2019/05/26 07:23

編集2019/05/26 08:17

仮twitterのようなアプリで投稿機能を作成しております。
その中で、私のコードだと1(多分セッション)という数字の表示しかされません。
入力フォームの表示とそれをデータベースに保存したいです。
また、私のコードの中で改善した方が良い所などもご指摘頂けると幸いです。
現状ではadd_posts関数で記事の投稿、show_posts関数で投稿した記事を配列で表示きるように作成中です。
課題になるのでセキュリティなどは二の次で製作しております。
大変見にくいかもしれませんが、よろしくお願いします。
<posts table>
id
int(11) AI PK
retweet_user_id
int(11)
content
varchar(255)
picture
varchar(255)
datetime_posted
timestamp
datetime_edited
datetime
deleted
datetime
created
datetime
modified
datetime

session_start(); function add_post($picture,$content,$created){ $sql = "insert into posts (picture,content,created) values ($picture, '". mysql_real_escape_string($content). "',now())"; $result = mysql_query($sql); } $_SESSION['id'] = 1; if(isset($_SESSION['id'])){ echo "<b>". $_SESSION['id']."</b>"; unset($_SESSION['id']); } add_post($picture,$content); $_SESSION['id'] = "Your post has been added!"; header("Location:.php"); function show_posts($id){ $posts = array(); $sql = "select content , created ,picture from posts where id = '$userid' order by created desc"; $result = mysql_query($sql); while($data = mysql_fetch_object($result)){$posts[] = array('created' => $data->stamp, 'userid' => $userid, 'content' => $data->body); } return $posts; } ?> <!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title>Posts</title> </head> <body> <form method='POST' action='posts.php'> <p>Your status:</p> <textarea name='content' rows='5' cols='40' wrap=VIRTUAL></textarea> <p>Image</p> <input type="file" name="picture"> <p><input type='submit' value='submit'/></p> </form> </body> </html> コード

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/05/26 07:34 編集

Twitterを真似て作っているのだとすると、下手にTwitterの名称を持ち出すと混乱が生じますから、Twitterを真似したSNSを作っていて、今何の機能を作っているとわかりやすく丁寧に説明いただきたい。
退会済みユーザー

退会済みユーザー

2019/05/26 07:37 編集

セキュリティ的配慮を後付けするのは面倒なのでやるんだったらちゃんと考え抜いて一番良いやり方を学ぶのがよろしいかと。
amaturePy

2019/05/26 07:53

承知しました。 名称を変更いたします。 また、今回はとりあえず機能だけ動けば良いという物になるので、時間もないため、この設計でやらせて頂ければと思います。
m.ts10806

2019/05/26 14:07

設計ではなく実装の話ですが、PHP7以降の環境であれば削除されているmysql系関数の機能を利用されているので最低でもそこは変更しないといけません。
guest

回答1

0

ベストアンサー

$_SESSION['id'] = 1;
$_SESSION['id'] = "Your post has been added!";
これ、どういう目的で使っているのか一旦整理したほうが良いかと。

1(多分セッション)という数字の表示しかされません

ということなので、
$_SESSION['id'] = "Your post has been added!";
は実行されていないのではないかな。

function add_post($picture,$content,$created)と宣言しておきながら
add_post($picture,$content);という呼び出しなのも少し気になる。
デフォルト引数値 に則った記述にするべき。
案外実行時エラーが発生していていないかな。

--

以後、老婆心ついで。

function add_post($picture,$content,$created)や
function show_posts($id)がてきとーな位置にあって
すごくわかりづらい。
外出ししてrequireする予定なのかそれとも。

mysql_real_escape_string
mysql_query
mysql_fetch_object
など古い書籍でも参考にしたのでしょうか、
せめて
mysql_real_escape_string → mysqli_real_escape_string
mysql_query → mysqli_query
mysql_fetch_object → mysqli_fetch_object
にするべきです。
PHP: どの API を使うか - Manual にて
PHP 5.xでは非推奨、PHP 7.xでは削除
つまり新規開発には使うなということです。
PHPでデータベースに接続するときのまとめ - Qiita など参照の上PDO経由で接続するように改めるのがよろしいかと。

投稿2019/05/27 02:02

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

amaturePy

2019/05/27 02:41

大変分かりにくいコードで申し訳ありませんでした! PHPのバージョンにあっているコードを選ぶように気をつけないといけないですね。 再度、整理して見ます。
退会済みユーザー

退会済みユーザー

2019/05/27 02:46

apacheのerror_logを点検するのも忘れずに。
amaturePy

2019/05/27 02:49

承知しました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問