Autor Zpráva
JunekCZ
Profil
Mám web, na který jsem si chtěl udělat registraci a to včetně poslání předmětů na e-mail. Jenže když napíšu mail, píše mi to: Parse error: syntax error, unexpected T_IF in /3w/mysteria.cz/l/ljgames/reg_zpracuj.php on line 9
registrace.php Prosím o vyřešení téo chyby.

registrace.php
<h1>Registrace</h1>
<form action="reg_zpracuj.php" method="post">
  <input type="hidden" name="sent" value=""/>
    <input type="text" name="jmeno" maxlength="32" minlength="4"/> <strong>Už. jméno</strong> <br/>
    <input type="password" name="heslo1" maxlength="32" minlength="4"/> <strong>Heslo</strong> <br/>
    <input type="password" name="heslo2" maxlength="32" minlength="4"/> <strong>Heslo znovu </strong><br/>
    <input type="text" name="mail" value="" maxlength="64" minlength="4"/> <strong>Email</strong><br/>
  <input type="submit" name="send" value="Registruj"/>
</form>


reg_zpracuj.php

<?php
ob_start();
  if(isset($_POST['sent'])){
    $jmeno=trim($_POST['jmeno']);
    $heslo1=$_POST['heslo1'];
    $heslo2=$_POST['heslo2'];
    $mail=trim($_POST['mail']);
    $to=$mail
    if($jmeno=="" or $heslo1=="" or $mail=="");{ 
      $backlink="index.php?page=registrace&Alert=1";
    }else{
      require "db.php";
      $PocetStejnych=mysql_result(mysql_query("SELECT COUNT(*) FROM `uzivatele` WHERE `jmeno`='$jmeno' OR `mail`='$mail'"), 0);
      if($PocetStejnych!=0){
        $backlink="index.php?page=registrace&Alert=2";
      }elseif($heslo1 != $heslo2){
        $backlink="index.php?page=registrace&Alert=3";
      }else{
        $heslo1=md5($heslo2);
        $VlozData=mysql_query("INSERT INTO uzivatele (jmeno,heslo,mail,prava) VALUES ('$jmeno', '$heslo', '$mail', '0')") or die (mysql_error());
        $backlink="index.php?Alert=4";
      }
    }
  }else{
    $backlink="index.php?page=registrace&Alert=5";
  }
 header ("Location: $backlink");
mail ($mail, "Registrace", $jmeno, $heslo1);
ob_end_flush();

?>

Předem děkuji za odpověď.
JunekCZ


Moderátor jenikkozak: Vkládej prosím kódy mezi značky [pre] a [/pre] (stačí kliknout na ).
juriad_
Profil *
Na 9. řádku chybí středník.
JunekCZ
Profil
Ajo, děkuji :)
Ale opravil jsem to a vypisuje to stejnou chybu :/
jenikkozak
Profil
Na řádku 9 přebývá středník (chyběl na 8. řádku).
JunekCZ
Profil
Děkuji, to mi pomohlo vyřešit problém s $to, ale pořád to vypisuje tu chybu, která bohužel ani nevím co znamená Parse error: syntax error, unexpected T_IF in /3w/mysteria.cz/l/ljgames/reg_zpracuj.php on line 9.
jenikkozak
Profil
Když k té verzi skriptu, která se nyní zobrazuje v příspěvku výše, doplníš středník na 8. řádek a odstraníš středník z 9. řádku, žádnou chybu parsování to vypisovat nebude.
JunekCZ
Profil
Ano. To už jsem tedy opravil, ale teď mi to vypisuje další chybu :/
Namísto T_IF mi to píše T_STRING, takže Parse error: syntax error, unexpected T_STRING in /3w/mysteria.cz/l/ljgames/reg_zpracuj.php on line 29
A ještě se omlouvám, že už to neopravuji na této stránce. Zmizela mi totiž možnost opravit.
juriad
Profil
JunekCZ:
Omlouvám se za chybné spočítání řádků. Nicméně v opraveném kódu v [#1] chyba není:
No syntax errors detected in p.php

Musel jsi tedy změnit něco, co jsi nám neukázal. Tipuji, že ti tam někde chybí čárka mezi argumenty nebo nějaká podobná ptákovina.
JunekCZ
Profil
To je divné :/ Zkopíroval jsem to celé.
Mám to ještě jednou vložit?
pcmanik
Profil
JunekCZ:
Kedže nevidíme tvoju aktuálnu verziu kódu bolo by dobré keby si to sem znovu dal.
JunekCZ
Profil
<?php
ob_start();
  if(isset($_POST['sent'])){
    $jmeno=trim($_POST['jmeno']);
    $heslo1=$_POST['heslo1'];
    $heslo2=$_POST['heslo2'];
    $mail=trim($_POST['mail']);
    $to=$mail;
    if($jmeno=="" or $heslo1=="" or $mail==""){
      $backlink="index.php?page=registrace&Alert=1";
    }else{
      require "db.php";
      $PocetStejnych=mysql_result(mysql_query("SELECT COUNT(*) FROM `uzivatele` WHERE `jmeno`='$jmeno' OR `mail`='$mail'"), 0);
      if($PocetStejnych!=0){
        $backlink="index.php?page=registrace&Alert=2";
      }elseif($heslo1 != $heslo2){
        $backlink="index.php?page=registrace&Alert=3";
      }else{
        $heslo1=md5($heslo2);
        $VlozData=mysql_query("INSERT INTO uzivatele (jmeno,heslo,mail,prava) VALUES ('$jmeno', '$heslo', '$mail', '0')") or die (mysql_error());
        $backlink="index.php?Alert=4";
      }
    }
  }else{
    $backlink="index.php?page=registrace&Alert=5";
  }
 header ("Location: $backlink");
mail ($mail, "Registrace", $jmeno, $heslo1)
ob_end_flush();

?>

Ta chyba se mi ale stává, jen když přidám mail ($mail, "Registrace", $jmeno, $heslo1)
Nemůže být chyba třeba v hostingu webzdarma.cz, že by třeba nepodporoval posílání e-mailů?
juriad
Profil
Aha. Na konci 28. řádku ti chybí středník, který v [#1] byl.
Mimochodem, za chvíli narazíš na to, že funkci mail předáváš špatné argumenty.
Tabetha
Profil
riadok 28 chyba ;
JunekCZ
Profil
Ano!
Všem tedy děkuji za trpělivost :)


Nyní jsem upravil e-mail a žádnou chybu mi to nepíše. Ale neodesílá se to na e-mail :/

if(isset($_POST['sent'])){
$jmeno=trim($_POST['jmeno']);
$heslo1=$_POST['heslo1'];
$heslo2=$_POST['heslo2'];
$mail=trim($_POST['mail']);
$to=$mail;
$subject = 'Regsitrace';
$message = 'Děkujeme za vaši registraci!';
$headers = 'From: ljgames@mysteria.cz'. "\r\n" .
    'X-Mailer: PHP/' . phpversion();

mail($to, $subject, $message, $headers);
Enko
Profil
Mrkni, jestli to to nechodí náhodou do spamu. Například Gmail myslím porovnává dns mailserveru a hlavičku from a když se liší, tak ji označuje za nedůvěryhodnou a má tendenci dávat jí do spamu.
JunekCZ
Profil
Díval jsem se. Zkusím se tedy zaregistrovat ještě na jiný účet a dám vědět :)


Ano. Děkuji už to funguje :) A ještě tedy poslední věc. Nevíte jak udělat, aby zpráva nešla do spamu a jak odregistrovat uživatele? :)
David Klouček
Profil
JunekCZ:
jak odregistrovat uživatele
Smazat ho z tabulky uživatelů.

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: