« 1 2 »
Autor Zpráva
Tomashekk
Profil
Věřím že to tu bylo už Xkrát, ale nemohu to tu nikde najít.
Potřebuju ošetřit email aby byl zadán jen ve správném tvaru a nebo to hodilo hlášku, že byl zadán ve špatném tvaru. Ovšem tak jak to mám, tak mi do DB uloží pouze číslo 1 :(

<?php
  
  $email=$_POST['email'];
if($email!="")  {$mail=ereg("^[a-zA-Z0-9]{1,25}@[a-zA-Z0-9]{1,20}\.[a-zA-Z]{2,4}$", $email);}
  
  if ($text != "") 
  {
    $jmeno=strip_tags($_POST['jmeno']);
    $datum = date("Y-m-d"); //načte datum
    $predmet=strip_tags($_POST['predmet']); 
    $ipadresa = $_SERVER["REMOTE_ADDR"]; 
    $text=strip_tags($_POST['text']); 
    require_once 'pripoj.php'; 
    mysql_query ("INSERT INTO `gbook` ( `ID` , `jmeno` , `predmet` , `text` , `datum` , `IP`, `email`) VALUES (NULL , '$jmeno', '$predmet', '$text', '$datum', '$ipadresa', '$mail');", $link); 
    mysql_close($link); 
    Header("Location: index.php");
    exit; 
  }
  else
  {
    ?>
Philber
Profil
<?php 
// funkce pro kontrolu emailu 
function kontrola_emailu ($kontrola)
  {
    return ereg("^.+@.+\..+$",$kontrola);
  }
?>

..
...
.
if ($text!="" and kontrola_emailu($email) and ....) {...
Tomashekk
Profil
Philber
super, faká to, ovšem, já potřebuju ten email jako nepovinný, zapomněl jsem to uvést
Alastor_Kopal
Profil *
A co třeba kdybys odchytil co se ti nezdá if a elseif a poté to zapsal v else

 elseif(!(ereg("^.+@.+\\..+$",$email) or ($email !== ""))){echo "<font color=\"#ff0000\">E-mailová adresa není platná :-)</font>";} 
Tomashekk
Profil
A co třeba kdybys odchytil co se ti nezdá if a elseif a poté to zapsal v else
1 elseif(!(ereg("^.+@.+\\..+$",$email) or ($email !== ""))){echo "<font color=\"#ff0000\">E-mailová adresa není platná :-)</font>";}
Nic ve zlém, ale tohle se mi zdá docela zmatený.. Nechtěl by jsi mi to trochu vysvětlit?
Pro info. Učím se to ve škole a profesor nám toho moc neřekne.
Philber
Profil
Tomashekk čemu jako nerozumíš?
Alastor_Kopal
Profil *
podmínkám else ?
http://pecan.cz/index.php?id=41&rss=true
Tomashekk
Profil
Philber
1234567 <?php
// funkce pro kontrolu emailu
function kontrola_emailu ($kontrola)
{
return ereg("^.+@.+\..+$",$kontrola);
}
?>
..
...
.
1 if ($text!="" and kontrola_emailu($email) and ....) {...
Tady podle toho jsem to udělal, ovšem v tento moment je mail povinný (nenapsal jsem že ho chci nepovinnej)

Alastor_Kopal
A co třeba kdybys odchytil co se ti nezdá if a elseif a poté to zapsal v else
1 elseif(!(ereg("^.+@.+\\..+$",$email) or ($email !== ""))){echo "<font color=\"#ff0000\">E-mailová adresa není platná :-)</font>";}
Chápu tu myšlenku, ovšem jsem mimo z toho elseif. Slyším to poprvý

Kluci, teprve se to učím :(
Tomashekk
Profil
podmínkám else ?
http://pecan.cz/index.php?id=41&rss=true
už to chápu, ale jde o to, že nevím co má být v if, jako to, že to prostě přiřadí?
Jan Tvrdík
Profil
Tomashekk:
<?php
if ($_POST['email'] !== '' && !preg_match('#^[a-z0-9]+@[a-z0-9]+\.[a-z]{2,6}$#i', $_POST['email']) {
	echo 'Neplatný email';
} elseif ($_POST['text'] == '') {
	echo 'Prázdný text';
} else {
	$email = $_POST['email'];
	$jmeno = strip_tags($_POST['jmeno']);
	$datum = date("Y-m-d"); //načte datum
	$predmet = strip_tags($_POST['predmet']); 
	$ipadresa = $_SERVER["REMOTE_ADDR"]; 
	$text = strip_tags($_POST['text']);
	
	require_once 'pripoj.php';
	mysql_query("
		INSERT INTO `gbook`
		( `ID` , `jmeno` , `predmet` , `text` , `datum` , `IP`, `email`)
		VALUES (NULL , '$jmeno', '$predmet', '$text', '$datum', '$ipadresa', '$email')",
	$link); 
	mysql_close($link); 
	Header("Location: index.php");
	exit; 
}
?>
Alastor_Kopal
Profil *
Jan Tvrdík - No jo chtěl jsem aby si to vyzkoušel ale nevadí
Tomashekk
Profil
Alastor_Kopal
Jan Tvrdík - No jo chtěl jsem aby si to vyzkoušel ale nevadí
Mezi tím jsem si to zkusil, ale nedocílil jsem toho,ale neva.
Jak mi Jan Tvrdík poradil, tak jsem to tam nacpal, ovšem zase chyba na řádku 10
if ($_POST['email'] !== '' && !preg_match('#^[a-z0-9]+@[a-z0-9]+\.[a-z]{2,6}$#i', $_POST['email']) {
Alastor_Kopal
Profil *
A co to co jsem napsal já ?

<?php
if(!(ereg("^.+@.+\\..+$",$email) or ($email !== ""))){echo "<font color=\"#ff0000\">E-mailová adresa není platná :-)</font>";} 
} elseif ($_POST['text'] == '') {
    echo 'Prázdný text';
} else {
    $email = $_POST['email'];
    $jmeno = strip_tags($_POST['jmeno']);
    $datum = date("Y-m-d"); //načte datum
    $predmet = strip_tags($_POST['predmet']); 
    $ipadresa = $_SERVER["REMOTE_ADDR"]; 
    $text = strip_tags($_POST['text']);
    
    require_once 'pripoj.php';
    mysql_query("
        INSERT INTO `gbook`
        ( `ID` , `jmeno` , `predmet` , `text` , `datum` , `IP`, `email`)
        VALUES (NULL , '$jmeno', '$predmet', '$text', '$datum', '$ipadresa', '$email')",
    $link); 
    mysql_close($link); 
    Header("Location: index.php");
    exit; 
}
?>
Tomashekk
Profil
A co to co jsem napsal já ?
<?php
(...) zkráceno moderátorem, snad není nutné citovat 20 řádků nečitelného kódu (kurzíva), který je hned v předchozím příspěvku
?>
chyba na řádku s tím elseif....
Tomashekk
Profil
Alastor_Kopal
supr.. měl jsi tam jednu závorku navíc a já jsem tam měl taky chybu.. jde mi to tvoje, al jak jsem výše psal, zapomněl jsem uvést, že email potřebuju jako nepovinný :(
Philber
Profil
Tomashekk otázka je co chceš dělat když email je nepovinný a uživatel ho napíše špatně?

edit: jak na to chceš reagovat?
Tomashekk
Profil
Philber
Ok..
máme za úkol udělat gbook a má tam bejt form pro email. Ovšem ten má bejt nepovinný. Ale když ho ten dotyčnej zadá, tak aby byl ve správném tvaru
Philber
Profil
if  ($_POST['text'] == "") {
    echo 'Prázdný text';
} else {
    if (kontrola_emailu($_POST['email'])) {$email = $_POST['email'];} else {$email="";}
    $jmeno = strip_tags($_POST['jmeno']);
    $datum = date("Y-m-d"); //načte datum
    $predmet = strip_tags($_POST['predmet']); 
    $ipadresa = $_SERVER["REMOTE_ADDR"]; 
    $text = strip_tags($_POST['text']);
    
    require_once 'pripoj.php';
    mysql_query("
        INSERT INTO `gbook`
        ( `ID` , `jmeno` , `predmet` , `text` , `datum` , `IP`, `email`)
        VALUES (NULL , '$jmeno', '$predmet', '$text', '$datum', '$ipadresa', '$email')",
    $link); 
    mysql_close($link); 
    Header("Location: index.php");
    exit; 
}


umazal sem prvních pár řádku a místo přiřazení do $email sem napsal
if (kontrola_emailu($_POST['email'])) {$email = $_POST['email'];} else {$email="";}
Tomashekk
Profil
Philber
Díky moc, už to jede.
Alastor_Kopal
Tobě díky moc za ty stránky, hodně je budu asi využívat, než se to vše pořádně naučím.
Philber
Profil
Tomashekk linuxsoft.cz/php tu máš taky nějakej ten tutorial
Tomashekk
Profil
Philber
Já jsem dřív dělal s United Nuke a PHP RS, ovšem to je jako když ovládáš Windows.. a teď chci dělat i ty webovky jako taký (neříkám na úrovni redakčních sys.), ale to je pro mne jako přechod z Win na linuxi ;)
Tomashekk
Profil
Tak jsem tu zpět. U sebe na localu to funguje, ale když to nacpu na školní server, tak si to tam ani neprdne.. prostě po vyplnění všeho, to stejně hlásí že jsem něco nevyplnil :D
Philber
Profil
Tomashekk nemůžeš svoje dotazy víc specifikovat z tohodle nikdo není chytrej, ak chceš pomoct tak napiš s čím,.. napiš o jakou jde chybu chybu jestli to není jasný, prostě něco víc než prostě po vyplnění všeho, to stejně hlásí že jsem něco nevyplnil...

edit: můžeš mít špatně napsanej formulář...
Tomashekk
Profil
Philber
hele, mam to na pripoj.php, index.php a zapis.php... zapis.php jsme tu ted mel napsanej, takze ten ti posilat nebudu. pak je pripoj, tam mam:
<?php
//připojení na databázi
$link = @mysql_connect('localhost','kulhanekto','1111') or die('Nelze se připojit k databázi.');
@mysql_select_db('kulhanekto', $link) or die('database does not exist');
?>



a pak je tedy index.php
<form method="post" action="zapis.php" name="navstevni_kniha">Jm&eacute;no: &nbsp;
&nbsp;<input name="jmeno"><br>


Předmět: <input name="predmet"><br>
Email: &nbsp; &nbsp; &nbsp;<input name="email" value="@"> <br>


Text*: <textarea cols="50" rows="6" name="text"></textarea><br>


  <input name="odesli" value="Ode&scaron;li" type="submit"><input type="Reset" class=bluebutton value="Vymazat">
 </form>
  <p>
   <?php
 include_once 'pripoj.php';
 $tabulka = mysql_query("SELECT `ID`, `jmeno`, `predmet`, `text`, `datum`, `IP`, `email` FROM `gbook`  ORDER BY `ID`  DESC");
mysql_close();
 while ($radek = mysql_fetch_assoc($tabulka))
 {
 extract($radek); // rozlozi radek=pole na promenne podle toho jak se 
  echo "<hr>";
a dale pokracuje vypis gbooku

Kdyžtak to je na:
http://lab.uzlabina.cz/~kulhanekto/gbook2
Philber
Profil
ale v zapiš tady v diskusi není žádné Nevyplnil jste formulář! Prosím vyplňte jej. to se vzalo kde??? to nemáš stejný vlož sem i ten zbylej kód
Tomashekk
Profil
Philber
To je v tom zapis.php

<?php
  // funkce pro kontrolu emailu 
function kontrola_emailu ($kontrola)
  {
    return ereg("^.+@.+\..+$",$kontrola);
  }
?>
<?php
  if ($text != "" AND $jmeno != "" ) //podmínka, která jestli proměnná text něco obsahuje provede první větev a když ne, tak provede else větev
  {
    if (kontrola_emailu($_POST['email'])) {$email = $_POST['email'];} else {$email="";} //Zda-li $_POST['email'] projde kontrolou, tak to uloží do proměnné email, ale zda-li neprojde, tak form email zůstane prázdný
    $jmeno=strip_tags($_POST['jmeno']); //načte jméno a ošetří ji proti HTML tagům
    $datum = date("Y-m-d"); //načte datum
    $predmet=strip_tags($_POST['predmet']); //načte předmět a ošetří ho proti HTML tagům
    $ipadresa = $_SERVER["REMOTE_ADDR"]; //načte IP adresu
    $text=strip_tags($_POST['text']); //načte text a ošetří ho proti HTML tagům
    require_once 'pripoj.php'; //vloží daný soubor a provede ho jako část scriptu
    mysql_query ("INSERT INTO `gbook` ( `ID` , `jmeno` , `predmet` , `text` , `datum` , `IP`, `email`) VALUES (NULL , '$jmeno', '$predmet', '$text', '$datum', '$ipadresa', '$email');", $link); //Provede dotaz na aktuálním spojení v aktivní databázi na serveru a vrátí identifikátor výsledku.
    mysql_close($link); //uzavře mysql spojení
    Header("Location: index.php");
    exit; //ukončí větev podmínky if
  }
  else
  {
    ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html; utf-8"  http-equiv="content-type">
  <title></title>
</head>
<body>
    <script> alert('Nevyplnil jste formulář! Prosím vyplňte jej.');javascript:self.history.back();</script>
</body>
</html>
<?php
  }
?>
Philber
Profil
chyba je na rádku 9.

if ($text != "" AND $jmeno != "" )
tyto dvě proměnné nemáš ešte definované

tedy nahrad tento rádek tímto
if ($_POST['text'] != "" AND $_POST['jmeno'] != "" ) 


a bude ti to fungovat
Tomashekk
Profil
chyba je na rádku 9.
1 if ($text != "" AND $jmeno != "" )tyto dvě proměnné nemáš ešte definované
tedy nahrad tento rádek tímto if ($_POST['text'] != "" AND $_POST['jmeno'] != "" )
a bude ti to fungovat
no a nebo mohu nadefinovat dříve
Tomashekk
Profil
Philber
Díky, jdu si lámat hlavu jak udělat ochranu proti botům :)
Philber
Profil
tak to pak je to osetreni pomoci
strip_tags()
k nicemu

edit: a nebo na to pamatuj!
« 1 2 »

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: