【发布时间】:2018-10-23 00:20:52
【问题描述】:
我正在尝试构建一个 wordpress 插件,该插件将允许管理员在创建表单和处理 php 代码后从管理页面创建用户,我刷新了我的 wordpress 但没有错误,但在填写表单并单击后注册按钮它显示页面未找到,我已将分类br.php 和 demo.php 放在同一个文件夹中,但它仍然无法正常工作
这是我的名为 classfiedbr.php 的 php 代码
<?php
/**
* @package ClassifiedBr
*/
/*
Plugin Name: ClassifiedBr
Plugin URI: http://britchi.com/plugin
Description: This is my first Attempt on writting a custom plugin
Version: 1.0.0
Author: *Bright* C Godwin
Author URI: http://britchi.com/plugin
License: GPLv2 or later
Text Domain: classifiedbr-plugin
*/
add_action('admin_menu', 'classifiedbr_setup_menu');
function classifiedbr_setup_menu(){
add_menu_page( 'ClassifiedBr Page', 'ClassifiedBr', 'manage_options', 'classifiedbr', 'classifiedbr_init' );
}
function classifiedbr_init(){
echo '<form action="demo.php" method="post" />';
echo "<h1>Britchi Tracking</h1>";
echo '<p>';
echo 'Costumers Name (required) <br/>';
echo '<input type="text" name="cname"/>';
echo '</p>';
echo '<p>';
echo 'Tracking number (required) <br/>';
echo '<input type="text" name="ctracking"/>';
echo '</p>';
echo '<p>';
echo 'Email (required) <br/>';
echo '<input type="email" name="cemail" />';
echo '</p>';
echo '<p>';
echo 'Recived Port (required) <br/>';
echo '<input type="text" name="crport" />';
echo '</p>';
echo '<p>';
echo 'Delivered Port (required) <br/>';
echo '<input type="text" name="cdport" />';
echo '</p>';
echo '<p>';
echo 'Current Location (required) <br/>';
echo '<input type="text" name="clocation" />';
echo '</p>';
echo '<p>';
echo 'Destination (required) <br/>';
echo '<input type="text" name="cdestination". />';
echo '</p>';
echo '<p><input type="submit" name="cregistered" value="Register"></p>';
echo '</form>';
}
?>
那么这是我的 demo.php
<?php
define('DB_NAME', 'class');
define('DB_USER', 'root');
define('DB_PASSWORD', '');
define('DB_HOST', 'localhost');
$link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
if (!$link) {
die('Could not connect: ' . mysql_error());
}
$db_selected = mysql_selected_db(DB_NAME, $link);
if (!$db_selected) {
die('Can\'t use ' . DB_NAME . ': ' . mysql_error());
}
$cname = $_POST['cname'];
$cemail = $_POST['cemail'];
$ctracking = $_POST['ctracking'];
$crport = $_POST['crport'];
$cdport = $_POST['cdport'];
$cname = $_POST['clocation'];
$cname = $_POST['cdestination'];
$sql = "INSERT INTO demo (cname, cemail, ctracking, erport, cdport, clocation, cdestination) VALUES ('$cname', 'cemail', 'ctracking', 'crport', 'cdport', 'clocation', 'cdestination')";
if (!mysql_query($sql)) {
die('ERROR: ' . mysql_error());
}
mysql_close();
?>
这是页面
这是我从页面得到的错误消息
这是我保存文件的文件夹
我已尝试在这里搜索,但问题与我自己的问题(my php form not insert to phpmyadmin)有关,但尚未解决,所以我希望有人能帮助我,谢谢
【问题讨论】:
-
页面demo.php不是你说的地方
-
@smith 我刚刚上传了文件夹的截图
-
这是拼写错误的
mysql_selected_db()应该是mysql_select_db()并且它们可能是其他错误,尤其是mysql_*()函数已在PHP 7 开头的版本中被删除。新代码应该改为使用 PDO 编写。始终在开发和测试代码时启用错误显示。在你的脚本顶部error_reporting(E_ALL); ini_set('display_errors', 1);,你会看到 PHP 抱怨一个未定义的函数,也许还有其他错误。 -
我注意到 INSERT 中的大多数变量也缺少它们的
$。但是您使用的方法是不安全的,最终可能导致您的服务器和数据库受到损害。在 PDO 中使用带有参数的prepare()/execute()是解决方案 - 请参阅 How can I prevent SQL injection in PHP 注意您的数据库被命名为class也许这是一个课程作业,PDO 不适合您,或者您的讲师更喜欢旧的 mysql_*() API... -
@MichaelBerkowski 即使将 mysql_selected_db() 更改为 mysql_select_db() 它仍然显示相同的错误
标签: php wordpress forms phpmyadmin