Autor Zpráva
Měsíček
Profil
Už si nevím rady, nevíte proč mi to "nezapisuje" do databáze, ale zázračně s ní dokáže číst ??
MySQL mi jede na lokálu .. Všem budu za pomoc vděčný ..

Zde je skript :

<link href="styl.css" type="text/css" rel="stylesheet" />
<script src="skript.js"></script>
<?php
mysql_connect("localhost","root","");
mysql_select_db("spidernet");

if ($odeslano=="ano"){
if ($jmeno!="" && $zprava!="" && $antispam == "XK35F" && eregi("^[^@]+@[^@]+.[a-z]", $email)){$kontrola="ok";}
}
if ($odeslano=="ano" and $kontrola=="ok") {
$zprava = wordwrap("$zprava","74","<br />");
$ip = $_SERVER['REMOTE_ADDR'];
$datum = Date("j/m/Y H:i:s");
$email = "<a href=mailto:$email>$email</A>";
$prijmeni = "<a href=Http://$prijmeni>$prijmeni</A>";
$jmeno = Str_Replace("<","&lt;",$jmeno);
$jmeno = Str_Replace(">","&gt;",$jmeno);
$smajlici = array("*1*"=>"<img src='1.gif'>","*2*"=>"<img src='2.gif'>","*3*"=>"<img src='3.gif'>","*4*"=>"<img src='4.gif'>","*5*"=>"<img src='5.gif'>","*6*"=>"<img src='6.gif'>","*7*"=>"<img src='7.gif'>","*8*"=>"<img src='8.gif'>","*9*"=>"<img src='9.gif'>","*10*"=>"<img src='10.gif'>","*11*"=>"<img src='11.gif'>","*12*"=>"<img src='12.gif'>");
$zprava = strtr($zprava, $smajlici);

mysql_query("INSERT INTO `jmena` (`id`,`jmeno`,`prijmeni`,`email`,`zprava`,`ip`,`datum`) VALUES ('','".addslashes($jmeno)."','$prijmeni','$email','".addslashes($zprav a)."','$ip','$datum')");

}
?>

<div id="border5">
<form method="post" action="index2.php?odeslano=ano" name="vzkaz">
<br /><span style="position: relative;left: 150px;"><h2>Návštěvní kniha 1.4</h2><br /></span>
<b>Jmeno* :</b> <input name='jmeno' type='text' /><br />
<b>Web :</b> <span style="position:relative;left: 40px;"><input name='prijmeni' type='text' />
<b>E-mail* :</b> <input name='email' type='text' /></span><br />
<b>Zpráva* :</b> <span style="position:relative;left: 20px;"><textarea name='zprava' cols="45" rows="6"></textarea> </span><br /><br />
<b>Opiš <img src="obr.png"> : <input name='antispam' type='text' /><br />
<br />


<br />
<input type="submit" value="Vložit" />
</form>
</div>
<div id="border6">

<h3>Smajlíci</h3>

<img src="1.gif" onclick="smajlik('*1*')" alt="*1*" />
<img src="2.gif" onclick="smajlik('*2*')" alt="*2*" />
<img src="3.gif" onclick="smajlik('*3*')" alt="*3*" />
<img src="4.gif" onclick="smajlik('*4*')" alt="*4*" />
<img src="5.gif" onclick="smajlik('*5*')" alt="*5*" />
<img src="6.gif" onclick="smajlik('*6*')" alt="*6*" />
<img src="7.gif" onclick="smajlik('*7*')" alt="*7*" />
<img src="8.gif" onclick="smajlik('*8*')" alt="*8*" />
<img src="9.gif" onclick="smajlik('*9*')" alt="*9*" />
<img src="10.gif" onclick="smajlik('*10*')" alt="*10*" />
<img src="11.gif" onclick="smajlik('*11*')" alt="*11*" />
<img src="12.gif" onclick="smajlik('*12*')" alt="*12*" />
</div>



<?php
$prispevky = MySQL_Query("SELECT * FROM jmena ORDER BY `id` DESC");
while($nacti = MySQL_Fetch_Array($prispevky)){

echo "<br /><br /><div id='border1'><div id='border2'>Jméno : ".$nacti[jmeno]." | Web : ".$nacti[prijmeni]." | E-mail : ".$nacti[email]." </div><div id='border3'><br>".$nacti[zprava]." </div><div id='border4'>Jeho IP je : ".$nacti[ip]." | Datum a čas založení :".$nacti[datum]."</div><a href='index2.php?delete=".$nacti[id]."'>X</a></div>";

}
$zaznamu=mysql_query("select count(*) as celkem from jmena");
$zaznam=mysql_fetch_array($zaznamu);

echo "<center>"."V knize je celkem : ".$zaznam["celkem"]." příspěvků."."</center>";
?>
<?php

if(Isset($_GET['delete'])){

$sql = "DELETE FROM `jmena` WHERE `id` = '".$_GET['delete']."' LIMIT 1";
mysql_query($sql);

}
?>
Měsíček
Profil
spíše si, ale myslím, že bude chyba u mě a ne ve skriptu ... :-( , nevíte, které nastavení by to mohlo ovlivnit ?
serion
Profil
To '$zprav a' v tom inserte je naschvál alebo chyba pri kopírovaní?
Měsíček
Profil
špatně nakopírováno seká to tu řádky :-(
tiso
Profil
...no ty koki, taký bordel som dávno nevidel...
Měsíček
Profil
Je mi 14 a jsem na střední nemám moc času se učit w.jazykům a tak dělám co umím ;)
tiso
Profil
...len sa čudujem, lebo v inom vlákne spomínaš že "potrebuješ" najnovšie PHP a iné veci... Na toto? Au... Vek nie je ospravedlnenie...
Měsíček
Profil
Ne, potřebuji ji na administraci serveru .., ale tohle mě zaskočilo, na hostingu mi to šlo (aspoň doufám) a na lokálu jaksi nic .. vím mám tam pár chyb, ale ty by neměly dělat problém ..
BetaCam
Profil
Teda bordel je to strašnej, ale na první pohled bych řekl, že by sis měl ujasnit jaké máš nastavení directivy "registred_globals", protože z toho tvého kódu mi to neni tak uplně jasné.

$sql = "DELETE FROM `jmena` WHERE `id` = '".$_GET['delete']."' LIMIT 1";

Svědčí o tom, že máš "registred_globals = off" ale

if ($odeslano=="ano" and $ok1=="ok" and $ok4=="ok" and $ok5=="ok")

zas ukazuje na to, že máš "registred_globals = on"

SQL dotaz

mysql_query("INSERT INTO `jmena` (`id`,`jmeno`,`prijmeni`,`email`,`zprava`,`ip`,`datum`) VALUES ('','".addslashes($jmeno)."','$prijmeni','$email','".addslashes($zprav a)."','$ip','$datum')");

mi přijde taky dost divokej, ale vzhledem k tomu, že si neuvedl, že by ti MySQL vracelo nějakou chybu tak předpokládám, že se script d tomuto dotazu ani nedostane.

if ($jmeno!="")

od čeho máme v PHP funkci empty() ??
BetaCam
Profil
Ješte jedna věc nastav si error_reporting na

error_reporting(E_ALL);

aspon uvidiš všechny chyby co nastanou.
Měsíček
Profil
nejde :-( ... na "wz" to šlape, docela pěkně, ale u mě na lokálu ani náhodou, jen nechápu jak to, že dokáže s databáze číst, ale ne zapisovat ... tz. Když v PhpMyAdminovi už předem určím další data, tak se zobrazí příspěvky, ale, že by něco zapsal on sám na lokál do toho ho snad nedošopnu ...

a ještě jedna otázka, víte kde se nastavuje povolení pro "exec" ?
BetaCam
Profil
Co nejde??? Tak ti to musí napsat proboha nějakou chybu.

Pokud jde o WZ pochybuju že ti exec povolej nic méně jinak hledej v php.ini
Měsíček
Profil
no právě, na lokálu to žádnou chybu nevyhodí, prostě normálně probilkne a nic neudělá .. exec jsem myslel na lokálu už to hledám :-)
BetaCam
Profil
Tak já to vemu polopate.

1. Jak problikne??
2. pokud klikneš na "Vložit" když nemáš nemáš vyplněno Jméno. Vypíše to "Vyplňte jméno !!!" nebo se ti pouze zobrazí opět formulář?
3. máš nastaven error_reporting(E_ALL); ?? Přijde mi totiž divné, že by ti to nenahlásilo žádnou chybu.
4. Jak máš v PHP.INI nastavenou directivu "registred_globals"???

Osobně bych bych si typnul, že tvé odpovědi budou znít takto :

1. Zobrazí se opět formulář, ale nic se nestane.
2. Zobrazí se opět pouze prázdný formulář, ale hláška o chybějícím jménu ne.
3. Nemám, protože nevim jak se nastavuje.
4. v PHP.INI mám directivu "registred_globals" nastavenou na "OFF"
Měsíček
Profil
Reaguji na BetaCam :

Tak zaprvé bych chtěl poděkovat, bylo to opravdu špatně nastavenými "registred_globals", v php.ini jsem je nastavil na On, ale WAMP mi je zase resetoval, takže jsem je musel nastavit přímo v programu, ale funguje to (už) :-)
BetaCam
Profil
To se dalo čekat. Každopádně jedno doporučení. Hezky zase nastav registred_globals na off a předělej scripty. Ušetří ti to v budoucnu spoustu starostí.
Měsíček
Profil
No problém je v tom, že ještě moc registred_globals nerozumím tak ani nevím na co jiného to předělávat, lépe řečeno nechápu celkový princip ..
Měsíček
Profil
no tak jsem teďka zkrátil kód přibližně o 15 řádků :-)), byli tam malé zbytečnosti ..
BetaCam
Profil
Nastíním problém skus si s "registred_globals = on" zadat do tvého prohlížeče url :

index2.php?odeslano=ano&kontrola=ok

tedy url kam směřuje script po odeslání formuláře a ověřuje zda je všechno v pořádku. copak se asi stane??? No ukážeme si to na tvém kódu

if ($odeslano=="ano") // tato podmínka projde
{
/* Tato podmínka by projít neměla protože nebyli vyplněny zádné údaje ve formuláři a tak se taky stane podmínka neprojde takže by se neměla ani nastavit hodnota "kontrola = ok"*/
if ($jmeno!="" && $zprava!="" && $antispam == "XK35F" && eregi("^[^@]+@[^@]+.[a-z]", $email))
{
$kontrola="ok";
}
}
if ($odeslano=="ano" and $kontrola=="ok") /* tak a tady je jádro pudla podmínka nahoře neprošla takže by tato podmínka projít také neměla protože sme v kódu nenastavili proměnou "kontrola" na hodnotu "ok" jenže díky nastavení "registred_globals = on" podmínka projde, protože sme proměnou "kontrola" nastavili nastavili na "ok" za pomocí GET.

Výsledek je ten, že se obešli všechny kontrolní podmínky, které ty si potřeboval. To je ten problém s registred_globals = on lze krásně podvrhnout proměnným hodnoty.
Měsíček
Profil
tak to jsem pochopil a jak tedy přestavět jádro, aby to šlapalo i bez RG .. ?
Měsíček
Profil
A teď :

<link href="styl.css" type="text/css" rel="stylesheet" />
<script src="skript.js"></script>

<div id="border5">
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" name="vzkaz">
<br /><span style="position: relative;left: 150px;"><h2>Návštěvní kniha 1.4</h2><br /></span>
<b>Jmeno* :</b> <input name='jmeno' type='text' /><br />
<b>Web :</b> <span style="position:relative;left: 40px;"><input name='prijmeni' type='text' />
<b>E-mail* :</b> <input name='email' type='text' /></span><br />
<b>Zpráva* :</b> <span style="position:relative;left: 20px;"><textarea name='zprava' cols="45" rows="6"></textarea> </span><br /><br />
<b>Opiš <img src="obr.png"> : <input name='antispam' type='text' /><br />
<br />


<br />
<input type="submit" value="Vložit" name="OK" />
</form>
</div>
<div id="border6">

<h3>Smajlíci</h3>

<img src="1.gif" onclick="smajlik('*1*')" alt="*1*" />
<img src="2.gif" onclick="smajlik('*2*')" alt="*2*" />
<img src="3.gif" onclick="smajlik('*3*')" alt="*3*" />
<img src="4.gif" onclick="smajlik('*4*')" alt="*4*" />
<img src="5.gif" onclick="smajlik('*5*')" alt="*5*" />
<img src="6.gif" onclick="smajlik('*6*')" alt="*6*" />
<img src="7.gif" onclick="smajlik('*7*')" alt="*7*" />
<img src="8.gif" onclick="smajlik('*8*')" alt="*8*" />
<img src="9.gif" onclick="smajlik('*9*')" alt="*9*" />
<img src="10.gif" onclick="smajlik('*10*')" alt="*10*" />
<img src="11.gif" onclick="smajlik('*11*')" alt="*11*" />
<img src="12.gif" onclick="smajlik('*12*')" alt="*12*" />
</div>
<?php
mysql_connect("localhost","root","");
mysql_select_db("spidernet");

if(isset($_POST['OK'])){

if($jmeno!="" && $zprava!="" && $antispam == "XK35F" && eregi("^[^@]+@[^@]+.[a-z]", $email)){

$zprava = wordwrap("$zprava","74","<br />");
$ip = $_SERVER['REMOTE_ADDR'];
$datum = Date("j/m/Y H:i:s");
$email = "<a href=mailto:$email>$email</A>";
$prijmeni = "<a href=Http://$prijmeni>$prijmeni</A>";
$jmeno = Str_Replace("<","&lt;",$jmeno);
$jmeno = Str_Replace(">","&gt;",$jmeno);
$smajlici = array("*1*"=>"<img src='1.gif'>","*2*"=>"<img src='2.gif'>","*3*"=>"<img src='3.gif'>","*4*"=>"<img src='4.gif'>","*5*"=>"<img src='5.gif'>","*6*"=>"<img src='6.gif'>","*7*"=>"<img src='7.gif'>","*8*"=>"<img src='8.gif'>","*9*"=>"<img src='9.gif'>","*10*"=>"<img src='10.gif'>","*11*"=>"<img src='11.gif'>","*12*"=>"<img src='12.gif'>");
$zprava = strtr($zprava, $smajlici);

mysql_query("INSERT INTO `jmena` (`id`,`jmeno`,`prijmeni`,`email`,`zprava`,`ip`,`datum`) VALUES ('','".addslashes($jmeno)."','$prijmeni','$email','".addslashes($zprav a)."','$ip','$datum')");

}

}

$prispevky = MySQL_Query("SELECT * FROM jmena ORDER BY `id` DESC");
while($nacti = MySQL_Fetch_Array($prispevky)){

echo "<br /><br /><div id='border1'><div id='border2'>Jméno : ".$nacti[jmeno]." | Web : ".$nacti[prijmeni]." | E-mail : ".$nacti[email]." </div><div id='border3'><br>".$nacti[zprava]." </div><div id='border4'>Jeho IP je : ".$nacti[ip]." | Datum a čas založení :".$nacti[datum]."</div><a href='index2.php?delete=".$nacti[id]."'>X</a></div>";

}
$zaznamu=mysql_query("select count(*) as celkem from jmena");
$zaznam=mysql_fetch_array($zaznamu);

echo "<center>"."V knize je celkem : ".$zaznam["celkem"]." příspěvků."."</center>";

if(Isset($_GET['delete'])){

$sql = "DELETE FROM `jmena` WHERE `id` = '".$_GET['delete']."' LIMIT 1";
mysql_query($sql);

}
?>
BetaCam
Profil
Nastavíš "registred_globals" na "off"

začneš používat superglobální pole $_GET, $_POST atd.

doporučuju prostudovat nějaké články je jich na internetu hromada např.:

http://interval.cz/clanky/superglobalni-promenne-v-php/
Toto téma je uzamčeno. Odpověď nelze zaslat.

0