ugrás a tartalomhoz

MySQL alapú profil...

fiftyfan · 2010. Május. 27. (Cs), 13.35
Szeretném olyanra megcsinálni a login-om hogy minden felhasználónak legyen saját profilja pl: profil.php?id=1
Ez admin profilja
Neve:
Email címe:
stb.
Megmég hasonlókat írna ki.
Meg még egy olyan is kellene Hogy a felhasználó meg tudja változtatni a profiljában néhány adtot pl: e-mail cím és a jelszó

itt a login.php :

<?php
include "config.php";


mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($dbname);

/**************************************************
* Ha még nem lépett be
***************************************************/

if ($_SESSION['belepett']!== true)
{
if (isset($_POST['login']))
{ //Ha postolt adatokat
$nick = addslashes($_POST['nev']);
$pass = md5($_POST['jelszo']);

$sql = "SELECT * FROM users ";
$sql.= "WHERE (nick='".$nick."'";
$sql.= " AND jelszo='".$pass."')";

$query = mysql_query($sql);

if (mysql_num_rows($query) !== 0)
{ //Helyes nick+pass
$_SESSION['nick'] = addslashes($_POST['nev']);
$_SESSION['belepett'] = true;

header("Location: ".$_SERVER['PHP_SELF']);
}

else
{//Hibás nick+pass
print "<font color=#FF0000>hibás felhasználónév vagy jelszó/esetleg az is lehet hogy ki lettél tiltva mert megszegted a szabályzatot.</font>";
}
}
?>
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
<body>
<body background="vista.jpg">
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="19%" height="102">
<center>
<tr>
<td width="100%" height="15">
<p align="center"><b>Felhasználónév</b></td>
</tr>
<tr>
<td width="100%" height="15">
<p align="center"><input type="text" name="nev" size="20" /></td>
</tr>
<tr>
<td width="100%" height="15">
<p align="center"><b>Jelszó</b></td>
</tr>
<tr>
<td width="100%" height="15">
<p align="center">
<input type="password" name="jelszo" size="20" /></td>
</tr>
</table>
<p align="center">
<input type="submit" name="login" value="Belépés" /> </p>
</center>
</body>
</html>


</form>
<?php
}//Nem lépett be

/********************************
* Ha már belépett
*******************************/
else
{//Be van lépve

print "Üdvözlünk, a weboldalon : ".$_SESSION['nick'];
print "<a href=\"profil.php\">Profil </a><br />";
include ("fooldal.php");

print " <a href=\"logout.php\">kijelentkezés</a><br />";


}




?>
 
1

Elég gyenge próbálkozás...

fiftyfan · 2010. Május. 27. (Cs), 13.42
Már próbáltam is írni 1et de semmi siker:S pedig létrehoztam az sql-ben a táblát és leellenőriztem minden elérési út jólvan megadva és sqlben a táblában egy üres mezőt hoz létre de semmi nem kerül bele pls help!

<form method="post" action="">
<table>
<tr>
<td><b>Felhasználónév</b></td>
<td><input type="text" name="nev" /></td>
</tr>
<tr>
<td><b>E-mail cím:</b></td>
<td><input type="text" name="email" /></td>
</tr>
<tr>
<td><b>Város</b></td>
<td><input type="text" name="varos" /></td>
</tr>
<tr>
<td><b>Teljes neved</b></td>
<td><input type="text" name="teljesnev" /></td>
</tr>
<tr>
<td colspan="2"><input type="submit" name="elkuld" value="Mentés" />
</td>

</tr>
</table>
</center>
</form>
<?php



$felhasznalo = "root";
$jelszo = "";
$adatbazis = "profil";
$kapcsolat = mysql_connect ("localhost",$felhasznalo,$jelszo );
if ( ! $kapcsolat )
die ( "Nem lehet kapcsolódni a kiszolgálóhoz! " );

mysql_select_db ($adatbazis, $kapcsolat )
or die ( "Nem lehet megnyitni a $adatbazist: ".mysql_error () );

$parancs = "INSERT INTO profil (nev,email,varos,teljesnev )
VALUES ( '$nev','$email','$varos','$teljesnev' )";

mysql_query ( $parancs, $kapcsolat )
or die ( "Nem lehet adatot hozzáadni a \"profil\" táblához: "
.mysql_error () );
mysql_close ( $kapcsolat );
include "config2.php";
include "reg_check.php";
mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($dbname);

if (isset($_POST['elkuld']))
{

$sql = "INSERT INTO users (nev,email,varos,teljesnev) ";
$sql.= "VALUES('','".$_POST['nev']."','";
$sql.= md5($_POST['email'])."','".$_POST['varos']."')";
$query = mysql_query($sql) or die ("Valami baj van az adatbázissal.");

print "<center> Kedves <b>$nick</b>!</center><br><br> a profilod sikeresen mentésre került adatbázisunkban
<br><br>";

}
?>
// már sok helyen utánanéztem/kérdeztem de sehol nemtudott senki sem megoldást nyújtani, ez az oldal az utolsó reményem.
2

2 lehetséges hiba

troy1979 · 2010. Május. 27. (Cs), 22.26
- a form action attributuma miért üres string? (action="")
- 2 körben a $parancs, és a $sql változók tartalmát ( mysql insert utasitás) vizsgálnám meg
- megnézném, hogy minden változó behelyettesitődik-e (valszeg nem )
- különösen a $parancs esetében sanszos, hogyha a register_globals ki van kapcsolva a php.ini-ben , akkor az adott változók nem kapnak értéket, és csak üres string-ek iródnak az adatbázisba
3

pontosan!

fiftyfan · 2010. Május. 28. (P), 13.28
Igen pontosan ez a problémám vagyis: Katt ez már többszöri próbálkozás eredménye és azóta bővült is kicsit de a szerkezet semmiben sem változott. Ha tudjátok v tudod a megolást kérlek válaszolj, mert mindíg csak üres sorok kerülnek az adatbázisba és már akár hogy próbálom osztom szorzom nem ikerül sajnos.Előre is thx a válaszokat.
4

register_globals, $_POST

solkprog · 2010. Május. 28. (P), 13.46
használd a $_POST változott.

$nev=$_POST['nev'];
$email=$_POST['email'];
//stb.
$parancs = "INSERT INTO profil (nev,email,varos,teljesnev )
VALUES ( '$nev','$email','$varos','$teljesnev' )";
(vagy használd rögtön a $_POST tömb értékeit az adatbázis íráskor(is))
5

Ellenőrzés

Poetro · 2010. Május. 28. (P), 14.50
Ellenőrizetlenül semmilyen a felhasználótól jövő változót nem használunk. Előbb megnézzük a felhasználó egyáltalán elküldte-e a változót, ezzel elkerülve a Notice jellegű hibaüzeneteket, valamit megvizsgáljuk azok olyan típusúak, formájúak, mint amilyet vártunk, majd csakis ezután megfelelően escapelve írjuk be adatbázisba. MySQL esetén stringekre a mysql_real_escape_string-et használjuk, a számokat akár sprintf által, akár a PHP beépített függvényeivel érdemes megfelelő formára hozni, biztos, ami tuti. Email, és más speciálisan formázott stringek esetén esetén például érdemes lehet a filter_var és a filter_input_array használata PHP 5.2-től felfelé.
6

teljesen igazad van.

solkprog · 2010. Május. 28. (P), 15.04
Teljesen igazad van, de mentségemre legyen szólva csak átfutottam a topicot, és egyértelműnek gondoltam (azt hittem) hogy már valaki szólt ezért...
fiftyfan: ne a addslashes() használd adatbázisba íráskor mert az nem escapeel minden karaktert! Az addslashes() nem erre való.
7

Igen, igen

fiftyfan · 2010. Május. 28. (P), 19.09
Igen, valóban már rájöttem hogy a változóknak értéket kell adnom, helyesen így néz ki a kód:Katt ( azért linkelek hogy ne szemeteljem tele a mondanivalómat ) szal így már oks és már hibát sem ír nagyon pici hibája lehet mikor rábökök a mentésre hiba nélkül tovább ugrik ide: Katt ( azaz nem találja a megadott file-t ) majd az sql-be egy újabb üres string kerül... nem tudom nem-e azt rontottam el hogy a <form action="$_SERVER['PHP_SELF']"-et beírtam a semmi helyett, de úgy is próbáltam bár értelmetlen de kipróbáltam h a configot írtam oda ( elérési út ) de semmi. Válaszaitokat nagyon szépen köszönöm és rámfordított időtöket is!