gpt4 book ai didi

php - 如何在 PHP OOP 中调用另一个函数内部的函数

转载 作者:太空宇宙 更新时间:2023-11-03 10:40:31 25 4
gpt4 key购买 nike

我正在使用面向对象的 PHP 制作我自己的自定义 CMS...我制作了一个页面,网站的主要管理员可以在其中添加另一个管理员。为了做到这一点,我做了这个表格:

<form role="form" method="POST" action="">
<div class="box-body">
<div class="form-group">
<label>User name</label>
<input type="text" class="form-control" placeholder="Enter username" name="uname" required>
</div>
<div class="form-group">
<label for="exampleInputEmail1">Email address</label>
<input type="email" class="form-control" id="exampleInputEmail1" placeholder="Enter email" name="email" required>
</div>
<div class="form-group">
<label for="exampleInputPassword1">Temporary password</label>
<input type="password" class="form-control" id="exampleInputPassword1" placeholder="Enter password" name="pass" required>
</div>
<div class="form-group">
<label>Group admin</label>
<select class="form-control">
<option>Main Admin</option>
<option>Administrator</option>
<option>Content Creator</option>
<option>Analyst</option>
</select>
</div>
</div>
<div class="box-footer">
<button name="submit" type="submit" class="btn btn-primary">Submit</button>
</div>
</form>

然后我将其添加为操作文件:

if (isset($_POST['submit'])) {
$username = $_POST['uname'];
$email = $_POST['email'];
$password = $_POST['pass'];
$registration = new Register();
$registration->CheckUname($username,$email);
}

如您所见,我调用了一个名为 Register 的类,在这个类中我编写了以下代码:

class Register {
private $db;

public function __construct() {
$this->db = new Connection();
$this->db = $this->db->dbConnect();
}

public function CheckUname($username,$email) {
if(!empty($username)&&($email)) {
$chk1 = $this->db->prepare("SELECT username FROM admins WHERE user_name= ?");
$chk1->bindParam(1,$username);
$chk1->execute();
if($chk1->rowCount() == 1)
{
$notice['username_exists'] = "Try different username";
} else {
$chk2 = $this->db->prepare("SELECT email FROM admins WHERE email_address= ?");
$chk2->bindParam(1,$email);
$chk2->execute();
if($chk2->rowCount() == 1)
{
$notice['email_exists'] = "The email address that you have entered is already exists in database";
}else{
// I want to call the NewAdmin function here
}
}
}
}

public function NewAdmin($username,$email,$password) {
if(!empty($username)&&!empty($email)&&!empty($password)) {
$reg = $this->db->prepare("INSERT INTO admins (user_name, email_address, password_hash) VALUES ( '?', '?', '?')");
$reg->bindParam(1,$username);
$reg->bindParam(2,$email);
$reg->bindParam(2,$password);
$reg->execute();
}
}
}

基本上,我尝试检查该用户名是否已经存在,然后我还检查了电子邮件是否存在,如果不存在,我想调用 NewAdmin 函数,以便可以将管理员插入到数据库中。问题是我不知道如何在 CheckUname 函数中执行此操作。有什么帮助吗?

另外我还有一个问题,就是为什么当用户输入数据库中已经存在的用户名或电子邮件时应该产生的错误没有显示出来!但是我为此设置了一个变量:

if($chk1->rowCount() == 1) {
$notice['username_exists'] = "Try different username";
} else {
$chk2 = $this->db->prepare("SELECT email FROM admins WHERE email_address= ?");
$chk2->bindParam(1,$email);
$chk2->execute();
if($chk2->rowCount() == 1) {
$notice['email_exists'] = "The email address that you have entered is already exists in database";
} else {
// I want to call the NewAdmin function here
}
}

我在页面中也设置了这样的错误:

if(isset($notice['username_exists'])) {
echo "<div class='alert alert-danger'><strong>Hey!</strong> ".$notice['username_exists'].".</div>";
}
if(isset($notice['email_exists'])) {
echo "<div class='alert alert-danger'><strong>Hey!</strong> ".$notice['email_exists'].".</div>";
}

但是提交数据库中存在的用户名或电子邮件时页面上没有出现错误!

最佳答案

Register 类的 CheckUname() 函数中使用 $this->NewAdmin($username,$email,$password)。您可以使用 $this 在另一个类中调用同一个类的函数。 $this代表当前类对象。

我刚刚学习使用堆栈溢出,请不要批准我的这个编辑...!谢谢..

关于php - 如何在 PHP OOP 中调用另一个函数内部的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39469927/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com