您好我想在点击链接后传递用户详细信息(名字,姓氏,传记,电话等)。我用NavParams这样做了。
home.html的
<p (click)="UserPage(item.uid_fk, item.username)" [innerHTML]="item.username | linky"></p>
home.ts
UserPage(uid_fk,username) {
this.navCtrl.push(UserPage, { uid_fk: uid_fk, username:username });
}
userProfile.ts
constructor(
public common: Common,
public navCtrl: NavController,
public app: App,
public menuCtrl: MenuController,
public navParams: NavParams,
public authService: AuthService
) {
this.uid_fk = navParams.get('uid_fk');
this.username = navParams.get('username');
this.userProfile();
}
userProfile.html
<ion-content padding>
<p >{{uid_fk}}</p>
<p>{{username}}</p>
</ion-content>
它工作正常。但我想知道我是否可以使用像这样的PHP函数调用用户详细信息。
PHP功能
function userDetails() {
$request = \Slim\Slim::getInstance()->request();
$data = json_decode($request->getBody());
$uid=$data->uid;
$sql = "SELECT uid,tour,username,name,emailNotifications,bio,email,friend_count,profile_pic,conversation_count,updates_count,profile_bg,group_count,profile_pic_status,profile_bg_position,verified,notification_created,photos_count,facebookProfile,twitterProfile,googleProfile,instagramProfile,gender,emailNotifications FROM users WHERE uid=:uid AND status='1'";
try {
$db = getDB();
if($uid>0)
{
$stmt = $db->prepare($sql);
$stmt->bindParam("uid", $uid, PDO::PARAM_INT);
$stmt->execute();
$userDetails = $stmt->fetchAll(PDO::FETCH_OBJ);
$db = null;
echo '{"userDetails": ' . json_encode($userDetails) . '}';
}
} catch(PDOException $e) {
echo '{"error":{"text40":'. $e->getMessage() .'}}';
}
}
我想在userProfile.ts
上使用此函数调用此函数userProfile() {
this.common.presentLoading();
this.authService.postData(this.userPostData, "userDetails").then(
result => {
this.resposeData = result;
if (this.resposeData.userDetails) {
this.common.closeLoading();
this.dataSet = this.resposeData.userDetails;
console.log(this.dataSet);
} else {
console.log("No access");
}
},
err => {
//Connection failed message
}
);
}
但我不知道如何将user_id(uid)传递给PHP函数我知道this.authService.postData( this.userPostData ,&#34; userDetails&#34 )。它是错的,但我如何将uid_fk作为uid传递?
$request = \Slim\Slim::getInstance()->request();
$data = json_decode($request->getBody());
$uid=$data->uid;
答案 0 :(得分:0)
您似乎不知道如何制作php slim框架响应。您的代码不适合我在文档中看到的任何内容。如果请求到达函数,则应使用slim中提供的简单响应对象。
$userDetails = $stmt->fetchAll(PDO::FETCH_ASSOC); //better use array
return $response->withJson($userDetails);//will return app/json with utf-8 encoding
您必须在路由定义中包含ResponseInterface $ response。但是您的代码没有$app->post(...
,或者您只显示其中的一部分。
问题的另一部分,如何从角度获取请求:
$parsedBody = $request->getParsedBody();
同样,如果你用你想要的路线定义$app->post...
,答案就会自行解决。
您可以使用https://github.com/chadicus/slim-oauth2程序包进行无状态登录并获取用于安全登录的令牌。
从前端部分使用路线上的警卫。 F.E. https://medium.com/@ryanchenkie_40935/angular-authentication-using-route-guards-bf7a4ca13ae3会解释很多。
当您实施这两项时,您的身份验证将从两个端完成。