DevProTalk

DevProTalk (http://www.devprotalk.com/index.php)
-   PHP (http://www.devprotalk.com/forumdisplay.php?f=9)
-   -   Gde je greska? (http://www.devprotalk.com/showthread.php?t=9318)

slavkan 06. 11. 2010. 23:54

Gde je greska?
 
Znaci ubih se 2h da nadjem gresku. Sto je jos tuznije ovo u lokalu radi ali na serveru nece. Kopiram fajl iz lokala samo promenima parametre znaci naziv baze, korisnicko ime password i posle sabmitovanja forme ne dobijem nikakvu informaciju sa kraja forme. Znaci nema gresaka, forma kao prodje, ali nema tog obavestenja da sam uspesno registrovao diplomca i naravno nema zapisa u bazi. Znaci ne upise se nista :1007: Ako neko zna u cemu je fora bio bih mu zahvalan

Kôd:

<?php
                        //konekcija na bazu
                        mysql_connect("localhost", "root", "") or die(mysql_error());
                        mysql_select_db("fakultet") or die(mysql_error());
                        $forma='<form action="'.$_SERVER['PHP_SELF'].'" method="post">
                        <table border="0">
                        <div class="post">
                        <h2>Osnovni podaci</h2>
                        <p></p>
                        </div>
                        <tr><td>Ime diplomca:*</td><td>
                        <input type="text" name="ime" maxlength="35">
                        </td></tr>
                        <tr><td>Prezime diplomca:*</td><td>
                        <input type="text" name="prezime" maxlength="35">
                        </td></tr>
                        <tr><td>Korisnicko ime:*</td><td>
                        <input type="text" name="korime" maxlength="35">
                        </td></tr>
                        <tr><td>Sifra:*</td><td>
                        <input type="password" name="password" maxlength="35">
                        </td></tr>
                        <tr><td>Ponovi sifru:*</td><td>
                        <input type="password" name="password2" maxlength="35">
                        </td></tr>
                        <tr><td>E-mail:*</td><td>
                        <input type="text" name="email" maxlength="35">
                        </td></tr>
                        <tr><td>Adresa stanovanja:*</td><td>
                        <input type="text" name="adresa" maxlength="55">
                        </td></tr>
                        <tr><td>Telefon:*</td><td>
                        <input type="text" name="telefon" maxlength="15">
                        </td></tr>
                        <tr><td>Tip korisnika:*</td><td>
                        <select name="tip">
                        <option value="A">Administrator
                        <option value="K" selected>Korisnik
                        </select>
                        </td></tr>
                        <tr><td>Status zaposlenosti:*</td><td>
                        <select name="status">
                        <option value="zaposlen">Zaposlen
                        <option value="nezaposlen" selected>Nezaposlen
                        </select>
                        <tr><th colspan=2><input type="submit" name="submit" value="Registracija"></th></tr>
                        <tr><th colspan=2><input type="reset" name="reset" value="Resetovanje"></tr></td></table>               

                        </form> ';
                        //Proveravamo da li je korisnik pritisnuo submmit
                        if (isset($_POST['submit'])) {
                                $error='';
                               
                        //Provera da li je korisnik popunio polja
                        if (!$_POST['ime'] | !$_POST['prezime'] | !$_POST['korime'] | !$_POST['password'] | !$_POST['email'] | !$_POST['adresa'] | !$_POST['telefon']){
                                $error .= '<li>Niste popunili sva polja</li>';
                                }

                        // Provera da li je username u upotrebi
                        if (!get_magic_quotes_gpc()) {
                                $_POST['korime'] = addslashes($_POST['korime']);
                        }
                        $usercheck = $_POST['korime'];
                        $check = mysql_query("SELECT KOR_IME FROM DIPLOMCI WHERE kor_ime = '$usercheck'")
                        or die(mysql_error());
                        $check2 = mysql_num_rows($check);

                        //Ako korisnicko ime postoji u bazi ispisujemo gresku
                        if ($check2 != 0) {
                                $error .= '<li>Greska, username koji ste unijeli '.$_POST['korime'].' je u upotrebi.</li>';
                        }

                        // Ispitujemo da li su uneti passwordi isti
                        //if ($_POST['password'] != $_POST['password2']){
                        //        $error .= '<li>Niste unijeli iste passworde.</li>';
                        //}

                        //Provera da li je unijeta e-mail adresa ispravna
                        if (!eregi('^[a-zA-Z0-9_\-\.]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]', $_POST['email'])){
                                $error .= '<li>Uneta email adresa nije ispravna</li>';
                        }

                        if (!eregi('[0-9]', $_POST['telefon'])){
                                $error.= '<li>Pogresno ste unijeli format telefona</li><ul>';
                        }

                        // Vrsimo kriptovanje sifre md5 algoritmom
                        $_POST['password'] = md5($_POST['password']);
                        if (!get_magic_quotes_gpc()) {
                                $_POST['password'] = addslashes($_POST['password']);
                                $_POST['korime'] = addslashes($_POST['korime']);
                        }
                        if($error=='')
                        {
                                //Upisivanje u bazu
                                $activactionkey=md5(rand());
                               
                                $datumreg=date("Y-m-d");
                                $tip=$_POST['tip'];
                                $ime=$_POST['ime'];
                                $prezime=$_POST['prezime'];
                                $korime=$_POST['korime'];
                                $password=$_POST['password'];
                                $adresa=$_POST['adresa'];
                                $email=$_POST['email'];
                                $status=$_POST['status'];
                                $telefon=$_POST['telefon'];
                                $korime=mysql_real_escape_string($korime);
                                $insert = "INSERT INTO diplomci (TIP,IME,PREZIME,ADRESA,EMAIL,KOR_IME,SIFRA,STATUS,DATUM_REG,ACTIVACTIONKEY,AKTIVIRAN)
                                VALUES ('".$tip."','".$ime."','".$prezime."','".$adresa."','".$email."','".$korime."','".$password."', '".$status."','".$datumreg."','".$activactionkey."','1')";
                                $add_member = mysql_query($insert);
                                        if($add_member)
                                        {
                                                $forma = "<h2>Uspjesno ste registrovali diplomca</h2><p>Popunite i ostale podatke o diplomcu</a>.</p> ";
                                        }
                                } else
                                {
                                        echo "Javile su se sljedeće greske <ul>".$error."</ul>";
                                }
                               
                               
                        }
                        echo $forma;
                       
                        $to = $_POST['email'];
                      $subject = "Potvrdite vasu registraciju";
                      $message = "Dobrodosli na nas sajt!\r\rVi ili neko drugi koristi ovu email adresu da se registruje. Mozete se registrovati klikom na sljedeci link:\r http://www.mojsajt.info/act.php?activactionkey=$activactionkey\r\rAko ste ovaj mail dobili greskom ignorisite ga i bicete automatski izbrisani sa liste.\r\r mojsajt.info";
                                                $headers  = 'MIME-Version: 1.0' . "\r\n";
                                                $headers .= 'Content-type: text; charset=iso-8859-1' . "\r\n";
                      $headers .= 'Aktivacija' . "\r\n";
                      $headers .= 'From: webmaster@example.com' . "\r\n" ;
                          mail($to, $subject,$message,$headers);
                       
                        ?>


vladapopster 07. 11. 2010. 00:12

Proveri log
 
Jel ti javlja neku gresku u PHP error logu?

razno 07. 11. 2010. 00:14

Mislim da ti ovo vraca FALSE i zato ti forma prolazi bez greske
Kôd:

$insert = "INSERT INTO diplomci (TIP,IME,PREZIME,ADRESA,EMAIL,KOR_IME,SIFRA,STATUS,DATUM_REG,ACTIVACTIONKEY,AKTIVIRAN)
                                VALUES ('".$tip."','".$ime."','".$prezime."','".$adresa."','".$email."','".$korime."','".$password."', '".$status."','".$datumreg."','".$activactionkey."','1')";
                                $add_member = mysql_query($insert);

prepravi u
Kôd:

$insert = "INSERT INTO `diplomci` (`TIP`,`IME`,`PREZIME`,`ADRESA`,`EMAIL`,`KOR_IME,SIFRA`,`STATUS`,`DATUM_REG`,`ACTIVACTIONKEY`,`AKTIVIRAN`)
                                VALUES ('$tip','$ime','$prezime','$adresa','$email','$korime','$password', '$status','$datumreg','$activactionkey','1')";
                                $add_member = mysql_query($insert);

- Koliko vidim oslanjas se na magic_quotes_gpc prilikom inserta sto je lose, koristi kastovanje(cast) kod int vrednosti i mysql_real_escape_string() za stringove
- Korisnicko ime eskejpujes dva puta
- Umesto md5 bolje koristi recimo sha1 za kriptovanje sifre
- Kada kriptujes sifru nemas vise razloga da je eskepujes jer je povratna vrednost sacinjena samo od slova i brojevi

ima jos neke sitnice ali mi je ovo upalo u oko :)

slavkan 07. 11. 2010. 00:53

Prepravio i opet isto, jasno je da nesto INSERT naredba ne stima ali nece da prodje ni sa ovim navodnicima. Sto se tice error loga nema nista, mislim nema obavestenja vezano za ovaj upit. Ovo ostalo cu da prepravim ali sta mi vredi kad ne moze da se upise u bazu :1004:

Milance 07. 11. 2010. 01:43

Ne vidim gde printas $error ako greska postoji?!

Insert ti se izvrsava samo pod uslovom da nema greske a gresku ne stampas nigde pa ti se cini da je sve u redu, a ocigledno nije.

vidak 07. 11. 2010. 01:59

Kako uspevaš da se kao root pristupaš bazi na serveru. Imaš svoj VPS, VDS?

ubaci ovo
ini_set('error_reporting', E_ALL);
ini_set('display_errors', 1);
ini_set('display_starup_errors', 1);

i jednostavno probaj da deo po deo puštaš npr prvo echo $forma, pa da vidiš koji ti deo ne prolazi. Pa kad nađeš deo koji ne prolazi, njega izdeliš na delove ili pregledaš ...

slavkan 07. 11. 2010. 03:22

Greske valjda stampam ovde:

Kôd:

echo "Javile su se sljedeće greske <ul>".$error."</ul>";
A to za user i pass, to sam ja stavio tek onako, uredno ja postavim tu sve parametre, jer znas kad ne podesis to oko pass i usera izbaci ti odmah gresku, znaci ja vidim tu moju formu, provera gresaka radi tj recimo ako ne popunim neko polje koje sam gore naveo da mora da se popuni dobijem gresku da nije popunjeno, kad sve popunim kako treba i sabmitjem formu ne dobijem tu poruku da sam uspesno registrovao diplomca tj ne dobijem nista osim ponovo prazne forme da je popunim, kao da se nista ne desi.

LiquidBrain 07. 11. 2010. 04:25

dodaj:
Kôd:

echo mysql_error();
posle
Kôd:

$add_member = mysql_query($insert);
pa vidi sta ti vrati?

pecili 07. 11. 2010. 11:22

Kôd:

mysql_query("INSERT INTO diplomci (TIP,IME,PREZIME,ADRESA,EMAIL,KOR_IME,SIFRA,STATUS,DATUM_REG,ACTIVACTIONKEY,AKTIVIRAN)
VALUES ('$tip','$ime','$prezime','$adresa','$email','$korime','$password', '$status','$datumreg','$activactionkey','1')")
or die(mysql_error());


slavkan 07. 11. 2010. 16:01

Pecili ako uradim ovako kao sto si ti rekao dobijam sledecu gresku:

Kôd:

Table 'slavkok_posao.diplomci' doesn't exist
sto je nemoguce (slavkok_posao tako mi se zove baza)

Ako stavim velika slova DIPLOMCI dobijam sljedecu gresku:

Kôd:

Unknown column 'STATUS' in 'field list'
sto je takodje nemoguce jer kolona STATUS postoji.

Ako stavim ovo 'diplomci' pod navodnike dobijam poruku da imam gresku blzu 'diplomci'

Ako vratim kao sto je bilo ono moje na pocetku dobijam sledecu gresku:

Kôd:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''diplomci' ('TIP','IME','PREZIME','ADRESA','EMAIL','KOR_IME','SIFRA','STATUS','D' at line 1
Eeeeeeee pa zivote gde je ta sintaksna greska vise??? Jasno je da je sintaksna greska u pitanju:1014:


Vreme je GMT +2. Trenutno vreme je 12:05.

Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.

Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.