ugrás a tartalomhoz

Mezoknek az allapotat kell lementeni

zoliky · 2006. Júl. 2. (V), 22.24
Szuksegem van egy kis segitsegre.
Nem tudom pontosan, hogyan irjam le a problemat de megprobalom reszletesen!

Van egy PHP oldal amely regisztraciora szolgal. Tobb mezot ki kell tolteni ahoz, hogy valaki regisztralja magat az adatbazisba.

Amikor megnyomom a SUBMIT gombot a lapon akkor PHP elenorzi ha a "Username" kissebb mint 3 betu, ugyanezt teszi a mail mezovel, es elenorzi ha a jelszo minimun 8 karakter, maskeppen hibat fog jelezni.

A kod:

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

$problem = FALSE;

if (strlen($_POST['username'] < 3 )) {
$problem = TRUE;
print '<p>A felhasznalo neve tul rovid</p>';
}

if (strlen($_POST['email']) < 3) {
$problem = TRUE;
print '<p>Az email cim tul rovid !</p>';
}

if (strlen($_POST['password']) < 8) {
$problem = TRUE;
print '<p>A jelszo nem lehet kisebb mint 8 karakter!</p>';
}
}

if (!$problem) {
print 'A regisztracio sikeres';
} else {
print 'A regisztracio nem sikerult';
}

<form action="register.php" method="post">
Username:<br /><input type="text" name="username" size="30" maxlength="25" /><br />
Email:<br /><input type="text" name="email" size="30" maxlength="50" /><br />
Password:<br /><input type="password" name="password" size="30" maxlength="15" /><br />
<p><input type="submit" name="submit" value="Regisztral" /></p>

Most ha belep egy felhasznalo a lapra, egy olyan user nevet kell valaszon amely hosszab mint 3 betu. Ha ez nem tejesul akkor a kov. hiba uzenet fogadja -> A felhasznalo neve tul rovid.

Szeretnem ha le tudnam menteni a "Username" es az "Email" mezok allapotat. Azt szeretnem elerni peldaul, hogy ha a Usernev megfelel (monjuk 5 betus) de az e-mail mezo kisseb mint 3 betu akkor a felhasznalo ne keljen beirja ujbol a Usernevet csak az E-mailt cimet.

Ha jol tudom ezt valahogy HTML-be kell elohivni az input value="" dologal.

Kerem ha lehet akkor segitsetek. Nagyon sokat kinlodtam es szuksegem van egy kis segitsegre, kezdo vagyok.
User
Elnezest kerek a forum moderatortol, hogy ma ketszer irok mar :)
 
1

jól tudod

talger · 2006. Júl. 2. (V), 23.09
például így:

Username:<input type="text" name="username" size="30" maxlength="25" value="<?php print $_POST['username']; ?>"/>
2

ok

zoliky · 2006. Júl. 2. (V), 23.31
Igen, en is eloszor ezt probaltam, es mukodik !
De mast szeretnek elerni. Ha a usernev hibas (kisebb mint 3 karakter) akkor azt mar ne jelenitse meg, csak azokat a mezoket jelenitse amik jol voltak kitoltve (mert ami jol van kitoltve mar ne legyen ujbol irva).

Koszonom !
3

külön hibák

Hodicska Gergely · 2006. Júl. 3. (H), 00.16
Egyszerű, tárold le mezőnként, hogy van-e bennük hiba, és akkor adott mező esetén el tudod dönteni, hogy jó-e a hozzá tartozó érték.
<?php
...
if (strlen($_POST['username'] < 3 )) {
    $problem['username'] = TRUE;
    print '<p>A felhasznalo neve tul rovid</p>';
}
...
if (empty($problem)) {
    print 'A regisztracio sikeres';
} else {
    print 'A regisztracio nem sikerult';
}
...
Username:<br /><input type="text" name="username" size="30" maxlength="25" value="<?php echo isset($_POST['username']) && !isset($problem['username']) ? $_POST['username'] : "" ?>" /><br />
?>
Felhő
4

koszonom

zoliky · 2006. Júl. 3. (H), 08.41
Koszonom !
Ha nagyon hosszu a value="" kozti sor :

<?php echo isset($_POST['username']) && !isset($problem['username']) ? $_POST['username'] : "" ?>

nem problema ez a php-nek ?
6

type=hidden

vbence · 2006. Júl. 3. (H), 09.45
No, és mit szólnél, ha csak a type-ot változtatnád (hidden-re). Mivel a következő postkor meg kell kapja a php megint a helyesen kitöltött mezőket is...
5

nem mukodik...

zoliky · 2006. Júl. 3. (H), 09.44
Megsem erem el amire gondoltam a fenti koddal, mindenesetre koszonom Gergely !

Megadom a lapot amelyen dolgozok, szoval itt a kod:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type"content="text/html; charset=iso-8859-1" />
<title>Document test</title>
</head>
<body>

<?php
ini_set('display_errors', 1);

// Connect to MySQL and select the database
include ('./includes/mysql.php');


// Remove HTML tags
function varCheck($input) {
if($input) {
$output = strip_tags($input);
return $output;
}
}

// Verify if user exist in database
$find_username = mysql_query("SELECT username FROM register WHERE username = '".varCheck($_POST['username'])."'");
$duplicate_username = mysql_num_rows($find_username);

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

$problem = FALSE;

if (empty ($_POST['username'])) {
$problem = TRUE;
print '<p>Please type a username</p>';
}

if ( ($duplicate_username > 0 )) {
$problem = TRUE;
print '<p><b>User already exist in database.</b></p>';
}

if (empty ($_POST['email'])) {
$problem = TRUE;
print '<p>Please type an e-mail address.</p>';
}

if (empty ($_POST['password'])) {
$problem = TRUE;
print '<p>Please type a password</p>';
}

if (strlen($_POST['password']) < 8) {
$problem = TRUE;
print '<p>Password is short</p>';
}

if ($_POST['password'] != $_POST['confirm']) {
$problem = TRUE;
print '<p>Your password did not match your confirmed password!</p>';
}
}

if (!$problem) {
if ($duplicate_username == 0 ) {
mysql_query ("INSERT INTO register (user_id, username, email, validate) VALUES (0, '".varCheck($_POST['username'])."', '".varCheck($_POST['email'])."', '".rand(1,99999)."')");
print '<p><b>User added.</b></p>';
} else {
print mysql_error();
}
} else {
print '<p><b>Please try again</b></p>';
}


?>

<form action="testing.php" method="post">
Username:<br /><input type="text" name="username" size="30" maxlength="25" value="" /><br />
Email:<br /><input type="text" name="email" size="30" maxlength="50" value=""/><br />
Password:<br /><input type="password" name="password" size="30" maxlength="15" /><br />
Confirm password:<br /><input type="password" name="confirm" size="30" maxlength="15" /><br />
<p><input type="submit" name="submit" value="Register" /></p>

</body>
</html>

Azt akarnam elerni ha a felhasznalo letezik az adatbazisba akkor annak a nevet ne mentse le a Username mezoben, ha pedig a felhasznalo nev megfelel es nem letezik az adatbazisba, de a jelszo hibas a Usernevet ne kelljen ujbol beirni.

Elnezest ha sokat kerek, de szeretnem megoldani ezt a problemat, remelem most, hogy a teljes kodot megadtam ki lehet deriteni a bajt.
7

$userName

jbtibor · 2006. Júl. 3. (H), 10.44
Hozz létre egy $userName = $_POST['username'] változót, és végig azt használd.
Mindenféle ellenőrzés során olyan értéket raksz bele, amilyent akarsz (pl. üres stringet), és a végén egyszerűen kiíratod, így nem a végén kell mindenféle ellenőrzést csinálj.

Továbbá az "INSERT INTO register" után kellene egy hibaellenőrzés, mert mi van akkor, ha közben egy másik felhasználó már regisztrált ugyanazzal a névvel?
8

ok

zoliky · 2006. Júl. 3. (H), 12.35
Tudnal egy peldat irni ?
Nem igazan ertem amit leirtal.

Kosiz !
9

pl.

jbtibor · 2006. Júl. 3. (H), 16.04
$userName = $_POST['username'];

if (regisztrált($userName))
{
// ha a felhasznalo letezik az adatbazisba akkor annak a nevet ne mentse le a Username mezoben
$userName = "";
}
else
{
//ha pedig a felhasznalo nev megfelel es nem letezik az adatbazisba, de a jelszo hibas a Usernevet ne kelljen ujbol beirni.
}

<input type="text" name="username" size="30" maxlength="25" value="$userName" />
11

koszonom !

zoliky · 2006. Júl. 3. (H), 16.20
Koszonom ! Vegul sikerult megoldani a problemat
10

sikerult

zoliky · 2006. Júl. 3. (H), 16.08
Sikerult megvalositani amit akartam !
Koszonom Hodicska Gergely a segitseget !
A problema tollem volt, ugyanis nem irtam be a kov. sort :

global $problem;

a $problem['username'] erteket nem tudta elerni a HTML, mert be volt zarva a $problem valtozo az if funkciokba.

Most mar mukodik !

Meg lenne egy kerdesem ha nem haragudtok meg, azt szeretnem elerni, hogy szineze be pirosal azt a mezot amit elhibaztam, mit kene csinalni ?

Koszonom !