Autor | Zpráva | ||
---|---|---|---|
Měsíček Profil |
#1 · Zasláno: 19. 11. 2007, 19:38:35 · Upravil/a: Měsíček
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("<","<",$jmeno); $jmeno = Str_Replace(">",">",$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 |
#2 · Zasláno: 19. 11. 2007, 19:43:44
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 |
#3 · Zasláno: 19. 11. 2007, 19:46:27
To '$zprav a' v tom inserte je naschvál alebo chyba pri kopírovaní?
|
||
Měsíček Profil |
#4 · Zasláno: 19. 11. 2007, 19:49:00
špatně nakopírováno seká to tu řádky :-(
|
||
tiso Profil |
#5 · Zasláno: 19. 11. 2007, 20:30:44
...no ty koki, taký bordel som dávno nevidel...
|
||
Měsíček Profil |
#6 · Zasláno: 19. 11. 2007, 20:35:13
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 |
#7 · Zasláno: 19. 11. 2007, 20:40:12
...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 |
#8 · Zasláno: 19. 11. 2007, 20:47:54
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 |
#9 · Zasláno: 20. 11. 2007, 06:27:38
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 |
#10 · Zasláno: 20. 11. 2007, 06:44:10
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 |
#11 · Zasláno: 20. 11. 2007, 08:25:42
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 |
#12 · Zasláno: 20. 11. 2007, 10:15:41
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 |
#13 · Zasláno: 20. 11. 2007, 11:46:42
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 |
#14 · Zasláno: 20. 11. 2007, 12:30:23
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 |
#15 · Zasláno: 20. 11. 2007, 14:26:50
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 |
#16 · Zasláno: 20. 11. 2007, 14:47:08
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 |
#17 · Zasláno: 20. 11. 2007, 14:49:34
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 |
#18 · Zasláno: 20. 11. 2007, 15:10:44
no tak jsem teďka zkrátil kód přibližně o 15 řádků :-)), byli tam malé zbytečnosti ..
|
||
BetaCam Profil |
#19 · Zasláno: 20. 11. 2007, 15:54:47
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 |
#20 · Zasláno: 20. 11. 2007, 16:04:50
tak to jsem pochopil a jak tedy přestavět jádro, aby to šlapalo i bez RG .. ?
|
||
Měsíček Profil |
#21 · Zasláno: 20. 11. 2007, 16:14:37
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("<","<",$jmeno); $jmeno = Str_Replace(">",">",$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 |
#22 · Zasláno: 20. 11. 2007, 16:18:20
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/ |
||
Časová prodleva: 16 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0