webzdarma mysql ukládá jen čísla
8 příspěvků
Archiv diskusního fóra
Fórum je uzavřené a slouží pouze ke čtení. Některé informace mohou být zastaralé.
-
Dobrý den, potřebuji pomoc. Databáze je v pořádku vytvořená a načítání a ukládání jde dobře. Komunikace taky. Ale když na svých stránkách dám registrovat a vyplním údaje tak registrace proběhne v pořádku. Jenže při hlášení nejde. Když se přihlásím do MYSQL tak v tabulce místo textu jsou čísla. Vzor: id_uzivatele mediumint(8) UNSIGNED Ano NULL auto_increment uzivatelske_jmeno varchar(20) latin2_czech_cs Ano NULL jmeno varchar(20) latin2_czech_cs Ano NULL primeni varchar(20) latin2_czech_cs Ano NULL ulice varchar(20) latin2_czech_cs Ano NULL mesto varchar(20) latin2_czech_cs Ano NULL psc char(5) latin2_czech_cs Ano NULL email varchar(40) latin2_czech_cs Ano NULL pevna_linka char(15) latin2_czech_cs Ano NULL mobilni char(15) latin2_czech_cs Ano NULL heslo char(20) latin2_czech_cs Ano NULL datum_registrace datetime Ano NULL id_uzivatele uzivatelske_jmeno jmeno primeni ulice mesto psc email pevna_linka mobilni heslo datum_registrace 10 1 1 1 1 1 1 1 1 606717496665bcba 2013-12-30 19:11:19 místo id_uzivatele OK uzivatelske_jmeno VirusPK jmeno Petr primeni Kulczycki ulice xxxxxx mesto xxxxxx psc xxxxxx email kulczycki.petr@centrum.cz pevna_linka xxxxxx mobilni xxxxxx heslo xxxxxx datum_registrace OK
-
Ukládání asi nejde dobře, když tam uložilo něco jiného než mělo. Chtělo by to pořádně si projít proces ukládání do DB. Především zkontrolovat, jaké hodnoty se při ukládání předávají. Něco mi říká, že je to tímto - předáváš jiné hodnoty než máš. Respektive se jedná o chybné vytažení hodnoty.
-
Když svuj odkaz mysql_spoj.php se struktůrou : <?php # Výpis kódu mysql_spoj.php DEFINE ('DB_UZIVATEL','xxxx'); DEFINE ('DB_HESLO','xxxxxx'); DEFINE ('DB_HOSTITEL','mysql.webzdarma.cz'); DEFINE ('DB_NAZEVDATABAZE','xxxx'); $dbc = @mysql_connect (DB_HOSTITEL, DB_UZIVATEL, DB_HESLO) or die ('Nemohu se připojit k databazi MySQL: '. mysql_error()); mysql_select_db (DB_NAZEVDATABAZE) or die ('Nelze vybrat databázi: '. mysql_error()); ?> otestuju v PC tak vše jde. nastavení mám na localhost v PC. Ale na nastavení u serveru wz.cz mi to dělá toto. <?php # Výpis kódu registruj.php // Nastavte titul stránky a zahrňte záhlaví HTML. $titul_stranky = 'Registrace'; include ('sablony/zahlavi.inc'); if (isset($_POST['odeslat'])) { // Zpracovat formulář. $zprava = NULL; // Nová prázdná proměná. // Ověřit jméno. if (strlen($_POST['jmeno']) > 0) { $jmeno = true; } else { $jmeno = false; echo '<p>Zapoměli jste zadat jméno !</p>'; } // Ověřit přímení. if (strlen($_POST['primeni']) > 0) { $primeni = true; } else { $primeni = false; echo '<p>Zapoměli jste zadat přímení !</p>'; } // Ověřit adresu elektronické pošty. if (strlen($_POST['email']) > 0) { $email = true; } else { $email = false; echo '<p>Zapoměli jste zadat adresu elektronické pošty !</p>'; } // Ověřit uživatelské jméno. if (strlen($_POST['uzivatelske_jmeno']) > 0) { $uzivatelske_jmeno = true; } else { $uzivatelske_jmeno = false; echo '<p>Zapoměli jste zadat uživatelské jméno !</p>'; } // Ověřit heslo a porovnat je s potvrzením hesla. if (strlen($_POST['heslo1']) > 0) { if ($_POST['heslo1'] == $_POST['heslo2']) { $heslo = true; } else { $heslo = false; echo '<p>Vaše heslo nesouhlasí ! Zadejte je znovu.</p>'; } } else { $heslo = false; echo '<p>Nebylo zadáno heslo !</p>'; } // Ověřit jméno. if (strlen($_POST['ulice'])) { $ulice = true; } // Ověřit jméno. if (strlen($_POST['mesto'])) { $mesto = true; } // Ověřit jméno. if (strlen($_POST['pevna_linka'])) { $pevna_linka = true; } // Ověřit jméno. if (strlen($_POST['psc'])) { $psc = true; } // Ověřit jméno. if (strlen($_POST['mobilni'])) { $mobilni = true; } // Ověřit Pravidla registrace. if (strlen($_POST['pravidla']) > 0) { $pravidla = true; } else { $pravidla = false; echo '<p>S Pravidli musíte souhlasit !</p>'; } if ($jmeno && $primeni && $email && $uzivatelske_jmeno && $heslo && $pravidla) { // Je-li vše vpořádku. // Registrovat uživatele. require_once ('mysql_spoj.php'); // Připojit se k databázi. // Vytvořit dotaz. $dotaz = "INSERT INTO uzivatele (uzivatelske_jmeno, jmeno, primeni, ulice, mesto, email, pevna_linka, mobilni, psc, heslo, datum_registrace) VALUES ('$uzivatelske_jmeno', '$jmeno', '$primeni', '$ulice', '$mesto', '$email', '$pevna_linka', '$mobilni', '$psc', PASSWORD('$heslo'), NOW())"; $vysledek = @mysql_query ($dotaz); // Spustit dotaz. if ($vysledek) { // Je-li vše OK. // Můžete odeslat email. $zprava = "Děkujeme za registraci na mém webovém portálu !nVaše uživatelské jméno je '{$_POST['uzivatelske_jmeno']}' a vaše heslo je '{$_POST['heslo1']}'.n nS pozdravem.nKulczycki Petr"; mail ($_POST['email']. 'Děkujeme za registraci !', $zprava, 'Od : kulczycki.petr@centrum.cz'); echo '<p>Děkuji za registraci.<br/ >Na zadaný e-mail Vám byly odeslány přihlašovací údaje.<br/ >Niní se můžete přihlásit.</p>'; include ('sablony/pata.inc'); // Zahrňte patu. exit(); // Ukončení skriptu. } else { // Něco není v pořádku. $zprava .= '<p>Registrace byla přerušena. Omlouvám se.</p><p>'. mysql_error(). '</p>'; } mysql_close(); //Ukončení databáze. } else { $zprava .= '<p>Zkuste to prosím znovu.</p>'; } } if (isset($zprava)) { echo '<font color="red">'. $zprava. '</font>'; } // Zobrazit formulář. ?> <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> <fieldset><legend>Zadejte příslušné údaje do následujícího formuláře :</legend> <p><font color="#ccff00"><b >ii</b></font> <b>Jméno :</b> <input type="text" name="jmeno" size="20" maxlength="40" value="<?php if (isset($_POST['jmeno'])) echo $_POST['jmeno']; ?>" /> <font color="#ccff00"><b >ii</b></font> <b>Přímení :</b> <input type="text" name="primeni" size="20" maxlength="40" value="<?php if (isset($_POST['primeni'])) echo $_POST['primeni']; ?>" /></p> <p><font color="#ccff00"><b >ii</b></font> <b>Adresa el. pošty :</b> <input type="text" name="email" size="40" maxlength="60" value="<?php if (isset($_POST['email'])) echo $_POST['email']; ?>" /></p> <p><font color="#ccff00"><b >ii</b></font> <b>Adresa : Ulice :</b> <input type="text" name="ulice" size="20" maxlength="50" value="<?php if (isset($_POST['ulice'])) echo $_POST['ulice']; ?>" /> <font color="#ccff00"><b >iiiii</b></font> <b>Telefon : Pevná linka :</b> <input type="cislo" name="pevna_linka" size="9" maxlength="15" value="<?php if (isset($_POST['pevna_linka'])) echo $_POST['pevna_linka']; ?>" /></p> <p><font color="#ccff00"><b >iiAdresaiiii</b></font> <b>Město :</b> <input type="text" name="mesto" size="20" maxlength="50" value="<?php if (isset($_POST['mesto'])) echo $_POST['mesto']; ?>" /> <font color="#ccff00"><b >iiTelefoniiii</b></font> <b>Mobilní : </b> <input type="cislo" name="mobilni" size="9" maxlength="15" value="<?php if (isset($_POST['mobilni'])) echo $_POST['mobilni']; ?>" /></p> <p><font color="#ccff00"><b >iiAdresaiiii</b></font> <b>PSČ :</b> <input type="cislo" name="psc" size="5" maxlength="10" value="<?php if (isset($_POST['psc'])) echo $_POST['psc']; ?>" /></p> <p><font color="#ccff00"><b >ii</b></font><b>Přihlašovaci údaje :</b></p> <p><font color="#ccff00"><b >iiiiiii</b></font> <b>Uživatelské jméno :</b> <input type="text" name="uzivatelske_jmeno" size="20" maxlength="40" value="<?php if (isset($_POST['uzivatelske_jmeno'])) echo $_POST['uzivatelske_jmeno']; ?>" /></p> <p><font color="#ccff00"><b >iiiiiii</b></font> <b>Heslo :</b> <input type="password" name="heslo1" size="20" maxlength="40" /></p> <p><font color="#ccff00"><b >iiiiiii</b></font> <b>Potvrďte heslo :</b> <input type="password" name="heslo2" size="20" maxlength="40" /></p> <p><font color="#ccff00"><b >ii</b></font> <b>Souhlasím s <a href="pravidla.php">Podmínky registrace</a> .</b> <input type="checkbox" name="pravidla"></p><br/ ></fieldset> </fieldset> <div align="center"><input type="submit" name="odeslat" value="Registruj" /> </div></form> <!-- Konec formuláře --> <?php echo '<p><p>Zatím nefunguje správné uložení registračních udajů.</p></p>'; // Konec hlavního podmíněného příkazu SUBMIT. include ('sablony/pata.inc'); // Zahrňte patu HTML ?>
-
tak jsem zkusil jiní virtuální web s podobnou verzí jako na webu XAMPP a dělá to to samé tak bych potřeboval pomoc.
-
No jo no. Měl jsem pravdu. Vkládáš tam úplně jiné hodnoty než máš. Do DB ukládáš booleovské hodnoty místo hodnot z formuláře. if (strlen($_POST['jmeno']) > 0) { $jmeno = true; } else { $jmeno = false; echo '<p>Zapoměli jste zadat jméno !</p>'; } $dotaz = "INSERT INTO uzivatele (uzivatelske_jmeno, jmeno, primeni, ulice, mesto, email, pevna_linka, mobilni, psc, heslo, datum_registrace) VALUES ('$uzivatelske_jmeno', '$jmeno', '$primeni', '$ulice', '$mesto', '$email', '$pevna_linka', '$mobilni', '$psc', PASSWORD('$heslo'), NOW())"; Pro vložení do DB používáš třeba proměnu $jmeno, ale ten nabývá pouze hodnoty true nebo false. Tedy 1 nebo 0. Oprava je jednoduchá. Místo $jmeno = true; použij $jmeno = mysql_real_escape_string($_POST['jmeno']); To samé u ostatních. Podmínkou to projde, protože jakákoli hodnota je true. False je pak samozřejmě false.
-
Tak mi už vše ukládá. Ale nechce mi to přihlašovat. " Kombinace uživatelského jména a hesla neodpovídá! " Přihlašuji se tak jak jsem zadal při registraci. V phpMyAdminu je vše vidět. <?php if (isset($_POST['odeslat'])) { // Ověřit, zda byla stránka volná z formuláře. require_once ('mysql_spoj.php'); // Připojit se k databázi. // Vytvořte funkci pro ošetření problematických znaků function opravit_chyby ($data) { global $dbc; // Vyžaduje databázové připojení if (ini_get('magic_quotes_gpc')) { $data = stripslashes($data); } return mysql_real_escape_string($data, $dbc); } // Konec funkce. $zprava = NULL; // Nová prázdná proměnná // Ověřit uživatelské jméno. if (empty($_POST['uzivatelske_jmeno'])) { $u =FAlSE; $zprava .= '<p>Nebylo zadáno uživatelské jméno!</p>'; } else { $u = opravit_chyby($_POST['uzivatelske_jmeno']); } // Ověřit heslo. if (empty($_POST['heslo'])) { $h =FAlSE; $zprava .= '<p>Nebylo zadáno heslo!</p>'; } else { $h = opravit_chyby($_POST['heslo']); } if ($u && $h) { // Je-li vše v pořádku ... // Odeslat dotaz do databáze. $dotaz = "SELECT id_uzivatele, jmeno FROM uzivatele WHERE uzivatelske_jmeno='$u' AND heslo=PASSWORD('$h')"; $vysledek = @mysql_query ($dotaz); // Spustit dotaz. $radek = @mysql_fetch_array ($vysledek, MYSQL_NUM); // Vrací výsledky jsou-li nalezeny. if ($radek) { // Nalezen záznam. // Nastavit soubor cookie a přesměrovat. setcookie ('jmeno', $radek[1]); setcookie ('id_uzivatele', $radek[0]); header ("Location: http://". $_SERVER['HTTP_HOST']. dirname($_SERVER['PHP_SELF']). "/prihlasen.php"); exit(); // Ukončit skript. } else { // Nenalezen žádný záznam. $zprava = '<p>Kombinace uživatelského jména a hesla neodpovýdá!</p>'; } mysql_close(); // Zavřít připojení k databázi. } else { // Pokud došlo k chybě. $zprava .= '<p>Zkuste to znovu.</p>'; } } // Konec zpracování formuláře. // Nastavte titul stránky a zahrňte záhlaví HTML. $titul_stranky = 'Přihlásit'; include ('sablony/zahlavi.inc'); // Zobrazit chybovou zprávu. if (isset($zprava)) { echo '<font color="red">'. $zprava. '</font>'; } ?> <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> <fieldset><legend><h1>Přihlášení</h1></legend> <p>Přihlásit se můžete pouze v případě , že Váš prohlížeč umožnuje ukládání souborů cookie.</p><br /> <p><b>Uživatelské jméno :</b> <input type="text" name="uzivatelske_jmeno" size="10" maxlength="20" value="<?php if (isset($_POST['uzivatelske_jmeno'])) echo $_POST['uzivatelske_jmeno']; ?>" /></p> <p><b>Heslo :</b> <input type="password" name="heslo" size="20" maxlength="20" /></p> </fieldset> <div align="center"><input type="submit" name="odeslat" value="Přihlásit" /></div> </form><!-- End of Form --> <?php echo '<p>Zatím nefunguje. Zlobí hlavní server Odpusťte.</p>'; include ('sablony/pata.inc'); // Zahrňte patu HTML ?>
-
Nechej si vypsat obsah proměnné $dotaz, abys viděl co se tam vytváří a zda má správně hodnoty. A rozhodně bych se vyhnul používáním @. Sice je fajn, že potlačí zobrazení chyby, ale pokud chyba skutečně nastane nebo něco nefunguje, tak zavináč je v tomto pak zlo, protože ti tu chybu skryje a budeš prd vědět. Minimálně aspoň při testování a ladění bych ten zavináč nedával. Možná bude problém v té doprovodné funkce opravit_chyby(). Raději bych to upravil na: function opravit_chyby ($data) { if (@get_magic_quotes_gpc()) { $data = stripslashes($data); } return mysql_real_escape_string($data); }
-
"Zatím nefunguje. Zlobí hlavní server Odpusťte." Ty ty ty. To se nedělá :) Schvalovat to na chybu serveru, když je to pouze tvá chyba. Správně má být "Zatím nefunguje. Jsem hloupý, ale pracuji na tom". ;)