ユーザには1,附番ID,2,ユーザーID、3,ユーザの名前、4,パスワードが割り振られています。
附番はユーザが変えられないIDです
ユーザIDはほかのユーザーが使用していたら同じものを使用できないという条件です。
ですが下のコードで編集をしたら 他のユーザと一緒なIDでも編集できてしまうことが問題です。
ループ処理が続いているのが原因なのでしょうか?
またどうやってループを抜ければよろしいでしょうか?
php
1<?php 2$e = ""; 3$t = ""; 4session_start(); 5if (!isset($_SESSION['id'])) { 6 header('Location: login.php'); //ログインしていなければログインページへリダイレクト 7 exit; 8} 9// print_r($_SESSION['id']); 10// print_r($_SESSION['name']); 11$user = fopen("csv/user.csv", "r"); 12$value = array(); 13$userid = ""; 14$name = ""; 15$password = ""; 16while ($line = fgets($user)) { 17 $users = explode(",", $line); 18 if ($_SESSION['id'] == $users[0]) { 19 $userid = trim($users[1]); 20 $name = trim($users[2]); 21 $password = trim($users[3]); 22 } 23} 24print_r($userid); 25// print_r($name); 26// print_r($password); 27// fclose($user); 28if (!empty($_POST['userid2']) && !empty($_POST['name2']) && !empty($_POST['password2'])) { 29 $id = $_SESSION['id']; 30 $userid = $_POST['userid2']; 31 $name = $_POST['name2']; 32 $password = $_POST['password2']; 33 // var_dump($id); 34 // var_dump($userid); 35 // var_dump($name); 36 // var_dump($password); 37 // print_r($_POST); 38 $user = fopen("csv/user.csv", "r"); 39 $value = array(); 40 while ($line = fgets($user)) { 41 $lines = explode(",", $line); 42 if ($lines[0] != $id && trim($lines[1]) == $userid) { 43 44 print_r($lines[0]); 45 $e = "IDがすでに使われています"; 46 // break; 47 } 48 if ($lines[0] != $id && trim($line[1]) != $userid) { 49 $value[] = $line; 50 // print_r($lines[0]); 51 } 52 53 if ($lines[0] == $id) { 54 // print_r($lines); 55 // print_r($value); 56 $textcontent = implode(",", array($id, $userid, $name, $password . "\n")); 57 // $textcontent =$id.",". $userid.",".$name.",".$password."/n"; 58 // $n = nl2br('/n'); 59 $value[] = $textcontent; 60 } 61 } 62 fclose($user); 63 print_r($value); 64 65 $handle = fopen("csv/user.csv", "w"); 66 67 foreach ($value as $val) { 68 fwrite($handle, $val); 69 } 70 fclose($handle); 71 $_SESSION['name'] = $name; 72 $t = "内容を編集しました"; 73} 74 75 76?> 77 78 79 80<!DOCTYPE html> 81<html lang="ja"> 82 83<head> 84 <meta charset="UTF-8"> 85 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 86 <title>テキストテーブル</title> 87</head> 88 89<body> 90 <p style="color:red"><?php echo $e; ?></p> 91 <p style="color:blue"><?php echo $t; ?></p> 92 <form action="edit.php" method="post"> 93 <p><?php echo $_SESSION['name'] . "さんのユーザ編集画面"; ?></p> 94 <lavel>ID</lavel><br> 95 <input type="text" name="userid2" value="<?php echo $userid; ?>"> 96 <br> 97 <lavel>名前</lavel> 98 </lavel><br> 99 <input type="text" name="name2" value="<?php echo $name; ?>"> 100 <br> 101 <lavel>パスワード</lavel><br> 102 <input type="password" name="password2" value="<?php echo $password ?>"> 103 104 <br><input type="submit" value="編集"> 105 <br><input type="reset"> 106 </form> 107 <a href="top.php">トップページ</a> 108 <a href="delete.php">退会処理</a>
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/18 13:18
2020/09/18 13:27
2020/09/18 13:57