问题描述
大家好,我是杰克,
我会问问题让我感到困惑 当我做了 custom_login.PHP用于自定义登录模板 custom_register.PHP用于自定义注册模板
在localhost上工作正常,但在实时版本上 custom_login.PHP无法正常工作(可以正确显示,但不能登录用户或将其重定向到主页) custom_register.PHP可以正常工作,当用户填写字段时,该字段保存在用户表上 ,但是也会在从 custom-register.PHP 到 custom-login.PHP
本地主机7.2.9上的PHP版本,但实时版本为7.3.15 即时通讯不考虑来自Verison的问题,因为登记表工作正常吗?你们可以告诉我idk
我试图在 wp-config.php
中添加define( 'WP_HOME','http://example.com' ); define( 'WP_SITEURL','http://example.com' );
要点在于,localhost中的所有功能都无法完美运行!
custom_login.PHP
<?PHP
/**
*
* Template name: login-page
*
*/
# Send the user to his account or any page if already logged in.
if ( is_user_logged_in() ) {
wp_redirect( home_url('/account/') );
}
# Get login error messages.
$login_errors = (isset($_GET['user-login']) ) ? $_GET['user-login'] : 0;
if ( $_POST['action'] == 'log-in' ) {
# Submit the user login inputs
$login = wp_login( $_POST['user-name'],$_POST['password'] );
$login = wp_signon( array( 'user_login' => $_POST['user-name'],'user_password' => $_POST['password'],'remember' => $_POST['remember-me'] ),false );
# Redirect to account page after successful login.
if ( $login->ID ) {
wp_redirect( home_url('account') );
}
}
// Exit if accessed directly
if ( !defined('ABSPATH')) exit;
?>
<!DOCTYPE html>
<html <?phP Language_attributes(); ?>>
<head>
<Meta name="viewport" content="width=device-width,initial-scale=1">
<?PHP
wp_head();
?>
</head>
<body>
<?PHP if ( have_posts() ) while ( have_posts() ) : the_post(); ?>
<div class="container text-right" style="position: absolute;
top:50%;left:50%;transform:translate(-50%,-50%);" dir="rtl">
<div class="row justify-content-center">
<div class="col-xl-10">
<div class="card border-0">
<div class="card-body p-0">
<div class="row no-gutters">
<div class="col-lg-6">
<div class="p-5">
<form action="<?PHP the_permalink(); ?>" method="post" class="sign-in">
<div class="form-group">
<label for="user-name"><i class="fas fa-user ml-2 mb-2"></i>Username / email address</label>
<input type="text" name="user-name" id="user-name" class="form-control" value="<?PHP echo wp_specialchars( $_POST['user-name'],1 ); ?>" autocomplete="off" required />
</div>
<div class="form-group mb-5">
<label for="exampleInputPassword1"><i class="fas fa-lock ml-2 mb-2"></i>Password</label>
<input type="password" name="password" class="form-control" id="password" autocomplete="off" required />
</div>
<button type="submit" name="submit" value="<?PHP _e('Log in'); ?>" class="btn btn-theme">login</button>
<input type="hidden" name="action" value="log-in" />
</form>
</div>
</div>
<div class="col-lg-6 d-none d-lg-inline-block">
<div class="account-block rounded-right">
<div class="overlay rounded-right"></div>
<div class="account-testimonial">
<a href="<?PHP bloginfo('url'); ?>"><img src="<?PHP bloginfo('template_directory');?>/assets/img/logoar.png" style="max-width:200px;bottom:0;position:absolute;"></a>
</div>
</div>
</div>
</div>
</div>
</div>
<p class="text-white text-center mt-3 mb-0">don't have an account yet?<a href="<?PHP bloginfo('url'); ?>/register" class="text-white mr-1 font-weight-bold">register new one for free!</a></p>
</div>
</div>
</div>
<?PHP endwhile; ?>
</body>
</html>
custom_register.PHP
<?PHP
/**
*
* Template name: register-page
*
*/
global $wpdb,$user_ID;
if ( is_user_logged_in() ) {
wp_redirect( home_url('/account/') );
}
if (isset($_POST['user_registeration']))
{
global $reg_errors;
$reg_errors = new WP_Error;
$username = $_POST['username'];
$useremail = $_POST['useremail'];
$password = $_POST['password'];
$phonenumber = esc_html($_POST['phonenumberxc']);
if(empty( $username ) || empty( $useremail ) || empty($password))
{
$reg_errors->add('field','most fill all fields');
}
if ( strlen( $username ) <= 5 )
{
$reg_errors->add('username_length','username most be at lest 6 letters' );
}
if ( username_exists( $username ) )
{
$reg_errors->add('user_name','this name used in onther account,please chose new one');
}
if ( ! validate_username( $username ) )
{
$reg_errors->add( 'username_invalid','username invalid' );
}
if ( !is_email( $useremail ) )
{
$reg_errors->add( 'email_invalid','email you added invalid' );
}
if ( email_exists( $useremail ) )
{
$reg_errors->add( 'email','the email you added existed in another account,please add new one.' );
}
if ( strlen( $password ) <= 5 ) {
$reg_errors->add( 'password','your password must be at lest 6 letters and numbers' );
}
if (is_wp_error( $reg_errors ))
{
foreach ( $reg_errors->get_error_messages() as $error )
{
$signUpError = $error ;
}
}
if ( 1 > count( $reg_errors->get_error_messages() ) )
{
// sanitize user form input
global $username,$useremail;
$username = sanitize_user( $_POST['username'] );
$useremail = sanitize_email( $_POST['useremail'] );
$password = esc_attr( $_POST['password'] );
$userdata = array(
'user_login' => $username,'user_email' => $useremail,'user_pass' => $password,);
$user = wp_insert_user( $userdata );
}
}
?>
<!DOCTYPE html>
<html <?phP Language_attributes(); ?>>
<head>
<Meta name="viewport" content="width=device-width,initial-scale=1">
<?PHP
wp_head();
?>
</head>
<body>
<div class="container text-right" style="position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);" dir="rtl">
<div class="row justify-content-center">
<div class="col-xl-10">
<div class="card border-0">
<div class="card-body p-0">
<div class="row no-gutters">
<div class="col-lg-6">
<div class="p-5">
<div class="mb-5">
<h3 class="h4 font-weight-bold text-theme">register new account</h3>
</div>
<form action="<?PHP echo the_permalink() ?>" method="post" name="user_registeration" class="sign-in">
<div class="form-group">
<label for="user-name"><i class="fas fa-user ml-2 mb-2"></i>username</label>
<input type="text" name="username" id="user-name" class="form-control" autocomplete="off" required />
</div>
<div class="form-group">
<label for="user-password"><i class="fas fa-lock ml-2 mb-2"></i>password</label>
<input type="password" name="password" id="user-password" class="form-control" autocomplete="off" required />
</div>
<div class="form-group ">
<label for="email-address"><i class="fas fa-at ml-2 mb-2"></i>email address</label>
<input type="email" name="useremail" class="form-control" id="email-address" autocomplete="off" required />
</div>
<div class="form-group mb-5">
<label for="phonenumber"><i class="fas fa-mobile-alt ml-2 mb-2"></i>phone number</label>
<input type="text" name="phonenumber" class="form-control" id="phonenumber" autocomplete="off" />
</div>
<button type="submit" name="user_registeration" class="btn btn-theme">create new account!</button>
</form>
</div>
</div>
<div class="col-lg-6 d-none d-lg-inline-block">
<div class="account-block rounded-right">
<div class="overlay rounded-right"></div>
<div class="account-testimonial">
<a href="<?PHP bloginfo('url'); ?>"><img src="<?PHP bloginfo('template_directory');?>/assets/img/logoar.png" style="max-width:200px;bottom:0;position:absolute;"></a></div>
</div>
</div>
</div>
</div>
<!-- end card-body -->
</div>
<!-- end card -->
<p class="text-white text-center mt-3 mb-0">already have an account?<a href="<?PHP bloginfo('url'); ?>/login" class="text-white mr-1 font-weight-bold">login Now!</a></p>
<!-- end row -->
</div>
<!-- end col -->
</div>
<!-- Row -->
</div>
</body>
</html>
//// login - register new page
function redirect_login_page() {
$login_page = home_url( '/member-dashboard/' );
$register_page = home_url( '/register/' );
$page_viewed = basename($_SERVER['REQUEST_URI']);
// login
if( $page_viewed == "wp-login.PHP" && $_SERVER['REQUEST_METHOD'] == 'GET') {
wp_redirect($login_page);
exit;
}
// regiser
if( $page_viewed == "wp-login.PHP?action=register" && $_SERVER['REQUEST_METHOD'] == 'GET') {
wp_redirect($register_page);
exit;
}
}
add_action('init','redirect_login_page');
function login_Failed() {
$login_page = home_url( '/member-dashboard/' );
wp_redirect( $login_page . '?user-login=Failed' );
exit;
}
add_action( 'wp_login_Failed','login_Failed' );
function verify_username_password( $user,$username,$password ) {
$login_page = home_url( '/member-dashboard/' );
if( $username == "" || $password == "" ) {
wp_redirect( $login_page . "?user-login=empty" );
exit;
}
}
add_filter( 'authenticate','verify_username_password',1,3);
function logout_page() {
$login_page = home_url( '/member-dashboard/' );
wp_redirect( $login_page . "?user-login=false" );
exit;
}
add_action('wp_logout','logout_page');
//end login register new page
// no access to wp-admin except admin start
function ace_block_wp_admin() {
if ( is_admin() && ! current_user_can( 'administrator' ) && ! ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) {
wp_safe_redirect( home_url() );
exit;
}
}
add_action( 'admin_init','ace_block_wp_admin' );
//// no access to wp-admin except admin end
// after register login auto start
function auto_login_new_user( $user_id ) {
wp_set_current_user($user_id);
wp_set_auth_cookie($user_id);
$user = get_user_by( 'id',$user_id );
do_action( 'wp_login',$user->user_login ); //`[Codex Ref.][1]
wp_redirect( home_url( '/account/' ) );
exit;
}
add_action( 'user_register','auto_login_new_user' );
// after register login auto end
解决方法
您可以使用try catch查找问题
try{
//your code
} catch (Exception $ex) {
var_dump($ex->getMessage());
}
并使用var_dump()打印一些变量