当面の質問:
サイトにログインしているユーザーが自分のプロファイル設定/情報を編集/更新できるようにする php コードを作成するにはどうすればよいですか?
ユーザーがパスワードを変更できるように正しく機能する部分が1つありますが、ログインしているユーザーが次のような他の設定を編集/更新できるようにする場合、どこから始めればよいかわかりません。
(1)愛称、 (2)国、 (3)生年月日、 (4)性別、 (5)座右の銘、 (6)略歴
以下に、パスワードの変更に使用できる php および html コードを提供しますが、ユーザーが他の情報を変更/編集/更新できるようにするには、さらに多くのコードが必要であることはわかっています。以下を参考に他の情報のphpコードを作ってみたのですが、うまくいかず、どこから手をつけていいのかわかりません!どんな助けでも大歓迎です...
PHP 参照コード:
if($_POST['submit']=='Change')
{
$err = array();
if(!$_POST['password1'] || !$_POST['passwordnew1'])
$err[] = 'All the fields must be filled in!';
if(!count($err))
{
$_POST['password1'] = mysql_real_escape_string($_POST['password1']);
$_POST['passwordnew1'] = mysql_real_escape_string($_POST['passwordnew1']);
$row = mysql_fetch_assoc(mysql_query("SELECT id,username FROM members WHERE username='{$_SESSION['username']}' AND pass='".md5($_POST['password1'])."'"));
if($row['username'])
{
$querynewpass = "UPDATE members SET pass='".md5($_POST['passwordnew1'])."' WHERE username='{$_SESSION['username']}'";
$result = mysql_query($querynewpass) or die(mysql_error());
$_SESSION['msg']['passwordchange-success']='* You have successfully changed your password!';
}
else $err[]='Wrong password to start with!';
}
if($err)
$_SESSION['msg']['passwordchange-err'] = implode('<br />',$err);
header("Location: members.php?id=" . $_SESSION['username']);
exit;
}
HTML 参照コード:
<form action="" method="post">
<label class="grey" for="password1">Current Password:</label>
<input class="field" type="password" name="password1" id="password1" value="" size="23" />
<label class="grey" for="password">New Password:</label>
<input class="field" type="password" name="passwordnew1" id="passwordnew1" size="23" />
<input type="submit" name="submit" value="Change" class="bt_register" style="margin-left: 382px;" />
<div class="clear"></div>
<?php
if($_SESSION['msg']['passwordchange-err'])
{
echo '<div class="err">'.$_SESSION['msg']['passwordchange-err'].'</div>';
unset($_SESSION['msg']['passwordchange-err']);
}
if($_SESSION['msg']['passwordchange-success'])
{
echo '<div class="success">'.$_SESSION['msg']['passwordchange-success'].'</div>';
unset($_SESSION['msg']['passwordchange-success']);
}
?>
</form>
では、ユーザーが上記で提供した数値リスト (1-6) から自分のプロファイル設定/情報を編集/更新できるようにするには、この作業を行うための php コードをどのように作成すればよいでしょうか?
そして、mysqli/pdo を使用する方がより良い代替手段であることはわかっていますが、残念ながら、現時点では、このプロジェクトには古い非推奨の mysql_* を使用する必要があります...
さらに情報が必要な場合は、お知らせください ;)
編集:追加の質問、
次のような各列の変数も作成する必要があると思います。
$nickname = $_POST['ニックネーム'];
$country = $_POST['国'];
など...それは正しくありませんか?
再編集:
このようなものは適用されますか?
$id = $_SESSION['id'];
if ($_POST['country']) {
$country = $_POST['country'];
$nickname = $_POST['nickname'];
$DOB = $_POST['DOB'];
$gender = $_POST['gender'];
$motto = $_POST['motto'];
$bio = $_POST['bio'];
$sql = mysql_query("UPDATE members SET country='$country', nickname='$nickname', DOB='$DOB', gender='$gender', motto='$motto', bio='$bio' WHERE id='$id'");
exit;
}
$sql = mysql_query("SELECT * FROM members WHERE id='$id' LIMIT 1");
while($row = mysql_fetch_array($sql)){
$country = $row["country"];
$nickname = $row["nickname"];
$DOB = $row["DOB"];
$gender = $row["gender"];
$motto = $row["motto"];
$bio = $row["bio"];
}
それとも私はベースから離れていますか?