Buenas tardes, tengo un sistema de usuarios en una pagina web PHP, bueno, les comento, todo va bien con el usuario y contraseña, se registra sin problemas etc. Todos mis "problemas" empezaron al tratar de agregar un nuevo campo al registro, el de nombre, bueno, el register lo agrega a la base de datos a la perfeccion pero a la hora de mostrarlo en la parte de el perfil, no lo hace, sin embargo, el usuario y la password en md5 si que la muestra :S. Aqui les dejo todos los codigos de mis archivos php por si alguien es tan hamable y tiene unos minutillos para ayudarme. Muchisimas gracias de antemano.
database.php <?
/** * Connect to the mysql database. */ $conn = mysql_connect("localhost", "root", "mipw") or die(mysql_error()); mysql_select_db('niki', $conn) or die(mysql_error());
?> register.php <? session_start(); include("database.php");
/** * Returns true if the username has been taken * by another user, false otherwise. */ function usernameTaken($username){ global $conn; if(!get_magic_quotes_gpc()){ $username = addslashes($username); } $q = "select username from users where username = '$username'"; $result = mysql_query($q,$conn); return (mysql_numrows($result) > 0); }
/** * Inserts the given (username, password) pair * into the database. Returns true on success, * false otherwise. */ function addNewUser($username, $longname, $password){ global $conn; $q = "INSERT INTO users VALUES ('$username', '$longname', '$password')"; return mysql_query($q,$conn); }
/** * Displays the appropriate message to the user * after the registration attempt. It displays a * success or failure status depending on a * session variable set during registration. */ function displayStatus(){ $uname = $_SESSION['reguname']; $lname = $_SESSION['reglname']; if($_SESSION['regresult']){ ?>
<h1>Registered!</h1> <p>Thank you <b><? echo $uname; ?></b>, your information has been added to the database, you may now <a href="main.php" title="Login">log in</a>.</p>
<? } else{ ?>
<h1>Registration Failed</h1> <p>We're sorry, but an error has occurred and your registration for the username <b><? echo $uname; ?></b>, could not be completed.<br> Please try again at a later time.</p>
<? } unset($_SESSION['reguname']); unset($_SESSION['reglname']); unset($_SESSION['registered']); unset($_SESSION['regresult']); }
if(isset($_SESSION['registered'])){ /** * This is the page that will be displayed after the * registration has been attempted. */ ?>
<html> <title>Registration Page</title> <body>
<? displayStatus(); ?>
</body> </html>
<? return; }
/** * Determines whether or not to show to sign-up form * based on whether the form has been submitted, if it * has, check the database for consistency and create * the new account. */ if(isset($_POST['subjoin'])){ /* Make sure all fields were entered */ if(!$_POST['user'] || !$_POST['name'] || !$_POST['pass']){ die('You didn\'t fill in a required field.'); }
/* Spruce up username, check length */ $_POST['user'] = trim($_POST['user']); if(strlen($_POST['user']) > 30){ die("Sorry, the username is longer than 30 characters, please shorten it."); } /* Spruce up name, check length */ $_POST['name'] = trim($_POST['name']); if(strlen($_POST['name']) > 32){ die("Sorry, the username is longer than 32 characters, please shorten it."); }
/* Check if username is already in use */ if(usernameTaken($_POST['user'])){ $use = $_POST['user']; die("Sorry, the username: <strong>$use</strong> is already taken, please pick another one."); }
/* Add the new account to the database */ $md5pass = md5($_POST['pass']); $_SESSION['reguname'] = $_POST['user']; $_SESSION['regresult'] = addNewUser($_POST['user'], $_POST['name'], $md5pass); $_SESSION['registered'] = true; echo "<meta http-equiv=\"Refresh\" content=\"0;url=$HTTP_SERVER_VARS[PHP_SELF]\">"; return; } else{ /** * This is the page with the sign-up form, the names * of the input fields are important and should not * be changed. */ ?>
<html> <title>Registration Page</title> <body> <h1>Register</h1> <form action="<? echo $HTTP_SERVER_VARS['PHP_SELF']; ?>" method="post"> <table align="left" border="0" cellspacing="0" cellpadding="3"> <tr><td>Usuario:</td><td><input type="text" name="user" maxlength="30"></td></tr> <tr><td>Contraseña:</td><td><input type="password" name="pass" maxlength="30"></td></tr><br> <tr><td>Nombre:</td><td><input type="text" name="name" maxlength="30"></td></tr> <tr><td colspan="2" align="right"><p> <input type="submit" name="subjoin" value="Join!"> </p></td></tr> </table> </form> </body> </html>
<? } ?> login.php <?
/** * Checks whether or not the given username is in the * database, if so it checks if the given password is * the same password in the database for that user. * If the user doesn't exist or if the passwords don't * match up, it returns an error code (1 or 2). * On success it returns 0. */ function confirmUser($username, $password){ global $conn; /* Add slashes if necessary (for query) */ if(!get_magic_quotes_gpc()) { $username = addslashes($username); }
/* Verify that user is in database */ $q = "select password from users where username = '$username'"; $result = mysql_query($q,$conn); if(!$result || (mysql_numrows($result) < 1)){ return 1; //Indicates username failure }
/* Retrieve password from result, strip slashes */ $dbarray = mysql_fetch_array($result); $dbarray['password'] = stripslashes($dbarray['password']); $password = stripslashes($password);
/* Validate that password is correct */ if($password == $dbarray['password']){ return 0; //Success! Username and password confirmed } else{ return 2; //Indicates password failure } }
/** * checkLogin - Checks if the user has already previously * logged in, and a session with the user has already been * established. Also checks to see if user has been remembered. * If so, the database is queried to make sure of the user's * authenticity. Returns true if the user has logged in. */ function checkLogin(){ /* Check if user has been remembered */ if(isset($_COOKIE['cookname']) && isset($_COOKIE['cookpass'])){ $_SESSION['username'] = $_COOKIE['cookname']; $_SESSION['password'] = $_COOKIE['cookpass']; }
/* Username and password have been set */ if(isset($_SESSION['username']) && isset($_SESSION['password'])){ /* Confirm that username and password are valid */ if(confirmUser($_SESSION['username'], $_SESSION['password']) != 0){ /* Variables are incorrect, user not logged in */ unset($_SESSION['username']); unset($_SESSION['password']); return false; } return true; } /* User not logged in */ else{ return false; } }
/** * Determines whether or not to display the login * form or to show the user that he is logged in * based on if the session variables are set. */ function displayLogin(){ global $logged_in; if($logged_in){ echo "Bienvenido <b>$_SESSION[username]</b>,."; echo "<br><a href=\"account.php\">· Cuenta</a></br>"; echo "<br><a href=\"logout.php\">· Desconectar</a></br>"; } else{ ?> <form action="" method="post"> <table align="left" border="0" cellspacing="0" cellpadding="3"> <tr> <td width="73">Usuario:</td> <td width="49"><input name="user" type="text" size="8" maxlength="30"></td></tr> <tr> <td>Contraseña:</td> <td><input name="pass" type="password" size="8" maxlength="30"></td></tr> <tr><td colspan="2" align="left"><div align="left"> <input type="checkbox" name="remember"> Recordarme.</div></td></tr> <tr><td colspan="2" align="right"><div align="center"> <input type="submit" name="sublogin" value="Login"> </div></td></tr> <tr> <td colspan="2" align="left"><a href="register.php">Registrate!</a></td> </tr> </table> </form>
<? } }
/** * Checks to see if the user has submitted his * username and password through the login form, * if so, checks authenticity in database and * creates session. */ if(isset($_POST['sublogin'])){ /* Check that all fields were typed in */ if(!$_POST['user'] || !$_POST['pass']){ die('You didn\'t fill in a required field.'); } /* Spruce up username, check length */ $_POST['user'] = trim($_POST['user']); if(strlen($_POST['user']) > 30){ die("Sorry, the username is longer than 30 characters, please shorten it."); }
/* Checks that username is in database and password is correct */ $md5pass = md5($_POST['pass']); $result = confirmUser($_POST['user'], $md5pass);
/* Check error codes */ if($result == 1){ die('That username doesn\'t exist in our database.'); } else if($result == 2){ die('Incorrect password, please try again.'); }
/* Username and password correct, register session variables */ $_POST['user'] = stripslashes($_POST['user']); $_SESSION['username'] = $_POST['user']; $_SESSION['password'] = $md5pass;
/** * This is the cool part: the user has requested that we remember that * he's logged in, so we set two cookies. One to hold his username, * and one to hold his md5 encrypted password. We set them both to * expire in 100 days. Now, next time he comes to our site, we will * log him in automatically. */ if(isset($_POST['remember'])){ setcookie("cookname", $_SESSION['username'], time()+60*60*24*100, "/"); setcookie("cookpass", $_SESSION['password'], time()+60*60*24*100, "/"); }
/* Quick self-redirect to avoid resending data on refresh */ echo "<meta http-equiv=\"Refresh\" content=\"0;url=$HTTP_SERVER_VARS[PHP_SELF]\">"; return; }
/* Sets the value of the logged_in variable, which can be used in your code */ $logged_in = checkLogin();
?> logout.php <? session_start(); include("database.php"); include("login.php");
/** * Delete cookies - the time must be in the past, * so just negate what you added when creating the * cookie. */ if(isset($_COOKIE['cookname']) && isset($_COOKIE['cookpass'])){ setcookie("cookname", "", time()-60*60*24*100, "/"); setcookie("cookpass", "", time()-60*60*24*100, "/"); }
?>
<html> <title>Logging Out</title> <body>
<?
if(!$logged_in){ echo "<h1>Error!</h1>\n"; echo "You are not currently logged in, logout failed. Back to <a href=\"main.php\">main</a>"; } else{ /* Kill session variables */ unset($_SESSION['username']); unset($_SESSION['password']); $_SESSION = array(); // reset session array session_destroy(); // destroy session.
echo "<h1>Logged Out</h1>\n"; echo "You have successfully <b>logged out</b>. Back to <a href=\"main.php\">main</a>"; }
?>
</body> </html> account.php <? /* Include Files *********************/ session_start(); include("database.php"); include("login.php"); /*************************************/ ?>
<html> <meta http-equiv="Content-Language" content="es"> <title>Jpmaster77's Login Script</title> <body> <div align="center"> <center> <table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="679" height="528" id="AutoNumber1"> <tr> <td width="679" height="71" colspan="3"> </td> </tr> <tr> <td width="117" height="24"> </td> <td width="446" height="24"> </td> <td width="109" height="24"> <p align="center">LOGIN</td> </tr> <tr> <td width="117" height="416"> </td> <td width="446" height="416"><p><u><strong>Datos de cuenta:<br> <br> </strong></u>Nombre:<u><strong> <? echo $_SESSION[username] ?></strong></u></p> </strong></u>Nombre:<u><strong> <? echo $_SESSION[longname] ?></strong></u></p> </strong></u></p></td> <td width="109" height="416"> <? displayLogin(); ?> <br><br></td> </tr> <tr> <td width="672" height="12" colspan="3"><u><strong>Explorador:</strong></u> <?php function FUNC_brouserUsr(){ //echo FUNC_brouserUsr(); if((ereg("Nav", $_SERVER["HTTP_USER_AGENT"])) || (ereg("Gold", $_SERVER["HTTP_USER_AGENT"])) || (ereg("X11", $_SERVER["HTTP_USER_AGENT"])) || (ereg("Mozilla", $_SERVER["HTTP_USER_AGENT"])) || (ereg("Netscape", $_SERVER["HTTP_USER_AGENT"])) AND (!ereg("MSIE", $_SERVER["HTTP_USER_AGENT"]) AND (!ereg("Konqueror", $_SERVER["HTTP_USER_AGENT"])))) $browser = "Netscape";
elseif(ereg("MSIE", $_SERVER["HTTP_USER_AGENT"])) $browser = "MSIE";
elseif(ereg("Lynx", $_SERVER["HTTP_USER_AGENT"])) $browser = "Lynx";
elseif(ereg("Opera", $_SERVER["HTTP_USER_AGENT"])) $browser = "Opera";
elseif(ereg("Netscape", $_SERVER["HTTP_USER_AGENT"])) $browser = "Netscape";
elseif(ereg("Konqueror", $_SERVER["HTTP_USER_AGENT"])) $browser = "Konqueror";
elseif((eregi("bot", $_SERVER["HTTP_USER_AGENT"])) || (ereg("Google", $_SERVER["HTTP_USER_AGENT"])) || (ereg("Slurp", $_SERVER["HTTP_USER_AGENT"])) || (ereg("Scooter", $_SERVER["HTTP_USER_AGENT"])) || (eregi("Spider", $_SERVER["HTTP_USER_AGENT"])) || (eregi("Infoseek", $_SERVER["HTTP_USER_AGENT"]))) $browser = "Bot";
else $browser = "Other"; return $browser; }
echo FUNC_brouserUsr(); ?> <u><strong>Hora:</strong></u> <? echo date ( "G:i:s" ); ?> <u><strong>Dirección IP:</strong></u> <? echo $_SERVER [ 'REMOTE_ADDR' ]; ?> </tr> </table> </center> </div>
</body> </html> main.php <? /* Include Files *********************/ session_start(); include("database.php"); include("login.php"); /*************************************/ ?>
<html> <meta http-equiv="Content-Language" content="es"> <title>Jpmaster77's Login Script</title> <body> <div align="center"> <center> <table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="679" height="528" id="AutoNumber1"> <tr> <td width="679" height="71" colspan="3"> </td> </tr> <tr> <td width="117" height="24"> </td> <td width="446" height="24"> </td> <td width="109" height="24"> <p align="center">LOGIN</td> </tr> <tr> <td width="117" height="416"> </td> <td width="446" height="416"> </td> <td width="109" height="416"> <? displayLogin(); ?> <br><br></td> </tr> <tr> <td width="672" height="12" colspan="3"><u><strong>Explorador:</strong></u> <?php function FUNC_brouserUsr(){ //echo FUNC_brouserUsr(); if((ereg("Nav", $_SERVER["HTTP_USER_AGENT"])) || (ereg("Gold", $_SERVER["HTTP_USER_AGENT"])) || (ereg("X11", $_SERVER["HTTP_USER_AGENT"])) || (ereg("Mozilla", $_SERVER["HTTP_USER_AGENT"])) || (ereg("Netscape", $_SERVER["HTTP_USER_AGENT"])) AND (!ereg("MSIE", $_SERVER["HTTP_USER_AGENT"]) AND (!ereg("Konqueror", $_SERVER["HTTP_USER_AGENT"])))) $browser = "Netscape";
elseif(ereg("MSIE", $_SERVER["HTTP_USER_AGENT"])) $browser = "MSIE";
elseif(ereg("Lynx", $_SERVER["HTTP_USER_AGENT"])) $browser = "Lynx";
elseif(ereg("Opera", $_SERVER["HTTP_USER_AGENT"])) $browser = "Opera";
elseif(ereg("Netscape", $_SERVER["HTTP_USER_AGENT"])) $browser = "Netscape";
elseif(ereg("Konqueror", $_SERVER["HTTP_USER_AGENT"])) $browser = "Konqueror";
elseif((eregi("bot", $_SERVER["HTTP_USER_AGENT"])) || (ereg("Google", $_SERVER["HTTP_USER_AGENT"])) || (ereg("Slurp", $_SERVER["HTTP_USER_AGENT"])) || (ereg("Scooter", $_SERVER["HTTP_USER_AGENT"])) || (eregi("Spider", $_SERVER["HTTP_USER_AGENT"])) || (eregi("Infoseek", $_SERVER["HTTP_USER_AGENT"]))) $browser = "Bot";
else $browser = "Other"; return $browser; }
echo FUNC_brouserUsr(); ?> <u><strong>Hora:</strong></u> <? echo date ( "G:i:s" ); ?> <u><strong>Dirección IP:</strong></u> <? echo $_SERVER [ 'REMOTE_ADDR' ]; ?> </tr> </table> </center> </div>
</body> </html>
Ahi está todo, muchisimas gracias de antemano! Un saludo.
PD: CREATE TABLE users ( username varchar(30), longname varchar(32), password varchar(35));
|