나는 php와 mysql db를 사용하고 있는데, 두 가지 입력 유형에서 값을 가져 와서 표시된 코드를 실행할 때 버튼 저장을 클릭했을 때 데이터베이스에 삽입하고 싶지만 여기에 db에 저장하지 않는 코드가 있습니다. (id는 자동 증분이고 admin 테이블에는 id, username, password의 세 열이 있습니다.) addAdmin.php :
<?php include("connect.php");?>
<div class="col-md-12">
<!-- Add admin -->
<div class="box box-info">
<div class="box-header with-border">
<h3 class="box-title">Add admin</h3>
</div>
<!-- /.box-header -->
<!-- form start -->
<form id="adminForm" class="form-horizontal" action="" method = "get">
<div class="box-body">
<div class="form-group">
<label for="inputName" class="col-sm-2 control-label">User
name</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="inputName"
placeholder="user name" name="username" required >
</div>
</div>
<div class="form-group">
<label for="inputPassword3" class="col-sm-2 control-
label">Password</label>
<div class="col-sm-10">
<input type="password" class="form-control" id="inputPassword3"
placeholder="Password" name="password" required>
</div>
</div>
</div>
<!-- /.box-body -->
<div class="box-footer">
<input type = "submit" class="btn btn-info pull-right save" name =
"submit" value = "save">
<?php
if(isset($_POST["submit"])) {
$name = $_GET['username'];
$password = $_GET['password'];
$insertNewAdmin = "INSERT INTO `admin` VALUES
('$name','$password')";
mysql_query($insertNewAdmin);
}
?>
</div>
<!-- /.box-footer -->
</form>
</div>
<!-- /.box -->
</div>
권장되는 업계 표준을 사용하여 전체 코드를 다시 작성할 수 있습니다. 우선 $_GET
데이터베이스에 양식 데이터를 보낼 때 특히 암호가 포함 된 경우 get 메서드를 사용해서는 안됩니다 .
mysql_*
당신이 사용하고있는 API는 내가 대학에서 2 학년 때부터 감가 상각되었고, 나는 졸업했고, 3 년의 실무 경험을 가지고 있습니다. 감가 상각 되었기 때문에;) 그리고 php 7에서 완전히 제거되었습니다. 따라서 당신은 mysqli_*
or PDO
as 를 사용해야합니다. of v5.5.0
see : PHP에서 mysql_ * 함수를 사용하지 않는 이유는 무엇입니까?
코드의 또 다른 문제는 @Jay Blanchard가 위에서 언급했듯이 SQL 감염의 위험이 있습니다. 여기에서 그의 블록을 따라 가며 그가 말하는 것에 대해 자세히 알아볼 수 있습니다. http://jayblanchard.net/demystifying_php_pdo.html
따라서 Jay가 위에서 강조한 내용을 해결하기 위해 p repared 문을 사용합니다 . 이는 SQL 삽입을 방지합니다.
그런 다음 현대에는 암호를 일반 텍스트로 저장하지 않거나 md5
요즘에는 password_hash ()를 사용 password_verify()
하고 데이터베이스에 암호 해시를 저장하고 저장된 암호를 사용자가 입력 한 암호와 비교하여 확인합니다.
내 코드에서 볼 수 있습니다 : (userNameColumnName,passwordColumnName)
userNameColumnName은 사용자 이름을 저장할 테이블의 열이고 passwordColumnName은 암호를 저장할 테이블의 열이며 문자 길이가 최소 60 자 이상인지 확인하십시오 255.
당신은 할 수없는이 같은 값을 삽입 "INSERT INTO
관리자 VALUES ('$name','$password')
난 당신이이어야 3.해야하지 않는 생각으로 당신이 당신의 TABL 전자 정확히 두 개의 필드가 없다면 connect.php을
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
다음 페이지
<?php include("connect.php");
$errors=false;
if(isset($_POST['submit'])){
$fields = array("username","password");
foreach($fields as $fieldname){
if(!isset($_POST[$fieldname]) && empty($_POST[$fieldname])){
echo "enter username and password";
$errors = true;
}
}
if(!$errors){
$username = $_POST['username'];
$password = $_POST['password'];
$hash = password_hash($password);
$sql = "INSERT INTO admin (userNameColumnName,passwordColumnName) VALUES(?,?)";
$stmt = $conn->prepare($sql);
$stmt->bind_param("ss",$username,$hash);
if($stmt->execute()){
echo "user added";
}else{
echo "error adding user";
error_log("error".$conn->error); // go and check your error log what was the error
}
}
}
?>
<div class="col-md-12">
<!-- Add admin -->
<div class="box box-info">
<div class="box-header with-border">
<h3 class="box-title">Add admin</h3>
</div>
<!-- /.box-header -->
<!-- form start -->
<form id="adminForm" class="form-horizontal" action="" method = "POST">
<div class="box-body">
<div class="form-group">
<label for="inputName" class="col-sm-2 control-label">User
name</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="inputName"
placeholder="user name" name="username" required >
</div>
</div>
<div class="form-group">
<label for="inputPassword3" class="col-sm-2 control-
label">Password</label>
<div class="col-sm-10">
<input type="password" class="form-control" id="inputPassword3"
placeholder="Password" name="password" required>
</div>
</div>
</div>
<!-- /.box-body -->
<div class="box-footer">
<input type = "submit" class="btn btn-info pull-right save" name = "submit" value = "save">
</div>
<!-- /.box-footer -->
</form>
</div>
<!-- /.box -->
</div>
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다