質問編集履歴
5
質問文冒頭の現状説明を追記しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
ある課題に取り組んでいて簡易掲示板を作っています。
|
2
|
+
|
3
|
+
テキスト保存のものを作った後、MySQL保存に変えたものを作っています。
|
4
|
+
|
1
5
|
php5.2.4(指定による)
|
2
6
|
|
3
7
|
mysqlのサーバー情報は伏せてあります。
|
4
サーバー情報が伏せてある旨記載しました
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
php5.2.4(指定による)
|
2
2
|
|
3
|
+
mysqlのサーバー情報は伏せてあります。
|
4
|
+
|
3
5
|
|
4
6
|
|
5
7
|
jsでパスワードの入力を求め、その値をPHP側の check_password に格納したいです。
|
3
公開できない情報を削除しました
test
CHANGED
File without changes
|
test
CHANGED
@@ -64,13 +64,13 @@
|
|
64
64
|
|
65
65
|
//MySQL接続情報
|
66
66
|
|
67
|
-
$servername = "
|
67
|
+
$servername = "";
|
68
|
-
|
68
|
+
|
69
|
-
$username = "
|
69
|
+
$username = "";
|
70
|
-
|
70
|
+
|
71
|
-
$serverpassword = "
|
71
|
+
$serverpassword = "";
|
72
|
-
|
72
|
+
|
73
|
-
$dbname = "
|
73
|
+
$dbname = "";
|
74
74
|
|
75
75
|
//編集時の表示用名前とコメントの初期化
|
76
76
|
|
2
インデントのみ修正してみました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -64,13 +64,13 @@
|
|
64
64
|
|
65
65
|
//MySQL接続情報
|
66
66
|
|
67
|
-
$servername = "";
|
67
|
+
$servername = "localhost";
|
68
|
-
|
68
|
+
|
69
|
-
$username = "";
|
69
|
+
$username = "co-19-131.99sv-c";
|
70
|
-
|
70
|
+
|
71
|
-
$serverpassword = "";
|
71
|
+
$serverpassword = "x5M3YXQu";
|
72
|
-
|
72
|
+
|
73
|
-
$dbname = "";
|
73
|
+
$dbname = "co_19_131_99sv_coco_com";
|
74
74
|
|
75
75
|
//編集時の表示用名前とコメントの初期化
|
76
76
|
|
@@ -242,274 +242,292 @@
|
|
242
242
|
|
243
243
|
<script>
|
244
244
|
|
245
|
-
//削除時の確認
|
245
|
+
//削除時の確認
|
246
|
-
|
246
|
+
|
247
|
-
window.addEventListener('DOMContentLoaded', function(){
|
247
|
+
window.addEventListener('DOMContentLoaded', function(){
|
248
|
-
|
248
|
+
|
249
|
-
document.querySelector('#delete_button').addEventListener('click',function(e){
|
249
|
+
document.querySelector('#delete_button').addEventListener('click',function(e){
|
250
|
-
|
250
|
+
|
251
|
-
if(confirm("本当に削除しますか?")){//本当に削除しますか?と表示しyes,noの選択肢を出す
|
251
|
+
if(confirm("本当に削除しますか?")){//本当に削除しますか?と表示しyes,noの選択肢を出す
|
252
|
-
|
252
|
+
|
253
|
-
var pass
|
253
|
+
var check_password = prompt("パスワードを入力してください");//yesならパスワード入力を求める
|
254
|
-
|
254
|
+
|
255
|
-
}else{
|
255
|
+
}else{
|
256
|
-
|
256
|
+
|
257
|
-
alert('キャンセルされました');//「キャンセルされました」 と表示
|
257
|
+
alert('キャンセルされました');//「キャンセルされました」 と表示
|
258
|
-
|
258
|
+
|
259
|
-
e.preventDefault();//キャンセルの実行(defaultの動作を妨害)
|
259
|
+
e.preventDefault();//キャンセルの実行(defaultの動作を妨害)
|
260
|
+
|
261
|
+
}
|
262
|
+
|
263
|
+
});
|
264
|
+
|
265
|
+
});
|
266
|
+
|
267
|
+
|
268
|
+
|
269
|
+
//編集と削除時のパスワードの入力
|
270
|
+
|
271
|
+
window.addEventListener('DOMContentLoaded', function(){
|
272
|
+
|
273
|
+
document.querySelector('#edit_button').addEventListener('click',function(e){
|
274
|
+
|
275
|
+
if(!prompt("パスワードを入力してください")){
|
276
|
+
|
277
|
+
alert('キャンセルされました');
|
278
|
+
|
279
|
+
e.preventDefault();
|
280
|
+
|
281
|
+
}
|
282
|
+
|
283
|
+
});
|
284
|
+
|
285
|
+
});
|
286
|
+
|
287
|
+
|
288
|
+
|
289
|
+
//PHPへ値を渡す
|
290
|
+
|
291
|
+
$.ajax ( {
|
292
|
+
|
293
|
+
type: 'POST',
|
294
|
+
|
295
|
+
url: 'keijiban_mysql.php',
|
296
|
+
|
297
|
+
data: {
|
298
|
+
|
299
|
+
'check_password' : check_password,
|
300
|
+
|
301
|
+
},
|
302
|
+
|
303
|
+
success: function(data) {
|
304
|
+
|
305
|
+
alert(data);
|
306
|
+
|
307
|
+
}
|
308
|
+
|
309
|
+
});
|
310
|
+
|
311
|
+
</script>
|
312
|
+
|
313
|
+
<style>
|
314
|
+
|
315
|
+
.akaji {
|
316
|
+
|
317
|
+
color : red;
|
260
318
|
|
261
319
|
}
|
262
320
|
|
263
|
-
});
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
});
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
//編集と削除時のパスワードの入力
|
272
|
-
|
273
|
-
window.addEventListener('DOMContentLoaded', function(){
|
274
|
-
|
275
|
-
document.querySelector('#edit_button').addEventListener('click',function(e){
|
276
|
-
|
277
|
-
|
321
|
+
.komoji {
|
278
|
-
|
279
|
-
|
322
|
+
|
280
|
-
|
281
|
-
e.
|
323
|
+
font-size: 0.8em;
|
282
324
|
|
283
325
|
}
|
284
326
|
|
327
|
+
</style>
|
328
|
+
|
329
|
+
</head>
|
330
|
+
|
331
|
+
<body>
|
332
|
+
|
285
|
-
|
333
|
+
<?php
|
286
|
-
|
334
|
+
|
287
|
-
|
335
|
+
var_dump($check_password);
|
288
|
-
|
289
|
-
|
290
|
-
|
336
|
+
|
291
|
-
//
|
337
|
+
//XSS対策
|
292
|
-
|
293
|
-
|
338
|
+
|
294
|
-
|
295
|
-
type: 'POST',
|
296
|
-
|
297
|
-
url: 'keijiban_mysql.php',
|
298
|
-
|
299
|
-
data: {
|
300
|
-
|
301
|
-
'password' : password,
|
302
|
-
|
303
|
-
},
|
304
|
-
|
305
|
-
|
339
|
+
function h( $str ) {
|
306
|
-
|
340
|
+
|
307
|
-
al
|
341
|
+
return nl2br( htmlspecialchars( $str, ENT_QUOTES, 'UTF-8' ) );
|
308
342
|
|
309
343
|
}
|
310
344
|
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
345
|
+
//改行の置き換え
|
346
|
+
|
347
|
+
$replace_seach = array( "<<改行win>>", "<<改行mac>>", "<<改行unix>>" ); //改行の置き換え文字の検索
|
348
|
+
|
349
|
+
$replace = array( "\r\n", "\r", "\n" ); //改行コードへの置き換え
|
350
|
+
|
351
|
+
|
352
|
+
|
353
|
+
?>
|
354
|
+
|
355
|
+
<!--投稿フォーム-->
|
356
|
+
|
357
|
+
<form method="post" >
|
358
|
+
|
359
|
+
<label for="name">お名前<span class="akaji">【必須】</span></label>
|
360
|
+
|
361
|
+
<?php
|
362
|
+
|
363
|
+
if ( !empty( $edit_no ) ) {
|
364
|
+
|
365
|
+
echo $edit_message;
|
366
|
+
|
367
|
+
}
|
368
|
+
|
369
|
+
?>
|
370
|
+
|
371
|
+
<br>
|
372
|
+
|
373
|
+
<input type="hidden" name="edit_decision" value="<?php
|
374
|
+
|
375
|
+
echo $decision_no;
|
376
|
+
|
377
|
+
?>" >
|
378
|
+
|
379
|
+
<input type="text" name="name" id="name" required="required" value="<?php
|
380
|
+
|
381
|
+
echo $edit_name;
|
382
|
+
|
383
|
+
?>" >
|
384
|
+
|
385
|
+
<br>
|
386
|
+
|
387
|
+
<label for="comment">コメント<span class="akaji">【必須】</span></label><br>
|
388
|
+
|
389
|
+
<textarea name="comment" cols="30" rows="3" id="comment" required="required">
|
390
|
+
|
391
|
+
<?php
|
392
|
+
|
393
|
+
echo $edit_comment;
|
394
|
+
|
395
|
+
?>
|
396
|
+
|
397
|
+
</textarea><br>
|
398
|
+
|
399
|
+
<label for="possword">パスワード<span class="akaji">【必須】</span></label><br>
|
400
|
+
|
401
|
+
<input type="password" name="password" id="password" required="required">
|
402
|
+
|
403
|
+
<br>
|
404
|
+
|
405
|
+
<input type="submit" value=<?php
|
406
|
+
|
407
|
+
if(!empty( $edit_no ) ){
|
408
|
+
|
409
|
+
echo '編集';
|
410
|
+
|
411
|
+
} else {
|
412
|
+
|
413
|
+
echo '投稿';
|
414
|
+
|
415
|
+
}
|
416
|
+
|
417
|
+
?> >
|
418
|
+
|
419
|
+
</form>
|
420
|
+
|
421
|
+
<br>
|
422
|
+
|
423
|
+
<!--削除番号指定用フォーム-->
|
424
|
+
|
425
|
+
<form method="post" name="delete">
|
426
|
+
|
427
|
+
<label for="delete_no">削除対象番号</label>
|
428
|
+
|
429
|
+
<?php
|
430
|
+
|
431
|
+
if( !empty( $delete_no ) ) {
|
432
|
+
|
433
|
+
echo $delete_message;
|
434
|
+
|
435
|
+
}
|
436
|
+
|
437
|
+
?>
|
438
|
+
|
439
|
+
<br>
|
440
|
+
|
441
|
+
<input type="number" name="delete_no" id="delete_no" required="required"><br>
|
442
|
+
|
443
|
+
<input type="submit" value="削除" name="btn" id="delete_button">
|
444
|
+
|
445
|
+
</form>
|
446
|
+
|
447
|
+
<br>
|
448
|
+
|
449
|
+
<!--編集番号指定用フォーム-->
|
450
|
+
|
451
|
+
<form method="post">
|
452
|
+
|
453
|
+
<label for="edit_no">編集対象番号(半角)</label>
|
454
|
+
|
455
|
+
<?php
|
456
|
+
|
457
|
+
if ( !empty( $edit_no ) ) {
|
458
|
+
|
459
|
+
echo $edit_nothing_message;
|
460
|
+
|
461
|
+
}
|
462
|
+
|
463
|
+
?>
|
464
|
+
|
465
|
+
<br>
|
466
|
+
|
467
|
+
<input type="number" name="edit_no" id="edit_no" required="required"><br>
|
468
|
+
|
469
|
+
<input type="submit" value="送信" id="edit_button">
|
470
|
+
|
471
|
+
</form>
|
472
|
+
|
473
|
+
<br>
|
474
|
+
|
475
|
+
|
334
476
|
|
335
477
|
<?php
|
336
478
|
|
337
|
-
var_dump($password);
|
338
|
-
|
339
|
-
//
|
479
|
+
//投稿内容の表示
|
480
|
+
|
340
|
-
|
481
|
+
try {
|
482
|
+
|
483
|
+
//テーブルの行数取得
|
484
|
+
|
485
|
+
$sql = 'select count(*) from toko';
|
486
|
+
|
341
|
-
|
487
|
+
$count = $db->query( $sql );
|
488
|
+
|
342
|
-
|
489
|
+
$count = $count->fetchColumn();
|
490
|
+
|
491
|
+
$select = "SELECT * FROM toko"; //テーブルデータの取得のクエリ
|
492
|
+
|
343
|
-
|
493
|
+
$select = $db->query( $select ); //クエリの実行
|
494
|
+
|
344
|
-
|
495
|
+
//投稿がない場合「投稿はまだありません」と表示する
|
496
|
+
|
497
|
+
if ( $count == 0 ) {//行数が0だったら
|
498
|
+
|
499
|
+
echo "<p>投稿はまだありません</p>";//投稿はまだありませんと表示する
|
500
|
+
|
501
|
+
} else {//その他の場合
|
502
|
+
|
503
|
+
foreach ( $select as $row ) { //ループして表示
|
504
|
+
|
505
|
+
echo "<span class='komoji'>No</span>:" . h( $row[ 'num' ] ) . "  " .
|
506
|
+
|
507
|
+
"<span class='komoji'>名前</span>: " . h( $row[ 'name' ] ) . "<br>" .
|
508
|
+
|
509
|
+
h( $row[ 'comment' ] ) . "<br>" .
|
510
|
+
|
511
|
+
"<span class='komoji'>".h( $row[ 'date' ] ) . "</span><br>";
|
512
|
+
|
345
|
-
}
|
513
|
+
}
|
514
|
+
|
346
|
-
|
515
|
+
}
|
516
|
+
|
517
|
+
|
518
|
+
|
347
|
-
|
519
|
+
} catch ( PDOException $e ) {
|
348
|
-
|
349
|
-
|
520
|
+
|
350
|
-
|
351
|
-
|
521
|
+
print( "表示エラー:" . $e->getmessage() );
|
522
|
+
|
523
|
+
die();
|
524
|
+
|
525
|
+
}
|
352
526
|
|
353
527
|
|
354
528
|
|
355
529
|
?>
|
356
530
|
|
357
|
-
<!--投稿フォーム-->
|
358
|
-
|
359
|
-
<form method="post" >
|
360
|
-
|
361
|
-
<label for="name">お名前<span class="akaji">【必須】</span></label>
|
362
|
-
|
363
|
-
<?php
|
364
|
-
|
365
|
-
if ( !empty( $edit_no ) ) {
|
366
|
-
|
367
|
-
echo $edit_message;
|
368
|
-
|
369
|
-
}
|
370
|
-
|
371
|
-
?>
|
372
|
-
|
373
|
-
<br>
|
374
|
-
|
375
|
-
<input type="hidden" name="edit_decision" value="<?php echo $decision_no;?>">
|
376
|
-
|
377
|
-
<input type="text" name="name" id="name" required="required" value="<?php echo $edit_name; ?>" >
|
378
|
-
|
379
|
-
<br>
|
380
|
-
|
381
|
-
<label for="comment">コメント<span class="akaji">【必須】</span></label>
|
382
|
-
|
383
|
-
<br>
|
384
|
-
|
385
|
-
<textarea name="comment" cols="30" rows="3" id="comment" required="required"><?php echo $edit_comment; ?></textarea>
|
386
|
-
|
387
|
-
<br>
|
388
|
-
|
389
|
-
<label for="possword">パスワード<span class="akaji">【必須】</span></label><br>
|
390
|
-
|
391
|
-
<input type="password" name="password" id="password" required="required">
|
392
|
-
|
393
|
-
<br>
|
394
|
-
|
395
|
-
<input type="submit" value=<?php if(!empty( $edit_no ) ){ echo '編集'; } else { echo '投稿'; }?>>
|
396
|
-
|
397
|
-
</form>
|
398
|
-
|
399
|
-
<br>
|
400
|
-
|
401
|
-
<!--削除番号指定用フォーム-->
|
402
|
-
|
403
|
-
<form method="post" name="delete">
|
404
|
-
|
405
|
-
<label for="delete_no">削除対象番号</label>
|
406
|
-
|
407
|
-
<?php
|
408
|
-
|
409
|
-
if( !empty( $delete_no ) ) {
|
410
|
-
|
411
|
-
echo $delete_message;
|
412
|
-
|
413
|
-
}
|
414
|
-
|
415
|
-
?>
|
416
|
-
|
417
|
-
<br>
|
418
|
-
|
419
|
-
<input type="number" name="delete_no" id="delete_no" required="required">
|
420
|
-
|
421
|
-
<br>
|
422
|
-
|
423
|
-
<input type="submit" value="削除" name="btn" id="delete_button">
|
424
|
-
|
425
|
-
</form>
|
426
|
-
|
427
|
-
<br>
|
428
|
-
|
429
|
-
<!--編集番号指定用フォーム-->
|
430
|
-
|
431
|
-
<form method="post">
|
432
|
-
|
433
|
-
<label for="edit_no">編集対象番号(半角)</label>
|
434
|
-
|
435
|
-
<?php
|
436
|
-
|
437
|
-
if ( !empty( $edit_no ) ) {
|
438
|
-
|
439
|
-
echo $edit_nothing_message;
|
440
|
-
|
441
|
-
}
|
442
|
-
|
443
|
-
?>
|
444
|
-
|
445
|
-
<br>
|
446
|
-
|
447
|
-
<input type="number" name="edit_no" id="edit_no" required="required">
|
448
|
-
|
449
|
-
<br>
|
450
|
-
|
451
|
-
<input type="submit" value="送信" id="edit_button">
|
452
|
-
|
453
|
-
</form>
|
454
|
-
|
455
|
-
<br>
|
456
|
-
|
457
|
-
|
458
|
-
|
459
|
-
<?php
|
460
|
-
|
461
|
-
//投稿内容の表示
|
462
|
-
|
463
|
-
try {
|
464
|
-
|
465
|
-
//テーブルの行数取得
|
466
|
-
|
467
|
-
$sql = 'select count(*) from toko';
|
468
|
-
|
469
|
-
$count = $db->query( $sql );
|
470
|
-
|
471
|
-
$count = $count->fetchColumn();
|
472
|
-
|
473
|
-
|
474
|
-
|
475
|
-
|
476
|
-
|
477
|
-
$select = "SELECT * FROM toko"; //テーブルデータの取得のクエリ
|
478
|
-
|
479
|
-
$select = $db->query( $select ); //クエリの実行
|
480
|
-
|
481
|
-
|
482
|
-
|
483
|
-
if ( $count == 0 ) {
|
484
|
-
|
485
|
-
echo "<p>投稿はまだありません</p>";
|
486
|
-
|
487
|
-
} else {
|
488
|
-
|
489
|
-
foreach ( $select as $row ) { //ループして表示
|
490
|
-
|
491
|
-
echo "<span class='komoji'>No</span>:" . h( $row[ 'num' ] ) . "  " .
|
492
|
-
|
493
|
-
"<span class='komoji'>名前</span>: " . h( $row[ 'name' ] ) . "<br>" . h( $row[ 'comment' ] ) . "<br>" . "<span class='komoji'>".h( $row[ 'date' ] ) . "</span><br>";
|
494
|
-
|
495
|
-
}
|
496
|
-
|
497
|
-
}
|
498
|
-
|
499
|
-
|
500
|
-
|
501
|
-
} catch ( PDOException $e ) {
|
502
|
-
|
503
|
-
print( "表示エラー:" . $e->getmessage() );
|
504
|
-
|
505
|
-
die();
|
506
|
-
|
507
|
-
}
|
508
|
-
|
509
|
-
|
510
|
-
|
511
|
-
?>
|
512
|
-
|
513
531
|
</body>
|
514
532
|
|
515
533
|
</html>
|
1
変数名が間違っていたので直しました
test
CHANGED
File without changes
|
test
CHANGED
@@ -2,9 +2,9 @@
|
|
2
2
|
|
3
3
|
|
4
4
|
|
5
|
-
jsでパスワードの入力を求め、その値をPHP側の
|
5
|
+
jsでパスワードの入力を求め、その値をPHP側の check_password に格納したいです。
|
6
|
-
|
6
|
+
|
7
|
-
jsで変数password を作り、その変数内でpromptを書いています。(これが正しいのかどうかも判断出来ません)(107行目から)
|
7
|
+
jsで変数check_password を作り、その変数内でpromptを書いています。(これが正しいのかどうかも判断出来ません)(107行目から)
|
8
8
|
|
9
9
|
動作としては、「本当に削除しますか」と表示し「yes」ならパスワードの入力を求めます。
|
10
10
|
|
@@ -22,7 +22,7 @@
|
|
22
22
|
|
23
23
|
|
24
24
|
|
25
|
-
渡せたかどうかを見るために
|
25
|
+
渡せたかどうかを見るためにcheck_passwordをvar_dumpしています。(154行目)
|
26
26
|
|
27
27
|
|
28
28
|
|