ugrás a tartalomhoz

Regisztrációs űrlap PHP-ban

Sovereign · 2006. Nov. 9. (Cs), 08.39
Regisztrációs űrlapot készítek és van egy kis problémám. Ürlap küldésekor a progri ellenőrzi, hogy minden adat ki van a töltve és egyezik e a jaleszó (jelszó jelszó mégegyszer).

Nem szeretném elkülöníteni az űrlapot és az ellenörzést. Ám amint betölt az oldal lefut a PHP kód is. Mivel ekkor még nincsen kitöltve az űrlap kiírja, hogy nincs minden adat megadva. Ez nem is lenne baj. Ám! (Az ellenőrzés egy szimpla if) ha igaz - vagyis ki van töltve rendesen - akkor továbbítania kell az adatokat egy másik lapnak ami feltölti az adatbázist. Ha hamis - nem megy sehova - . A probléma az, hogy bárhogy variálom az igaz vagy a hamis ág utásítását két dolog lép történik. Vagy elküldi ha ki van töltve ha nem. Vagy
nem küldi el.

A kérdésem. Meg lehet vhogy állítani addig a program futását amíg nem klikkelek rá a regisztrál gombra?

Próbáltam egy onclick-et beiktatni. Sikerem nem volt. Kicsit utána néztem neten de minden hol javascript-et hívnak meg az onclick-nél. PHP-vel meg lehet oldani vagy minden képpen java script kell - amihez egyenlőre egyáltalán nem értek :( -

Elnézést, hogy ilyen nagyra sikeredett! :D
 
1

nem ért

virág · 2006. Nov. 9. (Cs), 09.21
Én nem értem..., de remélem a kódod átláthatóbb, mint a kérdésed, szerintem majd ollózz ide valamit belőle, hátha... :) :P
2

onsubmit

Anonymous · 2006. Nov. 9. (Cs), 09.27
Javascript a form elküldésénél, onsubmit eseményre. Ha a meghívott függvény true-val tér vissza (return fuggveny();) akkor elküldődik az űrlap, ha false, akkor nem.
3

Sztem ...

Anonymous · 2006. Nov. 9. (Cs), 09.48
Én így szoktam megoldani a dolgot:

<form>
...
<input type="submit" name="reg_submit" value="Regelek"/>
</form>

<?PHP

if ( $_POST["reg_submit"] )
{
Adatok ellenőrzése, megfelelő műveleket végrehajtása ...
}
else
{
Ide jön a form kiiratása
}

?>

A megoldást én még annyival szoktam kiegészíteni, ha hibás adat van, akkor visszatölti a formot, a POST-olt adatokat pedig visszailleszti a megfelelő helyre és a form előtt megjeleníti a hibákat, hogy tudja a user, hogy mit kell javítani ...
4

igen: sztem

Táskai Zsolt · 2006. Nov. 9. (Cs), 10.19
tehát akkor összefoglalva a fenti javaslatot:

<?PHP

if ( $_POST["reg_submit"] )
{
  Adatok ellenőrzése, megfelelő műveleket végrehajtása ...
  if ($ok) {
    header("Location: ".$url);
  } else {
    $hibaüzenet = "gond: xxx";
  }
}
else
{
  adatok alapértelmezett feltöltése (pl. dátum mára);
  $hibaüzenet = "";
}

Ide jön a form kiiratása (a fent beállított adatokkal, hibaüzenettel)

?>
5

Hibaüzenet

Anonymous · 2006. Nov. 9. (Cs), 10.25
Én a hibaüzenetet tömbbe tenném, mert több is lehet belőle. Célszerű minden mezőhöz kiírni, mi a hasfájás.
6

Nem kell tömb ...

Anonymous · 2006. Nov. 9. (Cs), 10.35
Én nem tömböt használok, hanem az egyes mezők vizsgálatakor ha hiba van, akkor hozzáfűzöm a $hibauzenet-hez a következőt hibát <br/>-rel a végén.
7

KÖSZÖNET!

Sovereign · 2006. Nov. 9. (Cs), 11.36
Nagyon köszönöm mindekinek asegítséget!

Megnézem mi sül ki belőle :)
Hát....

Itt a kód:
<html>
<head>
<title>Regisztráció</title>
</head>
<body>
<?php
if ( $_POST['submit'] = 'Regisztrál' )
{
if (empty($_POST['user']) && empty($_POST['pass']) && empty($_POST['rpass']) && empty($_POST['vnev'])
&& empty($_POST['knev']) && empty($_POST['city']) && empty($_POST['address']) && empty($_POST['iranysz'])
&& empty($_POST['email']))
{
// header('Location: '.$url);
$hiba = 'Nincs minden adat megadva!';
}
else
{
// $hiba = 'Nincs minden adat megadva!';
header('Location: '.$url);
}
}
else
{
print $hiba;
}
print "<form method='POST' action=''>
<table width='100%' border='0' cellspacing='1' cellpadding='0'>
<tr>
<td>Felhasználói név:</td>
<td><input type='text' name='user' values''</td>
</tr>
<tr>
<td>Jelszó:</td>
<td><input type='text' name='pass' values''></td>
</tr>
<tr>
<td>Jelszó újra:</td>
<td><input type='text' name='rpass' values''></td>
</tr>
<tr>
<td>Vezeték név:</td>
<td><input type='text' name='vnev' values''></td>
</tr>
<tr>
<td>Kereszt név:</td>
<td><input type='text' name='knev' values=''></td>
</tr>
<tr>
<td>Város</td>
<td><input type='text' name='city' values=''></td>
</tr>
<tr>
<td>Cím</td>
<td><input type='text' name='address' values=''></td>
</tr>
<tr>
<td>Irányító szám: </td>
<td><input type='text' name='iranysz' values=''></td>
</tr>
<tr>
<td>E-mail cím:</td>
<td><input type='text' name='email' values''></td>
</tr>
</table>
<input type='submit' name='submit' value='Regisztrál' onclick='upload.php'>
</form>";
?>
</body>
</html>

A hiba. Ha nem viszek be adtot nem megy sehova. Ha csak egy vmit beviszek már megy. Az & lecseréltem and re akkor sem.
8

példa

virág · 2006. Nov. 9. (Cs), 12.53
Az általad irottból, gyorsan, munkaidőmben (sajnálj!!!) :D Írtam neked egy példát, alakítsd. A tiédben sok a hiba, pl. a HTML kódban a VALUES -nél sok helyen nincs egyenlőségjel, a gombod is submit típusú, miközben itt célszerűbb a button típus stb. stb.


<html>
<head>
<title>Regisztráció</title>
</head>
<body>
<?php


if ( $_POST )
{

$hibatomb = Array(); //ebbe mennek a hibák

print_r($_POST);


// így lesed a mezőket
if (empty($_POST['user'])){


$hibatomb[]='Nincs user';

}


if (empty($_POST['pass'])){


$hibatomb[]='Nincs pass';

}


if (!empty($hibatomb)){

echo "<br>Hibalista-tömb tartalma: ";
print_r($hibatomb); //hiba kiiratása
}
else
{
echo "<br>Siker! ";
echo "okay - urlap elfogadva"; // elfogadva az urlap

}
}
else
{
print " Ennek az ágnak nem sok értelme van jelenleg. :)";
}



print "<form name='urlap' method='POST' action='".$_SERVER['PHP_SELF']."'>
<table width='100%' border='0' cellspacing='1' cellpadding='0'>
<tr>
<td>Felhasználói név:</td>
<td><input type='text' name='user' values=''</td>
</tr>
<tr>
<td>Jelszó:</td>
<td><input type='text' name='pass' values=''></td>
</tr>
<tr>
<td>Jelszó újra:</td>
<td><input type='text' name='rpass' values=''></td>
</tr>
<tr>
<td>Vezeték név:</td>
<td><input type='text' name='vnev' values=''></td>
</tr>
<tr>
<td>Kereszt név:</td>
<td><input type='text' name='knev' values=''></td>
</tr>
<tr>
<td>Város</td>
<td><input type='text' name='city' values=''></td>
</tr>
<tr>
<td>Cím</td>
<td><input type='text' name='address' values=''></td>
</tr>
<tr>
<td>Irányító szám: </td>
<td><input type='text' name='iranysz' values=''></td>
</tr>
<tr>
<td>E-mail cím:</td>
<td><input type='text' name='email' values=''></td>
</tr>
</table>
<input type='button' name='gomb' value='Regisztrál' onclick='javascript: urlap.submit() '>
</form>";
?>
</body>
</html>
16

Hibás javítások

krey · 2006. Nov. 10. (P), 01.22
Nos.
1. A HTML4 szabvány szerint az input tagnek nincs values attríbuma.
2. Az input-ot button-re javítani a form alján... A majdnem jó megoldást nem javítjuk rosszra!
Sovereign ezt írta:
<input type='submit' name='submit' value='Regisztrál' onclick='upload.php'>
Ebből feltételezem, hogy a form action-jének szerette volna beállítani. No nembaj most önmagára POST-ol a script. Talán így lenne helyes:
<input type='submit' value='Regisztrál' />
Megjegyzem a te megoldásod használhatatlanná teszi a formot, ami talán nem utolsó szempont.
3. A PHP_SELF-ben nem bízunk, a helyes használat:
<? echo htmlentities($_SERVER["PHP_SELF"]); ?>
4. Formokat lehet csinálni táblázatok nélkül is, feleekkora html kóddal.

üdv. krey
17

igaz

virág · 2006. Nov. 10. (P), 07.48
amint láthatod a kérdező kódját vettem alapul, célom munkaidőm alatt, sietve az volt, hogy működjön a formja és lássa mit rontott el, nekem nem tűnik úgy, hogy használhatatlanná tenné a formot, inkább a te hozzászólásod tűnik felesleges szőrszálhasogatásnak, ami a kérdezőn nem segít, csak fikáz. de hajrá! :)

1. ez igaz, de amint látod a kérdező telejsen rosszul használta, ezt javítottam, úgyhogy a hozzászólásod csak fikázásnak minősül...

"2. Az input-ot button-re javítani a form alján... A majdnem jó megoldást nem javítjuk rosszra!" - semmi baj a buttonnal, ez csak a te szubjektív véleményed... ő OnClick-et szeretett volna használni, ezért énis ezt használtam fel, nem akartam ráerőszakolni, hogy mi a jó szerintem, veled ellentétben...

A 3. pontot inkább nem kommentálom...attól függ a használata, hogy milyen szerveren fut a PHP, ez olyan mint a sok-sok bugyuta SQL injekció elleni védelem, semmit nem ér, de jó okoskodásra... ez persze nem jelenti a biztonságos programozás elvetését, de ez nem ezen áll vagy bukik...nagyon sok ilyet láttam már, utána évek alatt eltűntek, mert értelmüket vesztették stb.


4. Teljesen igaz, de semmi köze a kérdező problémájához. Ettől függtelenül megtanulhatja, úgyis muszáj lesz neki előbb vagy utóbb ha ezzel akar foglalkozni. A Formok helyes használatáról még a W3C se tud dönteni és kompromisszumos + hatékony módszert találni, de látom neked sikerült! Gratula!


üdv.
j.
9

Én így csinálom ...

Anonymous · 2006. Nov. 9. (Cs), 13.24

<?php

 # A POST-olt adatok vizsgálata
 function Check_Form()
 {
    global $felhnev;
    global $jelszo_01;
    global $jelszo_02;
    global $v_nev;
    global $k_nev;
    global $varos;
    global $ir_szam;
    global $cim;
    global $lev_cim;

    $GLOBALS["hibauzenet"] = "";
    $errorcode = 0;

    if ( !$felhnev or trim($felhnev) == "" )       
    {
       $GLOBALS["hibauzenet"]  .= " - Hiányzó név!<br/>"; 
       $errorcode++;
    }

    # Az if részt megismétled annyiszor ahány változó van. Az ir_szám-nál lehet
    # vizsgálni, hogy csak számot írt-e be és csak az első 4 karakter-t figyelembe venni

    # e-mail címre én használok egy függvényt, ami ellenőrzi, hogy helyes formában van-e
    # megadva az e-mail cím. Tehát ezzel ki van szűrve, ha nem ad meg, akkor egyből hiba

    # Ha nincs hiba, akkor TRUE értékkel tér vissza a függvény, ha van akkor FALSE értékkel
    if ( $errorcode == 0 ) { return true; } else { return false; }
 }

 # Ha elküldték a FORM-ot ...
 if ( $_POST["reg_submit"] ) 
 {
    extract($_POST);

    if ( Check_Form() ) 
    { 
       # Ha itt vagyunk, akkor helyes minden adat. Fel lehet dolgozni őket ...
    }
    else
    {   
       echo $hibauzenet;
       # Form include-olása egy másik file-ból, ahol value="<?php echo $mező_neve >"
       # ezáltal a kitöltött adatokat nem kell újra megadni
    }
 }
 else 
 {
    # form include-olása. mivel nincs még post-olt adat ezért a mezők üresek lesznek
 }

?>
A form-ban pedig nem kell onclick, mert minek ...
10

akár igaz is lehetne...

virág · 2006. Nov. 9. (Cs), 13.31
A formban nem kell onClick, mert minek... Ez akár igaz is lehetne, ha nem lenne rá lehetőség, de mivel van, ezért előfordulhat, hogy használod. Soha nem lehet tudni... Ő így akarta, ezért jobb, ha megtanulja használni, mintha nem tudná használni, aztán döntsön mindenki maga és ne jelentsünk ki ilyen kategórikusan valamit... :) (Hozzáteszem: én se szeretem az űrlapoknál az OnClick-et. stb.)
11

Persze ...

Anonymous · 2006. Nov. 9. (Cs), 13.50
... igazad van, de jelen esetben meglátásom szerint felesleges az onClick.
12

sztem is

virág · 2006. Nov. 9. (Cs), 13.55
Sztem is :D Ebben akkor jól megegyeztünk! :)
13

Köszönet 2

Sovereign · 2006. Nov. 9. (Cs), 18.21
Még egyszer köszönet mindekinek. gondoltam is, hogy lesz pár hibám. A PHP-vel még alig pár hónapja foglalkozom. A dolgok jó részét netről kellett össze szednem, hogy mi hány méterre is működik. Szakdolgozatot kell majd írnom de a tempó amiben suliban haladunk az... éppen ezért kezdtem egy kis saját kutatást.

Mégegyszer köszönök mindent!
14

SZÉGYENLEM MAGAM!

Sovereign · 2006. Nov. 9. (Cs), 21.26
Tökéletesen megértem ha ezek után szóba sem áll velem senki. Kipróbáltam mind a kér verziót. Első verzióban ég adta világon semit nem csinál. Csak a formot include-olja be állíndóan.

2as verzióval többre mentem ám az action részt b@szik végrehajtani. Minden változót külön ellenörzök. Ha mindegyik ki van töltve ki is dobja, hogy minden remek. A $ref változór upload.php-re állítja. Ezt kiiratom az actionben. ott van mert kiiratom mégegyszer. De... nem érdekli.
Én lelövöm magam tuti....
15

Nem igazán értem ...

Anonymous · 2006. Nov. 9. (Cs), 21.44
A $ref a REFERER-t tartalmazza? Ha igen, akkor miért nem $_SERVER["PHP_SELF"]-et íratsz az action-be?
18

upload

Ferris · 2007. Már. 10. (Szo), 18.21
Upload.php ???? mit tartalmaz ???
toltsetek mar fel egy teljes mukodokepes valamit amit beszurok a kis html oldalamba es mukodik ez a sazr...es hol adom meg h melyi kemail cimre kuldje az infot meg ilyenek ??
19

Regizés

Sam105 · 2007. Júl. 18. (Sze), 12.03
Sziasztok!

Valaki tudna segíteni nekem , hogy "Regisztrációs űrlapot" hogyan tudnék csinálni?

Előre is köszi!
20

Ajánlom magamat (a jegyzetemet)

Nagy Gusztáv · 2007. Júl. 19. (Cs), 08.12
Érdemes letölteni és megnézni a jegyzetemet, elég alaposan elmagyaráztam egy példán keresztül.