Avatar billede heavybreezer Nybegynder
25. juni 2004 - 15:25 Der er 13 kommentarer og
2 løsninger

Find fejlen i php kode?

Som titlen siger..
Jeg KAN altså ikke finde fejlen.... Det er underligt, for det har tidligere virket?

Dette er koden til en opret indlæg til en gæstebog-side :)
Og når jeg submitter, reloader siden bare sig selv, og skriver ingen fejl?

Hva er der galt med det her:

<?
$IP = $GLOBALS['REMOTE_ADDR']; 
$FIP = $GLOBALS['HTTP_X_FORWARDED_FOR']; 
if (($FIP != "") && ($FIP != "unknown")) $IP = $FIP; 
$IP = explode(",", $IP);
?>




<script language="JavaScript">
function formCheck() {
    if (document.post.title.value == "") {
      alert("Du skal skrive en titel");
      document.post.title.focus();
      return false
    }
    if (document.post.name.value == "") {
      alert("Du skal skrive dit navn");
      document.post.name.focus();
      return false;
    }
        if (document.post.text.value == "") {
      alert("Du skal skrive en besked");
      document.post.text.focus();
      return false;
    }
       
   
}
</script>
<div style="background:#C0C0C0;padding:2;margin-top:5">
NOTE: Din ip-adresse bliver logget sammen med din besked, så spam eller flooding medfører ban fra siden!
</div>

<br>
<form method="post" action="opret_tag.php" name="post" >


<br>

Titel:<br>
<input type="text" name="title" style="width: 100%;font-family: tahoma"><br>
<br>

Besked:<br>
<textarea name="text" rows="10" style="width: 100%;font-family: tahoma"></textarea><br>
<br>

Dit navn:<br>
<input type="text" name="name" style="width: 100%;font-family: tahoma">


<br>

<font color="#808080">Alle felter skal udfyldes</font><br>
<br>

<div align="left"><input type="submit" name="send" value="Smid tag">&nbsp;<input type="reset" value="Slet"></div>
<textarea style="visibility:hidden;width:0" name="ip"><? echo $IP[0]; ?></textarea>
</form>     


<?
if($send){
$mysql_host = "localhost"; // What is your host for MySQL?
$mysql_user = ""; // What is your username?
$mysql_pass = ""; // What is your password?
$mysql_db = "test"; // What is your Database name


mysql_connect($mysql_host, $mysql_user, $mysql_pass);
mysql_select_db($mysql_db);



$title = $_POST['title'];
$text = $_POST['text'];
$name = $_POST['name'];
$ip1 = $_POST['ip'];



$query = mysql_query("INSERT INTO news (title, text, name, ip)" . "VALUES ('$title', '$text', '$name', '$ip1')") or die(mysql_error());
header("Location: tagwall.php");
}
?>
Avatar billede krydset Nybegynder
25. juni 2004 - 15:27 #1
Hvad med at fortælle hvad fejlen er !!!!
Avatar billede krydset Nybegynder
25. juni 2004 - 15:27 #2
Hov havde lige sprunget en linie over sorry.
Avatar billede heavybreezer Nybegynder
25. juni 2004 - 15:27 #3
Det er jo det jeg ikke ved..
Den melder ingen fejl, siden reloader bare.
Avatar billede dennismp Nybegynder
25. juni 2004 - 15:28 #4
prøv at erstatte:
if($send){

med

if($_POST['send']){
Avatar billede krydset Nybegynder
25. juni 2004 - 15:28 #5
Men jeg forestille mig det er den her if
$FIP = $GLOBALS['HTTP_X_FORWARDED_FOR']; 
if (($FIP != "") && ($FIP != "unknown")) $IP = $FIP; 


Prøv med det her
$FIP = $GLOBALS['HTTP_X_FORWARDED_FOR']; 
if (($FIP != "") && ($FIP != "unknown")) $IP = $FIP; 
echo "DEBUG";


Og så se om det udskriver debug ?
Avatar billede Syska Mester
25. juni 2004 - 15:30 #6
fejlen er at der íngen fejl er som han skriver...... men det har heller ikke virket før i hvert fald ikke på samme server så, det er nok register_globals der er slået fra......

kan ikke lige se hvad det her gør...
<?
$IP = $GLOBALS['REMOTE_ADDR']; 
$FIP = $GLOBALS['HTTP_X_FORWARDED_FOR']; 
if (($FIP != "") && ($FIP != "unknown")) $IP = $FIP; 
$IP = explode(",", $IP);
?>

men prøv med:
if($send){
til
if(isset($_POST['send'])){
Avatar billede dennismp Nybegynder
25. juni 2004 - 15:30 #7
Istedet for $globals, så prøv med $_SERVER (med mindre register globals er enabled)
Avatar billede Syska Mester
25. juni 2004 - 15:31 #8
der skal en isset med eller får han en warning for ikke at have defineret $send første gang man kommer ind på siden....
Avatar billede heavybreezer Nybegynder
25. juni 2004 - 15:33 #9
Jeps, det var

if($send){
til
if(isset($_POST['send'])){

der skulle til :)

dennismp>> smider du osse svar?
Avatar billede dennismp Nybegynder
25. juni 2004 - 15:35 #10
.. som vil giver den samme effekt i din kode som if($_POST['send']){ ..

buzzz: ellers godt set :-|
Avatar billede Syska Mester
25. juni 2004 - 15:37 #11
Det er fordi du før har brugt en server hvor der har været register_globals on, væn dig til at lave det så den også kan køre uden det på, da det er blevet sat til standard i alle nyere installationer af php....fra 4.3.2 eller noget deromkring

Tror du har samme problem i din sql sæting, skal også være $_POST['title'] o.v.s
Avatar billede Syska Mester
25. juni 2004 - 15:38 #12
Meget godt set, hvis han ikke bruger den, får han en warning....så han skal bruge den... med mindre han selvf har slået warnings fra.... hvilket de har de fleste steder på nettet tror jeg....

// ouT
Avatar billede dennismp Nybegynder
25. juni 2004 - 15:46 #13
Han har sørget for at $title = $_POST['title'].. og da han ikke tjekker (med isset) det andre steder, så giver det da ikke ret meget mening at kun gøre det ved $_POST['send'].
Avatar billede Syska Mester
25. juni 2004 - 17:25 #14
øhh, jeg kan slet ikke se andre steder end lige der på hans side, men det kan jo være mig der er blind, men det må du jo kunne fortælle mig......

Bare god skik at test med isset, for at undgå warnings, hvis han nu kommer over på en anden server engang, så er han fri for at ændre det der, men det er helt op til ham....

Jeg ville personligt gøre det....
Avatar billede dennismp Nybegynder
25. juni 2004 - 17:30 #15
$title = $_POST['title'];
$text = $_POST['text'];
$name = $_POST['name'];
$ip1 = $_POST['ip'];

her burde der jo også bruges isset().

Om man bruger E_ALL eller ej, er vist en smagssag. Jeg gør det selv, men er ligeglad om andre gør det - det er bare en hjælp til debug. Jeg tror ikke at serveren kan tvinge ham til at bruge E_ALL - så han kan jo bare slå det fra.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester