[ M4ker @ 19.01.2009. 21:13 ] @
Zdravo svima. Imam jedan problem sa jednom php skriptom u pitanju je guestbook skripta skinuta sa hotscripts simplegb. Problem je sto mi prijavljuje Notice: Undefined index: blabla /.../putanja.php

Code:
<?php

    include("simplegb_config.php");
require_once "../maincore.php";
require_once THEMES."templates/header.php";

echo "<div align='center'>";
    $gast_submit = "Pošalji";
    $ip          = getenv("REMOTE_ADDR");
    $show_form      = true;
    $do_insert   = true;

if (isset($gast_submit) && $gast_submit == "Pošalji"){

    $gast_name =  $userdata['user_name'];
    $gast_email = " ";
    $gast_text_preview =  $_POST["gast_text"];
    $gast_text = urlencode(nl2br(htmlspecialchars($gast_text_preview)));


    $gast_date = date("d m Y - H:i:s");

    $laenge_name = strlen($gast_name);                        /* get the length of name input */
    if ($laenge_name >=$max_name){
        print('<font color=red size=1>'.$error_lang1.' [ maximal '.$max_name.' zeichen erlaubt! dein name hat '.$laenge_name.' zeichen ]<br><br></font>');
        $do_insert=false;
    }
    $laenge_text = strlen($gast_text);
    if ($laenge_text >=$max_text){
        print('<font color=red size=1>'.$error_lang2.' [ maximal '.$max_text.' zeichen erlaubt! dein text hat '.$laenge_text.' zeichen ]<br><br></font>');
        $do_insert=false;
    }
    $laenge_email = strlen($gast_email);
    if ($laenge_email >=$max_email){
        print('<font color=red size=1>'.$error_lang3.' [maximal '.$max_email.' zeichen erlaubt! deine email hat '.$laenge_email.' zeichen ]<br><br></font>');
        $do_insert=false;
    }
    if ($gast_name == ""){
        print('<font color=red size=1>'.$error_name.'<br><br></font>');
    }
    if ($gast_text == ""){
        print('<font color=red size=1>'.$error_text.'<br><br></font>');
    }

    if (isset($gast_name) && $gast_name != "" && isset($gast_text) && $gast_text != "" && $do_insert){
        $insert= implode("",array($gast_ip,";",$gast_date,";",$gast_name,";",$gast_email,";",$gast_text,"\n"
        ));
        $fp = fopen($datei, "a-");fputs($fp, $insert);fclose($fp);
        $show_form = false;
    }
}

// the FORM begins here -------------------------------------------------------------------------------------
if (iMEMBER) {
if ($show_form == true) {
    echo '
    <table border='.$td_border.' cellspacing=2 cellpadding=1 width=400>
          <tr>
              <td background='.$td_tablebg.' bgcolor='.$tabelle1.'><b>Ljubavni sms</b></td>
          </tr>
          <tr>
              <td bgcolor='.$tabelle2.'>
                  <div align=center>
                  <FORM ACTION="sms_ljubavni.php" METHOD=POST>

                <input method="POST" type="hidden" value="'.$ip.'" >

                <br>';
                  if(iADMIN) { echo '<INPUT NAME="gast_name" size="40" VALUE="'.$userdata['user_name'].'" ><br><br>'; }
echo '<br>Vaše poruke možete da pošaljete ako koristite sledeću formu.<br><b>Napomena:</b>Duple poruke biće obrisane, poruke koje nisu odgovarajuće sadržine takodje biće obrisane i korisnik koji ih je napisao biće opomenut ako nastavi sa takvim ponašanjem i trajno banovan sa sajta.<br>';

                  echo 'Tvoj sms:<br>
                  <textarea cols="40" rows="7" method="POST" name="gast_text" wrap=soft>'.$gast_text_preview.'</textarea><br>

                  <INPUT method="POST" TYPE="submit" VALUE="Pošalji">

                </FORM>
                </div>
              </td>
          </tr>
      </table>
';
}
}
// the FORM ends here ------------------------------------------------------------------------------------------

$array = file($datei);

$anzal_entrys = count($array);
if (count($array) == 0){ echo "Nema poruka";}
if (count ($array) == 1){ echo "1 Poruka";}
if (count ($array) > 1) {echo count($array)." Poruka";}



if ($rev == 1){ $array = array_reverse($array); }

                 /* $gast_entry[0] the ip */
                 /* $gast_entry[1] date */
                /* $gast_entry[2] name */
                /* $gast_entry[3] email */
                /* $gast_entry[4] text */
for($x=0; $x<count($array); $x++){
    $gast_entry = explode(";",$array[$x]);
      $gast_entry[4] = urldecode($gast_entry[4]);
      print('
          <table border='.$td_border.' cellspacing=2 cellpadding=1 width='.$td_width.'>
              <tr>
                  <td background='.$td_tablebg.' bgcolor='.$tabelle1.'>
                      <a href=mailto:'.$gast_entry[3].'>'.$gast_entry[2].'</a>
                      - '.$gast_entry[1].'
                      </td>
              </tr>
              <tr>
                  <td bgcolor='.$tabelle2.'>'.$gast_entry[4].'</td>
              </tr>
          </table>
        <br>
  ');
}
echo "</div>";
require_once THEMES."templates/footer.php";
?>

greska je Notice: Undefined variable: gast_text_preview in :S kako ovo da sredim? na windows serveru mi nista ne prijavljuje ni jednu gresku ali na linux ovo prijavljuje.
Hvala unapred!
[ Tudfa @ 19.01.2009. 22:53 ] @
Na windows serveru ti ne prijavljuje jer je error_reporting u php.ini fajlu tako podesen.
Pogledaj http://php.net/error_reporting

Sad u naslovu pise undefined index, a dole pominjes undefined variable ?
Napisi tacno sta je, ili iskopiraj sve sto ti izbaci od poruka kad pokrenes skript.
Ako pise undefined variable to znaci da pokusavas da koristis neku promenljivu,
a da je pre toga nisi definisao.
U slucaju da je undefined index to je zato sto pokusavas da pristupis nepostojecem elementu
post niza u tvom slucaju, tj. kaze ti da ne postoji element post niza sa tim kljucem(indeksom).

znaci ti radis ovo :

Code:


$neka_promenljiva = $_POST['gast_text'];



ali taj element jednostavno ne postoji, jer nisi poslao par kljuc/vrednost preko post metoda.

pozZ

[ M4ker @ 20.01.2009. 11:35 ] @
Notice: Undefined index: user_name in /home/mojnisco/public_html/sms_ljubavni/sms_ljubavni.php on line 15

Notice: Undefined index: gast_text in /home/mojnisco/public_html/sms_ljubavni/sms_ljubavni.php on line 17

prijavio je zato sto sam menjao... ali ne znam kako da definisem variablu kada mi prijavi ja napisem nesto bzv $lala = "test"; ono mi posle prijavljuje test kao ne definisanu varijablu...

kako ovo moze da se resi?
[ dakipro @ 20.01.2009. 11:44 ] @
Pogledaj kako se definisu promenjive...
$lala = "test";
Ovde je promenjiva $lala, a "test" je njena vrednost .

uopste ne kontam koja je fora sa ovim delom koda:

Code:


    $gast_submit = "Pošalji";
    $ip          = getenv("REMOTE_ADDR");
    $show_form      = true;
    $do_insert   = true;

if (isset($gast_submit) && $gast_submit == "Pošalji"){



Ti prvo definises promenjivu i odma pitas dal je definisana?? Pa ti si je upravo definisao, mislim... ne kontam iskreno
[ Tudfa @ 20.01.2009. 13:00 ] @
A kazes da si skinuo gotovu skriptu ? Da nisi nesto menjao ?

ova $gast_submit promenljiva bi verovatno trebala da ima informaciju o tome da je pritisnuto dugme submit za slanje poruke...
Tako da bi umesto ovoga :

Code:
$gast_submit = "Pošalji";


pre trebalo da stoji :

Code:

$gast_submit = $_POST["ime_kljuca"];//ovo ime_kljuca je samo za primer


pa bi ovo :
Code:

if (isset($gast_submit) && $gast_submit == "Pošalji"){...


imalo smisla.

Za ove nedefinisane indekse ti vazi ono sto sam ti rekao u prvom postu tj. pokusavas da pristupis
nepostojecem elementu nekog niza. U slucaju niza $userdata npr. moze da se desi da niz postoji,
ako si ga definisao u nekom drugom fajlu pa ga ukljucio sa include, ali definitivno taj niz
nema element kojem moze da se pristupi preko tog indeksa. A sto se tice ovog $gast_text,
pretpostavljam da ti je to index preko koga ces pristupiti tekstu poslate poruke. Poruka koja
se javlja, je verovatno rezultat scenarija - pokreces skript, skript trazi parametre sa posta,
posto ih nema javalja ti sta se desava... Da bi ti proslo ovo bez poruka, treba da na formi imas
textarea sa atributom name="gast_text". Onda kad pritisnes submit to se salje preko posta,
i pristupas sa :

Code:


if(isset($_POST['gast_tekst']))
{
    $tekst_poruke = $_POST['gast_tekst'];
}



poz

[Ovu poruku je menjao Tudfa dana 20.01.2009. u 14:42 GMT+1]
[ M4ker @ 20.01.2009. 14:18 ] @
@tudfa da menjao sam i kao sto si reko nije bilo logicno $gast_submit = "Pošalji"; $gast_submit = $_POST["ime_kljuca"];//ovo ime_kljuca je samo za primer

tacno ali bi onda prijavilo gresku na

$gast_submit = $_POST["ime_kljuca"]

variabla nije definisana pa sam pokusao to da izbegnem pa sam samo dodao u formi mothod="post" i izbacio taj deo :S

http://www.hotscripts.com/Detailed/65579.html

ali prijavljuje posle ne definisane varijable cist kod je:

Code:
<?php

    include("simplegb_config.php");

?>
<html>
<head>
<title>simpleGB</title>
<style type="text/css">
<!--
body { background-color:#ffffff;
       margin-left:1px;
       margin-right:1px;
       cursor:auto;
       font-size:8pt;
       font-family:"verdana";
       list-style-type:square;
}

p,li { font-size:8pt;
       line-height:14pt;
       font-family:verdana;
       letter-spacing:0.2mm;
       word-spacing:0.8mm;
       color:silver;
}

a { font-size:10pt;
    line-height:14pt;
    color:black;
    font-weight:normal;
}

table { font-size:8pt;
        color:#222222;
        border: 1px solid #ffffff;
}

hr { width: 400px;
}

option, textarea, input, select, file {
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 10px;
    color: #007700;
    background-color: #EFFFEF;
    border: 1px solid #333333;
}
-->
</style>

</head>
<body background=bg03.gif>
<div align=center>
<h5>simpleGB <?php echo $simplegb_version; /* delete this or change it to whatever you want */ ?> </h5></font>
<br>


<?php

    $gast_submit = $_POST["senden"];
    $ip          = getenv("REMOTE_ADDR");
    $show_form      = true;
    $do_insert   = true;

if (isset($gast_submit) && $gast_submit == "send"){

    $gast_ip           =  $_POST["gast_ip"];
    $gast_name         =  htmlspecialchars($_POST["gast_name"]);
    $gast_email        =  htmlspecialchars($_POST["gast_email"]);
    $gast_text_preview =  $_POST["gast_text"];
    $gast_text         =  urlencode(nl2br(htmlspecialchars($gast_text_preview)));

    $gast_date = date("d m Y - H:i:s");

    $laenge_name = strlen($gast_name);                        /* get the length of name input */
    if ($laenge_name >=$max_name){
        print('<font color=red size=1>'.$error_lang1.' [ maximal '.$max_name.' zeichen erlaubt! dein name hat '.$laenge_name.' zeichen ]<br><br></font>');
        $do_insert=false;
    }
    $laenge_text = strlen($gast_text);
    if ($laenge_text >=$max_text){
        print('<font color=red size=1>'.$error_lang2.' [ maximal '.$max_text.' zeichen erlaubt! dein text hat '.$laenge_text.' zeichen ]<br><br></font>');
        $do_insert=false;
    }
    $laenge_email = strlen($gast_email);
    if ($laenge_email >=$max_email){
        print('<font color=red size=1>'.$error_lang3.' [maximal '.$max_email.' zeichen erlaubt! deine email hat '.$laenge_email.' zeichen ]<br><br></font>');
        $do_insert=false;
    }
    if ($gast_name == ""){
        print('<font color=red size=1>'.$error_name.'<br><br></font>');
    }
    if ($gast_text == ""){
        print('<font color=red size=1>'.$error_text.'<br><br></font>');
    }

    if (isset($gast_name) && $gast_name != "" && isset($gast_text) && $gast_text != "" && $do_insert){
        $insert= implode("",array($gast_ip,";",$gast_date,";",$gast_name,";",$gast_email,";",$gast_text,"\n"
        ));
        $fp = fopen($datei, "a-");fputs($fp, $insert);fclose($fp);
        $show_form = false;
    }
}

// the FORM begins here -------------------------------------------------------------------------------------
if ($show_form == true) {
    echo '
    <table border='.$td_border.' cellspacing=2 cellpadding=1 width=400>
          <tr>
              <td background='.$td_tablebg.' bgcolor='.$tabelle1.'><b>neuer Eintrag</b></td>
          </tr>
          <tr>
              <td bgcolor='.$tabelle2.'>
                  <div align=center>
                  <FORM ACTION="simplegb.php" METHOD=POST>

                <input name="gast_ip" type="hidden" value="'.$ip.'" >

                <br>
                  name<br>
                  <INPUT NAME="gast_name" size="40" VALUE="'.$gast_name.'" ><br><br>

                  email<br>
                  <INPUT NAME="gast_email" size="40" VALUE="'.$gast_email.'" ><br><br>

                  your message<br>
                  <textarea cols="40" rows="7" name="gast_text" wrap=soft>'.$gast_text_preview.'</textarea><br>

                  <INPUT NAME="senden" TYPE="submit" VALUE="send">

                </FORM>
                </div>
              </td>
          </tr>
      </table>
';
}
// the FORM ends here ------------------------------------------------------------------------------------------

$array = file($datei);

$anzal_entrys = count($array);
if (count($array) == 0){ echo "noch keine Eintr&auml;ge";}
if (count ($array) == 1){ echo "1 Eintrag";}
if (count ($array) > 1) {echo count($array)." Einträge";}



if ($rev == 1){ $array = array_reverse($array); }

                 /* $gast_entry[0] the ip */
                 /* $gast_entry[1] date */
                /* $gast_entry[2] name */
                /* $gast_entry[3] email */
                /* $gast_entry[4] text */

for($x=0; $x<count($array); $x++){
    $gast_entry = explode(";",$array[$x]);
      $gast_entry[4] = urldecode($gast_entry[4]);
      print('
          <table border='.$td_border.' cellspacing=2 cellpadding=1 width='.$td_width.'>
              <tr>
                  <td background='.$td_tablebg.' bgcolor='.$tabelle1.'>
                      <a href=mailto:'.$gast_entry[3].'>'.$gast_entry[2].'</a>
                      - '.$gast_entry[1].'
                      </td>
              </tr>
              <tr>
                  <td bgcolor='.$tabelle2.'>'.$gast_entry[4].'</td>
              </tr>
          </table>
        <br>
  ');
}
?>

<hr>

<font size=1 color="silver"><b> simpleGB <?php echo $simplegb_version; ?> | </b></font>
<a href="mailto:[email protected]"><font size=1 color=silver><b> XclanStinger</b></font></a>

</div>

</body>
</html>


a da izbacio sam css jer mi se podudara sa css iz cms-a (php-fusion)
[ Tudfa @ 20.01.2009. 17:08 ] @
Pazi logiku skripte

- ne proveri se da li je gast_submit poslat kao parametar sa posta
- postavi se show_form na true
- onda pita da li je setovan $gast_submit i da li sadrzi vrednost "send", a moze da se desi i da nije, ali ipak tu definise promenljive $gast_name, $gast_email, $gast_text ...
- zatim ispise formu, jer je show_form na pocetku setovao na true, bez obzira sto mozda nema promenljivih koje mu sluze za ispise itd...

Znaci te poruke se ispisuju su zbog nedovoljno razradjene logike skripta.
Odatle i verovatno od slicnih stvari ti dolaze takve smesne greske ... Pa ti kreni da prepravljas logiku
skripta ili trazi alternativu. Mozes da trazis drugu free scriptu sto ti je i najlakse,ali bolje
bi ti bilo za tebe da krenes da ucis php/mysql po malo.
Ja licno bi koristio bazu za ovo, sam to zavisi od hostinga i tvojih potreba i zelja...

poz

[Ovu poruku je menjao Tudfa dana 20.01.2009. u 18:21 GMT+1]

[Ovu poruku je menjao Tudfa dana 20.01.2009. u 18:21 GMT+1]
[ M4ker @ 20.01.2009. 18:34 ] @
preko ovakvih skripti i ostalih grluposti ucim i php imam knjizicu pa po malo ucim... a sto se tice drugih scripti nemam pojma neke uopste nece ni da rade... jel moze neka preporuka? a da je jednostavna za izmenu posto mi treba tako za razne sitnice?
[ Tudfa @ 20.01.2009. 18:46 ] @
Vidi da nema ovde mozda :

www.phpclasses.org

poz
[ Nemke_BG @ 21.01.2009. 11:51 ] @
a posto koristis PHP - Fusion ne bi bilo lose da mozda potrazis guestbook infusion za njega na netu, znam da sam u tim pretragama sigurno video nekoliko....ovo ti ne kazem zato sto ce ti infusioni koje ces naci biti bolji ili mozda sigurniji od nekog drugog skripta, nego zato su kompatibilniji sa tvojim cms-om.
[ M4ker @ 21.01.2009. 13:47 ] @
postoji samo jedan infusion za to i malo je teze da se prepravi...

nego imam jedno pitanje u medjuvremenu nacuio sam da napisem script da pise i cita text iz txt fajla slicno i prostije kao onaj script gore ali postoji to pitanje svako moze da otvori taj txt fajl preko adrese i da procita recimo www.sajt.com/fajl/guestbook.txt e sada me zanima da li on moze da menja taj fajl nekako? ili samo moze da procita preko te adrese?