Ankündigung

Einklappen
Keine Ankündigung bisher.

$_POST[''] reagiert nicht

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • $_POST[''] reagiert nicht

    Hallo,

    ich arbeite gerade für meine Seite an einem eigenen Privatnachrichts-System (ja, MySQL Injection anfällig, darauf bitte nicht hinweisen, darauf werde ich später achten)

    Ich habe checkboxen hinzugefügt, durch die man durch Markieren und anschließendem Klick auf einen Button ausgewählte Nachrichten entfernen kann.

    Hier mein $_POST Code für das löschen:

    PHP-Code:
        <?php
        
    if ($_POST['delete']) {
            
    $checkbox $_POST['checkbox'];
            
    $delete $_POST['delete'];
            if(
    $delete){
                for(
    $i=0;$i<$count;$i++) {
                    
    $del_id $checkbox[$i];
                    
                    
    $sql "DELETE FROM pm_inbox WHERE id='$del_id'";
                    
    $result mysql_query($sql);
                }
                    if(
    $result){
                        echo 
    "<meta http_equiv=\"refresh\" content=\"0;URL=pm_inbox.php\">";
                    }
                
    mysql_close();
            }
            else 
            {
            }
        }
    ?>

    Hier der komplette Code der Seite:

    DEN PHP HEADER HABE ICH MAL ENTFERNT, DER SPIELT BEIM CODE UNTEN KEINE ROLLE, BZW HIER LIEGT DER FEHLER NICHT. DIE NACHRICHTEN WERDEN GELADEN UND ANGEZEIGT
    PHP-Code:
    *entfernt*
    <html> 
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Untitled Document</title>
    </head>

    <body>
    <?php if ($_SESSION['username']) { ?>
    <table width="800" border="0">
        <tr>
            <td>Welcome back <?php print $username?></td>
        </tr>
        <tr>
            <td><?php require_once "pm_check.php"?></td>
        </tr>
    </table>
    <br />
    <?php
    require_once "includes/connect.php";

    $sql="SELECT * FROM pm_inbox WHERE userid='$pid' ORDER by id DESC";
    $result=mysql_query($sql);

    $count=mysql_num_rows($result);

    ?>
    <table>
    <form name="form1" method="post" action="pm_inbox.php">
        <tr>
            <td width="41" align="center">#</td>
            <td width="490">Title:</td>
            <td width="255">From:</td>
        </tr>
        <?php 
        
    while($rows=mysql_fetch_array($result)) {
        
    ?>
        <?php if ($rows['viewed'] == 0) { // show messages in bold ?>
        <tr>
            <td width="41" align="center"><input type="checkbox" name="checkbox[]" id="checkbox[]" value="<?php echo $rows['id']; ?>" /></td>
            <td width="490"><a href="pm_view_in.php?in=<?php echo $rows['id']; ?>"><b><?php echo $rows['title']; ?></b></a></td>
            <td width="255"><?php echo $rows['from_username']; ?></td>
        </tr>
        <?php } else if ($rows['viewed'] == 1) { ?>
        <tr>
            <td width="41" align="center"><input type="checkbox" name="checkbox[]" id="checkbox[]" value="<?php echo $rows['id']; ?>" /></td>
            <td width="490"><a href="pm_view_in.php?in=<?php echo $rows['id']; ?>"><?php echo $rows['title']; ?></a></td>
            <td width="255"><?php echo $rows['from_username']; ?></td>
        </tr>
        <?php ?>
        <?php ?>
        <tr>
        <td colspan="3" align="center"><?php if ($inboxMessages 0) { ?><input type="submit" name="delete" id="delete" value="Delete Selected Messages" /><?php } else { print "There are no messages in your inbox"; } ?></td>
    </table>
    <?php } else { ?>
        <?php
        
    if ($_POST['delete']) {
            
    $checkbox $_POST['checkbox'];
            
    $delete $_POST['delete'];
            if(
    $delete){
                for(
    $i=0;$i<$count;$i++) {
                    
    $del_id $checkbox[$i];
                    
                    
    $sql "DELETE FROM pm_inbox WHERE id='$del_id'";
                    
    $result mysql_query($sql);
                }
                    if(
    $result){
                        echo 
    "<meta http_equiv=\"refresh\" content=\"0;URL=pm_inbox.php\">";
                    }
                
    mysql_close();
            }
            else 
            {
            }
        }
        }
        
    ?>
    </form>
    </table>
    </body>
    </html>
    Da aktualisiert sich nur die Seite, sont nichts.

  • #2
    PHP-Code:
        if ($_POST['delete']) {

            
    $delete $_POST['delete'];
            if(
    $delete){ 
    PHP-Code:
    for($i=0;$i<$count;$i++) { 
    denkst Du manchmal auch nach beim Programmieren?

    Kommentar


    • #3
      Ein paar Sachen die mir aufgefallen sind:

      1. Es ist anfällig für MySQL-Injections (ja, du wolltest den Hinweis nicht. Darauf bitte nicht hinweisen. Ich werd' dich später nicht darauf hinweisen)
      2. Liegt hier zufällig ein Denkfehler vor?
      PHP-Code:
      <?php if ($_SESSION['username']) {
        
      //VIEL UNLESBARER CODE
      } else {
        if(
      $_POST['delete']) {
          
      //SQL-Injectionanfälliger Code. In diesen Block kommt man allerdings nur,
          //wenn der Index username nicht in der Session existiert
        
      }
      }
      3. Solltest du darauf achten, wo du deine HTML-Tags öffnest, und wo du diese wieder schließt. Das letzte schließende Table-Tag wird gar nicht geöffnet.

      Code:
      <table>
        <form name="form1" method="post" action="pm_inbox.php">
      </table>
      </form>

      Kommentar

      Lädt...
      X