Autor Zpráva
lenkali
Profil *
Dobrý den, prosím Vás o radu

mam formular, kde zadavam

formular:
jmeno
prijmeni
heslo
kontrolahesla

a skript, ktery ma zjistit zda heslo = kontrola hesla,
pokud se heslo a kontrolahesla lisi, ma se vratit zpatky

skript:
if ($_REQUEST['heslo'] !== $_REQUEST['kontrolahesla
header("Location: registrace.php");

Skript mi nefunguje, prosim o radu, jak ho mam napsat a jak udelat to,
aby se v pripade nesouhlasnych hesel vratil program na formular s tim,
ze tam v polickach zustanou zapsane hodnoty
BlackMartin
Profil
Zkus
if ( $_POST['heslo'] != $_POST['kontrolahesla'] )
{
header("Location: registrace.php");
}
lenkali
Profil *
BlackMartine, nefunguje to, vrací to i v případě rovnosti hesel na stránku registrace,php
jen když je to prázdné , tak se uloží data

formular vypada zkracene takto:

<td valign="top">
<input type="text" name="heslo" size="20"></td>
<td height="21" valign="top">
<p style="margin-top: 1px; margin-bottom: 1px">
<font face="Tahoma" style="font-size: 10pt" color="#FF0000">Přihlašovací&nbsp; heslo</font></p>
</td>
</tr>
<tr>
<td valign="top">
<input type="text" name="kontrolahesla" size="20"></td>
<td height="21" valign="top">
<p style="margin-top: 1px; margin-bottom: 1px">
<font face="Tahoma" style="font-size: 10pt" color="#FF0000">Kontrola hesla</font></td>
BlackMartin
Profil
Napiš sem celý PHP kód, kterým ten formulář zpracováváš.
lenkali
Profil *
<?php
if ( $_POST['heslo'] != $_POST['okheslo'] )
{
header("Location: registrace.php");
}

do
{
require_once('./databaze.inc');
if (!databaze()) break;

mysql_query("SET NAMES 'cp1250'");


@$vysledek = mysql_query("INSERT INTO uzivatel (jmeno, prijmeni , heslo) VALUES ('{$_REQUEST['jmeno']}','{$_REQUEST['prijmeni']}','{$_REQUEST['heslo'] }')");


if (!$vysledek)
{
echo "Číslo chyby: ".mysql_errno()."<br />Popis chyby: ".mysql_error();
exit;
}

$id_uzivatele=mysql_insert_id();
?>
lenkali
Profil *
<?php
if ( $_POST['heslo'] != $_POST['kontrolahesla'] )
{
header("Location: registrace.php");
}

do
{
require_once('./databaze.inc');
if (!databaze()) break;

mysql_query("SET NAMES 'cp1250'");


@$vysledek = mysql_query("INSERT INTO uzivatel (jmeno, prijmeni , heslo) VALUES ('{$_REQUEST['jmeno']}','{$_REQUEST['prijmeni']}','{$_REQUEST['heslo'] }')");


if (!$vysledek)
{
echo "Číslo chyby: ".mysql_errno()."<br />Popis chyby: ".mysql_error();
exit;
}

$id_uzivatele=mysql_insert_id();
?>
BlackMartin
Profil
Takhle by to mělo fungovat
<?php
$heslo = $_POST["heslo"];
$kontrolahesla = $_POST["kontrolahesla"];
$jmeno = $_POST["jmeno"];
$prijmeni = $_POST["prijmeni"];
$heslo = $_POST["heslo"];
if ($heslo!=$kontrolahesla)   { header("Location: registrace.php"); }
elseif ($heslo==$kontrolahesla)
{
require_once('./databaze.inc');
if (!databaze()) die;

mysql_query("SET NAMES 'cp1250'");


@$vysledek = mysql_query("INSERT INTO uzivatel (jmeno, prijmeni , heslo) VALUES ('$jmeno','$prijmeni','$heslo')");
if (!$vysledek)
{
echo "Číslo chyby: ".mysql_errno()."<br />Popis chyby: ".mysql_error();
die;
}
$id_uzivatele=mysql_insert_id();		
}
?>


Mimochodem když budeš mít ty hesla v DB tak tam aspoň přidej nějaký hash ( MD5, SHA1 ... ).
lenkali
Profil *
Jee, tak to kdybych vedela, co je MD5 , SHA1... jsem teprve u predavani promennych

jinak to zase nefunguje, zkousim to s tim REQUEST
BlackMartin
Profil
http://cs.wikipedia.org/wiki/MD5

Zkus to s POST.
lenkali
Profil *
aha MD5 zajímavé
BetaCam
Profil
lenkali

Na REQUEST bych bejt tebou radši zapoměl. Jediné k čemu bych ho v tvém případě použil je debug při kontrole tebou předávaných dat.

Takže si místo toho tvého scriptu kterej kontroluje ty hesla a v případe úspěcho je vkládá do DB. ( Prostě místo toho scriptu na kterej směřuje formulář ) Dej. Script

<?php
echo 'Pole REQUEST ----------------------------------------------<br />'
echo '<pre>';
var_dump($_REQUEST);
echo '</pre>';

echo 'Pole GET -------------------------------------------------<br />'
echo '<pre>';
var_dump($_GET);
echo '</pre>';

echo 'Pole POST ---------------------------------------------------<br />'
echo '<pre>';
var_dump($_POST);
echo '</pre>';
?>


Po tom co ti vypíše tento script budeš vědět kde ty hodnoty máš uložené a jestli sou opravdu správné. Pak se podle toho zařid. Popřípade sem pošli to co ti script vypsal.
lenkali
Profil *
Všem děkuji za příspěvky a rady BETACAME, hláška:

Parse error: syntax error, unexpected T_ECHO, expecting ',' or ';' in C:\xampp\htdocs\rpr\uloz_uzivatele.php on line 3

Spravila bych si to, jen vubec nechapu Tvuj kod..........kde a co prebira data z formulare

<?php
echo 'Pole REQUEST ----------------------------------------------<br />'
echo '<pre>';
var_dump($_REQUEST);
echo '</pre>';

echo 'Pole GET -------------------------------------------------<br />'
echo '<pre>';
var_dump($_GET);
echo '</pre>';

echo 'Pole POST ---------------------------------------------------<br />'
echo '<pre>';
var_dump($_POST);
echo '</pre>';
?>
lenkali
Profil *
Black Martine, taktež děkuji za rady a prosím Vás všechny

- když zadám do formuláře
jméno
příjmení
heslo
kontrolahesla


jak udělat to, ze kdyz skript zjisti, ze heslo neni spravne, vratim se zpet na formular ale vse co tam bylo zadane se v polickach znovu objevi...
jako byste stiskli v prohlizeci internetovem ZPET...vsechna data zustanou ve formulari zadaná

děkuji


Příkaz : header("Location: registrace.php"); mi vše smaže z políček po návratu na formulář
Leo
Profil
"jak udělat to, ze kdyz skript zjisti, ze heslo neni spravne, vratim se zpet na formular ale vse co tam bylo zadane se v polickach znovu objevi...
jako byste stiskli v prohlizeci internetovem ZPET...vsechna data zustanou ve formulari zadaná "

Pokud stranku posilate na sebe sama, pak mate odeslana data v poli $_POST, a muzete je do policek vypsat. Pokud delate presmerovani, musite je strcit do session, Leo
aDAm
Profil
a co takhle ty hesla kontrolovat jeste pred odeslanim formulare pomoci JS? rek bych ze je tam o nekolik kroku min....
sh00ter
Profil
aDAm
z principu je to to samy, akorat js ti to udela pred odeslanim a php po odeslani respektive po refreshi

lenkali
kazdopadne pouzivej post

a z toho co si tady postovala to vypada jako bys nemela ty vstupy zacleneny do <form>

pak v php

<?php
if($_POST['heslo']==$_POST['kontrolahesla']) // pokud heslo souhlasi
{
header("Location: nekam");
}

elseif($_POST['heslo']!=$_POST['kontrolahesla']) //pokud nesouhlasi
{
header("Location: registrace.php?jmeno=".$_POST['jmeno']."&prijmeni=".$_POST['prijmeni']  .""); 
/* to je pro to aby se ty data znova zobrazily ve formulari, pak do toho formulare dej value=".$_GET['prijmeni']." atd.*/
}

/* dalo by se pouzit i else, je to fuk*/
?>
lenkali
Profil *
aDAm : da se to prosim zaclenit jednoduse ten JS? Abych vsechny ty programove radky nemusela zeslozitovat pridavanim post a get? Kdyz se jedna o kontrolu pouze dvou
policek?


sh00tere : pouzivam tedy uz podle rad jen POST, sice nevim proc, ale delam to, jak pisete :o)


Mam dva soubory :
REGISTRACE
a
KONTROLA

Prosim Vás o radu, aby mi zustaly policka vyplnene..radeji se naucit JS nebo pouzit POST?
BlackMartin
Profil
Zkus použít tento JS script :
<script language="javascript" type="text/javascript">

 function checkform() {
    if(document.getElementById('jmeno').value == "" || document.getElementById('prijmeni').value == "" || document.getElementById('heslo').value == "")
       {
             alert("Nevypnili jste všechny potrebné údaje");
        return false;
       }
    else {
    if(document.getElementById('heslo').value != document.getElementById('kontrolahesla').value)
       {
               alert("Hesla jsou rozdilná!");
        return false;
       }
             }
        }
</script>

A pro použití musíš dát do tagu <form> atribut onsubmit="return checkform();"
Psal jsem to narychlo takže to není nic zázračnýho, ale myslím že to postačí.

Nevíš proč používat POST ?
Protože dvojice POST a GET jsou asi nejvíce používaná pole pro formuláře.
POST se používá většinou na nějaké registrace, přihlašování ...atd.
Je to vpodstatě takový standart.
GET se používá na indentifikaci třeba článku či pro vyhledávání.

Pokud chceš aby políčka zůstaly vyplněné po odeslání špatného heslo tak do tagu <input> přidej value="<? echo $_POST["heslo"] ?>" a tak i ostatních. Ale toto bude fungovat jen tehdy kdybys ty soubory spojila a to ti doporučuji udělat nějak podle této struktury:

-- Kód HTML s tagem <form> a s atributem action="" --
-- PHP kód daný do podmínky if ($_POST["jmeno"]!="" && $_POST["prijmeni"]!="" && $_POST["heslo"]!="" && $_POST["kontrolahesla"]!="") { ...kod pro zaregistrovani ... }
lenkali
Profil *
BLACK MARTINE dekuji za radu s Tvým JS vše funguje jak má DĚKUJI i za vysvětlení POST a GET, upouštím teda od REQUEST

Ještě se musím hodně učit :o) opravdu, moc , moc dekuju, běží to
lenkali
Profil *
Ještě prosím otázka, jak můžu kontrolovat správnost zadání emailu podle Tvého kodu BLACKMARTINE?
Teď jsem si našla tento



function validEmail(email) {
invalidChars = " /:,;"

if (email == "") { // cannot be empty
return false
}
for (i=0; i<invalidChars.length; i++) { // does it contain any invalid characters?
badChar = invalidChars.charAt(i)
if (email.indexOf(badChar,0) > -1) {
return false
}
}
atPos = email.indexOf("@",1) // there must be one "@" symbol
if (atPos == -1) {
return false
}
if (email.indexOf("@",atPos+1) != -1) { // and only one "@" symbol
return false
}
periodPos = email.indexOf(".",atPos)
if (periodPos == -1) { // and at least one "." after the "@"
return false
}
if (periodPos+3 > email.length) { // must be at least 2 characters after the "."
return false
}
return true
}



akorat mi nejak nefunguje, kdyz ho vložím za Tvůj kod JS
lenkali
Profil *
<script language="javascript" type="text/javascript">


function checkform() {
if(document.getElementById('heslo').value == "" || document.getElementById('zjmeno').value == "" || document.getElementById('kontrolaheslo').value == "" || document.getElementById('email').value == "")
{
alert("Nevypnili jste potřebné údaje");
return false;
}
else {
if(document.getElementById('heslo').value != document.getElementById('kontrolaheslo').value)
{
alert("Zadejte znovu heslo do políčka Heslo a Kontrola hesla");
return false;
}




atPos = email.indexOf("@",1)
if(atPos == -1)
{
alert("Zadejte znovu email");
return false;
}



}
}
</script>
lenkali
Profil *
<script language="javascript" type="text/javascript">


function checkform() {
if(document.getElementById('heslo').value == "" || document.getElementById('zjmeno').value == "" || document.getElementById('kontrolaheslo').value == "" || document.getElementById('email').value == "")
{
alert("Nevypnili jste potřebné údaje");
return false;
}
else {
if(document.getElementById('heslo').value != document.getElementById('kontrolaheslo').value)
{
alert("Zadejte znovu heslo do políčka Heslo a Kontrola hesla");
return false;
}




atPos = email.indexOf("@",1)
if(atPos == -1)
{
alert("Zadejte znovu email");
return false;
}



}
}
</script>


Tento skript mi nefunguje po STRANCE KONTROLY EMAILU, znaku @, prosim Vas o pomoocc
lenkali
Profil *
<script language="javascript" type="text/javascript">


function checkform() {
if(document.getElementById('heslo').value == "" || document.getElementById('zjmeno').value == "" || document.getElementById('kontrolaheslo').value == "" || document.getElementById('email').value == "")
{
alert("Nevypnili jste potřebné údaje");
return false;
}
else {
if(document.getElementById('heslo').value != document.getElementById('kontrolaheslo').value)
{
alert("Zadejte znovu heslo do políčka Heslo a Kontrola hesla");
return false;
}




atPos = email.indexOf("@",1)
if(atPos == -1)
{
alert("Zadejte znovu email");
return false;

}



}
}
</script>



chyba je vyznacena tucne, prosim o radu, jak to napsat, nekopu clanek dopredu mnozstvim prispevku, snazim se o to, aby ukazala, kde muze byt chyba a zjednodusila a urychlila ctenost me prosby o radu
lenkali
Profil *
Tak už jsem na to přišla

stačí vložit tento kod:


if (re.test(myForm.email.value)) {
return true
}
alert("Invalid email address")
myForm.email.focus()
myForm.email.select()
return false
suky
Profil
lenkali
Cyklus, podminka, ...
http://www.linuxsoft.cz/article.php?id_article=192
http://www.linuxsoft.cz/article.php?id_article=199

— Moderátor (Ch): opraven adresát příspěvku. —

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: