2017-02-16 1 views
1

Ich versuche, eine Login-Methode mit OpenID zu implementieren, und die $ _SESSION var's posten korrekt - und durch diese versuche ich einfach, Benutzer in MySQL zu registrieren. Aus irgendeinem Grund, wenn sie durch die 'anmelden' Aktion in meinem Controller vorbei ::Yii2 save() Erstellen DB Zeile mit Standardwerten

public function actionLogin() 
{ 
    if (!Yii::$app->user->isGuest) { 
     return $this->goHome(); 
    } 

    include ('../views/user-record/steamauth/userInfo.php'); 

    $steamid = $_SESSION['steam_steamid']; 
    $username = $_SESSION['steam_personaname']; 
    $profileurl = $_SESSION['steam_profileurl']; 
    $avatar = $_SESSION['steam_avatar']; 
    $avatarmedium = $_SESSION['steam_avatarmedium']; 
    $avatarfull = $_SESSION['steam_avatarfull']; 

    $user = UserRecord::findBySteamId($steamid); 

    if ($user === null) 
    { 
     $user = new UserRecord(); 

     $user->steamid = $steamid; 
     $user->username = $username; 
     $user->profileurl = $profileurl; 
     $user->avatar = $avatar; 
     $user->avatarmedium = $avatarmedium; 
     $user->avatarfull = $avatarfull; 
     $user->verified = 0; 
     $user->banned = 0; 

     $user->save(); 
    } 

    Yii::$app->user->login($user, 604800); 

    return $this->redirect(Yii::$app->user->returnUrl); 
} 

EDIT: Hier ist die UserRecord Klasse, vergaß es in hinzufügen

<?php 

namespace app\models; 

class UserRecord extends \yii\db\ActiveRecord implements \yii\web\IdentityInterface 
{ 
    public $id; 
    public $steamid; 
    public $username; 
    public $profileurl; 
    public $avatar; 
    public $avatarmedium; 
    public $avatarfull; 

    public $verified; 
    public $banned; 
    public $rank; 
    public $authKey; 

// public $password; 
// public $accessToken; 

    public static function tableName() 
    { 
     return 'users'; 
    } 

    public function getAuthKey() 
    { 
     return $this->authKey; 
    } 

    public function getId() 
    { 
     return $this->id; 
    } 

    public function validateAuthKey($authKey) 
    { 
     return $this->authKey === $authKey; 
    } 

    public static function findIdentity($id) 
    { 
     return self::findOne($id); 
    } 

    public function validateSteamID($steamid) 
    { 
     return $this->steamid === $steamid; 
    } 

    public static function findIdentityByAccessToken($token, $type = null) 
    { 
     throw new \yii\base\NotSupportedException; 
    } 

    public static function findBySteamId($steamid) 
    { 
     return self::findOne(['steamid' => $steamid]); 
    } 

} 

Das Ergebnis ist einfach ein. Posted-Zeile, mit keiner der eingegebenen Daten.

Jede Hilfe würde sehr geschätzt werden, danke.

+0

das Feld, das Sie verwenden, definieren in Ihrem modalen Attribut-Array ??? – Dani

+0

Aktualisiert @ Dani Danke –

Antwort

0

Wenn Sie neu definieren den gleichen Spalte Namen öffentlich mit vars diese die Vars für Active außer Kraft setzen und dann nur leeren Wert gespeichert werden ..

wenn diese müssen Sie den (neu definiert) public Vars in Ihrem Modell entfernen

sonst, wenn Sie keine Regeln haben, dann

Versuchen Hinzufügen sicher auf das Attribut in Ihnen Modellregeln

public function rules() 
{ 
    return [ 
     [['steamid', 'username', 'profileurl', 'avatar', 'avatarmedium', 
       'avatarfull', 'verified', 'banned', 'rank', 'authKey',], 'safe'], 
    ]; 
} 
+0

Ich habe dies getan und es ist noch posten SQL-Standardwerte, sehr seltsam für mich. –

+0

Ich habe die Antwort mit einem wichtigen Vorschlag aktualisiert .. lass es mich wissen – scaisEdge

0

Dezember Durch "public" -Variablen hat save() die gesendeten Daten ignoriert. Vielen Dank.

Verwandte Themen