Autor Zpráva
Darkry
Profil *
Zdravím,
V PHP se moc nevyznám a dole vypsaný kód není můj, ale je s mími drobnými úpravami pro potřeby webu. Takže tam snad může bejt nějaká blbost.
Mám [url=www.fantasy-blog.ic.cz/gamebook/]web[/url] , kde mám normální funkční registraci, ale mám tu dva problémy:
1) Nikde se mi neobjevují hlášky ze souboru error_msg.php jako např. Byl jsi úspěšně zaregistrován atd. Nevím čím to je. (dobře vidět třeba v souboru reg_zpracuj.php tam je jich hodně).
2) Při registraci když uživatel zadá jméno, které již je v databázi a vyskočí nějaký error (ovšem stejně bych chtěl ten můj ze souboru error_msq.php). Pokud, ale při registraci uživatel nevyplní kontrolu hesla nebo nebudou obě hesla stejná tak ho to pustí dál s tím, že bude zapsán v databázi (viz. zde výpis uživatelů), ale přihlásit se nebude moct. To bych chtěl opravit aby ho to nezapisovalo do databáze (pokud třeba udělá překlep v kontrole hesla a dá registrovat znovu tak už ho to nepustí s tím, že uživatel s tímto jménem už v databázi je...) a házela zpátky na registraci s chybovými hláškami.

Soubor registrace.php:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=windows-1250">
 <link rel="stylesheet" href="style.css" type="text/css" media="screen, projection">
  <title>Registrace</title>
  </head>
  <body>
     <div id="text">
<p><b>Jméno i heslo si zapamatujte! Až se sem vrátíte budete je potřebovat abyste mohli pokračovat od místa, kde jste minule skončili!,</b></p>
<form action="reg_zpracuj.php" method="post">
  <input type="hidden" name="sent" value=""/>
<table>
    <tr><td><strong>Uživatelské jméno:</strong></td><td><input type="text" name="jmeno" maxlength="32"/></td></tr>
  <tr><td> <strong>Heslo:</strong></td><td> <input type="password" name="heslo1" maxlength="32"/></td></tr>
   <tr><td> <strong>Heslo znovu:</strong></td><td><input type="password" name="heslo2" maxlength="32"/></td></tr>
 <tr><td></td><td><input type="submit" name="send" value="Registruj"/></td></tr>
   </table>

</form>

  </div>
  </body>
</html>


Soubor reg-zpracuj.php:
<?php
ob_start();              
  if(isset($_POST['sent'])){    
    $jmeno=trim($_POST['jmeno']);
    $heslo1=$_POST['heslo1'];
    $heslo2=$_POST['heslo2'];

    if($jmeno=="" or $heslo1==""){ 
      $backlink="registrace.php?Alert=1";
    }else{    
      require "inc/db.php";
      $PocetStejnych=mysql_result(mysql_query("SELECT COUNT(*) FROM `uzivatele` WHERE `jmeno`='$jmeno'"), 0);
	  if($PocetStejnych!=0){   
        $backlink="registrace.php?Alert=2";
      }elseif($heslo1 != $heslo2){  
        $backlink="registrace.php?Alert=3";
      }else{  
        $heslo=md5($heslo1);
       
        }
        $VlozData=mysql_query("INSERT INTO uzivatele (jmeno,heslo) VALUES ('$jmeno', '$heslo')") or die (mysql_error());
      
		
        $backlink="index.php?Alert=4";
      }

    }
  else{
    $backlink="registrace.php?Alert=5";
  }

//echo "<a href='index.php'>index</a>";

 header ("Location: $backlink");
ob_end_flush();

?>


Soubor inc/error_msg.php
<?php 

$Rvi = Array(
								
			'Nebyly vyplněny všechny povinné údaje!',					//1
			'Zadané jméno nebo email je již používáno někým jiným!!',	//2
			'Zadaná hesla se neshodují!!!',								//3
			'Data byla uložena. Můžete se přihlásit!',					//4
			'Nebyl odeslán formulář',									//5
			'Zadal jsi nesprávné údaje!',								//6
			'Byl jsi odhlášen!'											//7
			);
?>


DÍKY MOC ZA JAKOUKOLI ODPOVĚĎ A POMOC!
panther
Profil
Darkry:
Nevím čím to je.
možná tím, že je nikde nevypisuješ. To, co tu máš, je jen zadefinování pole s těmito hodnotami.

To bych chtěl opravit aby ho to nezapisovalo do databáze
porovnávej podmínkou, jestli jsou zadaná hesla stejná. Pokud ano, zapiš do DB, pokud ne, vyhoď vyrování.

Unikátnost jména v DB, pokud tam máš UNIQUE, vrací tuším 1062, tak kontrolovat, zda mysql_errno() je 1062. Pokud ano, vypiš varování, jinak pokračuj.
Darkry
Profil *
panther:
Jak jsem řikal v PHP se moc nevyznám takže z tvého příspěvku nejsem o moc chytřejší (promiň).
1) Jak že tam mám přidávat echo aby se ty hlášky vypsaly?

2) Já se ani v tom mim kódu moc nevyznám (nepsal jsem ho). Ale myslíš to jako, že mám připojenou databázi moc brzo?

3) takže někym za tohle:
  $backlink="registrace.php?Alert=2";
mám ještě hodit ten tvůj kód (taky nevim jak bych ho napsal).

Promiň že jsem nechápavej, ale php se věnuju jen pár dní :-).

Díky moc
Darkry
Profil *
Mohl by mi někdo prosím odpovědět moc si nevím rady a celkem bych to potřeboval...
Darkry
Profil *
Pořád prosím o trochu podrobnější odpověď na moje dotazy

a ještě něco:

Jde v PHP nějak nakódovat aby při vstupu na stránku php zkontrolovalo z jaké stránky uživatel jde a pokud jde z jakékoli jiné stránky než třeba www.xxx.cz/nic.php tak ho to poslat zpátky. Kontrolu při vstupu do souboru a posílání zpátky umim, ale spíš to kontrolování odkud uživatel přišel. Díky.
panther
Profil
Darkry:
1) Jak že tam mám přidávat echo aby se ty hlášky vypsaly?
když chci něco vypsat, musím to PHP sdělit, nemyslíš? Echem. Ty tam máš jen pole, to samo o sobě nic nevypisuje.

2) Já se ani v tom mim kódu moc nevyznám (nepsal jsem ho).
nikdy nepoužívej nic, čemu nerozumíš. Co víc ti k tomu říct, vysvětlovat jak, co a proč funguje, ti nebudu. Můžeš začít studovat.

3) takže někym za tohle: $backlink="registrace.php?Alert=2"; mám ještě hodit ten tvůj kód (taky nevim jak bych ho napsal).
před zápis do DB. S tím zápisem se trochu snaž. Vše podstatné, co máš hledat, jsem ti napsal. Tím, že ti všechno všichni řeknou, se nic nenaučíš (ani tu od toho nikdo není), musíš projevit více vlastní snahy.

Jde v PHP nějak nakódovat aby při vstupu na stránku php zkontrolovalo z jaké stránky uživatel jde
ano, jde.
$_SERVER['HTTP_REFERER'];
Porovnávat budeš opět jednoduchou podmínkou.
Darkry
Profil *
panther: díky moc. Takhle mi to stačí. Já se snažil dost vzhledem k tomu, že ten původní kód fungoval jinak, ale tohle jsem nechápal tak já teď jdu na věc:-).
Kry5
Profil
ještě k tomu poslednímu:

if($_SERVER['hra.php'])
???????;
 else {
    echo "<h2>Neprošli jste předchozím příběhem. Prosím vraťte se na <a href='hra.php'>začátek</a>.</h2>";
	exit;
  }


Takhle jsem to napsal snad by to mělo fungovat, ale teď nevim co zadat aby pokud uživatel přichází ze stránky hra.php mohl pokračovat na zbylá obsah stránky. A je taky možný že tam mám někde chybu.

Moc díky.

PS: Kry5=Darkry akorát teď jsem vyhrabal ztracené heslo na Kry5
panther
Profil
Kry5:
Takhle jsem to napsal snad by to mělo fungovat
tak by to opravdu nemělo fungovat. Psal jsem cosi o HTTP_REFERERu, jestli nevíš, jak s ním pracovat, vypiš si jej, případně zagoogli.

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:

0