J'ai donc créé une fonction:erreur PHP inconnu
function user_data($user_id) {
$data = array();
$user_id = (int)$unser_id;
$func_num_args = func_num_args();
$func_get_args = func_get_args();
if ($func_num_args > 1){
unset($func_get_args[0]);
$fields = '`' . implode('`, `', $func_get_args) . '`';
$data = mysql_fetch_assoc(mysql_query("SELECT $fields FROM `users` WHERE 'user_id' = $user_id"));
return $data;
}
}
Par erreur j'EMBALLÉES une faute de frappe unser_id mais na pas relise jusqu'à ce que je devais résoudre les problèmes sur la même ligne dans mon code.
Je crée un script de connexion, mais le point où je dois dépanner montre les données de profil de mes autres utilisateurs.
La raison pour laquelle je souligne la partie typo est parce que, pour une raison quelconque, c'est une erreur étrange. Si je le change en user_id, il ne me permettra plus de me connecter. Si je le laisse comme under_id cela fonctionne.
Je dois dépanner parce que je crois que c'est la cause du problème que j'ai en essayant de voir d'autres profils d'utilisateurs et de montrer leurs informations et pas les miennes qui se produisent en ce moment. Par exemple, dans mon URL www.mywebsite.com/myprofile montre mon nom d'utilisateur et mon adresse e-mail, si je tape www.mywebsite.com/otherprofile cela montre encore mes informations. Mais il montre une requête si je tape un utilisateur qui n'existe pas dans ma base de données pour que cette partie fonctionne.
Je crois que le problème toutes les souches forment cette faute de frappe, mais suis vraiment bloqué quant à résoudre une résolution?
Voici donc l'autre code:
page profil:
if (isset($_GET['username']) === true && empty ($_GET['username']) === false) {
$username = $_GET['username'];
if (user_exists($username) === true) {
$user_id = user_id_from_username($username);
$profile_data = user_data($user_id, 'first_name', 'last_name', 'email');
?>
<p><?php echo $profile_data['profile']; ?></p>
<h1><?php echo $profile_data['first_name']; ?> profile</h1>
<p><?php echo $profile_data['email'] ?></p>
<?php
} else {
echo 'Sorry, that user does not exist';
}
} else {
header('Location: index.php');
exit();
}
Voici toutes les fonctions connexes:
function logged_in(){
return (isset($_SESSION['user_id'])) ? true : false;
}
function user_exists($username) {
$username = sanitize($username);
$query = mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `username` = '$username'");
return (mysql_result($query, 0) == 1) ? true : false;
}
function email_exists($email) {
$email = sanitize($email);
$query = mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `email` = '$email'");
return (mysql_result($query, 0) == 1) ? true : false;
}
function user_active($username) {
$username = sanitize($username);
$query = mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `username` = '$username' AND `active` = 1");
return (mysql_result($query, 0) == 1) ? true : false;
}
function user_id_from_username($username) {
$username = sanitize($username);
return mysql_result(mysql_query("SELECT `user_id` FROM `users` WHERE `username` = '$username'"), 0, 'user_id');
}
function login($username, $password) {
$user_id = user_id_from_username($username);
$username = sanitize($username);
$password = md5($password);
return (mysql_result(mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `username` = '$username' AND `password` = '$password' "), 0) == 1) ? $user_id : false;
}
Prenez l'habitude de vérifier s'il y a des erreurs dans votre requête. 'if (! result) show_error' – Ibu
' où 'user_id''? –
Je dois lire ceci encore, parce que la question est assez complexe, mais $ data = mysql_fetch_assoc (mysql_query ("CHOISIR $ fields FROM' users' WHERE 'user_id' = $ user_id ")); est un peu étrange pour moi? 'SELECT '$ fields' des utilisateurs où user_id = '$ user_id'' J'écrirais – tattvamasi