Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]System newsów->dodajnews.php
Forum PHP.pl > Forum > PHP
Stron: 1, 2
nansss
Piszę własny system newsów i mam problem z dodajnews.php
Wygląda on następująco:

Kod
<?php
session_start();
function connect_db()
{
     mysql_connect("localhost", "nazwa_uzytkownika", "haslo") or die(mysql_error());
     mysql_select_db("nazwa_bazy_danych") or die(mysql_error());
}

if($_SESSION['haslo']=="haslo")
{
     if($_POST['news']=="NULL")
     {
             echo "<form action="dodajnews.php" method="post">
                  

<input type="text" name="tytul" value="Tytu&#x142; news\'a" size="20">
                  

                   <textarea name="news" cols="20" rows="20">Tre&#x15B;&#x107; news\'a</textarea>
                  

                   <input type="submit" value="Dodaj">
             </form>";
     }
    
     else
     {
         $news = $_POST['news'];
         $tytul = $_POST['tytul'];
         $data = date('Y-m-d');
         connect_db();
         mysql_query ("SET NAMES latin2");
         mysql_query("INSERT INTO `news` (`news`,`tytul`,`data`) VALUES ('".$news."','".$tytul."','".$data."') ") or die(mysql_error());
    
     }  
    
}


?>


Proszę o pomoc co jest źle.
Gdy wrzucam go na serwer to nic nie wyświetla.
Buła
Kod
echo "<form action="dodajnews.php" method="post">

Nie wiem, jak u innych, ale na moim serwerze jeśli w echo są " to nie działa. Musi być ' zamiast " przy HTMLowych fragmentach.

Np.
Kod
echo "<form action='dodajnews.php' method='post'>";
nansss
Poprawiłem, ale nic nie pomogło
Buła
Kod
<?php
session_start();
function connect_db()
{
     mysql_connect("localhost", "nazwa_uzytkownika", "haslo") or die(mysql_error());
     mysql_select_db("nazwa_bazy_danych") or die(mysql_error());
}

if($_SESSION['haslo']=="haslo")
{
     if($_POST['news']=="NULL")
     {
             echo "<form action='dodajnews.php' method='post'>
                  

<input type='text' name='tytul' value='Tytuł newsa' size='20'>
                  

                   <textarea name='news' cols='20' rows='20'>Treść newsa</textarea>
                  

                   <input type='submit' value='Dodaj'>
             </form>";
     }
    
     else
     {
         $news = $_POST['news'];
         $tytul = $_POST['tytul'];
         $data = date('Y-m-d');
         connect_db();
         mysql_query ("SET NAMES latin2");
         mysql_query("INSERT INTO `news` (`news`,`tytul`,`data`) VALUES ('".$news."','".$tytul."','".$data."') ") or die(mysql_error());
    
     }  
    
}
?>


Spróbuj tak. W tych krzakach po polskich literach miałeś znak średnika.
nansss
W tym momencie także nic nie wyświetla wstydnis.gif
Mephistofeles
A jak ustawiasz 'haslo' w sesji? No i czemu "NULL" a nie null bez cudzysłowów? Albo użyj isset.
nansss
A w czym wstawić hasło?
Smoker
na wstepie zacznij od zainstalowania sobie programu kolorującego składnie php... polecam keD instalka to jakies 2mb wiec malo a jest przydatny i od razu w nim widac ze w tym co napisales jest błąd smile.gif a jaki to juz szukam :] a ty sobei zainstaluj ked'a tongue.gif

spróbuj tak:
  1. <?php
  2. function connect_db()
  3. {
  4.     mysql_connect("localhost", "nazwa_uzytkownika", "haslo") or die(mysql_error());
  5.     mysql_select_db("nazwa_bazy_danych") or die(mysql_error());
  6. }
  7.  
  8. if($_SESSION['haslo'] == 'haslo')
  9. {
  10.     if(!isSet($_POST['news']))
  11.     {
  12.             echo "<form action=\"dodajnews.php\" method=\"post\">
  13.                  
  14.  
  15. <input type=\"text\" name=\"tytul\" value=\"Tytuł newsa\" size=\"20\">
  16.                  
  17.  
  18.                   <textarea name=\"news\" cols=\"20\" rows=\"20\">Treść newsa</textarea>
  19.                  
  20.  
  21.                   <input type=\"submit\" value=\"Dodaj\">
  22.             </form>";
  23.     }
  24.    
  25.     else
  26.     {
  27.         $news = $_POST['news'];
  28.         $tytul = $_POST['tytul'];
  29.         $data = date('Y-m-d');
  30.         connect_db();
  31.         mysql_query ("SET NAMES latin2");
  32.         mysql_query("INSERT INTO `news` (`news`,`tytul`,`data`) VALUES ('".$news."','".$tytul."','".$data."') ") or die(mysql_error());
  33.    
  34.     }  
  35.    
  36. }
  37. ?>


I jedno pytanie... hasło masz kodowane ? bo ze skrytu wynika że nie więc proponuje kodować hasło w md5() a jeśli masz to problem tkwi w tym ze nic nie wyswietla bo hasło sie nie zgadza smile.gif
Spawnm
Cytat(Smoker @ 6.03.2009, 19:48:33 ) *
na wstepie zacznij od zainstalowania sobie programu kolorującego składnie php... polecam keD instalka to jakies 2mb wiec malo a jest przydatny i od razu w nim widac ze w tym co napisales jest błąd smile.gif a jaki to juz szukam :] a ty sobei zainstaluj ked'a tongue.gif

albo jakikolwiek normalny edytor ,np: notepad++.

if($_POST['news']=="NULL") zmień na if($_POST['news']==NULL) lub if( empty($_POST['news']) )
Mephistofeles
No ale czy hasło w ogóle gdzieś istnieje? Bo wnioskując z
Cytat("nansss")
A w czym wstawić hasło?

to mogę sobie pomyśleć, że nie...
nansss
Istnieje w panel.php
Smoker
hasło istnieje i z tego co widze to jest zapisane w $_SESSION['haslo'] ale zawsze jest takie same haha.gif i to jest dziwne tongue.gif

Ps. probowales mojego rozwiazania ?
Mephistofeles
Tak jak mówi Smoker, formularz się raczej nie wyświetli, bo $_POST['news'] na 99 % nie ma wartości "NULL" winksmiley.jpg.
Smoker
w moim rozwiazaniu uzylem if(!isSet($_POST['news'])) zeby wyswietlal formularz jak nie dostal newsa w zmiennej POST smile.gif bo masz racje ze NULL bedzie dopiero jak wysle formularz z pustą zmienną tongue.gif
nansss
Hasło jest takie samo, ponieważ tylko jedna osoba będzie dodawała newsy

Cytat(Smoker @ 6.03.2009, 19:58:45 ) *
Ps. probowales mojego rozwiazania ?


TAK PRÓBOWAŁEM
Smoker
no to widocznie twoje hasło nie pasuje :]

Ps wstawilem tam
$haslo = 'haslo';
if($haslo == 'haslo')
{...

I mi dziala :] wiec bankowo to jest sprawa hasla tongue.gif
Spawnm
pokaż kod który ustawia sesje z hasłem smile.gif
nansss
Tutaj jest pięć kodów: panel.php, dodajnews.php, usunnews.php, index.php i news.php

panel.php
Kod
<?php
session_start();
if($_GET['wyloguj'])
{
     session_unset();
     echo 'Wylogowano';
     exit;
}

else
{

     if($_POST["haslo"]=="haslo")
     {
         $_SESSION['haslo'] = $_POST["haslo"];
         echo "Zalogowano..";
         echo '<p />';
     }
    
     else
     {
         echo "
        
         <form method='post' action='panel.php'>
          
         Has&#x142;o:

         <input type='password' value='' name='haslo' /> <input type='submit' value='Zaloguj' />
        
         </form>
        
         ";
     }

}

if($_SESSION['haslo']=='haslo')
{
     echo "
         <a style='color: red; text-decoration: none;' href='dodajnews.php'> Dodaj aktualno&#x15B;&#x107; </a>
        

         <a style='color: red; text-decoration: none;' href='index.php?strona=panel&wyloguj=1'> Wyloguj si&#x119; </a>    
     ";
}


?>


dodajnews.php
Kod
<?php
session_start();
function connect_db()
{
     mysql_connect("host", "uzytkownik", "haslo") or die(mysql_error());
     mysql_select_db("nazwa") or die(mysql_error());
}

if($_SESSION['haslo'] == 'haslo')
{
     if(!isSet($_POST['news']))
     {
             echo "<form action=\"dodajnews.php\" method=\"post\">
                  

<input type=\"text\" name=\"tytul\" value=\"Tytuł newsa\" size=\"20\">
                  

                   <textarea name=\"news\" cols=\"20\" rows=\"20\">Treść newsa</textarea>
                  

                   <input type=\"submit\" value=\"Dodaj\">
             </form>";
     }
    
     else
     {
         $news = $_POST['news'];
         $tytul = $_POST['tytul'];
         $data = date('Y-m-d');
         connect_db();
         mysql_query ("SET NAMES latin2");
         mysql_query("INSERT INTO `news` (`news`,`tytul`,`data`) VALUES ('".$news."','".$tytul."','".$data."') ") or die(mysql_error());
    
     }  
    
}
?>


usunnews.php
Kod
<?php
session_start();
function connect_db()
{
     mysql_connect("host", "uzytkownik", "haslo") or die(mysql_error());
     mysql_select_db("nazwa") or die(mysql_error());
}

if($_SESSION['haslo']=="haslo")
{
connect_db();

mysql_query ("SET NAMES latin2");

$id = $_GET['id'];
mysql_query(' DELETE FROM `news` WHERE `id`="'.$id.'" ') or die(mysql_error());

echo 'Usunięto news';

}

?>


index.php
Kod
<?php

function connect_db()
{
     mysql_connect("host", "uzytkownik", "haslo") or die(mysql_error());
     mysql_select_db("nazwa") or die(mysql_error());
}
connect_db();

mysql_query ("SET NAMES latin2");

$query = mysql_query(" SELECT * FROM `news` ORDER BY DATA DESC LIMIT 1");

while($fetch=mysql_fetch_array($query))
{
$tekst  .= '<b><h2>'.$fetch[1]. '</h2>
</b>'.$fetch[2].'<br/><a href="index.php?strona=news&id='.$fetch[0].'">Czytaj wiecej...</A>';
}
echo $tekst;
mysql_close();

?>


news.php
Kod
<?php

function connect_db()
{
     mysql_connect("host", "uzytkownik", "haslo") or die(mysql_error());
     mysql_select_db("nazwa") or die(mysql_error());
}
connect_db();

mysql_query ("SET NAMES latin2");

$query = mysql_query(" SELECT * FROM `news` ORDER BY `id` DESC ");

while($fetch=mysql_fetch_array($query))
{
    echo '<table>';
    echo '<tr>';
    echo '<td width="430px"> <p class="style4 style5 style6">'.$fetch['tytul'].'</p> </td>'
    .'<td align="left"> <p class="style4 style5" style="font-size: 10px;">'.'Dodano: '.$fetch['data'].'</p> </td>';

    if($_SESSION['haslo'])
    {
    echo '<td>';
    echo '<a  class="style4 style5" style="font-size: 10px; color: red; text-decoration: none;" href="index.php?strona=usunnews&id='.$fetch['id'].' "> Usuń </a> ';
    echo '</td>';
    echo '</tr>';
    }
    else
    {
        echo'</tr>';
    }
    echo '<tr><td>';
    echo '<hr>';
    echo '<p class="style4 style5">'. $fetch['news'].'</p>';
    echo '



';
    echo '</td></tr>';

    echo '</table>';
}



mysql_close();

?>
Spawnm
  1. <?php
  2. if($_POST["haslo"]=="haslo")
  3.     {
  4.         $_SESSION['haslo'] = $_POST["haslo"];
  5.         echo "Zalogowano..";
  6.         echo '<p />';
  7.     }
  8. ?>

ciekawy html winksmiley.jpg

daj echo $_SESSION['haslo'] ;
w pliku w którym ci nie działa hasło, ewentualnie w strlen , może jakaś biała spacja ci się zakradła .
nansss
Cytat(Spawnm @ 6.03.2009, 20:25:35 ) *
daj echo $_SESSION['haslo'] ;


Gdzie mam to dać?
Spawnm
w pliku co ci nie działa zaraz przed sprawdzeniem poprawności (czyli na samym początku po session_start)
Smoker
w dodajnews.php gdzies na gorze i zobacz jakie hasło Ci pokaze... czy 'haslo' czy jakies inne czy wywali blad ze nie ma hasla :]
Mephistofeles
  1. <?php
  2. function connect_db()
  3. {
  4.     mysql_connect("host", "uzytkownik", "haslo") or die(mysql_error());
  5.     mysql_select_db("nazwa") or die(mysql_error());
  6. }
  7. connect_db();
  8. ?>

A co to jest? Nie dało się normalnie, bez funkcji? I tak w każdym pliku masz to samo. No i po co dajesz warunek $_SESSION['haslo'] == 'haslo', skoro zaraz później już robisz to bez sprawdzania zgodności? Wywal lepiej te == 'haslo' i wtedy sprawdź.
nansss
Dałem w tym miejscu co mówiłeś i nie wyskakuje mi, że złe hasło, a dodajnews.php dalej nie dziala

Usunąłem to =='haslo' i bylo jeszcze gorzej tj. zniknal mi favicon i tytyl
Mephistofeles
Daj echo 'costam' zaraz po sprawdzeniu hasła z sesji, i drugi raz po sprawdzeniu POSTa. I powiedz, który się wyświetla, albo czy w ogóle się wyświetlają winksmiley.jpg.
Spawnm
nie wyskakuje że złe czyli wyświetla się dobre hasło , tak? a dałeś strlen czy są białe spacje , ewentualnie daj
echo '"'.$_SESSION['haslo'].'"';
jeśli masz w sesji spacje to będzie odstęp między hasłem a " i wiadomo gdzie błąd smile.gif
bo po za tym to nie widać tongue.gif
Smoker
Mephistofeles jak to wywali to kazdemu sie pokaze dodawanie newsa a nie tylko "adminowi" haha.gif a co do połączenia to masz racje tongue.gif ja to zawsze robie w osobnym pliku i tylko includuje jak jest taka potrzeba :]
nansss
Żaden się nie wyświetlił, a tylko usunął mi favicon i tytuł blinksmiley.gif
Smoker
powinienes wogole przerobic ten skrypt tongue.gif wstawic w bazie kolumne admin i nadac wartosc 1 dla admina i 0 dla usera tongue.gif i w panelu admina sprawdzic czy ma adma czy nie jesli nie ma to header("Location: index.php"); a jesli jest to dalsza czesc skryptu i nie musialbys teraz szukac jakiegos malego durnelo bledu w kodzie tongue.gif

Ps. jesli haslo pokazal dobre to haslo == haslo i nie widze innej mozliwosc a wg twojego skryptu haslo !== haslo :]
nansss
Kurde nie moge skminić ;/
Mephistofeles
Jak wywali sprawdzanie z sesji, to raczej nic się nie zmieni (pomijając bezpieczeństwo), bo dopóki zmienna w sesji nie istnieje to nikomu admina nie pokaże. Ja tak miałem dłuższy czas u siebie, i działało, sprawdzałem tylko czy istnieje zmienna.
A skoro usunął ci się tytuł, to może coś jest nie tak z HTMLem?
Okrężna droga - daj tam jakiegoś INSERTA do bazy, i zobacz czy się dodało biggrin.gif. Albo lepiej nie, chociaż spróbować nie zaszkodzi.
A jak spróbujesz takiego:
  1. <?php
  2. function connect_db()
  3. {
  4.     mysql_connect('host', 'uzytkownik', 'haslo') or die(mysql_error());
  5.     mysql_select_db('nazwa') or die(mysql_error());
  6. }
  7. echo 'debug 1 ;)';
  8. echo $_SESSION['haslo'];
  9. if($_SESSION['haslo'] == 'haslo')
  10. {
  11. echo 'debug 2';
  12.     if(!isSet($_POST['news']))
  13.     {
  14. echo 'debug 3';
  15.             echo '<form action="dodajnews.php" method="post">
  16.                  <input type="text" name="tytul" value="Tytuł newsa" size="20">
  17.                   <textarea name="news" cols="20" rows="20">Treść newsa</textarea>
  18.                   <input type="submit" value="Dodaj">
  19.             </form>';
  20.     }
  21.    
  22.     else
  23.     {
  24. echo 'debug 4';
  25.         $news = $_POST['news'];
  26.         $tytul = $_POST['tytul'];
  27.         $data = date('Y-m-d');
  28.         connect_db();
  29.         mysql_query ('SET NAMES latin2');
  30.         mysql_query('INSERT INTO `news` (`news`,`tytul`,`data`) VALUES ('.$news.','.$tytul.','.$data.');') or die(mysql_error());
  31.    
  32.     }  
  33.    
  34. }
  35. ?>


Sprawdziłem u siebie, i działa.
Smoker
i napisz co CI pokazał...

Ps... po echo pojedyńczy cudzysłow ? a nie wyswietli wtedy calego input itd jako tekst zamiast to przerabiac jako html ?
nansss
Wyskoczyło debug 1 winksmiley.jpg ale usunęło tytuł i favicon
Mephistofeles
Ja zawsze w PHP stosuję apostrofy, a cudzysłowy tylko do HTMLa (w SQLu takie koło tyldy biggrin.gif).
Smoker
czyli w zmiennej $_SESSION['haslo'] nie ma wartosci haslo :]

sproboj
if($_SESSION['haslo']=='haslo')

zamienic na:

if(strlen($_SESSION['haslo'])=='haslo')
Spawnm
Cytat(Smoker @ 6.03.2009, 20:49:47 ) *
i napisz co CI pokazał...

Ps... po echo pojedyńczy cudzysłow ? a nie wyswietli wtedy calego input itd jako tekst zamiast to przerabiac jako html ?

ktoś tu chyba nie zna podstaw php tongue.gif
różnica między ' a " jest taka że jak w " dasz zmienną to wyświetli ci jej wartość a w ' wyświetli co stringa (nazwę zmiennej)
html nie ma tu nic do rzeczy zawsze tak samo jest traktowany tongue.gif

-----------

ale usunęło tytuł i favicon

a gdzie ty deklarujesz w tym pliku <title> i ikonkę ? bo jakoś nie widzę blinksmiley.gif
nansss
Zmieniłem na:


if(strlen($_POST["haslo"]=="haslo"))

i wyskoczył mi napis haslo

EDIT;
Ja tylko wysyłam kod php
Spawnm
pokaż jak wygląda teraz twój kod blinksmiley.gif
Smoker
spawnm to nie kazdy jest idealny haha.gif ja zawsze uzywalem ' do tekstów a " gdy mialem jakis kod htmla :]ale najwazniejsze ze mi dzialalo tongue.gif

ps. ja tam zle napisalem ten kod... juz go popawilem... teraz sproboj
nansss
  1. <?php
  2. echo $_SESSION['haslo'] ;
  3. function connect_db()
  4. {
  5.    mysql_connect("host", "uzytkownik", "haslo") or die(mysql_error());
  6.    mysql_select_db("nazwa") or die(mysql_error());
  7. }
  8. if(strlen($_POST["haslo"]=="haslo"))
  9.  
  10. {
  11.    if(!isSet($_POST['news']))
  12.  
  13.    {
  14.            echo "<form action=\"dodajnews.php\" method=\"post\">
  15.                
  16.  
  17. <input type=\"text\" name=\"tytul\" value=\"Tytuł newsa\" size=\"20\">
  18.                
  19.  
  20.                  <textarea name=\"news\" cols=\"20\" rows=\"20\">Treść newsa</textarea>
  21.                
  22.  
  23.                  <input type=\"submit\" value=\"Dodaj\">
  24.            </form>";
  25.    }
  26.  
  27.    else
  28.    {
  29.        $news = $_POST['news'];
  30.        $tytul = $_POST['tytul'];
  31.        $data = date('Y-m-d');
  32.        connect_db();
  33.        mysql_query ("SET NAMES latin2");
  34.        mysql_query("INSERT INTO `news` (`news`,`tytul`,`data`) VALUES ('".$news."','".$tytul."','".$data."') ") or die(mysql_error());
  35.  
  36.    }  
  37.  
  38. }
  39. ?>
Smoker
zamiast
if(strlen($_POST["haslo"]=="haslo"))
ma byc
if(strlen($_SESSION['haslo'])=='haslo')

ps ide zapalic bo zaraz nie wytrzymam :]
pyro
Cytat(Smoker @ 6.03.2009, 21:02:38 ) *
zamiast
if(strlen($_POST["haslo"]=="haslo"))
ma byc
if(strlen($_SESSION['haslo'])=='haslo')

ps ide zapalic bo zaraz nie wytrzymam :]


strlen() zawsze zwroci int mundrolu

// edit

ide zapalic bo zaraz z Toba nie wytrzymam smile.gif

// edit 2

chociaz nie pale...
Spawnm
zamiast
  1. <?php
  2. if(strlen($_POST["haslo"]=="haslo"))
  3.  
  4. {
  5.   if(!isSet($_POST['news']))
  6.  
  7.   {
  8. ?>


daj:
  1. <?php
  2. $pass=trim($_POST["haslo"]);
  3. if($pass=='haslo')
  4.  
  5. {
  6.   if(!empty($_POST['news']))
  7.  
  8.   {
  9. ?>
nansss
Nic to nie dało...
ehh
Spawnm
dziwne , powinno działać tongue.gif
a powiedz czy echo $_SESSION['haslo'] ; wyświetla ci haslo czy hasło ;]

jak haslo to się poddaje tongue.gif
Smoker
a tam ma byc $_POST['haslo'] a nie $_SESSION['haslo'] questionmark.gif?
nansss
haslo
Spawnm
Cytat(Smoker @ 6.03.2009, 21:11:05 ) *
a tam ma byc $_POST['haslo'] a nie $_SESSION['haslo'] questionmark.gif?

racja tongue.gif

daj:
  1. <?php
  2. $pass=trim($_SESSION["haslo"]);
  3. if($pass=='haslo')
  4.  
  5. {
  6.  if(!empty($_POST['news']))
  7.  
  8.  {
  9. ?>


mój błąd smile.gif
Smoker
to mam ostateczny pomysl :] skasuj caly kod z dodajnewsa.php i zrob tak... najpierw input w ktorym koles ma wpisac haslo i jesli bedzie to haslo admina to pokaz mu dodawanie postow a jak nie to nic ma nie pokazac...

jak chcesz to ja CI to napisze questionmark.gif
nansss
Napisałbyś cały dodajnews?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.