Autor | Zpráva | ||
---|---|---|---|
lenkali Profil * |
#1 · Zasláno: 22. 1. 2008, 11:42:56
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 |
#2 · Zasláno: 22. 1. 2008, 11:54:29
Zkus
if ( $_POST['heslo'] != $_POST['kontrolahesla'] ) { header("Location: registrace.php"); } |
||
lenkali Profil * |
#3 · Zasláno: 22. 1. 2008, 12:06:04
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í 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 |
#4 · Zasláno: 22. 1. 2008, 12:11:25
Napiš sem celý PHP kód, kterým ten formulář zpracováváš.
|
||
lenkali Profil * |
#5 · Zasláno: 22. 1. 2008, 12:31:35
<?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 * |
#6 · Zasláno: 22. 1. 2008, 12:32:36
<?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 |
#7 · Zasláno: 22. 1. 2008, 12:46:24 · Upravil/a: BlackMartin
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 * |
#8 · Zasláno: 22. 1. 2008, 13:00:56
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 |
#9 · Zasláno: 22. 1. 2008, 13:04:23 · Upravil/a: BlackMartin
|
||
lenkali Profil * |
#10 · Zasláno: 22. 1. 2008, 13:09:46
aha MD5 zajímavé
|
||
BetaCam Profil |
#11 · Zasláno: 22. 1. 2008, 16:55:58
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 * |
#12 · Zasláno: 23. 1. 2008, 12:27:55
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 * |
#13 · Zasláno: 23. 1. 2008, 12:35:33
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 |
#14 · Zasláno: 23. 1. 2008, 14:28:50
"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 |
#15 · Zasláno: 23. 1. 2008, 14:41:42
a co takhle ty hesla kontrolovat jeste pred odeslanim formulare pomoci JS? rek bych ze je tam o nekolik kroku min....
|
||
sh00ter Profil |
#16 · Zasláno: 23. 1. 2008, 14:49:29 · Upravil/a: sh00ter
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 * |
#17 · Zasláno: 24. 1. 2008, 09:10:11
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 |
#18 · Zasláno: 24. 1. 2008, 11:08:55 · Upravil/a: BlackMartin
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 * |
#19 · Zasláno: 24. 1. 2008, 13:13:48
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 * |
#20 · Zasláno: 24. 1. 2008, 13:25:27
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 * |
#21 · Zasláno: 24. 1. 2008, 15:25:56
<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 * |
#22 · Zasláno: 24. 1. 2008, 15:26:44
<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 * |
#23 · Zasláno: 24. 1. 2008, 16:10:33
<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 * |
#24 · Zasláno: 24. 1. 2008, 20:01:26
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. — |
||
Časová prodleva: 16 let
|
0